免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: prolj
打印 上一主题 下一主题

中间有google掺和的被LLVM加强火力的Python [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-09-16 22:42 |只看该作者
Python 写出来自然就是OO了,这点比lua更彻底。

论坛徽章:
0
32 [报告]
发表于 2009-09-17 00:06 |只看该作者
python就语法角度来讲很多功能是重复的,不使用OO(class),可以把数据、变量、函数放进list和字典里自己手工实现OO特性,lua就是采用这个办法,lua的关系表就是python的字典,形式不一样本质类似,lua实现真正的对象需要使用高阶函数(直接控制元表)和关系表(两种都可以实现也可以结合使用),C语言实现面向对象就是使用结构存储指向函数的指针,当然还有很多其他技巧参看《用C实现面向对象》,lua的源码就使用了部分这种技巧。

论坛徽章:
0
33 [报告]
发表于 2009-09-17 00:18 |只看该作者
java很严谨,类似MFC,工作做的很扎实,考虑的很周到,它的结果就是死板、冗繁,太自由的东西比如perl又难以约束规范代码,python是成熟的折衷方案,lua还在成长,编程时间长了,应该可以在任何语法上发挥自己的风格。流行的语言发展到现在都能解决你需要的大多数问题。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
34 [报告]
发表于 2009-09-17 06:13 |只看该作者
唉,能理解P阿姨的烦恼。本人对Java也不上心,一直下意识地排挤……

以前喜欢Ruby,觉得它并不“魔幻”。就比如P阿姨反感perl。其实·perl“外星人”一点儿的也就是pcre了。那个东西,一个严谨的BNF可以让它很清晰。P阿姨用Vim吧,看看:h pattern。我最开始就是用它入的门。

我觉得“魔幻”的好坏不是说语法有多么奇怪,而是说代码有多么直观。Python代码直观,Ruby也可以直观。当然lua更可以。在语法层面上,我觉得就是两点:简洁,完备性。完备性是相对世界观而言的。Ruby一开始就考虑到了函数式编程,于是lambda非常完备,而Python差些。问题是,Python缺乏函数式编程的完备性恰好降低了Python的难度,这也算是一种耦合吧。而Java最大的失败就是发展时间太长,发展方向不一,历史残留问题十分严重。看看Java目前的GP就知道了。还有就是Java不能重载表达式特别讨厌。你不能重载把你让string可以重载干嘛,你耍我们呢?

库也是个不能忽略的问题。一个问题是库获得的简洁性。perl有CPAN,ruby有gems,不过不知道Python有没有这些类似于apt的包管理程序。它可以让语言扩展更快更容易。同时用本语言书写包管理程序也是一种效率的考验。一直觉得,没有包管理程序的高级语言至少是不灵活开放的。

最后就是虚拟机了。这个偶没发言权,让专家们去搞吧。

P阿姨稍安毋躁,牛奶是会有的,面包也是。用好心情去面对生活才比较有意义。

最后,谁贴一下lua的BNF?学习一下优美的地方……

论坛徽章:
0
35 [报告]
发表于 2009-09-17 09:01 |只看该作者
chunk ::= {stat [`;´]} [laststat [`;´]]

        block ::= chunk

        stat ::=  varlist `=´ explist |
                 functioncall |
                 do block end |
                 while exp do block end |
                 repeat block until exp |
                 if exp then block {elseif exp then block} [else block] end |
                 for Name `=´ exp `,´ exp [`,´ exp] do block end |
                 for namelist in explist do block end |
                 function funcname funcbody |
                 local function Name funcbody |
                 local namelist [`=´ explist]

        laststat ::= return [explist] | break

        funcname ::= Name {`.´ Name} [`:´ Name]

        varlist ::= var {`,´ var}

        var ::=  Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name

        namelist ::= Name {`,´ Name}

        explist ::= {exp `,´} exp

        exp ::=  nil | false | true | Number | String | `...´ | function |
                 prefixexp | tableconstructor | exp binop exp | unop exp

        prefixexp ::= var | functioncall | `(´ exp `)´

        functioncall ::=  prefixexp args | prefixexp `:´ Name args

        args ::=  `(´ [explist] `)´ | tableconstructor | String

        function ::= function funcbody

        funcbody ::= `(´ [parlist] `)´ block end

        parlist ::= namelist [`,´ `...´] | `...´

        tableconstructor ::= `{´ [fieldlist] `}´

        fieldlist ::= field {fieldsep field} [fieldsep]

        field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp

        fieldsep ::= `,´ | `;´

        binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ |
                 `<&acute; | `<=&acute; | `>&acute; | `>=&acute; | `==&acute; | `~=&acute; |
                 and | or

        unop ::= `-&acute; | not | `#&acute;

共22条,展开之后是60几条,根据情况而定。

论坛徽章:
0
36 [报告]
发表于 2009-09-17 09:17 |只看该作者
lua能跟c语言完美结合的pascal语法式的lisp。

论坛徽章:
0
37 [报告]
发表于 2009-09-17 17:21 |只看该作者
Emacs、vim是编程编辑器世界的autoCAD,本人曾熟练使用autoCAD,基本上离不开命令,vim更适合autoCAD的习惯,随心所欲控制你编辑的文章,但是还有改进的地方,比如左手输命令、右手控制鼠标的CAD模式会使vim有个飞跃。有兴趣开发一个。

论坛徽章:
0
38 [报告]
发表于 2009-09-17 19:34 |只看该作者
原帖由 rawa9999 于 2009-9-17 17:21 发表
Emacs、vim是编程编辑器世界的autoCAD,本人曾熟练使用autoCAD,基本上离不开命令,vim更适合autoCAD的习惯,随心所欲控制你编辑的文章,但是还有改进的地方,比如左手输命令、右手控制鼠标的CAD模式会使vim有个 ...

我是Vim的忠实用户,但是不一定会接受你的“策略”,因为,我压根就不用鼠标,触摸板虽然用,但是在Vim里面键盘就足够了,捧场,对于实实在在做事情的人,我都佩服,尤其是做开源的人。
好像你要自己做一个fork了,我想Vim的老大不会接纳你的开发分支的,理念就不同。

论坛徽章:
0
39 [报告]
发表于 2009-09-17 20:23 |只看该作者
如果尝试用实现Rose功能和UML,我说的这个不是空穴来风。当然linux内核1000万行代码没有UML也很好。Rose给源代码下了一个源代码是图形的定义。

论坛徽章:
0
40 [报告]
发表于 2009-09-17 20:51 |只看该作者
easy_install 好像是Python的宏包管理器,我不知道叫什么,LaTeX里面叫宏包,就沿用了这个叫法。
短期内无法使用Lua,下个项目可能考虑Lua。
在某个领域里面的代码生成器是可行的,我现在没有在写代码,而是写代码生成器,我没时间按照“需求”去“修改”代码,写一个生成器,需要改的时候改两行配置文件就OK了。
UML也被Rose当作一种代码生成器的输入,而我要关心的是UML在项目当中的学习和维护成本,Rose那个该死的工具的价钱,还是那种该死的文件格式是不是兼容性比较好。
代码生成器,很好,但是通用的代码生成器,很难。而且,我巨讨厌那些只会拽名词的Javaer扯UML、模式什么玩意儿的,你Y就两千行代码,墨迹UML的时候代码早就出来了,一般我看见的都是不懂技术的装B人员吹UML,实实在在开发的,尤其是C程序员,那个脑袋进水非画图不可?没有图形就不知道代码是怎么组织的?看不见单步调试就不知道代码是怎么执行的?UML这种东西,就是糊弄糊弄老板,和客户装装B的时候可能有点用,可是现在的客户水平也都不错,有的项目都想要你的代码过去,这时候你还打算蒙谁?老板?呵呵,我就见过一个SB主管蒙老板,结果他们公司都是华而不实的东西,一个小公司,还这样胡闹,佩服。
很讨厌说这种东西都是大公司用的,正规的,先进的。一个东西的实用与否,在于是否简洁到可以掌握,投入生产,而不是用来扯虎皮拉大旗用的。很怀疑UML这种东西能起什么作用,我现在还在使用“古老的”C、C++、LaTeX... 而“先进的,现代的”XML、Java、UML什么是绝对不允许出现在我负责的部门里面的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP