❶ 当下热度最高的编程语言Python究竟是怎样诞生的
Python诞生与发展Python作为当下大火的一门编程语言,深受众多程序员的喜爱,而追溯其发展始末还得从上世纪说起。Python是Guido Van Rossum (荷兰人吉多·范罗苏姆)于1989年开发推出。而开发这一编程语言背后还有个不为人知的小故事。1989年圣诞节期间,在阿姆斯特丹的吉多深感无聊与苦闷,作为一名资深的编程爱好者他决定开发一个新的脚本解释程序,作为编程界惯用的ABC语言的一种继承。
Python因其奉行极简主义,易于读写受众多人青睐。更令人称道的是Python作为一种开源软件不用花一分钱就能够实现编辑,同时Python兼容多平台,学习强度相对于其他编程语言而言是普遍公认的简单,在实际生活的各个领域均得到了广泛的应用。
❷ 请问编程语言怎么产生的
编程语言(programming language),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。
最早的编程语言是在电脑发明之后产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于声明式编程,说明需要的结果,而不说明如何计算。
编程语言的描述一般可以分为语法及语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。有些语言是用规格文件定义,例如C语言的规格文件也是ISO标准中一部份,2011年后的版本为ISO/IEC 9899:2011,而其他语言(像Perl)有一份主要的编程语言实现文件,视为是参考实现。
编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言和高级语言。
❸ 编程语言是如何创建的
因为有解释器啊,编译型的语言一般都被转化成底层的机械码了。要想自己开发语言完全是没问题的。至于看什么《编译原理基础》感觉价值不大,能真正看懂的人太少了。还不如直接找个开源的程序语言研究一下。至少改个语法应该没问题。
❹ 计算机语言是如何开发出来的
计算机语言是“设计”出来的,设计只需要思考和写文档,而该语言的编译器才是“开发”出来的。编译器也是程序,所以也需要用编程语言来编写,至于用什么语言就随开发者的便了。很多编程语言是用别的更基础的语言开发的,其中用最多的就是C语言。C语言编译器很多,大部分都是用别的C语言编译器编译出来的,而最早的C语言编译器是用汇编语言写出来的,最早的汇编语言编译器是通过“编译器自举”开发出来的。
相关回答
一个很深奥的问题
一、新建项目 启动Microsoft Visual Studio 。NET,新建一个C#项目MyApp,本例工程存放于F:\Csharp\MyApp。 二、添加控件 在Form1 窗体上添加三个控件(见图1):主菜单MainMenu、标签Label1和按钮Button1。
Label1和Button1控件的属性均采用缺省设置。MainMenu控件中添加三个菜单项menuItem1、menuItem2、menuItem3。Text属性分别设为“语言”、“中文”和“English”。
menuItem2、 menuItem3 的RadioCheck属性设为True。 图 1 三、创建配置文件 在项目中添加一个文本文件 i,保存当前程序的语言版本设置。该文件中只有一行内容。
如果是“English”,则表示程序为英文版;如果是“Chinese”则为中文版。这里暂且保存为“English”。 四、创建资源文件 。NET中的资源文件有三种: 文本(。txt )文件、XML 格式的。
❺ 像c++这样的编程语言是怎么创造出来的
编程语言的发展是随着硬件一起发展的,最初没有当前成熟的101键盘前,技术人员是无法用字母输入命令和语句的,显然也不存在任何高级语言的。
机械计算机我就不谈了,太遥远,第一台电子计算机是ENIAC是1946年制造的,开始用的是连接线,后来用的是打孔机,以纸带作为输入,一根纸带边上是齿孔用于步进电机带动纸带,类似现在的针式打印机的纸张,当然纸带比针式打印机纸张窄,编程人员事先写好二进制指令的编码和数据,逐一在纸带上打孔,比如一个指令和数据是8位,如果是1,则打一个孔,如果是0则不打孔,打完一个字节让步进电机进一格,打后面一个数据。所有程序代码和数据打完,将纸带装到计算机的读入设备中并逐一读入并运行,当时还没有存储器,所以执行完如果需要再运算一遍,要复位重新装纸带。当然如果程序要改写就得重新打一卷纸带。
这就是电子计算机最原始的编程(机械计算机则还要麻烦),后来有了存储器,还是用纸带输入程序,然后可以重复运算,因为输入的指令和数据都存入存储器了,不需要再跑一遍(真正意义的跑)。此时程序员编写的程序都是机器语言,形式就是二进制码
类似这样
01010100
11001101
01101010
...
后来人们觉得这样很麻烦,考虑到一种CPU的指令都是固定,如果有一种简单容易能帮助记忆符号来代替一串二进制就方便多了,因此设计出了汇编语言,因此汇编指令称为助记符,比如MOV,ADD,JMP等等。这时候就需要一种新的输入设备代替打孔机,而且能直接连接在计算机上,之后随着晶体管的发展,单片机出现,一个按钮代表一个指令,同时结合数码键(0-9,A-F)输入16进制数据,让设备转成二进制数据,这应该算最早的编译器了,属于硬件编译器。
再之后,人们发现计算机不仅可以处理数据,还可以处理文本,因此有了ASC码,ASC码也发展了好几代,既然可以处理文本,随着计算机设备的发展,把打字机键盘复制过来,扩展单片机的按钮,这样计算机键盘的雏形出现了,取消了专用汇编指令键,而改用程序来翻译输入的文本,比如单个汇编指令MOV改用键盘输入这三个字母的文本,由翻译程序翻译成二级制码,这应该是最早的源代码了,而这个翻译程序最先当然还是用单片机开发的,而这个翻译程序就是最早的汇编指令编译器了。
有了汇编指令编译器,人们可以直接通过键盘输入汇编指令,由编译器编译成二级制码执行程序,有了汇编编译器,人们不仅直接用于各种科研运算,而且开发了更高级的语言了,那么后来各种语言蓬勃发展起来了,在C语言前还有A,B,以及其他高级语言陆续出现,比如1954年的Fortran。
所以你可以看到,技术都是迭代发展的,你只要学习到足够的知识,可以用任何语言开发你的编译器,当然这可是件不简单的任务,同时,所开发的编译器受你所用的语言限制。
❻ 怎么研发一款编程语言
编程语言,作为人与计算机沟通的桥梁,有着重要和深远的意义。有过计算机编程经验的人,多少学习或掌握过一到多种编程语言。计算机专业领域的编程语言成百上千种,主流的编程语言也有数十种之多。每种编程语言面向的领域和特性都不尽相同,不过归根结底是为了解决人与计算机之间沟通的效率问题,提高计算机的生产力。想必有不少人对那些主流编程语言的创造者十分倾佩,也相信有不少人会好奇一门编程语言是如何诞生的。那么如何创造一门编程语言呢?
总的来看,创造一门编程语言需要有以下几个过程:
(1)设计语言的特性。
(2)定义语言的单词、语法和语义。
(3)实现编译器或者解释器将程序翻译为计算机底层表示。
(4)生成计算机程序的二进制存储格式。
(5)完善语言的运行时环境和标准库。
一、语言特性设计
所谓语言特性,就是编程语言为开发者提供了什么样的原子性功能特征。比如是否支持数学表达式计算、字符串处理,是否支持变量、函数和递归,是否支持分支、循环复合语句等。语言的变量类型是强类型、弱类型,还是动态类型,程序是过程式、函数式,还是面向对象的。是否支持模板、泛型和反射机制,是否支持多线程和并发特性,是否支持错误和异常处理机制等等。
语言特性设计是一门编程语言最关键的环节,直接决定了语言的基本特征和雏形。当然,这也是最难的一个环节,因为语言设计是面向具体问题领域的,是语言设计者从大量的编程实践中的获得的总结和升华。比如C语言设计者希望面向计算机底层,拥有对操作系统和硬件的直接操纵能力。而Python的设计者则希望尽可能地减少操作计算机资源的繁琐过程,以获得语言的简洁性、高度的灵活性和扩展性。SQL的设计者面向具体的数据查询和分析领域,希望帮助开发者获得快速检索和操纵数据的能力。而Go语言的设计者则希望在保留C语言优秀功能的基础上,扩展编程语言对高并发环境的支持,并拥有垃圾回收和快速编译的能力。
凡此种种,编程语言特性的设计都是面向具体的问题领域的,是语言设计者构建于开发者和计算机之间的中间层,是对开发过程中重复功能逻辑的原子性“封装”,最终的目的是为了提升具体问题领域内的软件开发效率。
二、单词、语法和语义
和人类使用的自然语言类似,编程语言也有自身的单词、语法和语义,专业上称为词法记号、语言文法和语义。
常见的词法记号可以分为数字、字符、字符串、标识符、关键字,以及用于连接表达式的运算符、分割语句或者程序段落的界符等符号。这些是编程语言程序的基本单位,通过它们的有序组合,构建出了一门编程语言形形色色的代码片段。
编程语言的文法是用来描述语言的语法规则的,具体来说是规定词法记号之间的排列组合的顺序与规则。它描述了编程语言程序的基本模式,不符合该模式的词法记号的排列被挡在了合法语言程序的大门之外。同时,它也是各种编程语言对于开发者最明显的差异化特征。一个有经验的开发者可以很容易地通过扫视一段代码,就能分辨出这是哪种编程语言编写的计算机程序。
编程语言的语义描述了一段符合语言语法的程序,对于计算机而言的真正含义,是开发者最终要传达给计算机的意愿和指令。语言的语义必须是准确的、无二义性的,编译器也正是通过语义的指导,将计算机程序翻译为计算机可识别的表达形式。
三、程序的翻译
计算机程序是用来供人阅读和修改的,计算机硬件并不能理解程序内的思想和含义。因此,必须有一个翻译转换的过程,将人所表达的意愿准确无误地传递给计算机,让计算机明确并执行人下发的指令。实现这种翻译工作的工具就是编译器或解释器。
对于编译器来说,它的输入是人类书写的计算机语言程序,输出则是计算机可识别的底层表示。首先,它需要识别出程序中的单词,即词法分析。然后,根据单词的组合模式识别出程序的语法结构,即语法分析。最后,根据不同的语法结构对应的语义,将程序按照每个语法模块的形式转换为计算机可识别的指令序列,即语义分析和目标代码生成。
众所周知编译器的实现具有一定的复杂度,其根本原因来自于语言语法的结构灵活性和计算机底层表达形式的多样性,这也是创造一门编程语言最核心的环节。
四、二进制存储
编译器将语言程序翻译转换后,需要将转换后的结果存储起来,以便计算机在需要的时候将其加载、执行。这里不可避免的涉及到两个问题:
(1)转换后的结果是什么样的形式?
(2)转换后的结果保存在哪里?
第一个问题描述的是计算机程序被转换为怎样的形式,才是计算机可以识别的。由于计算机中实际运行程序的硬件模块是CPU,因此计算机程序只有被转换为CPU的二进制指令格式才能被正确识别、执行。比如常见的Intel体系的CISC指令格式、ARM体系的RISC执行格式等。
第二个问题描述的是计算机程序转化为二进制指令格式后,以什么样的方式保存在计算机的磁盘上。由于绝大多数的计算机程序是需要通过运行在计算机硬件之上的操作系统加载运行的,因此计算机程序的二进制表达形式必须以对应操作系统可识别的文件格式存储。比如常见的Windows操作系统的PE文件格式、Linux操作系统的ELF文件格式等。
五、运行时环境和标准库
理论上讲,一门编程语言如果能提供出完备的操纵操作系统和硬件的原子性功能就已经成功了。但是不提供强大的运行时环境支持和标准库,是很难让一门编程语言真正的好用和流行的。没有人希望简单地打印一行字符串,还需要使用编程语言提供的基本特性实现调用操作系统提供的打印接口的逻辑。Java语言之所以久兴不衰,正是因为它不仅提供了完善的运行时环境和开发库支持,甚至提供了更强大的开发框架和工具支持。
因此可见,除了完备的语言特性,为开发者提供更方便好用的库和框架支持,消除软件构建过程中复杂和重复的逻辑,才是一门优秀编程语言的长盛之道。
六、自己动手,立即开始!
《自己动手构造编译系统——编译、汇编与链接》一书详细阐述了一门编程语言从无到有的过程,从语言的功能特性设计,到词法、文法、语义分析;从编译器、汇编器的设计实现,到目标文件的链接生成可执行文件;甚至编译优化器的实现、二进制指令、可执行文件格式以及语言运行时和标准库的概念,都在书中做了认真细致地剖析。相信对本书的阅读,将是一次不错的获得知识的体验!