0

0

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

伊谢尔伦

伊谢尔伦

发布时间:2016-11-25 09:59:25

|

1873人浏览过

|

来源于php中文网

原创

 每种语言都有自己的独到之处,或奇特的语法,或不常见的函数,或非标准的执行方式。因此,不论新丁还是老手,看着某个特性会突然醉了。文中总结了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++:三字母词用法

  问题描述:

EZIBI! 商城(原维C商城)
EZIBI! 商城(原维C商城)

前身是vitcie(维C商城),各种特性介绍: 1. 稳定、安全、高效的系统平台 EZIBI!基于PHP+MYSQL技术编写,PHP自1995发布第一个版本,经过近10年的发展,已经成为目前最流行的网络编程语言之一,其强大的数据库支持使得开发人员很轻易的就可以完成C/S架构电子商务平台的构建;MYSQL则是成熟的数据库系统。 2. 安装向导 EZIBI!提供支持多语言版的安装脚本,只需按照提

下载

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

  成因分析:

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

  网友们的看法:

  “博学如谷歌,也一定看不懂什么是??!??!” 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使用分号作为语句结束的标志,并且会自行插入,即使是代码断行的情况。因此会常常导致错误的出现。

  成因分析:

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

  网友们的看法:

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

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

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

  问题描述:

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

  成因分析:

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

  网友们的看法:

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

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

相关文章

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

28

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

23

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

27

2026.02.28

Golang 并发编程模型与工程实践:从语言特性到系统性能
Golang 并发编程模型与工程实践:从语言特性到系统性能

本专题系统讲解 Golang 并发编程模型,从语言级特性出发,深入理解 goroutine、channel 与调度机制。结合工程实践,分析并发设计模式、性能瓶颈与资源控制策略,帮助将并发能力有效转化为稳定、可扩展的系统性能优势。

16

2026.02.27

Golang 高级特性与最佳实践:提升代码艺术
Golang 高级特性与最佳实践:提升代码艺术

本专题深入剖析 Golang 的高级特性与工程级最佳实践,涵盖并发模型、内存管理、接口设计与错误处理策略。通过真实场景与代码对比,引导从“可运行”走向“高质量”,帮助构建高性能、可扩展、易维护的优雅 Go 代码体系。

18

2026.02.27

Golang 测试与调试专题:确保代码可靠性
Golang 测试与调试专题:确保代码可靠性

本专题聚焦 Golang 的测试与调试体系,系统讲解单元测试、表驱动测试、基准测试与覆盖率分析方法,并深入剖析调试工具与常见问题定位思路。通过实践示例,引导建立可验证、可回归的工程习惯,从而持续提升代码可靠性与可维护性。

2

2026.02.27

漫蛙app官网链接入口
漫蛙app官网链接入口

漫蛙App官网提供多条稳定入口,包括 https://manwa.me、https

164

2026.02.27

deepseek在线提问
deepseek在线提问

本合集汇总了DeepSeek在线提问技巧与免登录使用入口,助你快速上手AI对话、写作、分析等功能。阅读专题下面的文章了解更多详细内容。

8

2026.02.27

AO3官网直接进入
AO3官网直接进入

AO3官网最新入口合集,汇总2026年可用官方及镜像链接,助你快速稳定访问Archive of Our Own平台。阅读专题下面的文章了解更多详细内容。

309

2026.02.27

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 4.7万人学习

Excel 教程
Excel 教程

共162课时 | 19.5万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号