龙空技术网

为什么编程语言有这么多种类?为什么不统一成一种语言呢?

新锦衣卫 204

前言:

此时咱们对“汇编语言和编程语言一样吗为什么”可能比较注重,各位老铁们都需要知道一些“汇编语言和编程语言一样吗为什么”的相关文章。那么小编在网摘上网罗了一些关于“汇编语言和编程语言一样吗为什么””的相关知识,希望我们能喜欢,看官们快快来了解一下吧!

为什么编程语言有这么多种类?为什么不统一成一种语言呢?评

这其实是场景和工作效率决定的。

理论上汇编和C,会一门就可以写出世界上所有软件。

问题是你会这么干吗?

用汇编写一个网页?怕是1个月时间起步吧?用html+css+js 1天就基本搞定了。

用C语言写一个IOS app?怕是一年时间打不住吧?用OC或者Swift 1个月搞定不香吗?

用汇编写一个window 桌面应用?怕是两三年才勉强上线吧,用C++,再用用WTL几分钟就把界面搭建出来了,谁会用汇编?

说到底,编程语言是由场景和效率两者决定的。

跟操作系统底层打交道,汇编和C语言当然是首选。

在应用层编码,要求效率的话,C++当然非常棒。

在应用层编码,对框架和迁移性要求高,效率次之,Java很不错。

另外编程语言和计算机发展本身也是密切相关的:

(PS:感谢大家耐心阅读,觉得不错的话双击点赞呀,程序员多看计算机经典书籍非常重要,顺便送大家一份硬核计算机经典书籍,我把大学和工作中用的经典电子书库(包含数据结构、操作系统、C++/C等)打包在一起了,这套资源是伴随我从学生一路成长为腾讯高级开发工程师,360技术总监的打包全套,非常宝贵:

点击下方链接直接获取:

1946年2月14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”(ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世了。ENIAC(中文名:埃尼阿克)是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的,这台计算器使用了17840支电子管,大小为80英尺×8英尺,重达28t(吨),功耗为170kW,其运算速度为每秒5000次的加法运算,造价约为487000美元。

1、第1代:电子管数字机(1946—1958年)

(1)硬件方面,逻辑元件采用的是真空电子管,主存储器采用汞延迟线电子管数字计算机、阴极射线示波管静电存储器、磁鼓、磁芯;外存储器采用的是磁带。软件方面采用的是机器语言、汇编语言。应用领域以军事和科学计算为主。

(2)特点是体积大、功耗高、可靠性差。速度慢(一般为每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础。

2、第2代:晶体管数字机(1958—1964年)

(1)硬件方的操作系统、高级语言及其编译程序。应用领域以科学计算和事务处理为主,并开始进入工业控制领域。

(2)特点是体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数10万次,可高达300万次)、性能比第1代计算机有很大的提高。

3、第3代:集成电路数字机(1964—1970年)

(1)硬件方面,逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。软件方面出现了分时操作系统以及结构化、规模化程序设计方法。

(2)特点是速度更快(一般为每秒数百万次至数千万次),而且可靠性有了显著提高,价格进一步下降,产品走向了通用化、系列化和标准化等。应用领域开始进入文字处理和图形图像处理领域。

4、第4代:大规模集成电路机(1970年至今)

(1)硬件方面,逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。软件方面出现了数据库管理系统、网络管理系统和面向对象语言等。

(2)特点是1971年世界上第一台微处理器在美国硅谷诞生,开创了微型计算机的新时代。应用领域从科学计算、事务管理、过程控制逐步走向家庭。

UNIX操作系统和C语言的由来

早期的操作人员是通过带有孔的纸带将程序输入电脑进行编译(对纸条打点),后面出现了汇编语言,操作人员每人一个小册子(指令小册子),开发人员非常非常辛苦

二进制语言:

0000,0000,000000010000 代表 LOAD A, 16

0000,0001,000000000001 代表 LOAD B, 1

0001,0001,000000010000 代表 STORE B, 16

汇编语言:

UNIX操作系统产生

1、20世纪60年代,贝尔实验室的研究员Ken Thompson(肯·汤普森)发明了B语言,并使用B编了个游戏 - Space Travel,他想玩自己这个游戏,所以他背着老板找到了台空闲的机器 - PDP-7,但是这台机器没有操作系统,于是Thompson着手为PDP-7开发操作系统,后来这个OS被命名为 - UNIX。Thompson(肯·汤普森)发明了UNIX

2、1971年,Ken Thompson的同事D.M.Ritchie(DM里奇),也很想玩Space Travel,所以加入了Ken Thompson,合作开发UNIX,他的主要工作是改进Thompson的B语言。

最终,在1972年这个新语言被称为C,取BCPL的第二个字母,也是B的下一个字母

D.M.Ritchie(DM里奇)发明了C语言

3、1973年,C主体完成。Ken Thompson和D.M.Ritchie迫不及待的开始用C语言完全重写了UNIX。此时编程的乐趣已经使他们完全忘记了那个“Space Travel”,一门心思的投入到了UNIX和C语言的开发中。自此,C语言和UNIX相辅相成的发展至今。

Ken Thompson(left)和D.M.Ritchie(right)

类C语言起源、历史

C语言、C语言的起源以及类似C语言的编程语言的历史简直不要太漫长,我简单总结列表如下:

CPL(Combined Programming Language) - 1963

CPL是1963年剑桥大学发明的

BCPL(Base Combined Programming Language) - 1967

剑桥的Matin Richards 对CPL做了简化,推出了BCPL

B(B Programming Language) - 1969

贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS

C(C Programming Language) - 1972

贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型)

C++(C plus plus Programming Language) - 1983

还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,它扩充和完善了C语言,特别是在面向对象编程方面。一定程度上克服了C语言编写大型程序时的不足。

Java(Java Programming Language) - 1995

Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林)

