孔乙己(转)

OOP代码的格局,是和别的编程模式不同的: 首先要有一个构造函数;基类里只定义了函数的形式, 可以随时通过派生增加不同的实现。那些程序员们,每每学会了继承和多态,便可以接一个项目,——这是十年前的事,现在至少要懂得设计模式, ——靠柜台外站着,写些代码换一个鸡蛋灌饼吃;倘若懂一些多线程的知识,便可以在鸡蛋灌饼里加火腿肠,或者里脊了,如果懂得语言的实现原理,那 就能做一些底层代码的优化,换一盘炒菜。但这些程序员,多是初级水平,大抵没有这样深入。只有懂得内存模型的,才能接一些底层的项目, 打开调试器和剖析器,慢慢的坐着优化代码。 我从十二岁起,便在村口的githoverflow工厂里当学徒,师傅说, 我逻辑思维太差,怕学不会静态类型语言,就写些shell脚本吧。 shell脚本虽然容易写,但语法容易含混不清的地方也不少。 字符串和数组的功能很弱,条件判断的语法也很奇特,有时要对特殊字符手动做两重转义,然后通过。 在这种情况下,写脚本也很为难。所以过了几天,师傅又说我干不了这事。幸亏荐头的情面大,辞退不得,便改为专管测试的一种无聊职务了。

我从此便整天的站在测试机前,专管运行测试脚本。 虽然没有什么失职,但总觉得有些单调,有些无聊。师傅是一副凶脸孔,程序员也没有好声气,教人活泼不得;只有孔乙己到厂里,才可以笑几声,所以至今还记得。

孔乙己是站着编程而手动管理内存的唯一的程序员。他用的开发语言语法臃肿; 结构杂乱,代码间时常夹些#ifdef;一堆乱蓬蓬的充当接口的 .h 文件。虽然是手动管理内存, 可是经常出现野指针,要么忘了初始化,要么释放后没有设置成NULL。他写的代码,总是满屏的奇技淫巧,叫人半懂不懂的。因为他姓孔, 又总觉得自己的技术天下第一,别人便用“甲乙丙丁”的第一个字,替他取下一个绰号,叫做孔乙己。孔乙己一到厂,所有的程序员便都看着他笑, 有的叫道,“孔乙己,你的代码又出新bug了!”他不作答,对柜里说,“来两个鸡蛋灌饼,一杯豆浆。”便把Thinkpad摆好。他们又故意的高声嚷道,“你一定又把人家的内存搞泄漏了!” 孔乙己睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你搞崩了Windows的内存,吊着打。”孔乙己便涨红了脸,额上的青筋条条绽出,争辩道,“内存没释放不能算泄漏……没释放!……程序员的事,能算泄漏么?” 接连便是难懂的话,什么“new/delete配对使用”,什么“谁申请谁释放”之类,引得众人都哄笑起来:厂内外充满了快活的空气。

听人家背地里谈论,孔乙己原来也读过 CS 博士,但终于没有去做学术,又不会营生;于是愈过愈穷,弄到将要讨饭了。 幸而还会写点代码,便替人家做几个游戏,换一碗饭吃。可惜他又有一样坏毛病,便是内存泄漏。运行不到几秒,便连程序带数据,一齐崩掉。如是几次,叫他写游戏的人也没有了。 孔乙己没有法,便只好做些最简单的外包项目。但他在我们厂里,品行却比别人都好,就是从不留bug;虽然间或一时不能解决,暂时记在wiki上,但不出一月,定然修复,从wiki上删去了孔乙己的名字。

孔乙己写过半页代码,涨红的脸色渐渐复了原,旁人便又问道,“孔乙己,你当真会写代码么?” 孔乙己看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连半行代码也没有贡献给linux内核呢?” 孔乙己立刻显出颓唐不安模样,脸上笼上了一层灰色,嘴里说些话;这回可是全是“狗屎Linus”之类,一些不懂了。在这时候,众人也都哄笑起来:店内外充满了快活的空气。

在这些时候,我可以附和着笑,师傅是决不责备的。而且师傅见了孔乙己,也每每这样问他,引人发笑。孔乙己自己知道不能和他们谈天,便只好向孩子说话。有一回对我说道,“你学过编程么?” 我略略点一点头。他说,“学过编程,……我便考你一考。const int 和int const ,有什么区别?”我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不知道罢?……我教给你,记着! 这些语法应该记着。将来做程序员的时候,写代码要用。”我暗想我和程序员的等级还很远呢,而且我们师傅也从不用裸指针;又好笑,又不耐烦,懒懒的答他道,“谁要你教,两个没区别,都是指向常量的指针。如果你想用指针常量,要写int * const。” 孔乙己显出极高兴的样子,将手里的破鼠标敲着电脑桌,点头说,“对呀对呀!……const有四种用法,你知道么?”我愈不耐烦了,努着嘴走远。孔乙己刚在Visual Studio里新建一个空文件,想在里面写代码,见我毫不热心,便又叹一口气,显出极惋惜的样子。

有几回,邻居孩子听得笑声,也赶热闹,围住了孔乙己。他便给他们一人写了一个Hello World。孩子看完,仍然不散,眼睛都望着屏幕。孔乙己着了慌,伸开五指将屏幕罩住,弯腰下去说道,“error了,编译器报error了。” 直起身又看一看屏幕,自己摇头说,“error error!哀乎哉?error也。”于是这一群孩子都在笑声里走散了。

孔乙己是这样的使人快活,可是没有他,别人也便这么过。 有一天,大约是程序员节前的两三天,师傅正在慢慢的release代码,打开wiki,忽然说,“孔乙己长久没有来了。还有十九个bug没修复呢!”我才也觉得他的确长久没有来了。一个喝酒的人说道,“他怎么会来?……他打折了腿了。” 师傅说,“哦!”“他总仍旧是搞崩内存。这一回,是自己发昏,竟搞崩了GFW的内存。他家的内存,搞得的吗?”“后来怎么样?”“怎么样?先是去喝茶,后来是打,打了大半夜,再打折了腿。”“后来呢?”“后来打折了腿了。”“打折了怎样呢?” “怎样?……谁晓得?许是死了。”师傅也不再问,仍然慢慢的做他的release。

程序员节过后,函数式编程是一天比一天热门,看看连Java都开始支持lambda表达式;我整天的做测试,也须了解什么是闭包了。 一天的下半天,没有一个要测试的项目,我正合了眼坐着。忽然间听得一个声音,“来一个鸡蛋灌饼。”这声音虽然极低,却很耳熟。看时又全没有人。站起来向外一望,那孔乙己便在柜台下对了门槛坐着。 他脸上黑而且瘦,已经不成样子;带一本破Thinkpad,盘着两腿,下面垫一个电脑包,用草绳在肩上挂住;见了我,又说道,“来一个鸡蛋灌饼。”师傅也伸出头去,一面说,“孔乙己么?你还有十九个bug没修呢!”孔乙己很颓唐的仰面答道,“这……下回修罢。 这一回是现场通过,鸡蛋要好。”师傅仍然同平常一样,笑着对他说,“孔乙己,你又内存泄漏了!”但他这回却不十分分辩,单说了一句“不要取笑!” “取笑?要是不泄漏,怎么会打断腿?”孔乙己低声说道,“跌断,跌,跌……”他的眼色,很像恳求师傅,不要再提。此时已经聚集了几个人,便和师傅都笑了。我煎了鸡蛋灌饼,拿出去,放在门槛上。 他打开电脑开始写代码,见他满手是泥,原来他便用这手走来的。不一会,他提交代码,通过了测试和review,便又在旁人的说笑声中,坐着用这手慢慢走去了。

