对于写代码和编写程序来说,放到今天稍微学习一下 Python 和 JavaScript 这类编程语言就可以实现满足自己需求的应用程序,因为已经有很多很好封装好的框架共我们开发者使用,乃至一个中学生都不需要懂一些数学知识,调用相关的 Math 包就可以进行高等数学相关计算。现在有许多高级的编程语言和优秀的框架,使得开发变得更加容易和高效,Python 和 JavaScript 等语言拥有丰富的生态系统和强大的社区支持,为开发者提供了各种各样的工具和框架,使得构建复杂的应用程序变得更加容易。

上文提到从需求变成编程再到程序,需求是代码编写者对于软件系统所需功能和特性的描述,例如实现一个四则运算计算器程序,可以是在程序直接编写 console.log("20 + 4 = ",20 + 4) 这种形式来完成需求,也可以是实现一个漂亮的界面完成对应的需求。从 IDEA 到 Coding 到 Product 这个过程中 coding 环节是属于技术实现环节,实现某个功能可以有很多种技术方案,但是方案这么多作为程序员如何选?

主流开发的软件都属于应用软件,目前跑在电脑上和跑在手机上的应用软件并没有一些本质区别,都是程序员将自己的大脑逻辑抽象通过代码的形式告诉计算机,当执行这段代码运行之后该程序就会按照你编写的逻辑去交给 CPU 执行,只不过 CPU 要比我们脑子里面计算快得多。这个过程就是 Coding 阶段不能确保程序员大脑里的逻辑一定是正确的,当不合规的逻辑被编写到程序代码中,就可能会产生很严重的后果,例如程序崩溃导致的事件。在电脑和手机只要你开发的不是一些基础的软件,应用软件遇到问题最多就是卡死重启一下,现在的服务器端软件更是搞出来主从或者高可用架构来解决程序员在编码阶段留下的 bug 的问题。

在工业时代崇尚机器自动化,现在计算机程序已经渗透到各行各业中了,天上飞的地上跑的水下游的,飞机汽车潜艇这些设备上都靠着计算机程序在辅助人类完成一些操作。机械工程师在设计一些机械结构时犯下的错可能会导致飞机会坠毁,即使是设计合理的机械结构现在控制这些机械装置的已经不是人类了,是跑在计算机中的程序在控制这些机械结构。所以一架飞机或者自动化驾驶的汽车出了事故,责任不完全在机械工程师身上,更有可能的是编写软件的工程师导致的。

即现在从一名普通人转行为一名程序员太容易了,普通人通过特定的 IT 培训经过几个月的训练就可以写代码,此种工程师可能不具备专业的 CS 知识就可以动手写程序了,带了问题就上面所说的不可靠软件,如果需要开发专业型的软件还是需要专业型的知识作为铺垫的,例如让一个学土木工程或者做建筑设计的去做软件工程师,那就对应上了中文的俗语 “隔行如隔山” 。一些知名计算机科学界的先驱们就提出了点观点 Dijkstra 曾说过:

我们所使用的工具对我们的思维习惯有着深远的影响,因此也对我们的思维能力有着深远的影响。......使用 COBOL 会削弱人的思维;因此,教授 COBOL 应被视为刑事犯罪。

简单的工具容易被使用,但是会让使用者不去思考背后的原理,导致缺乏逻辑思维和不去思考事物的本质。这在日常生活中使用的智能手机可以拍照可以打电话可以玩游戏,但是发明和制造一台手机所需要的知识远远不是一个人就能做到的,是一个跨学科和跨领域合作的产品。现在用电脑写一篇文章的时候打错字可以回退修改,但是如果在纸上你写错了一个字可能就报废一张纸,解决办法则你可以使用铅笔进行写字配合着橡皮擦使用,古代人使用毛笔更需要思维和手法练习才发展出来了书法行业。

现在已经很少有人去使用了 COBOL 语言进行程序设计了,虽然我本人也是没有写过,但是在研究一些 PL 过程中了解到 COBOL 这门 PL 语言属于结构化加命令式结合产物。但是新的流行语言例如脚本语言和弱语言 JavaScript 和 Python 这些只有在运行的时候才能确定某个变量的类型,还有 C/C++ 这类有空指针设计的 PL ,也会带来底层软件的 Bug :

  • 不要试图去说服和你观点不一致的人,因为很多人它的认知和所需要的领域知识不及你全面,而且讨论问题的你还要帮助他去科普某些知识细节,交流起来很费劲。某些脑残粉给予给你扣上一个帽子,某些情况下一部分人就是故意在讨论中参入一些不相关的话题扯开话题或者故意添加干扰原本话题源的质量;参入讨论的前提跟你是一个层级的人或者说是有具备相关领域知识的人,如果观点不一致的双方可以互相尊重交流和倾听求同存异的面对观点进行交流沟通。
  • 例如有一些人故意问 Java 为什么不去开发内核系统?它需要虚拟机才能运行这样的问题!
  • 通过数据来说话,主流的技术用什么,解决了什么样的问题,以前有没有这样的方案,二者对比弊端呢。
  • 在程序员技术圈里经常流行一些鼓吹某些编程语言的案例,实质为其争吵起来,这些人完全就是自不量力或者说属于脑残粉那种,选择 PL 还是要根据场景来的,例如开发高性能的网络 IM 聊天服务器应用,只要能实现网络通信的 PL 都可以去实现。那如何去选择对应的 PL 呢?很多人语言脑残粉就会盲目的推崇某个语言,但是如果从事迹开发角度来说你考虑内存占用吗?考虑实时性要求吗?考虑性能要求吗?还是考虑团队综合技术水平和开发效率时间快慢问题?
便宜 VPS vultr
最后修改:2024 年 04 月 24 日
如果觉得我的文章对你有用,请随意赞赏 🌹 谢谢 !