七步成诗,软件是如何把人类思维翻译成机器代码的

编程语言也是语言的一种,跟现代汉语、文言文甚至英语、西班牙语都没有太大区别,别把编程语言想得多么高大上。你以为搞编程是搞技术的,其实编程的工作本质就是翻译,还是个苦命的翻译。

编程就是翻译

所有的语言都是用来表达思想的,因此思想是软件成立的根本,在软件行业中,我们在说需求时总是说不清楚,翻来覆去总是变化,但这是非常正常的,因为复杂性和变化性正是人类思维本质的一部分啊。

以后你的产品经理再跟你说:“需求不是说得很清楚了么”你就可以像环球度假村的 红威震天一样使劲怼回去:愚蠢的人类…….。但怼之前也要想一下下你的银行账户余额……..

愚蠢的人类…….思维怎么可能不变呢?

编程的本质是什么?编程的本质是把人的思想变成计算机可执行的机器代码。

程序员的工作性质的本质是翻译,是把思想需求翻译成机器可执行的代码。你可以用任何高级语言来编程,既然是语言就是表达思维和思想的;任何思维都可以被翻译成机器语言,从而驱动计算机去执行任务。

编程就是翻译

「博士聊IT」一文看懂编程的本质,程序员有前途么?

一门流传下来的语言要么好表达,要么好理解执行快,二者必占其一。如果都不沾边的话,那么这个语言估计也很快会被淘汰了。

编程翻译的七个步骤

把大象装到冰箱里分几步呢?我们来仔细扒一扒软件到底在翻译什么东西?翻译中具体有以下七个方面的内容:

1、思维规律:人脑中所想的内容,有点虚无缥缈,我们还没办法直接拿到,除非本人说出来。那还有没有别的办法能获得呢?当然有,这就是脑机接口,直接把大脑的脑电波信 变成可存储的数据。
2、自然语言:英语和汉语都是自然语言,虽然其表达方式不同,语法结构不同,细致程度也不同,但都是思想的载体,因此各个语种才能互相翻译从而交流思想。
3、辅助分析语言:在辅助分析语言的帮助下,自然语言转化成程序更好理解的中间语言:例如UML、IDEF、ER关系图、BPMN、ARIS等等都是做这种辅助工作的语言。
4、高级语言:分为编程语言和数据库语言。编程语言负责CPU和内存的计算,例如JAVA、Python、PHP……;数据库语言负责和硬盘打交道存储数据,包括SQL和Nosql。高级语言之所以高级,就是指一般不需要考虑硬件环境,执行时只需要解释器和编译器。
5、类高级语言:现在看主要是C语言,介于高级和低级之间,需要考虑硬件环境。
6、底层语言:汇编语言,编写效率低执行快,必须和硬件打交道。
7、机器代码:0101010101001001……..

编程翻译的七个步骤

从1到7,越往下执行效率越高,书写难度越大;越往上书写效率越高,但语义越难精确。

第一阶段:从1到3是比较模糊的过程,各显神通,见仁见智,每一步翻译都很艰难。第一个阶段大家比较熟悉的是面向对象的分析方法。

软件架构师必读:面向对象编程思想(OOP)的由来与本质

第二阶段:从4到7的技术模式比较固化了,后面都得转换成C语言,因为人类真的没有能力再搞出来一套专门和硬件打交道的中间状态语言了。

程序员到底在翻译什么

第一阶段是把用户需求语言翻译成辅助分析语言,目标是把人类思维表达成规范化、形式化的模型,第二阶段把编程语言翻译成机器语言。

现有的形式化数学理论都是解决第二阶段映射的,前一个映射理论研究太少,尤其缺乏数学原理的支撑,但只要坚持,谓词逻辑、规则推理,关系代数、范畴论、知识图谱…..总会建立理论支撑的。

形式化数学理论

第一阶段翻译需要业务架构–>系统架构–>具体语言框架–>编写代码,这里就要忍受大量业务变化、系统设计不完善、程序代码的BUG,以及它们带来的无休止的迭代更改。

例如我们好不容易把JAVA代码写好,你以为就完事了么?此时第二阶段的翻译工作才刚刚开始。

