免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 兰花仙子

较之Perl - Python的语法真奇怪 [复制链接]

论坛徽章:
0
发表于 2007-01-22 13:13 |显示全部楼层
原帖由 hgneng 于 2007-1-22 13:00 发表


emacs用Lisp写的相信大部分人都知道,因为emacs也是一个古老的编辑器,年纪好像比Perl还要大。我以为上面的语言是文物意思是没什么人用,只会说说它们的名字。请问这里有人用Lisp编程吗?编些什么,关注:)


不一定很多人知道吧  而且也不只是编辑器吧
我觉得说古老实在不合适,虽然确实快22版了,unix不是太古时代的了 :)
国内it业发展时间短,自然不需要多少人用lisp。大部分用的都和科学计算有关的咯

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-22 13:13 |显示全部楼层
原帖由 WhisperQQ 于 2007-1-22 12:57 发表

我只是理解为正常的进化,就像java1.4、1.5、1.6的变化一样,并不会有致命的后果。

我没说有什么致命的后果啊。
我也承认是正常的进化啊。
正如 Perl1 Perl2 Perl3 Perl4 Perl5 这样子一样。

论坛徽章:
0
发表于 2007-01-22 13:21 |显示全部楼层
存在必然有存在的理由。一种语言的设计初衷往往决定了它的特点。

作为Unix sysadmin 出身的Wall最初设计Perl无非是为了满足他对复杂系统管理的需要,已有的Unix工具awk,sed等等满足不了他“懒惰”的本性(“懒惰”对于Unix黑客而言并不是贬义词,而是必需的品质),所以Perl最初是为Unix系统管理员设计的。在Perl身上可以看到许多C,awk,sed的影子。
而Python的设计初衷只是为了实现一个更为简洁的教学语言,因为我们知道Guido曾经是一个计算机语言教育者。将严格的缩进作为语法的一部分无非就是为了让编程初学者养成良好的编程习惯。不仅如此,诸如Python的命名空间,对象模型,for语句等等无不体现了Python的设计初衷:将概念尽量简化,使学习者更容易掌握。

所以说语言设计者的经验和目的决定了语言的特点(包括语言的范式:是结构化的还是OO的),而语言的特点决定了语言的思维方式:
Perl:用不同的方法解决问题
Python:用简单的方法解决问题

所以为什么Perl可以写出很多非常tricky的one-line code,而Python却不行?看看它们的设计理念就明白了。

从我个人角度看,虽然Python更多的被大家成为“纯OO”语言,但我觉得它更能称为多范式语言,结构化编程,面向对象编程,函数式编程,用Python都是可以的。撇开前面的不说,只谈FP:Lamda,list comprehension,map函数,filter函数等等,都是借鉴自FP的概念。正好本人最近正在看Haskell,发现Python的tuple和list的表现形式都是和Haskell一样的,另外还有一个重要的相同之处,就是严格的缩进。这些特点是Python借鉴Haskell还是后者借鉴前者,我没有深入调查,不敢妄下结论。但是从它们的“诞生”日期来看(都是89-90年左右),应该是有互相借鉴的。

顺便说一下,由于Lamda经常被程序员“滥用”,Python 3.0中可能会取消这个语言特性,参考PEP3000:
http://www.python.org/dev/peps/pep-3000/

我回这篇帖子的目的是为了帮助初学者选择合适你的语言,我要特别强调“合适”二字,在我眼中,没有好与不好,只有合适与不合适。如果你是个Unix sysadmin,非常熟悉shell,sed,awk等等传统Unix工具,诸如“$%^&*{}”等等“古怪”符号对你而言都是小菜,而且骨子里是个“懒惰”,“愤怒”的Unix黑客,或许Perl比较适合你。
如果你信奉“简单就是美”;或者是个OO偏执狂;或者“$%^&*{}”之类的符号对你而言与火星文无异;抑或你受Bob大叔(“敏捷方法论”的大师之一)的毒害颇深,就像我一样;再或者你不希望你的下一代步你多年前学习的面条式Basic的后尘,OK,学习Python吧。


原帖由 flw 于 2007-1-20 15:00 发表
Python 的缩进我觉得是可以接受的,因为即使是语言不严格要求缩进,好的编程风格也几乎是严格要求缩进的,
因此 Python 这么做我觉得很好,但是唯一带来的一点缺陷就是:不能写单行程序。
虽然有些 Python 爱好 ...

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-22 13:26 |显示全部楼层
楼上转贴时注明出处还是比较好一些。
当然了,不排除此文最初就是你写的可能性。

论坛徽章:
0
发表于 2007-01-22 13:28 |显示全部楼层
xh,是我啊,lkb
原帖由 flw 于 2007-1-22 13:26 发表
楼上转贴时注明出处还是比较好一些。
当然了,不排除此文最初就是你写的可能性。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-22 13:30 |显示全部楼层
原帖由 livefreeordie 于 2007-1-22 13:28 发表
xh,是我啊,lkb

知道是你。
一开始就看到猪的大脑思考了。

论坛徽章:
0
发表于 2007-01-22 13:31 |显示全部楼层
hoho,N年不上BBS了

原帖由 flw 于 2007-1-22 13:30 发表

知道是你。
一开始就看到猪的大脑思考了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-22 13:33 |显示全部楼层
原帖由 livefreeordie 于 2007-1-22 13:31 发表
hoho,N年不上BBS了


大侠此次来到中原,是不是想露几手给大家看?

论坛徽章:
0
发表于 2007-01-22 13:36 |显示全部楼层
哪敢啊,给你捧捧场,顺便练练打字


BTW:你翻译的YAHT怎么没有下文了,反对太监贴

原帖由 flw 于 2007-1-22 13:33 发表

大侠此次来到中原,是不是想露几手给大家看?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-22 13:44 |显示全部楼层
回你的那句:
> 或者“$%^&*{}”之类的符号对你而言与火星文无异;

背景:水木 Python 版有个人问:
  1. 发信人: ckidawei ( CK ), 信区: Python
  2. 标  题: 【求助】再问一个比较变态的问题
  3. 发信站: 水木社区 (Fri Dec  8 17:38:13 2006), 转信

  4. 如果一个文件中有很多“OK”字样,

  5. 如何以“OK”为下刀之处,

  6. 把这个文件切分成很多个小文件?


  7. 谢谢。

  8. --
复制代码

于是有个 Perl 爱好者给提供了一段代码:
  1. 发信人: superisaac (自己作的抓饭真好吃), 信区: Python
  2. 标  题: Re: 【求助】再问一个比较变态的问题
  3. 发信站: 水木社区 (Sat Dec  9 19:41:32 2006), 转信

  4. $/ = 'OK';
  5. while (<>){
  6.     chomp;
  7.     # 写到小文件里
  8. }
复制代码

虽然我对该同志无视少数民族语言习惯的行为多多少少有点鄙视,
但是当我看到下面这个回复时:
  1. 发信人: scaner (ec8030f7-c20a-464f-9b0e-13a3a9e97384), 信区: Python
  2. 标  题: Re: 【求助】再问一个比较变态的问题
  3. 发信站: 水木社区 (Sat Dec  9 19:54:48 2006), 转信

  4. perl这种方法最讨厌了,
  5. 虽然写得时候看起来挺爽的.
复制代码

还是忍不住回了一段:
  1. 发信人: flw (flw), 信区: Python
  2. 标  题: Re: 【求助】再问一个比较变态的问题
  3. 发信站: 水木社区 (Sat Jan 20 16:56:15 2007), 转信

  4. 我对自己的评价是:不排斥,不盲从。我们要学会兼收并蓄,要学会包容:

  5. use English;
  6. $INPUT_RECORD_SEPARATOR = 'OK'; # or $RS = 'OK';

  7. 或者:

  8. open my $handle, '</path/to/foo.bar';
  9. $handle->input_record_separator( 'OK' );
  10. while( readline( $handle ) ){
  11.    写入小文件
  12. }
  13. close($handle);

  14. 【 在 scaner (ec8030f7-c20a-464f-9b0e-13a3a9e97384) 的大作中提到: 】
  15. : perl这种方法最讨厌了,
  16. : 虽然写得时候看起来挺爽的.


  17. --
  18. 毫无疑问
  19. 我编的程序
  20. 是全天下
  21. 最鲁棒的!
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP