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

栏目: Python · 发布时间: 7年前

内容简介:邪恶的编码魔咒,你中招没?

点击上方“ CSDN ”,选择“置顶公众号”

关键时刻,第一时间送达!

自从我观看了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语言 中有那些非字母和非数字符号有其替代符。

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

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

一些国外的设备,例如IBM3270就没有提供C/C++中常用的一些符号,因此提供了那些digraph、trigraph和token,目的在于不歧视特定的字符集。

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

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

作者:Jekyll

译者:白云鹏

————— 推荐阅读 —————

点击图片即可阅读

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

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

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learn Python the Hard Way

Learn Python the Hard Way

Zed Shaw / Example Product Manufacturer / 2011

This is a very beginner book for people who want to learn to code. If you can already code then the book will probably drive you insane. It's intended for people who have no coding chops to build up t......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具