做个环保主义的程序员

十多年前刚走入社会工作的时候,那时的中国软件开发根本没有什么版本管理,也没有什么编程规范,软件开发相比起今天来说非常地混乱,那时仅凭自己的一些学习总结了一些C语言编程中的好的小笔记,后来,这些笔记写成了一篇叫《编程修养》的文章。今天,又有些感触,想把这个话题扩大一下,从“个人修养”扩大到“环境保护”,所谓,穷则独善其身,富则达济天下,今天的技术人员比十多年前在技术和环境上都富有了许多,所以,也应该或多或少地担负起“达济天下”的责任了。

环境保护说白了就是保护一个良好的环境,为好的环境添砖加瓦,与破坏环境的人和事做斗争。其实,从技术人员来说,我们可以做一些力所能及的事。因为我们身边的技术环境还有很大的改善的空间,而一些来之不易的东西还需要我们去小心维护。

环保主义软件开发

先说说软件开发中的环保。比如:

  • 环保需求。当我们分析需求的时候,如果我们能做到不要像“这是到底是谁的错” 一文中那样的来者不拒,如果我们在面对需求能多问这样几个问题:为什么 要有这样的需求?这个功能主要能解决什么 样的问题?为什么不是另外那一种?可不可以简化一下?其实,我们并不需要创新,只需要真正地问好这几个问题,我们就可以少看着一些弯路,少一些苦逼的加 班,少一些内耗,少一些埋怨,也就可以为这个社会节省下一些资源,从而环保。
  • 环保开发。当我们做设计写代码的时候,如果我们多花一些时间去思考一下,我们就可以少一些代码(参看“多一些时间少一些代码”)。 如果我们在一开始多思考一下,不要急着马上去用迭代的方式认识世界,多思考一下怎么把复杂的东西解藕,把复杂的东西简化,怎么做出一个优雅的设计,怎么让 我们的程序少一些tricky的东西,怎么让我们的程序变得更简洁,更清楚,更直,在一开始思考一下未来需求可能的变化,未来软件需要怎么测试,未来的系 统需要怎么的运维,那么,我们可以少一些返工,少一些重构,少欠一些债,少一些低级错误,少承担一些系统上线后的压力,那么,我们同样可以为这个社会节约 一些资源。说得再直白一点,你用更少的代码产生出更高的效益,少耗一些CPU,就能省一些电,间接地保护了环境。(参看 Why C++?

 

  • 环保文化。当我们在做软件开发的时候,如果你能影响并帮助你身边的同事,让他们写出更有修养更有效率质量更高的代码来,并发动团队树立工程师的文化,用团队去影响你的老板,你的公司,让他们能再多一点地重视技术,重视技术人员,那么你必然也会成为一个受益者。
  • 环保管理。当你做为一个管理者,做为一个方法推动者,如果你能更多地注重软件开发中真正创造生产力的程序员, 为他们分忧,为他们铺路,为他们创造条件,那么,他们就会更多的回馈于你,就会少了一些不信任,就会少了一些被动,就会多一些主动,就会多一分责任,不但 可以激发团队热情,同时可以有更大的生产力。同样是一种环保。

当然,这样的东西还有很多,你也可能会觉得太过理想主义了,我们不可能马上改变之,但是我们可以试一试。

技术环保主义

其实,我们身边有很多可以做的技术环保工作。比如说,在Linux下少用root用户,SQL的时候,delete前先select,这样,你就不会做出一些让你后悔的事(参看程序员那些悲催的事), 不会让你重头来过,从而至少不会浪费电能。写代码的时候要很小心管理好内存,以及各种资源,和线程并发,组织好的你的代码中的业务逻辑,做好单元测试,自 动化回归测试,等,这样你就可以少一点遇到BUG,在最到BUG时少一些时间去做调查。操作电脑的时候少下一些破解软件,少访问一些奇怪的网站,这样,你 就会少中一些病毒,少一些损失,少一些重做系统,一样可以节省电能。

当然,除此之外,我们更应该做为一个大气的,高瞻的环保主义者,比如下面的事情:

  • 拒绝IE6。如果你坚决不用IE6,并影响你身边的人,让他们升级IE6,尝试Chrome 或 Firefox,多告诉一下自己身边的朋友,怎么设计口令,怎么在互联网上保护自己的隐私和安全,怎么防木马,这样就能少一些问题,少装两次系统,就能省 一些电,也就能多一些时间去做一些更有意义的事。也是在为整个世界整个人类做贡献。(看看某些软件产商,占据着用户桌面的江山,还整天弹窗弹窗的,说这不安全,那不安全的。你还是做安全的,你居然能容忍IE6装在用户的机器上,你还做个屁的安全!
  • 拒绝抄袭和山寨。如果你鄙视那些赤祼祼地抄袭者,不使用他们的产品,有的人会说你就是想标榜自己的高 尚,ZB,假高尚,大家会说你没有必要。其实并不是,你这样做,其实是为了“环保”,为了“保护一个健康的IT环境”,虽然你没有创新,但是你的行为却是 在鼓励创新的环境,这样,如果当整个大环境都是在创新文化影响之下,才会更健康,技术人员也才会被尊重,而我们自己最终会受益。虽然只是抑制抄袭和山寨, 但是我们间接地为社会做了贡献。(看看那N多的抄袭团队,加入他们实在是耗费这个社会的资源) (那个整天复制这个复制这个复制那个的公司,看看你自己做的那些产品线?乱糟糟的。你看看,你有个人空间,还有群空间,还有校友录,然后你还要做个facebook式的“朋友”,还要搞个微博,然后还要搞个微信,大哥啊,你把这些相似度很大的东西放在了N多的服务器上,你不觉得浪费吗?你真是山寨之王啊,自己都一直在复制自己的产品。还有人说你们的产品经理一流,真是脑残啊。对此,我只能拜了!)
  • 拒绝百度搜索。如果你学得百度还是可以的话,你不妨看看我的微博(这个这个抓图),还有这个), 你会发现百度不单单是广告的问题,很多东西根本搜不出来,包括他自己的内容。用百度就是浪费时间,浪费计算资源。如果你告诉你身边的朋友不要用百度搜索, 而是用Google,并能耐心地教会他们翻墙,这样,我们就可以让那些“穷则穷凶极恶,富则为富不仁”的企业少一些自以为是,最重要的是可以让他们少制造 一些垃圾信息和垃圾产品,世界少一些垃圾,自然也就环保了。
  • 拒绝过重的商业氛围。很多社区的商业氛围实在是太浓了,全都是广告。整个社区根本都不是为技术人员来做的,而 为了那些软件产商,为了那些公司。他们只知道为那些大公司写软文,做广告,开大会。他们只想着挣钱。网页上全是花花绿绿的广告,打开他们的网页,就会多耗 许多电,浏览他们网站上的文章,到他们的大会上听他们的软件广告分享,就会让自己的生命和时间浪费,自己消耗了体力不说,却还没得到什么营养,相当的不环 保。
  • 拒绝浮燥。比如:浮燥地创业者们,被风投们一轮一轮地压榨。为了让风投满意,牺牲自己的初衷,去找水军刷排 名,去发垃圾邮件,去烧钱买吆喝,制造虚假的繁荣,等等。另外,少去追那些新的技术,少一些浮夸,不要开口闭口的就是海量数据,高性能,要当个架构师,经 理,要拿多少多少的工资,与其这样,还不如多静下心来研究一下那些十来年的技术,思考一下自己身边的问题,一步一步走踏实,少摔几个跟头,这样,你也就能 多一些能力,多一些自信,也就能多做一些事,多解决一些问题,你的职业生源走好了,也就很环保了。

还有很多,我相信大家明白我想说什么。其实,我想说的是,这不单单是一种“个人修养”,这也是一种对社会贡献的方式,更是一种“低碳环保”的生活方式

让我们一起来做有修养的环保主义的程序员吧!

(全文完)

2007 年的 Android 和今日的大不一样

“谷歌集中投入Android开发,那是2006和2007年——比该平台投入市场要早很久。Android当时完全是一个不同的产品,几乎无法从今日的 产品中联想到它来。甲骨文围绕在Android中使用Java一事诉谷歌一案于2007年五月公布的文档,展示了一系列当时的雏形用户界面元素,它们显著 地标注了‘将会改变’。从中,你可以看到,Android过去曾是一个专注于半屏带QWERTY键盘的设备的产品。”

Android in early 2007 looked very different than it does today

Home screen

Dialer

Contacts


Calendar


Gmail


Email

Messaging


Web browser


Media player


Maps


Google Talk


Camera and video

YouTube

Time

Notes

Calculator

Settings


转载请注明:Linux人社区>英文资讯翻译专版.编译

Facebook 被指贵得离谱:盈利增速难抵合理性

MarketWatch网站4月25日晚间刊载投资通讯专家、MarketWatch专栏作家赫伯特(Mark Hulbert)的评论文章,文章指出,目前,Facebook的股价在次级市场已经达到40美元的水平,基于历史数据进行的研究显示,他们必须拿出真正前所未有的盈利增长速度才能证明这样价格的合理性,而这实际上是不可能做到的。

以下即赫伯特的评论文章全文:

目前,看着Facebook的股票在次级市场上的每股40美元的价格,我们很自然就会想到,未来的年头当中,这家公司的盈利增长是否能够足够迅速,足够证明股票确实配得上这样的价格呢?

对于大多数投资者而言,他们也只能望这样的问题来兴叹,因为他们根本不知道该怎么计算,而且哪怕知道了方法,他们也不会去试图寻找答案。只是,事实上,根据一些保守的假定,我们只要一些简单的数学方法就可以算出答案。

答案显示,该公司必须以令人难以置信的速度成长才行,其速度必须超过史上几乎所有其他成长型公司。当然,我们并不是说Facebook(FB)就一定没有能力创造历史纪录,但是我们现在是应该明白他们要成功,必须克服怎样的巨大障碍了。

要说明这一点,请允许我着眼于未来五年——尽管我们也完全可以用任何其他长度的时间段来完成计算。想要确定Facebook到底需要怎样的成长率,我们首先必须回答两个问题。

一,该股从现在到2017年5月的平均回报率将是多少?

二,这五年当中,该股的市盈率将是多少?

我们先来解决第一个问题。尽管历史数据显示,股市的年平均回报率大约在10%左右,但是Facebook是一支个股,投资风险要比大盘高得多。这也就意味着,要投资者承担如此之高的风险,该股就必须拿出一个大大超过10%的年平均回报率作为补偿。

姑且保守一点,我们假定Facebook股票在未来五年当中为投资者提供的是20%的年平均回报率。若是该股在5月中旬以40美元,即当前在次级市场的价格上市,那么以20%的回报率计算,Facebook的股价在2017年5月就必须达到100美元左右。

参考Facebook最近对Instagram的出价,如果他们股票的发行价格就是次级市场交易价格,我们可以推算出该公司的市值大约该为1040亿美元。如果将最近一个财季2亿500万美元的净所得年化,便可以推算出他们的市盈率是127比1。

当然,在未来的几年当中,这市盈率当然会降低下来,而在过程当中,公司的盈利必须成长得更加迅速,以确保市盈率的降低不会转成股价的下跌。这对于 Facebook而言是个巨大的挑战,因为那些和Facebook市值规模类似的公司,哪怕是成长最为迅速的,市盈率一般也不会高过30左右。比如经常会 被拿来做比较对象的谷歌(GOOG),当前的市盈率就只有16.6。

下面还是保守的计算,让我们假设该股的市盈率2017年5月的时候依然高达50。

你猜怎样?就是在这样的前提下面,Facebook的盈利增长速度未来五年中还是必须达到年平均43.4%才可以。

不消说,这简直是惊人的成长率了。

怎么,不喜欢这样的答案?好吧,那我们再拿这些数字来排列组合一下,你就会发现,要找到比我说的更合意的答案几乎根本就是不可能的。

我们不妨看看下面的数据吧,看看每股盈利在未来五年当中究竟要有怎样的成长速度,才足以支持各种各样的前提。

假设股票年平均回报率为5%,该股2017年5月市盈率为30的假设之下,该股未来五年的每股盈利年平均增长速度必须达到39.0%,市盈率为40时 为31.2%,50时25.5%,60时21.0%;股票年平均回报率若是10%,则四个速度分别为45.6%、37.5%、31.5%、 26.8%;15%的情况下为52.2%、43.7%、37.4%、32.5%;20%的情况下为、58.9%、50.0%、43.4%、38.3%。

想要知道这样的增长率有多么不可想象?不妨回顾一下声誉卓著的《金融杂志》几年前一次里程碑式的研究。这一题为《成长率的水平和持续性》的报告是由三位金融学教授联手撰写的:伊利诺伊大学香槟分校的拉科尼肖克(Josef Lakonishok)和陈(Louis K. C. Chan),以及佛罗里达大学卡尔赛斯基(Jason Karceski)。

几位教授研究了1952年到1997年美国所有上市公司的盈利成长率。他们的研究目标之一就是试图找出连续五年成长速度都超过平均值的公司——不消说,平均值就是前面所说的10%,距离前面Facebook必须逾越的21%至59%的障碍简直不是一个数量级。

然而,他们却发现,几乎没有任何公司能够达到这一看上去并不是特别了不起的目标,而且在科技行业当中,情况也是如此。

当然,极少数凤毛麟角的企业还是存在的,比如我们提到的谷歌就是个例子。

可是毫无疑问,谷歌的情况与其说是规律,还不如说是例外,而且要支持Facebook当前的股价,这样的奇迹还都不够。

来源:MarketWatch网站

抢先体验 Ubuntu 12.04 版本 (多图)

Ubuntu Linux 12.04 版本”Precise Pangolin”已经面世,有很多改进。有一个被称为HUD的快速搜索,一些新的隐私设置,统一的接口等等。

这版本是长期支持的版本,它比其它产品的支持时间更久,5年。让我们来看看到底有什么新特性吧。

HUD让查找菜单变得非常容易

过去的时候,我们常常使用程序做一些事情,但是往往忘记了它在哪里,HUD很好的解决了这个问题。只要按下Alt键,就会在屏幕的左上角弹出一个搜索栏。从那里输入你要找的,它会返回所有符合您查询条件的菜单项。

新的隐私选项,让你的信息只属于你自己

如果你搜索了,又不想你的活动被记录了,这里有一套新的隐私选项供你选择。通过系统设置->隐私,你可以忽略某些类型的文件,或某些文件夹中的活动,或某些应用程序的使用。你设置可以把整个记录功能都关掉。现在这个时代,每个人都想要隐私,是吧?

统一界面的改进

爱或不爱,统一就在这里。在列表的头部是一个视频镜头搜索,这搜索的不当是本地,也包含互联网。你不用再前往亚马逊,Vimeo或者TED脱口秀。 只要点击,就可以输入。可惜的是还不支持youtube,希望以后会支持。你会发现还有一个非常不错的右键菜单,再加上不错的配色效果。如果你的电脑配置 不错,“外观”设置中有几个强大的效果。

内置按钮更好的支持触摸板

很长一段时间,Ubuntu支持ClickPad有问题,像触摸板本身就是鼠标和按钮(类似MacBook笔记本电脑上的)。现在精确的ClickPad设备完全支持此。你可以一只手指按下按钮,另一只手指移动光标。

Ubuntu One还有更多的选项

最后,Ubuntu One用户也将发现,Ubuntu One的客户端界面已经改变了一点,现在更像Windows 了。您也可以选择你想同步的文件夹,这点很不错。

更多请访问。 

程序员和编码员之间的区别

英文中 Coder 和 Programmer 都含有软件开发人员的意思,Programmer 是程序员,这个很好理解,但 Coder——这里暂且翻译成编码员——在国外有着跟程序员很大的不同。比如,在一家日本公司里,日本的软件工程师负责设计软件,编写详细说明书,制作完整的伪代码清单。他们这些人可称作是程序员。当他们完成这些事情后,设计说明书、详细说明书、伪代码等必备资料都交给中国那些外包的年轻小伙们,这些小伙阅读说明书,严格按照伪代码,把它们变换成特定语言真正可运行的代码,做这些工作的小伙只能称作编码员。可以看出,前者是用脑子的,而后者更像是一种人肉转码器。当然只是在你特意要区别它们时才会有区别,很多时候人们不会特意区分它们。总结:程序员是脑力劳动者,编码员是体力劳动者。程序员是建筑师,编码员是泥瓦工。程序员有自主创新能力,编码员是照本宣科。在YouTube上看到了下面这个视频,讲的也是程序员和编码员之间的区别: