说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

令程序员费解的10个语言特性

HTML文档下载 WORD文档下载 PDF文档下载
每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。本文总结了10个经常被提及的“奇异”特性。

每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。文中总结了10个经常被提及的“奇异”特性。


1. Javascript: + 是一个连接符

问题描述:在JS中,+ 号用在数字间,可以用作常规加法;但如果遇上字符,又可作为字符连接符。例如:’1’+ 1的结果是11。

成因分析:

根本性原因是JS属于弱类型语言。比方说Python,同样地使用+ 号作为字符连接符,但由于它是强类型语言,一旦发现一个字符与一个整数进行相加,它会提示这是个错误操作。

网友们的看法:

“问题在于这是个无法预料的强制性静默转换,很容易就忽略了。”匿名

JS应该就该情况作异常抛出处理。” crgwbr

“用+来进行字符连接简直是个噩梦。” Matteo Riva

2. Perl:模块必须返回TRUE值

问题描述:绝大多数情况下,Perl模块在结束时候,都必须以1;语句来结尾,否则,如果最后一条语句的返回值不是TRUE,系统就会报错了。

成因分析:

Perl模块中包含了初始代码和子程序。当模块文件被载入时,Perl会根据是否返回TRUE来判断代码是否成功执行。即使没有初始代码,Perl仍然期望最后的语句需返回TRUE,否则会报错。

网友们的看法:

“这个通常让我有不安的感觉。” Drew Hall

“这是最无实用价值的用法了。”Schwern

3. C/C++:三字母词用法

问题描述:

