程序员真的很懒

可能除了哲学家以外,我认为程 序员是最懒的一群人。他们的职业看起来又似乎有一定的劳动强度。想想看,生物学家要亲自做所有的实验…给数百只小白鼠注射药物不可能自动完成。医生必须给 病人进行身体检查;教授每年都要教授同样的课程;建筑师从各个角度制定方案,并手工地将方案一笔一划绘制出来。 让我们再来看看更为辛苦的一些职业,情况更糟。营销人员要不断重复地进行同样的产品宣传;理发师日复一日地做着同样的事情;收营员每天都以相同的方式对货物进行结算…工厂工人…

你面前呈现出了一幅图片,世界上有很多这样的人,他们每一小时,每一天,每一年,有些甚至一辈子都在重复做着几乎相同的事情。
 
来看看程序员

每当我们想连续两次做同样的事情时—我们会尝试想一个方法来自动完成此过程。每当你写的代码是完成同样的一件事时,你会开始寻找一个库;每当你启动一个类似的项目时,你会去寻找一个模板。

Programmers are fucking lazy 1程序员的生活就是致力于消除重复的工作。

将琐碎地任务从我们的工作流程中剔除,这能让每个人生活得更轻松。这里有一个经典的笑话,说一个程序员情愿用一周的时间来写一个拷贝脚本,也不愿意将相同的文件复制粘贴两次,尽管复制粘贴可能只需要两分钟。

该死的,我们要遵循DRY(Don’t Repeat Yourself不要重复自己)的原则。这个原则的基本内容是宁愿创建一个令人费解的抽象类,也不要将不相同但非常相似的代码写两次。
这当然会导致很多问题。

一般的软件项目充满了在顶层抽象类上构建的抽象类,你慢慢地会不清楚这些顶层抽象类将如何工作。甚至你完全不知道其代码在做什么。”Dizzying but invisible depth“,涉及到这个问题时,你真的应该读读这篇短文。

另一方面,懒惰本身已经证明了历史上许多科学和工程发展所带来的背后推动力。用有轮子的拖车运东西比人工搬运要轻松;用船在水中前行比游泳来得容易;甚至如果你他妈的想炸掉一座城市,你投掷一颗原子弹也比投掷几千个小炸弹来的容易。

所以这也许并不是说程序员是懒惰的。也许真正懒惰地是工程师们。只是恰巧在这样一个历史时刻,程序员作为工程师中最鲜明的一类,总是将世界向更好更光明的未来推动。而其它大多数领域已经在某种程度上稳定下来,或者需要更长的时间去适应新的工具。

这里有一个重要的问题要问:程序员天生就懒吗?聪明懒惰的人容易被编程工作吸引吗,或者这是一种社会效应?懒惰源于最好的编程实践?还是最好的编程实践源于懒惰呢?
 
一个比较

最近,我有机会将一个建筑专业学生的一天与一个计算机科学专业的学生(就像我自己)的一天进行比较。

大多数的建筑系学生的生活充满了这样或那样劳动密集的任务,这些任务是她工作的一部分。在任何时候,她都有可能要对一些模型进行拼凑粘合,在 AutoCAD中从50个不同的角度对同一个物体进行绘图,或者在其它3D建模软件中重复相同的事情…然后将这些图片导入到Photoshop中成为真正 好看的图。

Programmers-are-fucking-lazy-2
这种事会接连不断的发生。我估计她花费在课程作业上的时间比她实际上课的时间多一倍还不止(事实上她说花了5倍还多)。更糟糕的是,更好的完成这些任务并不能真正加快完成任务的进程,这只是意味着你多知道了几个键盘快捷键,意味着下次画图时你可能会少犯几个错误。
熟练和精通完全无法优化关键的部分。

相比之下,当我不上课时,我通常都在做自己的项目。因为我可以,因为我有充足的时间。当有作业布置下来时,一般情况下,我都可以在几个小时内完成…即使是最关键最重要的项目,老师也很少给我们超过一周的时间来集中完成作业,最多两周。

精通编码并不意味着你打字更快(与建筑专业中等同的能力不同)。它意味着想出的解决方案更容易实现,利用工具来达到事倍功半的效果,诸如此类。最终,通过 互联网进行测试评判,而实现过程是最无关紧要的部分,因为每个人都会。如果你有一天的时间,你可以实现某些东西。如果你有更多的时间,你可以使这些东西实 现得更漂亮,模块化更高,可重用性更强,等等。

基本上你能够快速地实现眼前的任务,你工作中大部分时间都在致力于使你的任务完成得更加漂亮。但这对于你手头的任务来说其实并不重要,你这样做是因为你可以。

甚至于当程序员对自己的优化工作都产生厌倦时,他们会立马转而去创建工具来完成优化工作。

事情就这样周而复始地重复着。

接下来的家伙会使用他创建的新工具,使实现过程变得更快,接着优化它直到他最终厌倦,然后创建了一个新的更好的工具。
 
所以…是辛苦的工作?

但回到我最初的观点,辛苦工作对程序员的生产效率存在多大的影响?对于那些每天辛苦工作13小时以上,以取得竞争优势的创业者来说,这又意味着什么?这是值得考虑的一种优势吗?

辛苦的工作可能对程序员工作效率产生负面的影响。它掩盖了背后所做的优化工作“哦,我可以手动把它完成,这将只需要10分钟时间”(其实这需要20分钟)。下一次,一个相似的任务到来时,你可能需要再次手动把它完成,长此以往…

最重要的是,辛勤地工作会使你变得很笨。许多研究表明,持续疲劳的状态会使你做出错误的决策,甚至过多的决策也会让你会出错误的决定(称为决策疲劳)。事情上,这可能是我们喜欢创建抽象类并使用它们的原因—让其它人做大多数的决策,这样我就可以只专注于关键的部分。
但是,我仍然没弄懂,到底是懒惰的人更喜欢编程,还是编程使他们变得懒惰…
 
原文:Swizec Teller    编译:伯乐在线 – 肖翔

[数据研究] 色情网站有多大?

生活在互联网世界的人,都曾或多或少地浏览过在许多国家仍受管制的色情网站。我们很难洞察这类网站的发展状况,因为相关的确切数据实在是少之又少。可以肯定的是,色情网站的访问量肯定少不了。事实证明上述猜测是正确的,因为根据谷歌旗下广告服务商Doubleclick的数据显示,独立访问量前500名的网站中,竟有数十个是成人网站!

世界上最大的色情网站Xvideos每月有44亿的访问量,这个数字是CNN官网或24小时专门播放体育节目ESPN电视网的访问量的3倍,是社交新闻站点Reddit的2倍。YouPorn、Tube8和Pornhu这些大型的色情网站,其访问量也可以让除了Google和Facebook等超大型网站之外的小网站们相形见绌。

从访问量中,我们只能得出色情网站要比非色情网站更受欢迎这个结论。40亿访问量听起来确实是个天文数字,但是当你将用户在色情网站上做的事考虑在内,你就会发现,色情网站的大小和规模也不可小觑。

网站规模

色情网站和非色情网站的主要区别就是访问者的停留时间。Engadget和ExtremeTech这类科技网站的用户平均停留时间在3到6分钟之间,这足以让用户阅读完几篇文章了;而色情网站的用户停留时间则在15到20分钟之间

两者之间的差异也情有可原,因为大多数网站的内容主要是文字和图片,大型色情网站则力推视频内容,众所周知,看完一段视频所花的时间可比阅读完一篇文章花的多。ExtremeTech主页的数据大小约为数百万字节,但一段只有480×200低分辨率的色情视频,每秒的数据量就在10万字节左右,15 分钟的视频就可以耗掉约9千万字节的流量。将9千万字节乘以Xvideos网站每月约3.5亿的访问人数,就可以得出Xvideos每月需要处理29PB 的字节(1PB=1024TB,1TB=1024GB),即每秒50GB字节的的数据传送。

简而言之,色情网站每天需要处理海量的数据。在纯带宽(单位时间内可传输的数据量)上,美国本土能够与之匹敌的也仅有视频网站YouTube或Hulu了。色情网站的规模大到难以想象,排名第二的YouPorn的纯带宽都要比Hulu大出6倍。

网站的基础设施

与仅仅提供文字和图片相比,视频服务所需要的资源可要多得多了,它需要大量的数据储存、较短的CPU周期、内部I/O和高带宽等。

虽然说色情网站各不相同,但是大多数色情网站都会储存大约50到200TB的色情资料,对一个网站来说,这可不是一个小数目。不过幸好现在2TB的硬盘驱动器价格低廉且种类繁多,因此这对色情网站来说应该不算是太大的问题。

色情网站需要提供数千个动态的、可搜索的视频数据库,当有人点击一个视频时,文件会经过硬盘读取继而上传到网络上,这是一个繁杂的过程,而CPU周期和I/O能够影响数据的读取和上传的快慢。除此之外,在硬件方面,色情网站还需要四核机架服务器、千兆交换机和负载均衡等。在软件方面,大多数色情网站会使用快速、灵敏的数据库,如Redis来储存和提取视频,还有轻量级、高性能的Nginx等来作为网页的HTTP服务器。

在带宽上,拿上面的Xvideos为例,大型的色情网站需要有足够的网络连通性来完成每秒400Gb的数据传送。而且这还只是平均的数据传输速率,在高峰时段,Xvideos的背板带宽可以飙升至每秒1000Gb甚至更多。当然了,有许多方法可以解决流量过多产生的问题,如网站可以成立自己的数据中心,或租用大型数据中心的一些机架服务器,或使用如亚马逊或微软提供的云储存等。

真实的范例

世界第二大色情网站YouPorn给我们提供了一些一手的数据,看完你就会发现,事实上,谷歌的Doubleclick广告规划师低估了色情网站的吸引力。

YouPorn有超过100TB的色情资料,每天的页面访问量超过1亿,这就意味着它每天的数据传输量有950TB之多,大多数的数据传送用在了加载视频上。按照上面的数据计算,YouPorn每月的数据处理量有28PB,因此,排名第一的Xvideos的数据传送肯定不止29PB,它每月的数据传送量估计在35到40PB之间。在高峰时间段,YouPorn每秒需要处理100GB(每秒800Gb)的数据量,这个数据量等于YouPorn每秒传送了10多张双层的DVD。

在软件方面,YouPorn完全使用Redis进行数据存储,并使用MySQL小型数据库管理系统对Redis进行添加或管理。网页的HTTP服务器是Nginx,负载均衡则使用的是HAProxy和Varnish。Redis服务器每秒需要处理30万个页面请求,每小时会记录下8到15GB的数据(包括用户登录、观看记录等),YouPorn认为Redis处理每天2亿的访问量不成问题。

互联网只能处理50Tb每秒的数据,换而言之,单单一个YouPorn的流量就占了整个互联网的2%。类似YouPorn这样的色情网站有数十个之多,因此,认为色情网站的数据传送量占据整个互联网的30%就不算夸张了

CM团队换吉祥物了 喵了个咪的叫:Cid

032922Nsp CM团队换吉祥物了 喵了个咪的叫:Cid

如果你使用过CM团队的ROM的话,对上面那个滑板的Android机器人不会陌生吧,不过最近他们准备更换吉祥物了,因为跟Android官方的商标有冲突,都是Android机器人。

选择C.I.D.名字的原因是源于 Cyanogenmod ID的缩写,主旨是让所有 Cyanogenmod用户都能分享。

来看看Cid吧:

0329242Sz CM团队换吉祥物了 喵了个咪的叫:Cid

032928F9g CM团队换吉祥物了 喵了个咪的叫:Cid

喵了个咪的,这货让我不得不想起天猫的Logo,喵星人,他们可能是同种。

via:CM

上班电脑控下班拇指族 七成网民陷互联网依赖

“一天里除了睡觉我基本都在网上。”在毕马威事务所工作的闫小姐告诉记者,“电脑开关时间已跟 我作息时间一致了。”闫小姐表示,工作中的数据都要借助电脑处理,于是逐渐养成了坐下就开电脑的习惯,其实上网却并无要紧事可做,她担心染上了“网瘾”, “我休假去海南,上网时间少了,那几天变得非常惶恐,总觉得自己错过了什么,没有安全感。其实上网也不做什么事情,无非就是维护下微博。一晃一天就过去 了,浪费很多时间。”一项调查显示,71%的网民认为自己对网络有依赖;52%的互联网从业人员如果一到两天不使用电脑或不上网会感到不踏实。

和 闫小姐有同样情况的人不在少数。记者在国贸附近的写字楼随机采访了二十多名上班的白领,超过半数的人表示自己已完全离不开网络,加上通过手机也能上网,很 多人坐在桌前是“电脑控”,离开办公桌是“拇指族”。“现在我和人交流主要靠网络,工作时同事之间交流也靠网络。”在北京三里屯附近一家广告公司上班的朱 虹说,“更可怕是对搜索引擎的依赖。做文案时我会情不自禁地先搜索,个人思考越来越少。”

“有 问题问‘度娘’。”这是很多网友遇到疑问时的调侃。“一遇到问题我就想上网,但时间久了自己都不想思考了,也不考虑问题的来龙去脉,输几个字就能查到。” 在中国青年政治学院就读的蕾蕾说,“甚至会提笔忘字。对记忆知识存有惰性,总觉得在网上可以查到,很少用心去记。”网络依赖症,部分大学生还出现了交流障 碍。网友“流苏连连”称,她的朋友杨默在河南某理工类院校读研,每天都“挂”在网上,足不出户。一周前,她接到了小杨导师打来的电话,小杨由于过度依赖网 络,缺少必要的现实沟通,导致神经错乱,患上精神分裂症。

据了解,我国使用网络的人数正以每年10%以上的速度递增,许多人对网络的依赖到了无以复加的地步。

“现代办公方式给人们对网络的依赖创造了契机。一旦过度用网就容易形成网络依赖症,并且不容易察觉。”职业策划师林少波表示,“工作和生活压力的原因使很多人 寄望在虚拟世界里得以缓释。使用网络应该把握‘度’,如果发现自己有依赖迹象,要及时调整。工作结束后,可通过读书来缓解自己对于网络的依赖。多和家人、 朋友进行面对面的交流,能有效降低症状发生的概率。”此外专家提醒,过分沉湎虚拟世界的人往往有心理障碍,容易出现沟通困难,一旦发展成为心理疾病,伤害 更大。如果症状严重,最好寻求医生帮助。

工人日报 记者 赵剑影

你离得开互联网吗?