机器越聪明,程序员就容易变懒

自作聪明的高级语言惯坏了程序员
服务器君一共花费了164.853 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

计算机相关产业的进化速度总是让人咋舌,如今随便一个手机的运算能力就超越了少几年前一般台式机的能力,这对使用者来说是好事,对程序员来说更是好事。倘若计算机性能强大到让开发者不用顾忌时间、空间复杂度,一切算法、优化什么的也就完全没了意义,毕竟这些东西都是为了我们能更划算的完成尽可能多的任务。但写出能让人长期维护扩展下去的程序比写让机器高效运行的程序难度大的多,机器性能的增强也不会直接促使程序员写出更优雅的代码,不然怎会看到专门收钱帮项目做设计模式、软件工程的顾问公司却没有做算法顾问的。

记得我曾经做一个项目有一个c文件有5000行,后期在解决跨编译器移植性问题时TC竟然都不能完全加载整个文件,更别谈顺利编译,不得不放弃这个编译器。想来c/c++通过包含头文件以c/cpp为编译单元,再将所有编译单元生成的目标文件连接为可执行文件的编译方式应是受制于计算机早期性能有限,特别是内存资源珍贵无比,一个小点的项目还好,把大项目的所有源码或其AST、符号表等东西都加载进内存就不现实了,于是无奈的只能划分成单个c/cpp编译单元进行操作。因为使用头文件包含做语法分析和部分代码生成,便随之可能产生循环包含、引用的问题,当然,这些都是可以避免的。

现代的高级编程语言环境一般都伴随很多较早期高级语言更智能的特性,比如功能更强大的IDE,代码着色,代码自动完成,类型提示,类型自动推导,注释文档提示,无头文件包含编译等,哦对了,把所见即所得的界面编辑也姑且算进去吧。需要付出的开销,或者说代价就是更大的内存占用,编译器/IDE将内存用于存储整个工程所有源码的AST、符号表,甚至是注释信息,即使程序员还没有点任何编译按钮。

我们希望机器更聪明,这也是一代代从业者努力的目标;更希望机器能摆脱人的干预自己就可以聪明的解决一些问题。语言越来越智能,编程貌似越来越简单,但正如刚才说的,只要像Java、C#这些较新(一般还都是在智能IDE中敲代码)的高级语言给了程序员只要import/using后就可以使用作用域内全盘任意的东西的能力,经验欠缺的程序员用它们写出循环引用、静态变量过多的代码的障碍就会较使用c/c++小很多。我不得不说自作聪明的高级语言会惯坏初级程序员,如果想学编程,先用功能看起来笨些的语言入门吧,用的久了自会分辨出大巧与真拙的区别。无边界效应的函数式编程语言也许能在编程范式上较指令式编程语言更有益于程序员养成好的习惯,可惜这类国外的基础甚至入门实践在国内乏人问津。

语言本身并无功过是非,可是越是智能的语言越是难以让程序员领会到怎样写出更好更易维护的代码,除非写程序的你不甘计算机的真相被埋没在它聪明的背后。

充分理解业务上的知识也是非常重要的,这些自动化的东西就是为了避免重复造轮子,避免陷入底层代码的海洋。如何制造一个世界上最好的轮子,和如何最出色的使用这个轮子完全是两个不同的领域,世界上最出色的建筑师可能并不知道如何制作一把世界上最好的锤子,那是世界上最好的造锤师傅干的活。

唯一的区别在于,做底层做框架的人的客户就是上层业务的开发人员,而上层业务的开发人员的客户就是最终购买产品的消费者。无论你在哪一层,你的最终目的就是要让你的用户觉得你的产品好用,如果你的用户还需要来学你的产品是怎么做的,那还要你干什么?

其实,并没有谁比谁更高端~有的只是无尽的虚荣心和优越感。

本文地址:http://www.nowamagic.net/librarys/veda/detail/1536,欢迎访问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.nowamagic.net/librarys/veda/detail/1536

如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多人觉得自己技术进步很慢,学习效率低,我觉得一个重要原因是看的书少了。多少是多呢?起码得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知识量+足够良好的知识结构,系统化以后就足以应对大量未曾遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《高性能网站建设指南》 桑德斯 (Steve Sounders) (作者), 刘彦博 (译者)

《高性能网站建设指南》结合Web2.0以来Web开发领域的最新形势和特点,介绍了网站性能问题的现状、产生的原因,以及改善或解决性能问题的原则、技术技巧和最佳实践。重点关注网页的行为特征,阐释优化Ajax、CSS、JavaScript、Flash和图片处理等要素的技术,全面涵盖浏览器端性能问题的方方面面。在《高性能网站建设指南》中,作者给出了14条具体的优化原则,每一条原则都配以范例佐证,并提供了在线支持。全书内容丰富,主要包括减少HTTP请求、ExpiresHeader技术、Gzip组件、CSS和JavaScript最佳实践、关闭ETags的技巧、Ajax缓存技术和最小化技术等。

更多计算机宝库...