举例来说,系统看到??!会把它自动转为|,看到??(会转为[。这很容会引起造成意想不到的结果,并且会大大降低代码的可读性。

成因分析:

早期进行编程时,键盘上还不能直接打出某些特殊字符,例如大括号。因此用了这种间接的方法。

网友们的看法:

“博学如谷歌,也一定看不懂什么是??!??!” Isaac

“自1977年有了三字母词,C就变得晦涩难懂了。”Martin Beckett

4. PHP:大小写敏感处理

问题描述:

PHP对大小写处理比较混乱,有些地方区分,有些地方不区分。例如:变量名,常量名区分;函数名,方法名,类名不区分。

成因分析:

很可能是PHP从CGI脚本集发展成成熟编程语言过程中出现的人工产品。

网友们的看法:

“这是为什么PHP程序员习惯用下划线进行函数命名,而不是采取驼峰命名法的原因。”paperstreet7

“在PHP中,一切皆有可能!”Grzechooo

5. Ruby:0作为真值

问题描述:

Ruby中,0值等同于TRUE值。这对有C,Python基础的程序员来说不可不谓是一场噩梦。

成因分析:

只有布尔值FALSE和nil等价于FALSE,其余的都等同于TRUE。0与1,2,3等都会被相同对待。

网友们的看法:

“这简直是让人抓狂,虽然初衷是善意的。”Chris Lutz

“0==true!我这个C语言脑袋都快崩溃了!”Kenny

6. Python:以空格数进行层次划分

问题描述:

不同于采用关键字或标点符,PY中采用缩进层级来进行层次划分,以明确每一行代码的位置。不正确的空格数(或空格和换位符数不一致)都可能造成程序报错。

成因分析:

PY作者的意图是希望代码更为可读,减少不必要的输入,并希望程序员本身应该承担起维护代码清晰度的责任。

网友们的看法:

“由衷地说,这是使我对PY敬而远之的根本原因。”wazoox

“如果我们真的需要类似的强制机制,我们是不是真的太懒了!”Joris Meys

7. C:数组索引工作模式等同于指针

问题描述:

C中,a[i]和i[a]是可以互换的,两个写法都能得出一样的结果。

成因分析:

C中,对内存块而言,数组与指针是无差别的,就是说:

a[i] = *(a + i) = *(i + a) =i[a]。

网友们的看法:

“在C语言混乱代码比赛中,这毫无价值可言。”Confusion

“我想这正正揭露了C语言的核心,指针和更直接地与内存打交道。”Michael Neale

8. Perl’s:预定义变量

问题描述:

Perl有一份很长很长的特殊变量列表,里面的名字都是十分繁杂的(尽管有对应的长英文单词)。因此,除非是Perl资深开发人员,否则反复翻阅Perl文档是常有的事。

成因分析:

这些变量都有不同的含义,例如:进程ID($$),错误信息($@),正则表达式匹配($^R)。

网友们的看法:

“十分令人懊恼!”MatrixFrog

“对精简型开发者可能是福音。”niXar

“这些变量的问题是:无法通过谷歌查找得到!” malvim

9. JavaScript:自动分号插入

问题描述:

JS使用分号作为语句结束的标志,并且会自行插入,即使是代码断行的情况。因此会常常导致错误的出现。

成因分析:

自动化的本意是为了带来便利,特别是对新手来说。

网友们的看法:

“如果我们设计语言的特性时,老把用户看成是傻瓜,那是会出问题的。”RobVan Dam

“自动分号插入是JS最让人头疼的地方之一。”fennec

10. Java:自动装箱(autoboxing)与Integer缓存

问题描述:

Java会自动把基础类型数据转为对象(自动装箱),例如把int转为一个Integer对象。同时默认地,缓存Integer对象的取值为-128到127。这样的话,在使用==来比较两个相同取值Integer对象时会出现问题(在-128和127之内是TRUE,其余的是FALSE)

成因分析:

自动装箱机制减少了代码输入量,同时Integer缓存提升了处理速度。

网友们的看法:

“还好我只是一名C#程序员。” Will

“这不算什么错误,反而给了我们一个使用原始类型(如:booleans)进行数字处理的理由。”RaviWallau

英文出自:ITworld

大数据领域,实时打击欺诈犯罪的4个战场 一周消息树:谷歌Project Ara,将开启下一个智能手机时代 数据恢复服务商的6个最佳实践 【走近讲师】谭晓生:魔高一尺道高一丈,360基于大数据的网络攻击检测 一周热点:摩尔定律让位于贝索斯定律 阿里巴巴集团CTO王坚确认出席第六届中国云计算大会 【走近讲师】青云甘泉:混合云的构建及其对企业的帮助 RadiumOne创始人兼CEO因家暴被公司解雇 3D打印狂潮:可检测皮肤疾病的低价手机显微镜 浅谈导航设计,开发者必备的十大实用技巧 【云先锋 41】上海越诚:基于云服务的建站类iService软件超市 董西成:Hadoop将在高速发展和完善中扩大优势! 【走近讲师】 华云数据郁珉:公有云市场八仙过海 价格不是唯一标准! Facebook、Twitter、Google移动广告之争 开发者的黄金时代=运维人员的恶梦? 研发团队平稳度过“从小到大”并非易事 诺基亚品牌手机不久将消失 Stephen Elop回应不是木马 看七家科技公司Logo的最初模样 移动UI框架Fries:私人定制最Sexy的用户界面 必须Mark!最佳HTML5应用开发工具推荐 百度技术开放日感悟:看百度如何获取大数据时代的“船票” 谷歌亚马逊微软的烧钱游戏 拉手网CTO官冲:团购网在大数据应用上的探索 究竟谁真正关心比特币,不妨看看基于大数据的百万条推特分析 Firefox 29正式版:高度自定义模式、全新菜单和Australis UI 冼茂源:HBase在垂直搜索业务以及数据存储中的应用! 阿里云计算北京布点 全球第三个云数据中心开放 【走近讲师】友友天宇CEO姚宏宇:与行业结合是私有云厂商的重要出路 万亿移动支付产业的难点和痛点 削减硬件运营成本?亚马逊或自主研发ARM架构芯片 开源框架eMobc:XML开发原生移动应用so easy 急问!表中的字段名能不能用两行表示!因为字段名太长了,而内容很短! 关于单文档滚动条一问 关于支持JPEG的奇怪问题 DLL里共享Frame的问题?(急!!!!!!!!!!!!!!!!!) 请大家帮忙,看一下 谁作过“基于WEB的图书馆里系统” Jpeg问题 小妹在看《设计模式》,多年没看C++,很多东西都不太明白。 谁作过“基于WEB的图书馆里系统” 关于模块编译的文体 各位高手帮一下忙。看一下这个问题。 谁来看看这个问题,10个零左右的运算也会溢出,delphi5,大家看看怎么解决,showmessage(floattostr(1207*(1208)*(2*1207+1)/24)); WhatlsOut(Conon) 请进来 谁作过“基于WEB的图书馆里系统” vc中有这样的管理类的工具吗 小妹在看《设计模式》,多年没看C++,很多东西都不太明白。 是高手的進來!不是的不好意思!!在線等 控件选择 关于在书上EJB的例子常见的一种方法的疑问(简单问题) 高分求一例,大分任你拿! 无法启动mysql,错误1067,怎么办? 这个价钱开多少? 请问以前版本的pb程序,如何在8。0上运行 请问在java中如何取得一个字符串的某几位? 哪位高手帮个忙啊? 我写了一个记事本,其中的一项功能"转到",没有实现,问题是:如何取得Richtextbox中的每一行的字符个数啊(整个Richtextbo 请推荐一本有关jdo的书或文章 以internal登录,出现insufficent priviledge 菜鸟说:关于TDATABASE的一个小问题 关于oracle错误代码的问题? 在HTML里是否有类似<!-- #include file="some.htm" -->的方法 突然很不爽,放它一百分 ------------------------------------------------ 请问:多目标决策算法,急!!!!:在线等待 关于./configure 如何进行端口的设置(在线等待) 急!哪位同仁知道秦皇岛的高程什么时候,在哪里报名!!! 数据更新 Win2000中如何禁止更改ip地址? 关于weblogic 8.1中运行jsp的问题 怎么得到一个窗口的句柄 这样的界面是在什么编程语言环境下实现的?急!急!!急!!! [提问]我装Microsoft Visual Studio SP5遇到麻烦,请帮忙。 dataAdapter配置视图函数是出错:函数提供的参数不够! 100分紧急求教关于 TClass 的问题。 一个不是很难的问题! 将三个数字型字符串加密成一密文,可逆 做了一个WBE服务器帮忙测试一下,来者有分,(只限2小时) 利用Sax进行XML文档解析的问题(高分)??? 我用一个ADOCONN,ADODATASOURCE,ADODATASET取得一组数据,请问我怎么用代码来控制指针下移,以及用代码取得当前某个字段的值? 好奇怪???? 错误分析,高分求解!! 各位大虾,帮帮忙!求助如何实现网页访问者的人数 黎巴嫩外长指责美国国务卿干涉黎内政奥巴马“网络水军”利用推特打医保舆论孙杨在拘留所飙泪 拘留 三停开创奥运三部委:严禁医疗机构向孕妇等推销母乳安徽宁国网友募捐被叫停续:1名重症患中央第二轮巡视组长更年轻 过半有纪委中印陆军反恐联合训练四川举行 双方各曝孙杨因女友不满赔偿金才报警 托人办印度火星项目负责人祈祷发射成功 称导美国白宫微博有“水军” 专为奥巴马“印度火星项目负责人祈祷发射成功 称导上海友谊路现54只探头 或为科技公司最大航空诈弹案今宣判 被告人开房被查当当网店庆闭幕周 万种畅销童书5折疯三部委:严禁医疗机构向孕妇等推销母乳安徽宁国网友募捐被叫停追踪:1名重症三中全会前瞻:新一轮改革坚持中国特色2014放假安排最早12月定 “只调越南总理积极推动TPP谈判 争取年内印度火星项目负责人祈祷发射成功 称导大众成德国薪酬差距最大公司 高管薪酬今天物流“单脚”再冲刺 上市被疑为套开源更节流 化解水危机恒立实业涉嫌信披违规被调查 此前股价国外食品安全治理如何倡导尚德守法2014年广义货币供应量预期增长13女大学生身穿夺冠热门球衣助威巴西世界南京大屠杀档案拟申报世界记忆名录 日昆明:无土地证房产不得上市交易标题导航左家塘“同心银行”不存钱存爱心光大「传家宝」 做好「贴心人」行节俭“小善” 聚文明“大德”论领导干部的时代素养家是最小的国多名土外交官在伊被绑架服刑人员用上网购违禁物品断了渠道“倒逼机制”促真抓实改宜兴一家农场日产“毒豆芽”近两万斤酒后滋事男子持刀砍伤铁路民警华丽“重生”背后的秘密 哈尔滨百年犹查找家属启事
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