30 1月

邪恶的编码魔咒,你中招没?

原文链接:http://9tabs.com/random/2017/12/23/evil-coding-incantations.html

文 / Jekyll

自从我观看了Gary Bernhardt所推崇的视频以后,就对某些编程语言的怪异表现着迷了。一些编程语言比其他语言有更多令人感到意外的表现。例如:有一整本关于Java语言的书,专门介绍它的边界类(Edge)及一些特性。相应的,对于C++语言我们可以参考它的标准规范,花上200美元即可。

下面是我最喜欢的内容,是一些令人感到惊讶、搞笑的内容,还有一些像是魔咒。一般来说,使用这些有着特殊行为的代码被认为是邪恶的,因为你的代码不应该给人带来惊讶的感觉。如果你执意要去做下面这些愚蠢行为的话,会有不少洋相等着你呢。话虽如此,知识就是力量呢,我们开始吧。

在Python 2中对True进行了错误的重赋值

英文中的Two和True的发音是押韵的,但这并没什么意义。

 幸好Python 3以来将True、False和None作为保留字后,重复赋值的做法就会产生SyntaxError这样的错误。但这样奇怪的做法远比你在其他人的标准头文件中用#define true false少得多。

Java和Python语言中不可思议的表现

对于Java程序员来说,“==”运算符的语义常常令人感到困惑。但是,即使是一些微不足道的场景,操作符的不一致性表现也会使情况变得比较复杂。即便这样做能够提升程序的执行效率。

在[-128,127]之间,JVM将使用同一个引用。更令人称奇的是,python语言也有同样的行为。

即使变成负值,结果也是一样的。

相同的实例代码中,python语言解释器的整数区间下限似乎是-5。在[-5, 256]范围内的整数区间的得到了相同的ID值,这样就更奇怪了。

似乎使用破坏性赋值会对既有规则有所改变。我不知道为什么会是这样,实际上我遇到过一个堆栈溢出的问题并试图去理解它。我的猜测是,内存中一个列表里重复的值是指向相同对象的。

C语言中的反向下标

反向的下标符让任何一位开发者都会感到头疼。

这种写法能够运行的原因在于array[index]实际上只是*(array + index)的语法糖。多亏还有这样可互换的性质,我们可以将数组名和其索引进行互换而得到相同的结果。

C语言中的“一直走”操作符

当第一次看到–>操作符的时候,看上去似乎是语法错误。编译的时候,它看起来像是一项没有被归档的语言功能特性。不过,这些想法都是不对的。

操作符–>实际上是两个操作符,在所举的例子中被解析为(x–)>0。众所周知,这样做在成品软件中会造成相当大的混乱,极为邪恶。

C语言中的sizeof运算符

运算符sizeof是一个编译时运算符,它提供了有趣的属性。

由于在编译时sizeof运算符的实例就进行了运算,那么x+=1就不会被执行。同样有趣的是:研究表明printf(“wtf?”)这行代码是最典型永远不会被推入堆栈中的情况。

Lua、Smalltalk、MATLAB以及更多语言的索引从1开始

/r/ProgrammerHumor/这个目录下有很多索引从1开始所闹的笑话。令人感到惊奇的是,事实上很多编程语言的数组索引都是从1开始的。

Ruby语言中0的值是true

……也只有Ruby语言。

修正一下:在reddit站点上有人指出,Lua、Lisp和Erlang语言也是如此。

C语言中的Trigraph、Digraph和Token

由于历史原因,在C语言中有那些非字母和非数字符号有其替代符。

我希望这篇文章能够让您感到有趣,还可以在reddit网站上进行讨论。

http://blog.csdn.net/csdnnews/article/details/79191257

18 8月

霍尼韦尔黑客马拉松(Honeywell Hackathon)参赛记

黑客马拉松概念源自美国。一群高手云集一堂,几十个小时里开发出一款插件。参与黑客马拉松的人,除了热衷钻研技术的软件工程师,还有来自风投公司的团队,累了或坐或卧,现场休息,在几十个小时内拿出作品,择优而录,是“世界上最酷的开发者狂欢”。

“黑客马拉松”就像程序员版的《美国偶像》,极其火爆。有了更加易用的软件编写工具,加上各公司乐于让第三方分享他们的数据,2011年美国举行了200多场“黑客马拉松”(全球近20个城市分别举行类似活动)。结果是催生了一系列创意和新兴企业,光是围绕苹果的iOS系统,从2007年开始,就开发了50多万个插件,为程序员们带来30亿美元收入。

“黑客马拉松”规模各异,可能是在酒店自助餐厅举行、只有20个程序员参加的小型比赛,也可以是在13 .3万平方英尺的仓库举行、参加者多达500人的大型赛事。

拥有102年历史的霍尼韦尔航空航天集团怎能忽视这样高大上的编程赛事呢……

本次大赛由70位工程师,产生了20项创意。其中7项创意脱颖而出,分别斩获金、银、铜以及特别奖项。我们的团队由来自Aero Service Team的三位工程师组成(Shun Wang, Yiheng Ding, Yunpeng Bai)

拿出创意

使用JSON格式的数据表示AWC公共气象信息,将这些实用的信息实时发送给飞行员。

本项目原始创意由航空工程师Andy Li提出。遗憾的是由于他忙于准备去美国总部出差的事宜而没能参赛,团队借此机会,谨致谢忱!

组织团队

共3人,Shun Wang(iOS客户端), Yiheng Ding(服务端)和我(iOS客户端、推介),另外,Shun Wang和他的爱人(UI设计师)还承担了部分界面设计工作。

实现创意

经过十几个小时的奋战,完美地实现了所有创意点。项目名称叫做“Before Boarding, BB”,意即飞行员登机前查看。还提交了应用的Logo。

演示成品

10分钟时间包括简单陈述创意内容,演示PPT,讲解潜在应用市场和商业发展潜力。

面对评判

经过数月漫长的等待……

领取奖金

比赛项目最终获得了铜牌。洪荒之力有没有?一笔种子基金(seed fund)已经发放,用于以该作品为蓝本的商业项目创意的开发。经费可自行支配,购买项目所需的任何设备。

5621302A42EBE45BE1132831920540BB

图一 比赛现场

1A7EDC51AD3C2F21E244647D013075D0

图二 专心比赛

D2D91B92F294668CA540B0B84375BCBE

图三 后勤保障有力,可以使出洪荒之力

7BB24E82DF70373756F03BF5F6E7C447

图四 颁奖典礼

F92CA29486BE38EF3AB1241FE25C1924

图五 领取奖杯

每一位工程师在参赛过程中必然会有所斩获。祝愿参加黑客马拉松的小伙伴们在今后的人生道路上深耕不辍,绽放英华!