程序员认知(三)静态类型和动态类型

静态类型与动态类型:

变量的类型,何时确定?

变量的类型

计算机中的语言都是0和1组成的,对计算机来说,所有的数据都是0和1。但是对人类来说,如果直接处理001010等数据不太方便、太困难、不直观。

为了方便程序员进行编程。就有了变量和类型的概念。我们给一段01010起一个名字。这段数码就被称为名字a。程序员用这个名字a代指这段数据。这个名字被称为变量。

这个变量他有名字,他有数据,而且也有类型,这个类型,这个类型规定了这段01010数码有多长。

何时确定?

有些语言写代码的时候就把类型确定了。有些写代码时类型不确定,等到执行时才确定比如python。

静态类型:变量类型在编译时确定。Java、C++、GO、Rust、TypeScript。

动态类型:变量类型在运行时确定。Python、Perl、JavaScript、Lua。

强类型语言。弱类型语言。


内存管理

内存有两种分配方式:一种在栈Stack上,一种在堆Heap上。

栈的分配是操作系统自动的;堆的分配方式有两种:

一种是自动的:自动垃圾回收,GCC。系统自动检测不再引用的变量内存,然后回收。现在大部分语言都支持,Java,python。Java和python都有虚拟机

能让机器辛苦的事,为什么要让人这么累呢?

一种是手动的:程序员自己管理,一般通过调用new关键字,在C语言中用malloc调用,程序员向操作系统分配内存,用完之后要delete,或者用析构函数。C和C++。

内存泄漏

栈溢出:一般因为是函数的无限调用。

虚拟机

比如将C++代码通过编译器编译转为机器代码,机器代码就保存在exe文件中。只能运行在windows上,如果移植到其他平台需要其他操作。

Java编译器把Java编译成一种中间代码形式.class文件,如果运行的话,只能运行在windows的虚拟机,或者Linux的虚拟机上。Write once ,run anywhere。python编译后生成pyc文件。

虚拟机可以让程序移植更容易。

与内存管理的关系:Java和Python的GCC垃圾回收机制都是在虚拟机中完成的。

 

开发效率:能让机器辛苦的事,何必让人这么累。

其实编程:构思和调试的时间是最长的。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值