导航:首页 > 程序命令 > 程序员之间最容易引战的话语

程序员之间最容易引战的话语

发布时间:2022-08-26 16:52:50

㈠ 百战程序员编程语言有几种

把编程语言比喻成车:
Ada 是辆丑到极点但是永远不会出故障的坦克。
C 是辆赛车,它能跑得超乎想象得快,不过每跑个 50 英里就会抛锚。
Cobol 号称是辆车,不过没有哪个有自尊心的驾驶员肯承认曾经开过。
C# 是辆竞争模式的家庭旅行车。一旦你开过它,你就不会再用其他竞品厂商的产品了。
C++ 是辆大马力版本的 C 型赛车,它额外提供了成打的特性,而且每跑 250 英里才会抛锚,不过当它真出问题的时候,没有人能找到究竟是哪儿坏了。
Eiffel 是辆内置了法国口音驾驶说明的汽车。他会帮你快速地找到错误并从中学到东西,不过你要是敢跟他争论的话,他会骂你然后把你从车里扔出去。[来自 Daniel Prager ,稍有修改]
Erlang 是一个车队,它们会互相协作把你送到任何你想去的地方。想要每只脚各自操纵一辆车还是需要一些练习的,不过一旦学会了之后你就可以驾驶着它们通往其他方式难以企及的地方了。还有,你用了那么多辆车,所以就算有几辆坏掉也没什么可担心的。
Forth 是你亲手用套件组装出来的车。你这辆车不论长相还是功能都没必要和别人的一样。不过,Forth 型号的车只能倒着走。
[Digg.com 网站上的评论,来自 256byteram(我忍不住要把它加上):]
FORTH LOVE IF HONK THEN !(译注:抱歉我实在不知道这句话是啥意思……)
Fortran 是辆非常原始的车。它能跑得很快,前提是你要始终在完全笔直的道路上开。据说学开 Fortran 型汽车会导致你再也没法学开其他型号的汽车了。
Java
Java 是辆家庭旅行车。它驾驶起来很容易,开起来速度也不会太快,不至于伤到你自己。
版本1:Haskell 是辆设计极端优雅漂亮的车,传闻它能开到非常极端的地形中去。当你试图驾驶它的时候,它并不是真的沿着道路在前进的;实际上,它是不断把自己和道路进行复制,每次成功复制之后,车在路上都会比上一次更远一点。应该还是有可能按照传统的方式来驾驶它的,不过你的数学能力不足以找出这个办法来。
版本2:Haskell 并不是辆真的车,它是一个抽象的机器,能够详细地告诉你驾驶这个过程应该是什么样子的,如果你愿意的话。你必须把这个抽象的机器放到另一台实际的机器里面才能开动它,别问这个实际的机器是怎么运行的。还有一种方法,你可以用多台抽象的机器造出另一台抽象的机器,然后把它交给那台实际的机器,这样就能一个接一个地完成你的旅途了。[Monadic 的版本]
版本1:Lisp 看起来像一辆车,不过经过足够的改装,就能把它变成非常有效的一架飞机或一艘潜艇。
版本2:一开始它看起来一点儿都不像一辆车,不过时不时地你也能看到有人在开着它转悠。终于有一天你决定多了解一下它,然后你意识到它其实是一辆能造出更多汽车的汽车。你把这个发现告诉了朋友,不过他们都大笑着说这些车看起来太奇怪了。至今你仍在车库里留着一辆,期待着哪天能把它开上路去。[来自 Paul Tanimoto]
Mathematica 是辆设计得很好的车,它从 Lisp 型汽车那里借鉴了大量的东西,却连一点儿应得的赞扬都不给它。它能通过方程计算出到达目的地最高效的路径,只不过这要花上一大笔钱。
是辆设计给新手用的短途旅行车,通常都是开往那些 Mathmatica 型汽车常去的地方。在那些地方这车开起来非常舒服,不过只要你偏离了路线,哪怕只有一点点,它就会变得非常难以驾驭,以致于很多势利的司机根本就不承认它是一辆车。
Ocaml 是辆非常性感的欧洲车。它不像 C 那么快,但它从不出故障,所以结果你反而会花更短的时间到达目的地。不过因为这是法国,所有的控制装置都不在它们平时该在的地方。
Perl 应该是辆挺酷的车,不过驾驶员手册却难以理解。另外,就算你能找到方法去驾驶一辆 Perl 型号的车,你也开不起来别人的 Perl 型汽车。
php 是辆热狗车(Oscar Mayer Wienermobile),它非常古怪、又难以驾驭,但是所有人却还是想开它。[来自 digg.com 网站的 CosmicJustice]
版本1:Prolog 是全自动的:你告诉它你的目的地是什么样子的,然后剩下的驾驶工作它就全搞定了。[Paul Graham附加的:]不过,大多数情况下,确认目的地所花的工夫,和你直接开过去也差不多了。
版本2:Prolog 这辆车上装了一个独特的试错型 GPS 系统。在通往目的地的路上,它会一直往前开,如果走到死胡同了,它就调头回来再试试别的路,如此不断往复,一直到目的地为止。[我忘了是谁建议的这一条]
Python 是辆非常棒的给初学者用的车,就算没有驾照也能开。除非你想开得超级快,或者想开去很危险的地方,否则你可能永远都用不到别的车。
Ruby 这辆车是因为一次 Perl、Python 和 Smalltalk 三车相撞事故产生的。一个日本的机师找到了这些车的碎片然后拼成了一辆车,很多司机都觉得这比那三辆车加在一起还要好。不过也有些司机会发牢骚说 Ruby 型汽车的好多控制器都是重复的、甚至有三份,而这些重复的控制器在某些特别的情况下又稍有不同,这会让这车开起来更麻烦。据传说重新设计的工作已经在进行中了。
Smalltalk 是辆小型汽车,原本是设计给那些打算学驾驶的人用的,不过因为它设计得太棒了,即使那些有经验的老司机都喜欢开它。它速度并没有很快,不过你可以把它的任何一个零部件拿下来改造改造,让它更符合你的期待。古怪的事情是,你其实并没有真正地驾驶它,你只是发了条消息让它去什么地方,然后它要么就开过去了,要么就告诉你它不懂你在说啥。
版本1:汇编就只是个发动机。你得自己把车子造出来,还得在它跑的时候手动给它加油。不过只要你足够小心,它就能像来自地狱的蝙蝠(a bat out of hell)一样飞速前进。
版本2:汇编:你自己就是那辆车。
如果编程语言是种武器:
C 语言是 M1 式加兰德步枪,很老但可靠。
C++是双截棍,挥舞起来很强悍,很吸引人,但需要你多年的磨练来掌握,很多人希望改用别的武器。
Java 是 M240 通用弹夹式自动机枪,有时它的弹夹是圆的,但有时候不是,如果不是,当你开火时,会遇到 NullPointerException 问题,枪就会爆炸,你被炸死。
Scala 是 M240 通用机枪的变种,但它的使用手册是用一种看不懂的方言写的,很多人怀疑那只是一些梦话。
JavaScript 是一把宝剑,但没有剑柄。
Go 语言是一种自制的“if err != nil”发令枪,每一次发射后,你都必须要检查它是否真的发射了。
Rust 语言是一种 3D 打印出的枪。将来也许真的能派上用场。
bash 是一个十分碍手的锤子,你抡起它时会发现所有东西看起来都像钉子,尤其是你的指头。
Ruby 是一把外嵌红宝石的宝刀,人们使用它通常是因为看起来很炫。
PHP 是水管子,你通常会把它的一段接到汽车的排气管,另一端插进车窗里,然后你坐进车里,开动引擎。
Mathematica 是一种地球低轨道粒子大炮,它也许能够干出很神奇的事情,但只有付得起费用的人才能使用它。
C#是一种强悍的激光大炮,架在一头驴子上,如果从驴子上卸下来,它好像就发不出激光。
Prolog 语言是一种人工智能武器,你告诉它要做什么,它会照做不误,但之后,它会弄几个终结者出来,烧掉你的房子。
Lisp 语言是一把剃须刀,有很多款式。只有寻求刺激和危险的人才会使用它。
希望可以帮到您,谢谢!

