软件是用编程软件编的,编程软件又怎么来的?

冰bingo菓


首先要明确几个概念,计算机语言、软件和开发平台,计算机语言是软件开发的基础,通过计算机语言才能实现和计算机硬件的通讯,实现对硬件的操作,一般计算机语言分为低级语言和高级语言,低级语言如:机器语言、汇编语言,可以直接操作硬件,速度快,但是编写和理解困难;高级语言如:C、C++、JAVA等,需要通过编译转换为机器语言实现对硬件操作,速度慢,但是更便于理解。

软件是通过计算机语言开发的,通过对计算机硬件的操作而实现某些功能的计算机程序的集合体,如:手机APP、PC端的应用、网站,甚至操作系统等都是软件。

一般所说的编程软件都是指的开发平台,也被称为IDE(集成开发环境),它的主要作用是通过集成一些开发常用的环境或者工具来提升软件开发的效率,如JAVA开发必须的JDK等。

所以说软件的基础是计算机语言,通过计算机语言结合一系列的算法从而实现对计算机硬件的操作,实现某些功能,而开发平台只是将代码的编辑过程进行了简化,使其更符合开发人员的思维逻辑。开发平台本身也是一个软件,也是通过某种计算机语言来写的,并且很多开发平台都是支持多语言的,如eclipse平台,除了支持JAVA开发,还支持C/C++、PHP、Python等,甚至可以开发eclipse自身的插件。


数通畅联


哈哈哈,你这个问题挺有趣,说明你是一个喜欢思考的人,这个问题有点类似鸡和蛋的问题,鸡和蛋我真不知道怎么来的,但是这个问题我可以替你解释解释。

我用通俗的语言给你讲一下计算机的原理,你就大概知道了,后面我再给你分析下,帮助你的理解。计算机说白了就是一个芯片,任何芯片只能执行这个芯片所认识的二进制程序,这个语言我们叫机器语言,就是机器不用翻译,可以直接读懂的语言。因为只有0和1,人看起来不方便,所以就有人把这些0和1的命令换成可以读懂的有意义的字符,执行程序的时候,只需要把这些字符换成0和1就可以,这个语言叫汇编语言。机器语言和汇编语言都属于低级语言,我们认为机器是可以直接执行的,所以效率也最高。

汇编语言就是机器语言的简单翻译,这个时候,人们为了方便,就发明了很多其他语言,后面的计算机语言更利于人们的理解,人清楚了,机器肯定就不清楚,这个就需要编译器,这就是后面的高级语言,高级语言的特点是:简单易懂,但是执行效率比机器语言低。所以后来为了兼顾易用性和效率,C语言脱颖而出,现在所有的对性能要求比较高的语言基本都是用C语言写的。

我们以C语言做例子,看看C语言是用什么语言写的?在没有C语言的时候,肯定是需要用汇编语言或者机器语言写C语言编译器,等C语言编译器有一个基本的最小内核,可以指自行工作后,就可以用C语言编译写程序,增加C语言编译器的功能。

有一些Java语言编译器就是用C写一部分,后面都用Java写,但是Java语言的效率低,有些编译器后面又改为用C语言开发。

所以用什么语言开发,视情况而定。在没有这个语言之前,肯定是用其他语言开发的。


赵涛聊IT


最早的程序是直接打孔控制的-穿孔卡片,这个是机械计算机时代,随着电气技术的发展,有了电子计算机,把物理上的孔换成了0和1,但是太繁琐了,很容易出错,人们开始慢慢用一些指令助记。但是最终还是要把指令换成二进制0和1,就有人用汇编写一个替换的程序,这个就是第一版编译器了。随着编程语言的发展,从最早的面向过程到后来的面向对象,各种抽象高级特性越来越多,编译器也变得越来越复杂。已经不是简单的替换指令了。需要词法分析,语法分析,编译,链接等等复杂操作,最终生成中间码,中间码最后生成对应的二进制文件。任何事情的发展都不是一蹴而就的,这都是几十年的成果!不妨看下这篇文章了解下计算机的历史!http://hacksth.com/200.html 顺便求个关注,给点支持!


搞点儿啥


在这美好的一天很荣幸为大家解答这个问题,让我们一起走进这个问题,现在让我们一起探讨一下。

以下我为大家分享,我个人对这个问题的看法与想法,希望我的分享能给大家带来帮助,也希望大家能够喜欢我的分享。

我认为程序的本质是给定输入,用指定逻辑给出输出。所以用basic写汇编编译器,JavaScript写c的编程工具完全做得到。c的编译器是c写的,go的编译器是go写的,Java的编译器是Java写的。

编程语言首先需要编译器把代码翻译成机器语言。而第一个编译器是慢慢迭代出来的,就是开始写一个简单的功能,然后逐步加强,直到完成一个完整的编译器。最早的C语言编译器就是这样写出来的。

