IE盒子

搜索
查看: 159|回复: 0

大一想学编程语言,是选Python还是选Java?

[复制链接]

1

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2022-9-21 21:02:38 | 显示全部楼层 |阅读模式
Python简述
Python 是一种被广泛使用的优秀的编程语言,崇尚优美、清晰、简单。近年来Python 的影响逐年扩大,2021 年6 月的TIOBE 排行榜显 示,Python 已经在编程语言中排行第2,而且整体呈上升趋势, 反映出Python 应用越来越广泛,也越来越得到业内的认可。
                                                                  提取码: 9m4t
Python 语言的创始人是吉多·范罗苏姆(Guido van Rossum)。1989 年,为了打发圣诞节假期,吉多·范罗苏姆开始开发一个新的脚本解释程 序,作为ABC 语言的一种继承,也就是Python 语言的编译器。Python 这 个名字,来自吉多所挚爱的电视剧Monty Python’s Flying Circus。吉多希望 这个叫作Python 的语言能符合他的理想:创造一种处于C 和Shell 之间、 功能全面、易学易用、可拓展的语言。 1991 年,第一个Python 编译器诞生。它是用C 语言实现的,并能够调 用C 语言的库文件。从诞生开始Python 就已经具有了类、函数、异常处 理、包含列表和词典在内的核心数据类型,是以模块为基础的拓展系统。
2000 年10 月16 日,Python 2.0发布,实现了完整的垃圾回收,并且支持Unicode。同时,整 个Python介绍分区00Python介绍 的第1 页2000 年10 月16 日,Python 2.0 发布,实现了完整的垃圾回收,并且支持Unicode。同时,整 个开发过程更加透明,在社区的影响也逐渐扩大。
2008 年12 月3 日,Python 3.0 发布,此版本不完全兼容之前的Python 代码。
Java介绍
JDK是Java Development Kit 的简称,java 开发工具包,提供了 java 的开发和运行环境,编译器、调试和分析工具等。jdk包含jre。
JRE是Java Runtime Environment 的简称,java 运行时环境,为 java 程序的运行提供了所需环境。jre包含jvm。
JVM是Java Virtual Machine的简称,java虚拟机本身在操作系统中只是一个普通的程序,但所有的java程序必须由他负责执行,它提供了部分硬件的虚拟,如内存(运行时数据区),避免了java开发人员直接操作硬件(如指针操作),以及不同硬件对代码的影响。java的跨平台只是针对jvm中运行的java程序,jvm本身并不跨平台,不同操作系统需要安装不同版本的jvm。
JVM规范:JVM规范是针对实现JVM平台本身的一个设计标准,实现JVM规范的java运行平台都可以被称为JVM,目前使用最多的还是HotSpot VM,oracle和openjdk都在用它。
JMM(Java Memory Model)
JMM是JVM规范的一部分,JVM规范包括了JMM。
java内存模型是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,以及各个线程对各种变量的访问规则,即在虚拟机中将变量(线程共享的变量)存储到内存和从内存中取出变量这样底层细节。
每个线程创建时jvm会分配一个线程私有的工作内存(栈空间)。
所有共享变量都存储在主内存(堆空间)。
线程操作共享变量过程是,复制一份到私有空间,在私有空间改完之后再写入主内存,不能直接操作主内存,并且线程私有空间对其他线程不可见。
JMM关于线程同步的规定
1.线程解锁前,必须把共享变量(非线程局部变量)写入主内存。
2.线程加锁前,必须读取主内存的最新值到自己的工作内存。
3.加锁解锁是同一把锁。
JVM组成部分
类加载器(ClassLoader)
运行时数据区(Runtime Data Area)
执行引擎(Execution Engine)
本地库接口(Native Interface)
JVM工作流程
首先通过类加载器(ClassLoader)会把 Java 字节码加载到内存中,具体就是将类的信息(class、静态变量、方法)存到运行时数据区(Runtime Data Area),而字节码文件只是 JVM 的一套指令集规范(CPU并不认识),并不能直接交个底层操作系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过程中需要调用其他语言的本地库接口(Native Interface)来实现整个程序的功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表