㈡ 什么才是程序员的核心竞争力 知乎

姚冬回答的非常好,我狗尾续貂的说几句。

我们都知道学习能力很重要,那么学习能力从何而来,除了去看书上课这种,如何在实践工作中学习成长?
我之前微博说了一个笼统的概念,什么是能力? 对待问题的态度,以及处理问题的思路和方法。

先说态度

你服务器偶尔出501错误,也许比例不高(知乎也出现过很多次),很多程序员,没错,是很多,假装看不见,不在乎,或者归咎于人品问题。 这就是态度问题。
再往后,负载高了或者其他什么原因,突然频繁出现501错误,不去追寻深入的原因,而是找各种借口, 什么IDC服务商不好,服务器品牌不好,操作系统不好,数据库不好,CDN不好,网络状况不好,web server不好,甚至,直接对Boss说我们被DDOS啦!(遇到过,帮他Boss找过多个安全专家会诊,最后发现根本不是DDOS,是程序员太烂。)

这就是态度,触目惊心,如果能对问题有敏感性,能知道对任何小的,轻微的问题有足够的敏锐度,你就有了一个快速成长的基础。对问题的敏锐度是非常重要的。很多性能或程序逻辑上非致命的bug,在不够敏锐的时候是发现不了的,但是一旦进入特殊场景就会骤然爆发,你多一点敏锐度,就会减少这种危机的风险。

第二个态度是解决问题的态度,有人对自己的解决方案信心满满,认为万无一失,但有的人就会多留一条后路;就好比你说我服务器要不要做安全加固,肯定要做对不对,要做到尽可能严谨和周全,但是你数据库保存密码的时候是不是还要加密?而且要随机salt,不就是防止万一依然有漏洞被人拿库怎么办么。程序也一样,以前写的一些服务端守护进程,有bug,会莫名其妙的终止,这个bug当然要定位,要修复,但是同时,写一个cron检查这个守护进程状态,一旦遇到终止给予自动恢复,这就是第二手准备,即便你多么不希望他执行,这个准备还是要做的。对问题 做两手甚至三手准备,也是优秀程序员,架构师的关键素质。

第三个态度是基于沟通与理解的态度,产品或运营提了一个不靠谱需求,一句话打回去当然很爽很威风,但是有没有仔细沟通分析过,这个需求基于怎样的实际诉求,这个实际诉求有没有更合理的实现途径,一句话“这个没法做,这个实现成本太高”,不是正确的沟通态度,而且,最优秀的产品,往往是实现了那些原本人们认为无法实现的诉求。

这样的态度,才有了一个持续进步的基础,下面说思路和方法。

优秀 的程序员和平庸的程序员,如果只看敲打代码的速度,我觉得是分不出来的,也许每人都可以一天写很多行代码,但是遇到问题后,平庸的程序员的解决效率,和优秀程序员相比就会有天壤之别。 所谓解决效率,不外乎对bug的分析、定位,以及 思考。

最基本的一条,看执行日志,看各种日志,web server的日志,数据库 的日志,慢查询日志,binlog日志,php的错误日志,等等等等,线上出问题瞎猜连日志都不看的大有人在。看日志不仔细不完整的也大有人在,你能去认真研究日志已经超越很多人了。

第二条,模块测试和断点分析,程序员一个坏习惯就是上来就写很大一坨代码然后再执行,不知道一个模块一个模块来写来测试,执行出了问题不知道设置断点,缩小范围逐步分析。断点分析非常简单,将整个代码中插几个中间输出,观察哪个环节出了问题,或者观察每个环节的系统开销,对调错和性能优化都非常重要,高手们大概认为这是ABC的东西,但是就这玩意我看到的大部分程序员都没有这个习惯。

第三条,错误信息 的理解和搜索,搜索引擎上有各种丰富的技术资料和技术问答,你所遇到的错误信息和错误提示,通常都能在网上搜索到,当然,搜索到后要结合你的场景认真思考,并理解透彻,而不是照猫画虎的去处理,否则可能这次运气好就蒙对了,下次运气不好又不知道怎么回事了。