其次,计算机语言、软件和开发平台,计算机语言是软件开发的基础,通过计算机语言才能实现和计算机硬件的通讯,实现对硬件的操作,一般计算机语言分为低级语言和高级语言,低级语言如:机器语言、汇编语言,可以直接操作硬件,速度快,但是编写和理解困难;高级语言如:C、C++、JAVA等,需要通过编译转换为机器语言实现对硬件操作,速度慢,但是更便于理解。

软件是通过计算机语言开发的,通过对计算机硬件的操作而实现某些功能的计算机程序的集合体,如:手机APP、PC端的应用、网站,甚至操作系统等都是软件。

一般所说的编程软件都是指的开发平台,也被称为IDE(集成开发环境),它的主要作用是通过集成一些开发常用的环境或者工具来提升软件开发的效率,如JAVA开发必须的JDK等。

所以说软件的基础是计算机语言,通过计算机语言结合一系列的算法从而实现对计算机硬件的操作,实现某些功能,而开发平台只是将代码的编辑过程进行了简化,使其更符合开发人员的思维逻辑。开发平台本身也是一个软件,也是通过某种计算机语言来写的,并且很多开发平台都是支持多语言的,如eclipse平台,除了支持JAVA开发,还支持C/C++、PHP、Python等,甚至可以开发eclipse自身的插件。

所以总结一下,编程软件通过硬件的支持,创造了我们使用的程序和其他的编程软件。

在以上的分享关于这个问题的解答都是个人的意见与建议,我希望我分享的这个问题的解答能够帮助到大家。

在这里同时也希望大家能够喜欢我的分享,大家如果有更好的关于这个问题的解答,还望分享评论出来共同讨论这话题。

我最后在这里,祝大家每天开开心心工作快快乐乐生活,健康生活每一天,家和万事兴,年年发大财,生意兴隆,谢谢!


科技评测


用一句话回答就是:软件是用编程软件编的,那么编程软件同样是用编程软件编的。

编程软件有很多功能,包括编辑、编译、调试、解释、测试等等。为简单起见,我们这里只讨论编译功能。不严格地说,编译可以理解为是将人类能看懂的程序代码翻译成机器能看懂能执行的机器语言。如果是Windows上写C程序,那编译器的作用就是将C程序翻译成exe后缀的二进制文件(也可能是dll,这里不去深究)。

那么编译器本身也是exe,也是机器语言,它又是谁编译出来的呢?不失一般性,我们假设有一个编写C语言的编程软件,或者就直接叫编译器,它的名字是cl。有一个很好玩的事实,编译器可以自己编译自己。说的具体点,cl3.0版本可以用cl2.0版本编译生成出来,cl2.0用cl1.0编译出来。当然前提是假设这个cl2.0以上都是用C语言写的源程序。所以说有了第一个cl版本,1.0版本,后面的都不是事。

现在问题来了,第一个cl.exe怎么来的呢?有很多可能。说不定当时市面上已经有了另一款C语言编译器,而第一个cl如果是用C语言开发的,它当然就可以用那款C编译器编译出来。

而如果假设cl本身就是世界上第一个C语言编译器,怎么破?那么它肯定不可能也是用C语言写的,因为第一个嘛,还没有谁能编译C语言程序。第一个C语言编译器可以用汇编,或者B语言,或者其他的某种已经有编译器的语言编译出来。至少用汇编是绝对没有问题的。

接着思考,第一个汇编程序怎么来的?那就没有办法了,靠手写了,人工写机器语言。而在那个时候,程序是非常短小的,用人工写也不会是太复杂。汇编程序就是把汇编语言翻译成机器语言的程序。比方说一句汇编指令,叫做mov ax,bx,翻译成机器语言就是1000100111011000。简单吧。基本上接近一一对应,至于如何对应,就要查CPU厂商的硬件手册。比如因特尔386,比如酷睿i7。只要手工写出一段用二进制形式的机器语言,能实现将汇编语言翻译成等价的机器语言,就搞定了。当然这不是一两天能搞定的,但是一旦写好,后面的事就简单了。有了第一个汇编程序,就能汇编出第一个C语言编译器,有了第一个C语言编译器,就能编译出第二个第三个其他的C语言编译器。有了C语言编译器,还可以编译出其他语言,比如JAVA、C#的编译器。


犍为真人


在这美好的一天很荣幸为大家解答这个问题,让我们一起走进这个问题,现在让我们一起探讨一下。

以下我为大家分享,我个人对这个问题的看法与想法,希望我的分享能给大家带来帮助,也希望大家能够喜欢我的分享。

我认为程序的本质是给定输入,用指定逻辑给出输出。所以用basic写汇编编译器,JavaScript写c的编程工具完全做得到。c的编译器是c写的,go的编译器是go写的,Java的编译器是Java写的。

