王志勇 发表于 2019年01月08日 16:01
曾有人吐槽PHP使用花括号、条件语句中使用圆括号、变量名使用美元符号$,所以有人更喜欢Python的语法。个人觉得,PHP的花括号、条件语句中的圆括号,可能有点难省略,一旦省略,PHP的解释器将比较难设计这门语言。尤其是花括号,在复杂的大片的程序语句里,如果有很复杂的逻辑关联,如果该语言没有花括号,易读性大减。大片的程序语句里,花括号有助于分析程序里的逻辑关系,所以易读性大为提高。
例如这2个例子:
if (file_exists($f)) for ($i=0;$i<=$j;$i++){}
foreach ($a as $b1=>$b2) echo "$b1, $b2";
如果把if后面的圆括号、for、foreach后面的圆括号去掉之后是这样的:
if file_exists($f) for $i=0;$i<=$j;$i++;{}
foreach $a as $b1=>$b2 echo "$b1, $b2";
这看起来,是不是有点像shell编程?但又不太像,因为shell必须用fi;结束,shell是用fi;来代替花括号。易读性,还是远不如花括号明显。
PHP每个变量名都是美元符号,这个我赞同在未来的PHP版本改进中,去掉美元符号$(建议有、无美元符号,都可兼容)。为什么会有美元符号$?也许是当时的PHP语言的设计者,为了便于查找变量。但是现在有很多文本工具,都支持程序语句自动显示为彩色,例如EmEditor。而且EmEditor还支持“仅搜寻单字”,这样能快速找到变量,即使变量名是a,按Ctrl+F,在“仅搜寻单字”打上勾,也能快速找到所有的变量a。
前几天看到一种语言,花括号必须占用一行,否则报错。PHP不存在这种强制。为了提高程序的可读性,我喜欢把关联性强的语句,最后的花括号不换行。比如我写的程序里,在最后结束的地方,会有很多这种格式:
……
……
…… }}}
}
上述的前3个右括号,表示关联性最强。最后回行的这个右括号,表示它是在更外一层的命令语句。
上面讨论了语法,PHP的语句很多时候也很简洁。比如实现同样功能的建立文件夹,PHP这样实现:
$a1='folder';if (!is_dir($a1)) mkdir($a1);
或者更简单地:
@mkdir('folder');
ASP建立一个文件夹需要这些语句:
<%a1=server.mappath("folder")
Set im=CreateObject("Scripting.FileSystemObject")
if im.FolderExists(a1)=False then im.CreateFolder(a1)
set im=nothing%>
这就是同一时期的PHP和ASP的区别。由于ASP的语句比PHP复杂很多,所以ASP的开发周期至少是PHP的2~3倍。ASP是不是一个落后的语言?ASP有它特定的历史作用,因为PHP在近10年广泛流行之前,ASP几乎就是最好的语言。我有一个2006年微软官方网站的截图,当时微软官方网站的大部分网页就是ASP做的,之后的几年渐渐改成asp.net。
新兴的高并发语言Golang,有人测试性能比PHP高出很多。也许几年后,等我有时间,会尝试学习和开发Golang语言。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
夜晚靓歌(10):你没看过的《星雨心愿》
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +