本文是从 Programming will never be “easy” 这篇文章翻译而来。
网上似乎流行着这样一种说法,认为有些人之所以做不了编程,是因为编程语言不够好。我还看到有一部分人更甚,拐弯抹角的暗示说,编程之所以对大多数人而言很困难,是因为我们把编程语言设计的太难,让人们敬而远之,让我们这部分的人的饭碗更安全。事实上,程序员可并不想让自己的工作变的更困难,他们一直在想办法让工作更简单。事情的真正原因是,编程本来就是很难。
有些人议论说现在的编程语言太晦涩难懂,另外一些人说我们应该完全抛弃文本形式的语言,而采用GUI语言(可视化编程语言)。可是人们需要明白,如果GUI语言真的这么简单易懂,那是否人们都懂得GUI的电子工程技术呢?大多数人都不懂电子工程技术,这并不是因为他们不懂得如何去接线,而是因为他们不懂得逻辑,数学,和其中的基本工程技术。
至于有人说编程语言过于晦涩难懂,这是因为我们误解了他们真正想要的东西,他们真正想要的其实是:变戏法。那么,一种简单的语言是不可能存在吗?不。我们的编程语言还有很大的改进空间,需要去进化,然而不论编程语言自身如何改进,编程永远不会是一个简单工作,除非你只做一些最基础的任务。
让我们来增加一点娱乐效果,最简单的编程语言应该是什么样的?打个比喻,我们需要创建一个windows窗口,里面有张表单,当有人点击按钮时,表单里就会增加一条记录。人们想要的就是一种能够理解像这种信息的语言:
创建一个带有表单的窗口,当有人点击按钮时,往表单里增加一个条目
虽然理论上完全存在对人类语言进行完整分析的可能,而且以此能立即产生相应的编码,但现实中,我们还没有这种技术,而且,我们也没有获得足够的信息支持。什么样的窗口?初始位置在哪?颜色?什么样的表单?里面保存什么样的数据?用户如何跟这个表单直接交互?菜单条目有哪些?
同样,如果创建了两个这样的窗口又该怎样?如何去定位第一个,如何去定位第二个?而且,我们需要有某种的变量命名规范,例如“创建一个叫窗口1的窗口”,等一下,这会让语法解析器产生困惑,究竟是要创建一个标题为窗口1的窗口呢,还是要命名窗口变量为窗口1呢?让我们来重新定义一下我们的变量定义句法。“创建一个标题为‘窗口1’的窗口,并把变量名定义为“窗1”。很咬文嚼字吧,事情已经开始变的复杂了。
如果我们需要去做一个工程上更复杂的,例如创建一个作业调度程序,情况又会怎样?我们不能只是简单的说“创建一个作业调度器”,我们需要指出它是如何跟系统结合起来的,完全掌握程序的输出结果,包括内部代码。我们必须描述每个变量、每个行为如何产生,深入细节。说实话,用现在的标准编程语言更容易实现这些,
所有的这些并不是用来说明不需要提升我们的编程语言,我只是想试图说明,无论编程语言如何的简化,如果你不懂得代码背后的逻辑,用任何语言都不可能编出程序。
分享到:
相关推荐
软件开发(编程)从来都不是个容易的事儿.网上似乎流行着这样一种说法,认为有些人之所以做不了编程,是因为编程语言不够好。我还看到有一部分人更甚,拐弯抹角的暗示说,编程之所以对大多数人而言很困难,是因为我们...
虽然面向对象编程(Object-Oriented Programming, OOP)是一种非常流行且强大的编程范式,但并不是所有的编程场景都适合使用OOP。有时候,使用其他编程范式如函数式编程(Functional Programming, FP)可能会带来更...
依赖注入是一种编程技巧,其中对象在运行时接收其依赖项,而不是创建这些依赖项。这种方式有助于实现松耦合,使代码更容易理解和维护。 #### 3. 依赖注入那些事儿 ##### 3.1 依赖注入的类别 依赖注入可以根据依赖...
链表的每个节点包含数据和指向下一个节点的指针,这种结构使得链表在插入和删除操作上相比数组更具优势,但同时也增加了编写链表操作代码的复杂性。 【链表操作】如链表反转和有序链表合并是常见的面试题目,也是...
既有巨大的批量业务,又有巨大的后台联机业务,从基础架构及数据库优化都不是太容易的事儿。 典型问题二:关于中小银行核心系统基础架构的发展方向,究竟是分布式还是集中式?不同的应用架构需求,衍生不同的数据...
在编程和软件开发领域,了解项目中的代码行数(LOC,Lines of Code)有时是必要的。这可以帮助评估项目的规模、复杂性以及维护成本。...因此,代码行统计应作为评估的一个方面,而不是唯一的标准。
8. 代码结构清晰,其它问题都不算事儿:良好的代码结构是解决编程中遇到各种问题的基础,有助于提升代码的可维护性和可扩展性。 9. 项目作风硬派,一键测试,一键发布,一键部署:良好的项目管理应该能够实现简单的...
既有巨大的批量业务,又有巨大的后台联机业务,从基础架构及数据库优化都不是太容易的事儿。 因此,胖核心在未来的银行业发展过程中,肯定会需要做一些改造优化,账务从核心剥离,使得整个系统的模块儿化、灵活化...
2. 中国游戏中心:参照部队军衔级别而设置的级别,优点是不但直观明了,也优雅动听,而且根据级别很容易判断玩家的水平。 3. 腾讯:建筑系列的级别设置,虽然是直观明了,但太复杂,而且对于建筑专业的级别,好多人...
一个重要的问题是它违反了面向对象编程的一个核心原则:针对接口编程,而不是针对实现编程。这个原则鼓励开发者编写更灵活、更易于扩展和维护的代码。当我们针对实现编程时,如果需要更换底层实现,就不得不修改代码...