第四条,不断总结归纳,对一个问题,一类问题,以及不同类型的问题,善于归纳整理,不断反思自己的问题,即便是不出bug的代码,你经过一段时间去回头看,也有很多思考不正确不合理的地方,有很多优化点,如果你觉得自己的代码一向牛逼,毫无破绽,那你一定是原地踏步,毫无进展。

关于 归纳总结,我说个案例
以前我们有个系统,请求量非常大,负载非常高,有个不错的技术经理来处理,他列了几个升级计划,都很靠谱,去执行了,效果非常好,然后我们跟进汇报的时候他来讲,做了几项升级,整体效果如何,然后我就批评了他。
我批评了什么呢?他是一起做的升级,然后一起观测的效果,那么这几个方案里,具体每个方案的实际效果怎样,对提升的帮助多大,他没有任何数据。所以对具体每个升级方案的价值和重要性,他没有任何概念。你正确的解决了问题,却没有认真的去归纳整理,你的收获是有限的。一起做升级不能说是错的,但是效果评估需要单独去做,而这个数据是非常有价值的,知识积累,不是你处理过的就一定有积累,而是整理过的。

大概就这些

最后重述一遍
什么是能力?

遇到问题的态度
处理问题的思路和方法

这就是能力

点赞的那么多,答谢各位,补充几条思路吧,是上面几个方法的具体扩充

补充1:善于提问,你能得到怎样的答案,取决于你提出怎样的问题。
你遇到问题,你应该知道,从哪里去问,去问什么。
我常见的一个测试题是这样的。
数据库目前挂了,我就是服务器,我不知道为什么挂了,你是一个优秀的分析师,现在我来做响应,你问我问题,你问一个问题,我回答一个指标,然后看你能不能定位问题。(当然,我会根据所假设的问题回答所有数据指标),比如你问我数据库连接数多少,问我系统i/o压力多少,或者问我慢查询日志里有什么,等等,善于提问的人就可以快速得到答案,而不善于提问的人,就会猜测一堆可能,最终却一无所获。
有个真实好玩的案例,有个兄弟公司(前段时间新闻出来,卖了好像十个亿的样子),开始的时候服务端数据库不够强壮,负载起来的时候会出现一些问题,就请我去把脉,我一看windows服务器,SQLserver (不要猜了,那是几年前,现在应该改了),我说这个我不会啊,然后人家那么热忱当我是专家,只好硬着头皮上,我连基本操作都不会怎么办,我就坐在那里问问题,开始他们说是不是这样,是不是那样,我说你们不要盲目下结论,你们要是知道结论就别来问我了,我问什么指标,什么日志你们就给我查什么,我就一样样的问,他们现场操作去查数据,我问一个他们查一个给我看,查着查着,他们的工程师说,知道原因了!果然和他们开始的假设完全不同。其实关键就是问问题的思路,他们一开始没有提出正确的问题。提出了正确的问题,他们很快自己就找到了原因。

补充2:善于划定范围,缩小问题区间。
前面提到的断点分析是一个非常常见的分析方法,但是很多场景,你甚至不知道是哪个程序出的问题,善于将问题范围化,也是一种归纳和分类的能力。

我曾在某个技术群出过一个经典测试,还记得以前微博上提到的一个经典面试题么。“从浏览器输入url到打开网页,中间经历了什么”,这是一个经典的综合认知的题目,基于这个题目,出一个更实战的场景测试是(这个场景其实90%的网站站长和游戏运营商都遇到过),”目前有用户反映网站或游戏卡,请问如何分析原因,以及当前优先级步骤。“。结果在这个群里,只有我徒弟说出了完全正确的答案(09年带过的)。优先级第一步是看在线用户数和当前访问数,对比历史,得到该问题目前的影响程度,来决定后续的优先级,以及减少分析范围。(这是意识问题)分析思路,分成三大块,前端,网络层,服务端。当然这三块可以继续延伸下去非常多细节,但是至少,能先把问题分成三大块,然后基于一些显见的分析方式快速排除其中几个部分,再逐步细化问题,而大部分人只是从一个局部去思考,讲了很多局部细节却没有完整的纲领,所以这就是差距。

先想到这些,咳咳。

转自知乎 曹政

㈢ 程序员编程最方便的语言是什么