编程语言首先需要编译器把代码翻译成机器语言。而第一个编译器是慢慢迭代出来的,就是开始写一个简单的功能,然后逐步加强,直到完成一个完整的编译器。最早的C语言编译器就是这样写出来的。

其次,计算机语言、软件和开发平台,计算机语言是软件开发的基础,通过计算机语言才能实现和计算机硬件的通讯,实现对硬件的操作,一般计算机语言分为低级语言和高级语言,低级语言如:机器语言、汇编语言,可以直接操作硬件,速度快,但是编写和理解困难;高级语言如:C、C++、JAVA等,需要通过编译转换为机器语言实现对硬件操作,速度慢,但是更便于理解。

软件是通过计算机语言开发的,通过对计算机硬件的操作而实现某些功能的计算机程序的集合体,如:手机APP、PC端的应用、网站,甚至操作系统等都是软件。

一般所说的编程软件都是指的开发平台,也被称为IDE(集成开发环境),它的主要作用是通过集成一些开发常用的环境或者工具来提升软件开发的效率,如JAVA开发必须的JDK等。

所以说软件的基础是计算机语言,通过计算机语言结合一系列的算法从而实现对计算机硬件的操作,实现某些功能,而开发平台只是将代码的编辑过程进行了简化,使其更符合开发人员的思维逻辑。开发平台本身也是一个软件,也是通过某种计算机语言来写的,并且很多开发平台都是支持多语言的,如eclipse平台,除了支持JAVA开发,还支持C/C++、PHP、Python等,甚至可以开发eclipse自身的插件。

所以总结一下,编程软件通过硬件的支持,创造了我们使用的程序和其他的编程软件。

在以上的分享关于这个问题的解答都是个人的意见与建议,我希望我分享的这个问题的解答能够帮助到大家。

在这里同时也希望大家能够喜欢我的分享,大家如果有更好的关于这个问题的解答,还望分享评论出来共同讨论这话题。

我最后在这里,祝大家每天开开心心工作快快乐乐生活,健康生活每一天,家和万事兴,年年发大财,生意兴隆,谢谢!


科技文件夹


要回答这个问题 必须学过数字电路 最好也知道纸带打孔机(计算机行业的祖师爷IBM公司最开始就是做这个的) 单纯的所谓“程序员”是无法说清的 因为他们根本没接触过硬件 我看了好多回答 大部分都是人云亦云隔靴搔痒 自以为懂了其实非也 只有很少的人提到了译码器、触发器、固定的电路等这些最最最根本的因素 如果不懂这些就不要误人子弟


清风明月207035999


最初一个编译器靠汇编实现,后面靠语言自己编译自己,就是自己进化。以C语言为例,首先用汇编写出C 1.0的编译器,然后发现C 1.0需要改进,于是改进到C 2.0,此时不在使用汇编了,直接使用C 1.0来开发C 2.0的编译器,如此迭代下去,由前一代语言实现下一代语言的编译器。像今天如此多的语言,再发明一种新语言,有很多选择来写编译器。


jackson316


你这个有点让我联想到了是先有鸡还是先有蛋的问题。不过这个更简单,这个给你打个比方可能你就更清楚。我们都知道一些简单的常识,比如我们生活中用的小玩具,大部分都是通过模具来做的,也就是说你可以想成普通软件是通过一个模具软件来做的。而这个模具呢又是通过最基本的一些元素构造起来的 比如用几块铁板经过一定的打磨成形。因为现在编程的软件种类很多,所以也不清楚你指的是何种的编程软件。但是大部分编程软件都是基于自身最基本的原理来做的,有专业人才为了后续制作软件方便就把许多功能整合在一起了形成了一个编程软件的平台,以后需要其他的软件只需要在这个平台上来制作就会方便许多了。就好比我们玩的积木一样,最小单位是一块一块的积木,我们可以提前把这些一块一块的积木搭成正方形,菱形、长方形等一些常用的形状,下次要用的时候就直接用这些搭好了的形状来作就快许多了。因此我们可以把编程软件想成是由最小的一块积木来搭成的,而其他的软件则是通过这个搭好了的编程软件来进行改造。


用友小赖


把自举吹得太神了吧。这个东西容易给你造成一个假象,好像是c创造了c。其实不论如何,最初的编译规则必须用其他语言(或者极端的说连汇编都不用,直接写机器码)做载体才能造出编译器。换句话说,c的编译器最初就是利用其他语言写成的编译器来生成的,好绕。。。。。其实也不用想太复杂,任何语言都可以自举,编译器本质上都是一堆机器码,能自举则说明编译器的机器码特征符合语言作者定义的编译规则。java也能自举啊,但是那样的话jvm的机器码特征就必须要符合jvm自己的编译规则,可想而知那样的话jvm效率有多低。所以,如果一门语言适合自举,则说明其编译后的机器码效率高,较为贴近底层,这不是“能或不能”自举的问题。


分享到:


相關文章: