第一代语言
机器语言
- 计算机的基本计算都是基于二进制
- 二进制:0和1构成进制,逢2进1(满1进位) ,例: 101011100010011010111
- 这种代码计算机可以直接使用不需要任何转换
第二代语言
汇编语言
- 解决人无法读懂机器语言的问题
- 指令代替二进制
目前应用
- 逆向工程
- 机器人
- 病毒
- …
第三代语言
高级语言
- 大体上分为面向过程和面向对象两个大类.
- C语言是典型的面向过程的预言.C++、Java是典型的面向对象的语言.
各种语言
C语言:
1972年诞生,面向过程的语言,他有高级语言的特点也有汇编语言的特点,广泛应用在操作系统编译器,数据库,网络系统中,适合编写一些不依赖计算机硬件的应用程序,更贴近硬件,运行极快,效率极高,应用广泛,数据处理能力强,是所有高级语言的鼻祖;指针和内存管理即时特点也深受诟病,指针能够操作内存,但没有相关工具去做越界检查,新手程序员容易犯错;内存管理则是自己分配的空间自己去释放,编译期间难以发现,运行程序大量报错
C++:
1982年诞生,C语言的面向对象的版本,兼容C的同时进一步扩充和完善了C语言,比C语言更复杂,学习难度提升,广泛应用在图形,游戏等领域;表面的可移植性,实际环境少有变动就容易编译失败,建议先学习计算机底层相关内容再考虑学c++
Java:
最开始准备叫C+±-,后来发现设计理念偏差太多,于是想取名叫oak,结果发布的时候才知道"名称已被使用",多次选择后最终选择了Java这个名字;
语法有点像C,删减去了C++中比较难学的部分,降低学习成本比较容易接受
没有指针,没有内存管理
真正的可移植性,一次编写随处运行,为了实现跨平台特性,java在操作系统之上又增加了一个抽象程——Java虚拟机(JVM);所有的平台上只需要安装上了Java虚拟机就能够运行java程序
面向对象
类型安全
高质量的类库,随语言发行提供给大家
1995年网页简单儿粗糙、缺乏互动性;Java的开发者在浏览器上制作了一个小插件,把Java的环境放在了上面,在上面开发了一个图形界面程序(Applet),这个程序可以让以前那些简单枯燥的网页看起来更加有意思,更加美观;趁着互联网时代来临,Java抓住这次机会给大家做了一次演示,成功吸引到了更多人来开发并使用这个平台
ps: Bill Gates说Kava是迄今为止设计最好的语言,并买了Java许可证,尝试把Java绑死在windows上赚钱,试图让Java变得不可移植,这与Java最初创立的目的背道而驰了,于是Java与微软就爆发了一次战争,最终Java逼着微软退出了Java领域,而微软自己也开发了一套新的环境——.net
但此时的Java还仅仅只能给网页增加效果,没有更多的程序环境支持,被嘲笑为只能在网页上玩玩的小玩具
其实背地里Java已经预谋了Java2版本的三个方案:
-
Java2SE用以占领桌面端;
-
Java2ME用以占领手机端;
-
Java2EE用以占领服务器;
其中两个方案很快被淘汰:
开发桌面端的程序员接受不了Java,虽然Java有一个开发界面的程序,但是开发出来的界面非常难看,和原生界面差距比较大,尤其是为了运行程序还得安装虚拟机让人难以接受,与之碰到相同问题的还有Java2ME
失之东偶收之桑榆,Java2没能赶上手机和桌面端的潮流,却也凭借服务器的应用大受好评,大家发现使用Java后的服务器程序更强大,简单,安全,而且跨平台,在Java2EE的规范指导下,大家发现java特别适合一些团队开发复杂而大型的项目
三高问题:高可用,高性能,高并发
2006年java通过Hadoop进入大数据领域
2008年Java通过Android进入手机端
C#:
读C sharp,由微软开发,拥有大量的Java特性,但依赖windows环境,不跨平台不通用
Python:
大数据分析,人工智能领域广泛应用
PHP:
快速构建网页
JavaScript:
让网页拥有更多的动态效果