C++语言,适合在校大学生、自学的转行者、喜欢计算机的人群,学习目标是C++基本语法、数据结构、STL、线程、协议编程、数据库、Socket。学后可以使用C++实现最新的项目案例,雷霆战机、远程控制、视频会议、服务器架构等。
1.C++语言:是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
2.特点:C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
3.基本内容:类、封装、重载、继承、模版。

㈣ 产品经理和程序员,如何避免矛盾

产品实现是你的目的,为了这个目的不必太讲究。

做了一阵子之后我有了自己对于与程序员相处的方法论,对这句话并不苟同,我还是倾向于把事做好的同时也能把话说好,虽然我现在也能深刻的领会到当时leader的核心意思是产品本身是第一位的。

接下来我就阐述下自己的一些心得:

㈤ 找一些程序员的经典格言

1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想
出来再参考别人的提示,你就知道自己和别人思路的差异。
2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久
都是只对部分功能熟悉而已,不系统还是不够的。
3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,
虽然帮助的文字有时候很难看懂,总觉得不够直观。
4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
5.不要放过任何一个看上去很简单的小问题--他们往往并不那么简单,或者可以引伸
出很多知识点;不会举一反三你就永远学不会。
6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
7.学脚本并不难,JSP、ASP、PHP等等也不过如此--难的是长期坚持实践和不遗余力的博览
群书;
8.看再多的书是学不全脚本的,要多实践
9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
10.学习脚本最好的方法之一就是多练习;
11.在任何时刻都不要认为自己手中的书已经足够了;
12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
16.不要漏掉书中任何一个练习——请全部做完并记录下思路;
17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余
下的部分粗略的完成以保证这个代码的完整性,然后分析自己的?
砦蟛⒅匦卤嘈春凸?
作。
18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能
讲清楚才说明你真的理解了;
20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
21.保存好你做过的所有的源文件----那是你最好的积累之一;
22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先
你要学会自己找答案,比如google、网络都是很好的搜索引擎,你只要输入关键字就
能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问
题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己
的帖子没人回的。
24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,
如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的
才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你
讨论呢。
能找到很多相关资料,别老是等待别人给你希望,看的出你平时一定也很懒!
23,到一个论坛,你学会去看以前的帖子,不要什么都不看就发帖子问,也许你的问
题早就有人问过了,你再问,别人已经不想再重复了,做为初学者,谁也不希望自己
的帖子没人回的。
24,虽然不是打击初学者,但是这句话还是要说:论坛论坛,就是大家讨论的地方,
如果你总期望有高手总无偿指点你,除非他是你亲戚!!讨论者,起码是水平相当的
才有讨论的说法,如果水平真差距太远了,连基本操作都需要别人给解答,谁还跟你
讨论呢。
浮躁的人容易问:我到底该学什么;----别问,学就对了;
浮躁的人容易问:JS有钱途吗;----建议你去抢银行;
浮躁的人容易说:我要中文版!我英文不行!----不行?学呀!
浮躁的人分两种:只观望而不学的人;只学而不坚持的人;
浮躁的人永远不是一个高手。

㈥ 有哪些关于程序员的心灵鸡汤

1. 在你责怪别人之前,先检查自己的代码

先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设,即便是相同的供应商对于不同的工具,其假设也可能不同。

当其他人正在报告一个你不能重复的问题的时候,去看看他们在做什么。他们可能会做一些你从来没有想到过的事情,或者他们的做事顺序与你的截然不同。

我个人的原则是,如果我有一个不能确定的错误,那么我会先考虑是不是编译器的问题,然后再去检查堆栈是否损坏。特别是当添加跟踪代码会使得问题移动的话就更要这么做了。多线程问题是 bug 的另一个来源,有时候令人焦躁得简直想拔光头发,或者直接想摔电脑。当系统是多线程的时候,最好倾向于简单的代码。我们不能依赖调试和单元测试来发现任何一致性的 bug,所以设计的简单性是最重要的。

所以,在你不分青红皂白地去责怪编译器之前,先想一想福尔摩斯的这条建议,“一旦你排除了种种不可能,剩下的不管有多么难以置信,一定就是真相”。

2. 不断学习

我们生活在一个有趣的时代。随着软件开发逐渐遍布全球各地,你会发现有很多人都可以干你的工作。所以你需要不断学习以保持竞争力。否则,你就会落伍,停滞不前,直到有一天,这份工作不再需要你,或外包给一些更廉价的劳动力。

那么我们能做些什么?有些雇主很慷慨,会提供培训以拓宽你的技能。也有的人会说我没时间或者没这个资金去接受任何培训。所以,关键是要摆正心态,学习是对自己的负责。

这里有一些学习的方法。而且许多资源都可以在互联网上免费获取:
•阅读书籍、杂志、博客、Twitter feeds 和网站。如果你想更深入地了解对象,可以考虑添加到邮件列表或新闻组。点击这里通过邮件订阅《快乐码农》杂志
•如果你真的很想学习某一种技术,那么就亲自动手写代码。
•尽量与导师一起工作。虽然你从任何人身上都可以学到一些东西,但是从那些比你更聪明或更有经验的人身上,你能学到的更多。如果你实在找不到这样的良师益友,那么请继续往下看。
•使用虚拟导师。在网络上找你真正喜欢的作者和开发人员,阅读他们写的内容。订阅他们的博客。
•了解你使用的框架和库。知道事物的工作原理,有助于你更好地应用它们。如果你使用的是开源资源,那么你真的很幸运。使用调试器单步执行代码,以查看内部究竟是怎么回事。你也可以去看看那些确实比你聪明的人是如何编写和审查代码的。
•当你犯了错误,修复 bug,或者遇到问题的时候,试着去真正理解发生了什么事情。很有可能其他人已经遇到过同样的问题,并且发布在了网上。谷歌搜索真的很有用。
•学习东西还有一个好方法就是所谓的“教学相长”。当别人在倾听你的言语,并问你问题的同时,你也会学到东西。可以建立用户组或本地会议。
•为自己感兴趣语言和技术加入或启动一个研究小组(模式社区),也可以创建本地的用户组。
•参加会议。如果去不了的话,也可以在网上看,许多会议会将其谈话免费发布到网上。
•收听播客。
•曾经对代码库运行过静态分析工具,又或者查看下你的 IDE 警告?了解它们报告了什么,以及其原因。

当然如果你有《黑客帝国》中 Neo 那样的超能力,自然这一切对你而言不过是小菜一碟。但很可惜,我们都是普通人,我们需要时间和精力,以及不断的努力才能促使自己不断的学习。不过,你不必成天学习。只要你能有意识地花点时间去学习就可以了,哪怕每天一小时,有总比没有好。人活着不是为了工作,你还应该有自己的生活。

3. 不要害怕破坏东西

每个具备行业经验的程序员肯定参与过代码库岌岌可危的项目。系统很糟糕,并且改变这边总是会破坏另一边不相关的功能。每次添加模块,程序员只能想着尽可能少地改变代码,每次发布都胆战心惊。这座软件的摩天大楼随时有坍塌的可能。之所以改动代码会如此伤脑筋是因为系统太糟糕了。但是即使你知道系统出了问题,却又因为投鼠忌器,而不得不听之任之。任何一个外科医生都懂得,伤口要想愈合就必须得切除腐肉。虽然手术会带来痛苦,但绝对比任伤口发炎溃烂要好。

不要害怕你的代码。没有人会在乎当你捣鼓代码的时候有没有暂时破坏了什么东西。只要你做的改变不会让项目重新回到开始状态,就不会令人崩溃。投入时间重构,能让你受益于项目整个生命周期。这样做还有一个额外的好处是,由于你有过这种处理病危系统的经验,所以你对它应该如何工作非常内行。要善于应用这些知识,千万不要反感这些宝贵的财富。重新定义内部接口,重构模块,重构复制粘贴代码,并通过减少依赖来简化设计。你可以通过消除特殊情况显着降低代码的复杂性,因为特殊情况往往是因为错误的耦合特点导致的。慢慢地从旧结构过渡到新结构,测试一路同行。如果你想要一下子完成一个大的重构,那么往往会因为各种频出的问题而考虑中途放弃。

4. 专业程序员

专业程序员的一个最重要的特点是有责任心。专业程序员会为他们的职业生涯、预算、日程安排承诺、错误、技能技巧负责。一个专业的程序员不会将责任推卸给别人。

如果你是专业的,那么你就需要为自己的职业生涯负责。你有责任去阅读和学习。你有责任去时刻关注最新的产业和技术。但是许多程序员觉得这应该是他们雇主的工作。NO,大错特错。想一想医生?想一想律师?他们都是靠自己来培养和训练自己的。他们的下班时间多用在了阅读杂志报刊上。他们时刻关注着最新的资讯动态。所以,我们也应该如此。你和你雇主之间的关系,已经在雇用合同上作了详细的说明,简而言之就是:你的雇主承诺支付你薪酬,而你承诺做好工作。

专业程序员会为他们编写的代码负责。除非他们知道这些代码是有效的,否则就不会发布代码。现在,好好思考这个问题:如果是你,你会不会在不透彻了解代码的情况下就直接发布代码?专业程序员不希望 QA 找到任何 bug,因为这些代码都是经过他测试之后才发布的。当然,QA 依然会发现一些问题,因为没有一个人是完美的。但作为专业程序员,我们的态度应该是让 QA 找不到任何缺陷。

专业程序员也是好的团队成员。他们负责地对待整个团队的输出,而不是只顾自己的工作。他们乐于助人,善于向彼此学习,在需要的时候甚至会鼎力相助,为了项目前仆后继。

5. 充分利用代码分析工具

测试的价值是编程早期阶段就灌输给软件开发者的一个理念。近年来,单元测试,测试驱动开发和敏捷方法的兴起,证实了我们开始注重于在开发周期的各个阶段进行测试。但是,测试只是你可以用来提高代码质量的许多工具之一。

回过头去看,当C语言还是一个新事物的时候,CPU 时间和任何类型的存储都是非常宝贵的。第一个C语言编译器注意到了这一点,所以选择了通过去掉一些语义分析,来减少代码之间的传递次数。这意味着,在编译时,编译器检查到的可能只是可被检测到的 bug 中的一小部分。为了弥补这个缺陷,Stephen Johnson 写了一个名为 lint 的工具——它将从你的代码中删除一些没有价值的东西——从而实现一些已被它的兄弟C语言编译器撤掉的静态分析功能。然而,静态分析工具却因为可以给出大范围的误报警告和一些没有必要遵循的静态文体惯例的警告而倍受赞誉。

现在的语言、编译器和静态分析工具的设计和以前已经大不相同。由于内存和 CPU 时间变得相对比较便宜,因此负担得起编译器检查更多的错误。几乎每一种语言都拥有至少一个工具,用来检查风格指南的违规行为、常见问题以及一些狡猾的有时候可能很难捕捉到的错误,如潜在取消引用空指针。更高级的工具,如C的 Splint,以及 Python 的 pylint,是可配置的,这意味着你可以通过命令行开关或在 IDE 中,使用配置文件来让工具选择放过其中的哪些错误和警告。Splint 甚至还能让你在注释中注解你的代码,以便于更好地提示你的程序是如何工作的。

6. 关心代码

优秀程序员能写出好代码,这是毋庸置疑的。坏程序员……则不能(他们能写出好代码,就不是坏程序员了,哈哈)。他们总是在生产其他人不得不消灭的怪兽。你的目标是写出好代码,对不?那么你应该成为好程序员。

好的代码并不是凭空而来的,也不能靠运气然后恰巧让你瞎猫碰到死老鼠。为了获得良好的代码,你必须努力的改进。过程是艰难的。但是如果你确实关心代码的话,那么你一定能收获好代码。

仅靠技术并不能成就好的编程。我碰到过一些非常聪明的程序员,他们能够产出令人印象深刻的算法,能够熟记语言标准,但却写出了最可怕的代码。这种代码,阅读起来很痛苦,使用起来很痛苦,修改起来更是令人痛不欲生。我也碰到过一些非常谦逊的程序员,因为坚持简单的代码,所以写出来的程序更优雅,更易于表达他的意思,和他们工作非常愉快。

基于我多年的软件生产经验,我得出的结论是,差强人意的程序员和伟大的程序员之间的真正区别是:态度。好的编程在于专业的方法,以及一种竭尽全力希望写出最好软件的期望。

要成为一个优秀的程序员,你必须对自己的代码负责,真正关心代码——养成积极向上的心态。伟大的代码是由大师精心雕琢的,而不是由那些马虎的程序员胡乱写出来的。

㈦ 程序员,新到一家公司,技术太low,我还没有话语权,我该咋办呢

慢慢努力,我相信终有一天你会有话语权的。加油。

㈧ 对程序员的工作有哪些通俗易懂的解释

想要对程序员的工作做一些通俗易懂的解释,那你就可以这么跟他说,“你用拼多多吗?你用QQ吗?你用微信吗?你用淘宝购物吗?”这些都是我们一点一点用程序写出来的,我们的工作就是设计这些软件的程序。

㈨ 我的梦想是成为一名出色的程序设计人员,想问问那些成功的朋友们,我要怎样努力,谢谢大家!

这是一条漫长而艰辛的路

㈩ 怎么看待“程序员是出轨率最高的群体

程序员是出轨率最高的群体。出轨率第二高的是金融男。远远高于其他群体。听到这个调查报告,一大群人表示惊讶,尤其是年轻女人。程序员是互联网世界有话语权的人,所以他们有足够的话语权把自己的形象塑成木讷,老实,内向,不善勾搭,难以脱单,还喜欢以搬砖、码农之类的矫情词汇自称。但是事实上,程序员是出轨率极高的群体。而且,程序员也是约炮率极高的群体。

为啥?因为运用书中关于证据效力的几个章节所讲的内容,读完第一句话,你的头脑里至少会提出以下问题,接着,你会发现作者对这些问题根本没有也无意提供靠谱的答案,所以基本可以推论,这段文字是纯度高达99.99%的扯淡文。

问题1、调查报告的来源是哪里?研究机构是谁?原始的研究目的是什么?

问题2、与程序员和金融男共同对比的其它群体有多少?具体是哪些?

问题3、从作者列举的两个群体程序员和金融男来看,两个群体并不对等,因为后者有性别属性而前者没有,这就说明这个调查(如果存在)并不科学严谨,要么调查机构不具备基本的科研常识,要么调查机构有“程序员都是男人”的核板印象,要么是作者自己的认知有这两方面问题。

问题4、调查报告的采样标准是什么(比如年龄、性别、所在城市、受教育程度、家庭背景等等)?群体之间采样标准相同吗?各群体的样本足够大足够随机吗?能代表群体整体吗?

问题5、出轨是道德敏感话题,在这个问题上参与者诚实作答的可能性比“早餐吃什么”类问题要低很多,有人想无中生有显示性吸引力,有人则想掩盖事实维护良民形象,有人甚至纯粹为了看热闹胡乱作答,所以这个调查报告是如何控制参与者答案真实度的?

批判性思维结论:这是一个空穴来风的“调查报告”,可信度无限接近0。以这个报告结果为前提的任何论述都是扯淡、瞎掰。除了营销吸睛,毫无营养,也不能这么说,起码可以营养那么一点点批判性思维。

阅读全文

与程序员之间最容易引战的话语相关的资料

热点内容
未来番禺程序员待遇 浏览:209
安卓安智部落冲突密码怎么改 浏览:648
http协议单片机 浏览:73
pdfdocument 浏览:556
gcc编译vi文件 浏览:63
安卓连airpods怎么找耳机 浏览:927
加密货币转账教程 浏览:229
程序员小灰hashmap 浏览:838
国语pdf版 浏览:184
少儿编程作品美丽的小房子 浏览:974
服务器卡在网页上怎么办 浏览:54
用python自制编译器 浏览:951
android分享新浪微博客户端 浏览:26
系统中服务器在哪里下载地址 浏览:1001
新a4安卓手机怎么投屏 浏览:173
pdftoemf 浏览:886
java接口可以实现接口吗 浏览:59
vb编程10个随机函数 浏览:22
程序员个人简介100 浏览:772
土木工程师算法工程师 浏览:92