自此以后,又长久没有看见孔乙己。到了Rust 1.0发布的时候,师傅打开wiki说,“孔乙己还有十九个bug呢!”到Golang 2.0发布的时候,又说“孔乙己还有十九个bug呢!”到Scala 3.0发布的时候可是没有说,再到Rust又演进了一个版本也没有看见他。

我到现在终于没有见——大约孔乙己的确死了

原文地址:https://www.cnblogs.com/heower/p/8543324.html

时间: 2024-12-20 05:06:41

孔乙己(转)的相关文章

夕甲甲——孔乙己之C++版

欧欧匹代码的格局,是和别的编程模式不同的:首先要有一个构造函数:基类里只定义了函数的形式,可以随时通过派生增加不同的实现.那些程序员们,每每学会了继承和多态,便可以接一个项目,——这是十年前的事,现在至少要懂得设计模式,——靠柜台外站着,写些代码换一个鸡蛋灌饼吃:倘若懂一些多线程的知识,便可以在鸡蛋灌饼里加火腿肠,或者里脊了,如果懂得语言的实现原理,那就能做一些底层代码的优化,换一盘炒菜.但这些程序员,多是初级水平,大抵没有这样深入.只有懂得内存模型的,才能接一些底层的项目,打开调试器和剖析器,

ACM版《孔乙己》 (转载自陈维晃的个人主页)

(原文地址:http://whchen.net/blog/index.php/archives/acm-wsn.html) Arena的格局,是和别处不同的:是用Java做的客户端,可以随时System Test每场SRM,还可以看到挂掉的数据.喜欢做Coding的人,傍午傍晚闲得蛋疼的时候,每每花75分钟,切一场陈旧的250和500,--这是没有比赛的时候的事,有比赛的时候大家每次都把服务器挤挂--然后继续,水掉250之后趁热切掉500,倘若更NB一些,便可以留时间把1000也写一写,或者检查

scrapy采集列表页的另一种方式

又是采集绿色下载站的最新软件,又是采用另一种方式(前两种是采用正则和xpath),呵呵 感觉有点像孔乙已的茴字有几种写法了 这回用CrawlSpider,Rule来配合采集 这次不用生成许多start_urls列表项了,可以按规则来自动读取,贴核心代码 # -*- coding: utf-8 -*- from scrapy.contrib.spiders import CrawlSpider,Rule from scrapy.selector import Selector from scrap

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

李一男离开华为时给属下的忠告!(转给自己坎坷的求职路)

[1] 好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些.那么,就需要慎重安 排自己的轨迹.从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵 地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题.频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新 手! [2]可以做技术,切不可沉湎于技术.千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在

Android Listener侦听的N种写法

Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用,其接口定义如下: [java] view plaincopyprint? public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was cli

Android Listener 监听的几种写法

Android中,View的Listener方法,在是否使用匿名类匿名对象时,有各种不同的写法. OnClickListener和其他Listener方法一样,都是View类的接口,重载实现后就能使用,其接口定义如下: [java] view plaincopyprint public interface OnClickListener { /** * Called when a view has been clicked. * * @param v The view that was clic

Quick cocos2dx-Lua(V3.3R1)学习笔记(四)----文本渲染之用BM TTF创建文本

上一篇我们显示了背景图和文字,这一篇我们详细介绍一下文本显示的方法 一,显示fnt格式字体 首先我们下载BMF格式文件制作工具,Bitmap Font Generator 下载地址:http://www.angelcode.com/products/bmfont/ 安装完毕,我们打开这个工具,看到如下的界面 左边就是单独字体 右边就是字体库(注意:如果要有符号输入,将第一项Latin+Latin Supplenment打钩)(你看你看,我不是所有括号都有自言自语的) 我们来创建字体 点击Opti

IT项目管理-----给年轻工程师的十大忠告

http://blog.csdn.net/hbqhdlc/article/details/6201179 给年轻工程师的十大忠告 诸位,咱当电子工程师也是十余年了,不算有出息,环顾四周,也没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强! [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些.那么,就需要慎重安排自己的轨迹.从哪个行业入手,逐渐对该行业