`
yzd
  • 浏览: 1885542 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

超载的程序员

 
阅读更多

今天早上,在 Google 上搜索的时候,我偶然看到了一个帖子,作者声称:所有人都不该使用 C++ 标准库里的 make_heap 函数,因为,几乎没有人是在正确的使用它。我立即在心里大骂这是多么荒谬的断言,因为任何人只要上过基本的算法课程,都会知道如何正确的使用make_heap。然而,这让我开始思考,如何看待那些不知道堆(heap)为何物的程序员,更甚者,那些并不需要知道它为何物的程序员。

  最终,我认定,这两种人,我们仍然应把他们称作程序员。

  当我还是个毛头小伙的时候,很多我听到的关于如何正确的编程的建议其实都是非常错误的。经过这些年,我发现,大多数这样的这建议,其本身并没有问题,只是缺少相应的上下文环境。当今的这波创业浪潮给人们造成了一个有趣的印象,导致很多的程序员都开始相信“性能不是问题”,这个就是一种充满风险和牵涉微妙的上下文环境的建议,尤其是当面对会出现意想不到的相互影响的复杂架构时更是要警惕。这种缺乏上下文的耳耳相传的只言片语的流行是一个很普遍的问题,而事实上,它是一个更深层问题的简单表象。

  程序员这个词涵盖了一个异常宽泛的技术谱系和层次。从纵坐标上讲,一个程序员,从能仅仅会用 vbscript,到能为因特尔 CPU 写编译器、为航空公司开发系统运算软件。从横坐标上讲,他可能是专长于数据库,或能从 CPU 指令级别调整性能,或能开发并行处理库,或制造物理过程引擎,或做图片处理,或创作 3D 模型,或写打印机驱动,或使用 coffeescript,HTML5,和 AJAX 来开发网站应用,或使用 nginx 和 PHP 开发 LAMP 架构 web 应用,或他能编写网络应用库或能做人工智能科研。他们都是程序员。

  这太荒唐了。

  我们的世界正在被软件吞噬。在将来,编程将会和数学和语文一样成为基础课程。我们将会有四个R——Reading (阅读), ‘Riting, ‘Rithematic (数学), 和 Recursion (递归算法)。到时,如果再说某某人是一个程序员将会是一句废话,因为超过 10% 的人口将会具有一定水平的编程能力。“程序员”这个词涵盖了如此多的内容,如果你称自己为程序员,就好象称自己为“科学家”而不是“物理科学家”。我们能有其他称呼吗?有人试图做了这方面的尝试,指出一个程序员和一个计算机科学家直接的不同之处,但说的毫无价值,根本无法区分我和一个从大学毕业的人工智能博士生之间的区别。他懂得多维数学分析,用函数式语言计算,这些是我不通过数年的研究是无法理解的。而我能够写出速度超快的,灵巧的 C++ 或 HLSL 汇编程序,能变戏法似的处理和变换矩阵,在屏幕上绘出漂亮的图像。我说的这两种情况都是出于完全不同的原因下的极其复杂的工作,他不能完成我的,我不能完成他的。一种操作对一个人很熟练,对另外一个人却是困难的。但我们都是程序员。只是在我们各自的领域里的程序员,我们是图像计算程序员或人工智能程序员或[xxx]程序员。

  你知道我们为什么会有这样毫无目标的语言论战和毫无意义的关于哪一种语言更好用的争论吗?你知道为什么人们——除非在自己的小圈子里当“XX 方法”对所有人表示同一个意思的时候——永远不能在这些问题是达成共识的原因吗?因为我们赋予了自己过多的内容。我们把自己看成了由数个程序员组成——每个都专长于某项东西,我们错误的认为我们的观点能够适用于我们的专长之外的领域。我们是工业工程师却试图想告诉化学家如何进行他们的试验。我们是建筑师却试图想告诉英语专业的学生如何创作一篇论文——只是因为我们都用了大量的纸张。

  这种态度深深的根植于计算机科技界的核心深处。计算机科学的主要目的是用一些基本数据结构来帮人们完成以前需要人做的所有事情。如果你认为这完全是编程的事,那你就错了,这是不可能的。我们忘了,这些数据结构只是我们在神奇的数据计算领域需要的,我们忽略了,对于不同的实现,需要对完全不同领域的编程,针对的是完全不同的用户。Donald Knuth 深知理论和实现之间的不同之处——我们需要认真的理解这些关于理论特定实现的忠告之间的区别。

  如今,你已经不能因为一个人是程序员,你就可以随意让他开发任何东西。说一个程序员在开发软件,就好像是说一个科学家在做科学研究。不同之处是,植物学科学家是不会去设计核反应堆的。

分享到:
评论
1 楼 奥义之舞 2012-03-13  
为什么转载的不标明一下出处,我还以为是原创呢 哎

相关推荐

    超载

    这种方法重命名的方式允许程序员根据传递的不同参数来执行不同的操作,提供了代码的可读性和灵活性。 在Java中,方法的重载有以下几个关键点: 1. **同名性**:重载的方法必须拥有相同的名称。 2. **参数列表的...

    西门子PLC程序源码-一个五层电梯的LAD逻辑程序.zip

    7. **调试与优化**:实际应用中,程序员可能需要根据现场条件调整程序,例如优化电梯响应速度、平衡能耗、增强安全性能等。这需要对LAD编程有深入理解和实践经验。 总之,这个西门子PLC电梯程序源码是一个宝贵的...

    富士PLC程序源码-富士MICREX-F PLC五层电梯.rar

    它支持多种编程语言,如梯形图(Ladder Diagram)、指令表(Instruction List)等,使得程序员可以灵活选择合适的编程方式。 在电梯控制系统中,PLC主要负责以下几个核心功能: 1. **电梯召唤与选层**:通过读取...

    基于Labview的七层电梯设计,labview电梯设计五层,LabView

    在LabVIEW中,我们可以设置各种安全检查和保护机制,如超载检测、门防夹功能等。当发生异常情况时,系统应能立即停止电梯的运行并发出警告。 至于具体的文件“基于Labview的七层电梯设计”,它可能包含了完成上述...

    SIEDA.Monadic:在C#中实现几种功能Monadic类型,从而实现更好的API和合同设计

    在这种情况下,使用null尤其有问题,因为这会使其语义超载! 现在为null表示尚未初始化和edge / exception-case 。 通过该库中的类,您可以利用C#的类型系统来强制执行此类合同的基本性质,这意味着您必须等到...

    揉纹车间电梯.rar

    此外,三菱PLC提供强大的编程语言,如Ladder Diagram(梯形图)、Structured Text(结构化文本)等,使得程序员可以直观地设计控制逻辑。在实际项目中,工程师会根据需求选择合适的编程语言和编程策略,以实现高效、...

    电梯程序源代码+可运行文件,模拟电梯系统

    1. **源代码**:源代码是程序员用高级语言编写的程序,如C、C++或Python,用于描述电梯系统的运行逻辑。它可能分为几个模块,如电梯调度算法、传感器接口、用户界面、驱动控制等。通过阅读源代码,我们可以深入理解...

    plc八层电梯程序

    这些资源通常包括梯形图源代码文件,它是PLC程序的核心部分,程序员可以通过它定义复杂的控制流程。数据手册或用户手册为工程师和用户提供操作指南,而硬件接线图则指导工程师如何将PLC连接到电梯的各个组件。测试和...

    oop-lab-csharp

    运算符超载 扩展方法 代表与活动 迭代器 以不同的顺序进行练习不是问题。 所有练习的一般说明:语句throw new NotImplementedException(); 它是一个占位符,必须始终用您生成的代码替换。 练习1-拥有权 “ ...

    PLC基于MCGS嵌入式六层电梯模拟仿真(包含代码以及梯形图)

    程序员使用梯形图将电梯的各种动作和条件用图形方式表示出来,方便理解和调试。 5. 嵌入式电梯: 嵌入式电梯是指使用嵌入式系统作为核心控制单元的电梯,通常采用微处理器或PLC。这种电梯控制系统集成度高,体积小...

    电梯控制系统基于egg库

    1. **内存管理**:Egg库提供了内存分配和释放的函数,帮助程序员有效地管理内存,避免内存泄漏,这对于实时系统至关重要。 2. **数据结构**:Egg库可能包含了如链表、队列等数据结构,这些在电梯调度算法中非常有用...

    三菱PLC程序源码-16t门机程序.zip

    源码是程序员编写的原始指令,通过这些指令,PLC可以精确地控制门机的动作,如起升、平移、停止等操作,确保设备的安全、高效运行。 由于标签为空,我们无法获取额外的信息,但我们可以根据标题和描述推测,此项目...

    易语言简易电梯源码.rar

    易语言是一款由中国程序员王江民开发的,面向初学者和专业开发者,以“易”为理念的编程工具。它以简化的语法和直观的界面,降低了编程的入门门槛,使得编程变得更加简单。本压缩包“易语言简易电梯源码.rar”提供了...

    四层电梯设计,内含全部程序设计

    5. **安全机制**:任何电梯系统都需要包含安全功能,如超载检测、紧急停止等。在四层电梯设计中,也要模拟这些安全措施,确保程序的合理性。 在实际编程实现中,可以选择不同的编程语言,如C、C++、Python等。以下...

    行业分类-设备装置-臂架控制装置和方法、高空作业平台以及计算机可读存储介质.zip

    臂架控制装置必须有完善的安全机制,包括限位保护、超载保护、防碰撞检测等功能,以防止意外发生。这需要结合传感器技术、安全逻辑设计以及故障冗余策略来实现。 7. **通信技术**:臂架控制装置可能与其他设备(如...

    工业机器人-百吨级行车程序.7z

    1. **工业机器人控制技术**:工业机器人的控制通常基于复杂的计算机程序,这些程序由专业的程序员编写,用于精确地控制机器人的运动轨迹、速度、力度等参数。对于百吨级行车来说,控制系统的稳定性、精确性和安全性...

    KJX-plc电梯控制梯形图程序(三)

    梯形图是一种图形化编程语言,它的结构直观,类似于电气工程中的继电器电路图,使得程序员能够更容易理解和编写控制逻辑。 在KJX-plc电梯控制梯形图程序中,第三部分可能涉及以下几个关键知识点: 1. **楼层选择与...

    行业分类-设备装置-机械式台面升降装置.zip

    这种装置主要用于调整工作台或桌面的高度,以适应不同用户的需求,特别是对于那些需要长时间坐立交替工作的人员,如程序员、设计师或者教师等,它提供了更加健康和舒适的工作环境。 机械式台面升降装置主要由以下几...

    工业机器人基础.pdf

    在实际应用中,机器人程序员需要根据不同的工作任务和目标,选择合适的编程方式来优化生产过程。 在工业机器人的发展与实践中,技术指标不仅是衡量机器人性能的标准,也是在采购、部署和维护机器人过程中的关键决策...

Global site tag (gtag.js) - Google Analytics