2012-07-15

用C语法来写Python代码

Views: 27371 | 11 Comments

我认为 Python 不错, 因为作为脚本语言和动态语言, 它真的无可替代. 能作为通用用途的脚本语言本来就少 - PHP 主要用作 web 开发, gc 不成熟; Perl 算冷门, Ruby 等的语法就更加不堪入目了; Java/C# 需要编译且静态类型; JavaScript 主要在浏览器宿主中. 另外, Python 非常流行, 库很全.

但是, 我决不认为 Python 的语法很优雅. 用缩进来表示区块的方法, 只对于少量代码才是优雅的, 当代码区块超过10行或者代码文件超过100行时, 缩进常常让你眼睛模糊, 这时就一点也不优雅了. 而且, 缺少了花括号, Python 的匿名函数和 lambda 表达式就是一项残废的鸡肋功能, 我怀疑是否真有人使用来虐待自己.

前面也讲过, Python 非原始类型的函数默认参数其实相当于函数的静态变量, 这个语法负作用对初学者和仅仅把 Python 当工具的开发者是一个坑.

另外, Python 里类函数的声明中的"self"也是毫无意义, 何不隐含"this", 并且强制要求使用类成员时必须带"this."呢? 而且, 调用父类方法的方式也是让人无可奈何.

如果有这样的一种脚本语言(动态语言), 它继承了C的语法, 吸取了 Java 和 JavaScript 对 C 的改进部分, 同时使用 Python 引擎, 那将会是一种非常舒服的语言.

可以使用一个编译器, 把这样语法的的代码编译成 Python 代码, 然后用 Python 执行器来执行, 这样很快就能实现. 我会这么干的. 项目地址: https://code.google.com/p/cpy-scripting-language/

Related posts:

  1. 开始学习 Python
  2. 动态语言应该有多动态?
  3. PyPy – 吞下自己尾巴的小蟒蛇
  4. 应届生如何成功应聘百度
  5. Cpy是如何打败Python的
Posted by ideawu at 2012-07-15 14:29:22

11 Responses to "用C语法来写Python代码"

  • 超过100行的代码,那只能说明你的代码结构不好. Reply
    to Py: 这们同学, 难道你写的项目或者软件就没超过100行代码? 还是你的意思是从来没写过超过100行代码一个文件? 如果是前者, 这就奇怪了. Reply
  • 另外lambda表达式个人感觉一点也不鸡肋,尤其是在和filter/map/reduce这些函数搭配使用的时候,用起来没感觉到有多痛苦,反而是为了一些简单的操作去专门定义一个函数,有些每笔要。另外在sort时,cmp和key关键字都是使用lambda的好地方。 Reply
    to xiaowlon: 关于lambda和匿名函数, 你应该去学习一下JavaScript. Python古怪的只能写一个表达式的的lambda真不是好东西, 而且这个恶心的东西是因为它所谓的"优雅"语法的天生缺陷导致的, 并不是其创作者不想让lambda里也能写语句. Reply
    @ideawu: 你是在否认lisp吗 Reply
  • 我觉得当代码超过100行(或者超过你的屏幕的显示区域), 即便使用{}也很难使你立即分出来代码的层次结果,缩进和{}都是为了表示block。但是如果你在使用{}时代码的对齐很差的话,阅读起来会比较吃力,因为你要关注和这个block对应的那个}什么时候出现。这个应该是“Readability counts”。

    每次都要显示的声明self, 或者cls,我觉得不是实现上有什么局限性,比如默认传入this是不可能的。 可能是因为要遵循“Explicit is better than implicit.“的原则。 Reply
    to xiaowlon: 正确的原则是 — "Explicit is SOMETIMES better than implicit." 另外, 不用Python就不正确缩进和对齐的程序员是傻瓜, 我们不讨论傻瓜, 而是讨论正常程序员. Reply
    @ideawu: 楼主你好正常 Reply
  • 仅仅喜欢python 简洁的语法
    无花括号 self import 其他类,蛋疼无比 Reply
  • 服务器端javascript 可以尝试node.js
    另外我经常用PHP写控制台程序,没什么问题 Reply
    我也经常用PHP写一些文本处理的脚本, 以及一些网络测试工具, 爬虫等. 但如果真要写一个生产环境的Server, 明显PHP还不行. Reply

Leave a Comment