当我们谈编程,我们在谈什么

当我们谈编程,我们在谈什么。

很多人在谈自己对编程语言的掌握程度,比如精通某编程语言。

如果只是刷个题,训练一下大脑的思维能力,那么也可以那么说。

但是学编程还是要解决实际问题的,批判的武器代替不了武器的批判。

高校老师会教数据结构、算法、操作系统、编译原理。

但是学生出来后,并没有觉得自己在职场上可以无往而不利。

进入职场后,每个人的境遇不一样。

有的人进入大厂,就是做一个螺丝钉,没有进行软件设计的机会,就是在维护遗留系统,在代码的屎山中做那头奋力开道的二师兄。

有的人进入初创小企业,不管三七二十一,能抄的绝不自己写,不管质量如何快速上市变现是最重要的。

前两者都是以互联网企业为主。互联网本质是服务业,互联网软件也是服务型软件,不追求性能最高,只追求能快速变现。大部分互联网软件都是基于成熟的框架快速变现。

对于工业软件而言,编程的核心是建模,那是在未知的领域开拓。

没有模型指导,几百万行代码难以捏成系统,就象一堆砖头不是摩天大楼一样。

C/C++,JAVA、GO、RUST、Python等流行的开发语言其实并不能教你如何建模。

你即使读完成C++ primer,STL,OOP等书,你还是在遇到问题时束手无策。

就算是把OOP书看上十本都不一定培养你的建模能力,因为很多写OOP的人都不知道如何建模。

真正培养建模能力的是Haskell、LISP之类的语言。

Haskell通过类型系统为现实建模型。

LISP通过抽象语言树(AST)对现实建模型。

以前谈到,人工智能不具备“心智模型”,因而没有模拟和预测能力。

软件工程这个概念虽然提出有近五十年了,但是在实际应用中,除非经过几次迭代,熟悉了业务流程,能建立相应的业务模型,否则软工的成功率远不如传统工程。

说到底,传统工程之所以成功率高,主要是有成熟的模型,建筑可以建一个沙盘模型。

而且人类有几千年应用建筑材料的历史,知道什么材料能支撑,决不会用豆腐渣材料当大梁。

但是软件的发展历史太短,很多东西没有标准化,你不知道哪个库是不是豆腐渣,是不是流沙。

在流沙上建城堡的可靠性,用脚趾头想想都能明白。

站务

全部专栏