第二阶段翻译近期的热点是华为对编译器的改进。拿华为的方舟编译器来说,看到了安卓系统的痛点:后面光编程语言就有好多道步骤 JAVA–>ART虚拟机(替换JVM)–>C–>汇编–>机器码,华为想搞静态翻译,把Java文件一次翻译到位形成机器码来提升效率。我觉得这个Android肯定也想过,但硬件每多一种配置就需要多一套编译文件,很难应对多厂商硬件以及配置上的变化,让咱们一起期待方舟的到来吧。

方舟编译器的优势

现在不是咱们中国发明编程语言困难,而是世界上发明都困难。这和语言是一样的,就算你表达和执行都厉害,还得让大家乐意学习使用啊。假如英国没有成为日不落帝国,英语也就不会流传这么广成为通用的语言之一。何况我们知识体系还真有好多硬伤需要治疗……

中国为什么没有自己的编程语言?哲学、数学和语言学基础是关键

程序员的工作就是翻译环节4中的一部分,由于后半部分基本自动化了,创新极难;前半部分都在表达思维,说不了那么清楚还总变化,就处在没完没了的折腾中,消耗生命,消耗青春…….

我们步子能不能迈得大一点呢?翻译能不能更高效率一点呢?难度太大,也要小心。创新不是说说就可以的。不积跬步,难行千里;基础不牢,难建高楼。

低效率的软件开发过程

那么软件行业聚集了这么多翻译,整体开发效率如何呢?实际上翻译效率非常低,涉及到的各个岗位都在痛苦中挣扎。下面我们看看软件翻译众生相,一款软件到底是怎样炼成的?

甲方客户:低效率的最终受害者,全场最着急的人。缺乏建模经验,对软件要求全靠口语描述和文字描述,对当前技术能力缺乏了解,总想拿起指挥棒却拿不动!

项目经理兼系统架构师:最能干的人才。上知需求,下会编码,还会威胁程序员。精通需求和架构技术,是全才也是瓶颈,最后忍无可忍去了互联 公司。

程序员:俗称“码农”,仅仅负责代码实现。流动性大,头上插标:Java3年,Python2年。互联 公司引领技术走向,专业化分工细化导致软件生产效率进一步降低。

测试人员:往往拿不到详细测试大纲,按口头交代测试。程序员工资比我高,一个简单的接口调用都跑不通。明天我也上个培训班……

甲方信息中心:对需求和架构情况都不甚了解,软件太多,架构太乱,跟不过来,却要对项目技术负全部责任。干脆提要求提死你们算了,于是提出了很多大家都不理解的要求,最后被解散,被合并到运维中心和采购中心。

实施人员:都是胸怀宽广的人,成天被客户、项目经理、开发、信息中心diss,心中有一万匹驮着SB的草尼马在心中不停地驰骋……

甲方用户:用户又来了,经过一圈翻译,最后才看到软件,要是乙方效率高时间短就质疑是不是你们部署错了。要是时间长需求都忘了,再来一遍吧!

虽然当前编程翻译效率不高,许多软件从业人员也没有安全感,但总体来看,软件编程仍旧是 会创新的主力军,不管是农业商业还是工业等各行各业都离不开软件的支撑。程序员在 会发展中体现出越来越重要的作用。短时间内程序员依旧是完成编程的绝对主力。

但我们也需努力锻炼自身技术,因为无代码的时代已经悄悄来临,正慢慢融入我们的生活。风暴将至未至,你我需砥砺前行。未来已来,我们已在路上,希望和各位携手走进无代码的时代,共同见证这一伟大变革!

【博士聊IT】感兴趣,加关注

「博士聊IT」一文看懂编程的本质,程序员有前途么?

软件架构师必读:面向对象编程思想(OOP)的由来与本质

中国为什么没有自己的编程语言?哲学、数学和语言学基础是关键

程序员比 平工资高70%?编程的本质是什么?能力强还是分配不公

真正的创新买不来,特斯拉为啥不用SAP,只因为他

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年10月15日
下一篇 2021年10月15日

相关推荐