编程与软件开发的区别 软件开发是编程吗

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

编程与软件开发的区别 软件开发是编程吗


软件是用编程软件写成的 , 那么编程软件是怎么来的呢?这个吧 , 我真的没办法一个个给你解释到底 , 不然你要是打破沙锅问到底 , 可能一顿火锅的功夫我也没办法给你说完 。举个例子哈 , IntelliJ IDEA和Eclipse都是Java的IDE , 用这两个IDE可以写非常多的软件 , 比如Android Studio先后分别基于这两个软件 , Android上所有的软件都是用这玩意儿开发的 , 但是这两个IDE本身也都是Java语言开发的 , 这两个IDE呢最初肯定是在Vim/Emacs Java开发的 , 咱就先说到这里 , 不然要喋喋不休了 。
【编程与软件开发的区别 软件开发是编程吗】我给大家提一个思路 , 大家按照这个思路可以自己去找自己感兴趣的问题 。我给大家说一说Google实现Go 1.5自举、去除所有的C语言程序的过程 , 大家慢慢就明白了 , 基本上计算机技术都是这样迭代出来的 , 比如怎么先有了C语言、现有了Unix , 又如何在这些基础上 , 诞生了Emacs、C等众多新的软件和技术 。事实上现在所有新的编程语言 , 基本上都会考虑在C语言的基础之上构建 , Go语言也不例外 , 何况Go语言的重要设计者之一肯汤普森老爷子 , 还是C语言、Unix之父 。
Go语言发展的第一阶段 , 就是开发一个从C语言到Go语言的翻译器 , 将C语言编译器翻译成Go语言的 , 不过了Go语言核心设计团队的三位大神非常机智 , 他们最大程度避免了在Go语言编译器设计中 , 大量使用未来很难移植到Go语言的一些特性 , 比如宏、比如指针 , 这些都是C、C留下的一些糟糕的设计 , 不符合现在的编程语言设计潮流 。
转换编译器源码树产生一个Go语言编译器 , 不过这时候还是典型C语言风格 。接下来 , Google对编译器进行了优化 , 将编译器CPU、内存等硬件资源占用的问题解决了 , 并且引入了并行概念 。为了改进编译器在消除边界检查等问题下的能力 , 同时在不依赖架构的node*s、prog*s之间引入一个中间表示 。这些事情完成之后 , Google就做了最后一步 , 用Go 1.5、也就是当时Go语言最新版本 , 用go/parser和go/types替换了编译器前端 , 至此Go语言实现了自举 , 并且获得了一个稳定高效的编译器实现 。
Go语言本身编程难度要比C更简单 , 这是因为Go语言跟很多高级语言一样 , 摒弃了指针、规避了内存泄漏、解决了缓冲区溢出 , 深度递归时栈的溢出 , 摒弃了宏这些定义 。Go语言工具链对模块化、单元测试、以及性能分析支持更好 , 在修改内部API或重构时 , 应用自动化程序重构前景更加值得期待 。你看这就是Go语言从C语言写编译器  , 到最终实现Go语言完全自举的过程 , 当然大家都知道图灵完备的编程语言都可以实现自举 , 理论上符合图灵完备的编程语言都是这么发展的 , C就是这么发展的 , 满足这个条件的编程语言 , 你才能作为其他编程语言的基础 。
那么我们回到最初的问题上 , 编写软件的编程软件又是在什么环境下开发的呢?计算机技术发展至今 , 在机器语言的基础上 , 弄出了汇编语言 , 接着两位祖师爷弄了C语言和Unix系统 , 接着在这个基础上 , 又有人弄了Emacs、Vim、GCC , 你看基本上现代计算机技术的所有根基技术就有了 。接着就是用C语言写各种操作系统 , 为了各种需求写各种编程语言 , 又根据各种需求开发各种集成开发环境 , 然后又根据各种应用需求用集成开发环境写其他应用软件 , 这就是一个完整的计算机技术发展进化流程 。

推荐阅读