C#(C Sharp Programming Language) - 2000

Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#,他也是Delphi语言之父。

要掌握这些高级语言多看计算机经典书籍非常重要。

送大家一份硬核计算机经典书籍,我把大学和工作中用的经典电子书库(包含Java、C++、C、Python、数据结构、操作系统等)打包在一起了,这套资源是伴随我从学生一路成长为腾讯高级开发工程师,360技术总监的打包全套,非常宝贵,点击直接获取:

点击下方链接直接获取:

浏览器和JavaSript的历史

1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,

轰动一时。

但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动。比如你登录一个网站输入完用户名点击提交的时候。浏览器并不知道你是否输入了,也无法判断。只能传给服务器去判断。

1、计算机的越来越好的同时,网上冲浪也越来越流行时,对于开发客户端脚本的需求也逐渐增大。此时,大部分因特网用户还仅仅通过 28.8 kbit/s 的调制解调器连接到网络,即便这时网页已经不断地变得更大和更复杂。而更加加剧用户痛苦的是,仅仅为了简单的表单有效性验证,就要与服务器进行多次地往返交互。设想一下,用户填完一个表单,点击提交按钮,等待了 30 秒的处理后,看到的却是一条告诉你忘记填写一个必要的字段。

2、网景急于解决浏览器与用户交互这个问题。当时解决这个问题有两个办法,一个是采用现有的语言,比如Perl、Python、Tcl、Scheme等等,允许它们直接嵌入网页。另一个是发明一种全新的语言。这两个选择各有利弊。第一个选择,有利于充分利用现有代码和程序员资源,推广起来比较容易;第二个选择,有利于开发出完全适用的语言,实现起来比较容易。到底采用哪一个选择,网景公司内部争执不下,管理层一时难以下定决心。

3、就在这时发生了一件大事,1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。

4、网景公司动了心,决定与Sun公司结成联盟。它不仅允许Java程序以applet(小程序)的形式,直接在浏览器中运行;甚至还考虑直接将Java作为脚本语言嵌入网页,只是因为这样会使HTML网页过于复杂,后来才不得不放弃。

5、总之,当时的形势就是,网景公司的整个管理层,都是Java语言的信徒,Sun公司完全介入网页脚本语言的决策。 因此,Javascript后来就是网景和Sun两家公司一起携手推向市场的,这种语言被命名为"Java+script"并不是偶然的。

6、此时,34岁的系统程序员(布兰登·艾奇)Brendan Eich登场了。

7、1995年4月,网景公司录用了他。Brendan Eich的主要方向和兴趣是函数式编程,网景公司招聘他的目的,是研究将Scheme语言作为网页脚本语言的可能性。Brendan Eich本人也是这样想的,以为进入新公司后,会主要与Scheme语言打交道。

8、仅仅一个月之后,1995年5月,网景公司做出决策,未来的网页脚本语言必须"看上去与Java足够相似",但是比Java简单,使得非专业的 网页作者也能很快上手。 这个决策实际上将Perl、Python、Tcl、Scheme等非面向对象编程的语言都排除在外了。

9、Brendan Eich被指定为这种"简化版Java语言"的设计师。但是,他对Java一点兴趣也没有。为了应付公司安排的任务,他只用10天时间就把Javascript设计出来了。由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。如果Brendan Eich预见到,未来这种语言会成为互联网第一大语言,全世界有几百万学习者,他会不会多花一点时间呢?

总的来说,他的设计思路是这样的:

(1)借鉴C语言的基本语法;

(2)借鉴Java语言的数据类型和内存管理;

(3)借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;

(4)借鉴Self语言,使用基于原型(prototype)的继承机制。

所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。 这是由Brendan Eich(函数式编程)与网景公司(面向对象编程)共同决定的。

语言的分类

按照语言发展的过程来分

1、面向机器的语言:二进制,汇编

2、面向过程的语言:汇编语言,C语言,B语言,

3、基于面向对象的语言:最典型的就是C++语言,OC

4、面向对象的语言:Java语言,C#语言等

按照类型的强弱来分

1、强类型语言:C语言,C++,Java 那变量的声明来举例子:定义变量必须指定变量的类型

2、弱类型语言:python,javaScript,Swift,kotlin

语法更加简单,更加易于学习,关键字也减少了

按照需不需编译来分:

1、脚本语言:Cmd命令,数据库操作语言SQL,JavaScript

2、预编译语言:最典型的就是Java语言,首先生成Java汇编,然后通过虚拟机进一步转换成计算机可以识别的二进制汇编语言

3、编译语言:汇编语言,C语言,C++语言,

4、标记语言:Html语言,语言本身没有内容,只是起到辅助的作用,没有他也没问题,只不过影响美观

随着计算机的发展,计算机面临的需求越来越多,解决的问题也越来越复杂,更高的封装才能解决更加棘手的问题,开发效率也会更高,也更易于学习和开发.

举个例子:汇编做一年的工作,C语言可能只需要半年,C++只需要三个天,phthon只需要一天;越是离机器远的语言,运行效率越低,开发效率越高,一般称之为高级语言,越是离机器近的语言,运行效率越高,开发效率越低,一般称之为低级语言,低级和高级仅仅指的是语言距离机器的远近;早期由于计算机硬件性能低,大家对程序的要求比较严格,但随着计算机的不断发展,硬件性能的大规模提升,程序本身影响运行效率的因素越来越轻微,项目越来越大,开发效率成为很重要的指标,而且高级语言更易于学习,可读性也远远高于低级语言,这也是面向对象语言流行的原因。

tips: 各位网友,你们怎么看?

标签: #汇编语言和编程语言一样吗为什么