V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
luztak
V2EX  ›  Python

Python是个烂语言

  •  
  •   luztak ·
    luztak · 2013-02-27 12:34:58 +08:00 via Android · 20590 次点击
    这是一个创建于 4319 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2013-02-27 16:11:16 +08:00
    这个站还用了ORCA 囧
    78 条回复    1970-01-01 08:00:00 +08:00
    simomo2010
        1
    simomo2010  
       2013-02-27 13:27:39 +08:00
    “python写超过1000行代码就虐心”:
    - 这个结论不知道怎么得出来的,或许是1000行代码都在一个函数里,然后里面有七八十来层‘if’分支,‘for’循环。不过话说回来 任何语言这么写都虐心

    关于缺乏在编译阶段的bug检测的缺失:
    - 去年pycon us大会上 龟叔做的keynote speech 里也针对这点说了,靠编译器帮你检查bug这本身就是错误的,作为coder需要做的是编写合适的测试代码,提高测试的覆盖度,将bug发现在源头,而不是写完之后,就扔给编译器,让他给你差错

    运行效率:
    - 这个就是老生常谈了,效率敏感的地方用c写,或者用cython也不错,pypy某些时候也是一种选择,还不能满足?好吧 那确实这个项目不适合python,但世上有多少项目是这样的呢?python并不能解决所有问题,只是能快速,优雅,方便的解决绝大部分问题而已

    ”python是python之父的玩具“:
    - 我想这句话本身就是错的,python在最开始的时候 或许就是龟叔的一个玩具,但是在其后20多年的发展中,已经变成了一个凝聚了整个python社区心血的伟大的开源项目,虽然不清楚这位’Dr.菜‘是何许人也,但是我想不论是谁,都没资格用’玩具‘来评价它
    tioover
        2
    tioover  
       2013-02-27 13:32:35 +08:00 via Android   ❤️ 1
    该网站的安全证书不受信任!
    saharabear
        3
    saharabear  
       2013-02-27 13:36:14 +08:00
    这网站自称技术第一的开源社区?
    clino
        4
    clino  
       2013-02-27 13:41:50 +08:00
    不用对这种言论当真.
    云风是QQ黑,C++黑,windows黑(软件开发方面),这几个我都蛮同意的.
    saharabear
        5
    saharabear  
       2013-02-27 13:46:24 +08:00   ❤️ 1
    @clino 笑喷了,你不提我还真没注意(我读完了他们的帖子,你不提我真没注意到云风了躺枪),他们说云风是SB,就因为C++....笑喷了..

    我觉得技术人员心直口快也足够让咱们这种技术圈子增加各种笑料了.

    我不是C++黑,可是我几年都学不会C++.
    phuslu
        6
    phuslu  
       2013-02-27 13:50:13 +08:00   ❤️ 1
    很有说书人的范,我赞同部分观点,不过举例的部分"戏说"了。

    目测此帖会火。
    goxofy
        7
    goxofy  
       2013-02-27 14:08:44 +08:00
    哈哈
    armin
        8
    armin  
       2013-02-27 14:32:48 +08:00
    https://avlog.avplayer.org/ 这是啥网站?!
    august
        9
    august  
       2013-02-27 14:34:45 +08:00
    樓主是不是有個姑娘跟你打賭了?
    keakon
        10
    keakon  
       2013-02-27 15:00:44 +08:00
    主观的东西就不说了,Python 历史比 Java 悠久啊…
    chaos186
        11
    chaos186  
       2013-02-27 15:15:30 +08:00
    看完第一反应是:这是说相声吧
    kran
        12
    kran  
       2013-02-27 15:26:27 +08:00
    看完这个 才知道自己已经不是最最底层的码农了 哇哈哈
    justfindu
        13
    justfindu  
       2013-02-27 15:46:53 +08:00
    你们都不关注域名很奇怪么~
    isy
        14
    isy  
       2013-02-27 15:48:57 +08:00
    Asimov
        15
    Asimov  
       2013-02-27 15:53:31 +08:00
    Python的确挺慢的,不过语法优美简洁,库比较齐全。挺好。
    raincious
        16
    raincious  
       2013-02-27 16:04:36 +08:00
    嗯……这个看个人喜好吧。我刚开始学Python的时候也不太喜欢它,现在我刚开始学Python。
    wenbinwu
        17
    wenbinwu  
       2013-02-27 16:05:18 +08:00
    firefox告诉我证书有问题,我就没进去看
    RisingV
        18
    RisingV  
       2013-02-27 16:24:30 +08:00
    解释形语言需要运行时排除语法错误,这点确实是硬伤
    subpo
        19
    subpo  
       2013-02-27 16:27:47 +08:00
    这是啥网站,看起来很有意思
    RisingV
        20
    RisingV  
       2013-02-27 16:28:06 +08:00
    it seems that go does the right thing and does it right...
    ccming
        21
    ccming  
       2013-02-27 16:35:39 +08:00   ❤️ 1
    这个世界早晚是 Ruby 的
    clino
        22
    clino  
       2013-02-27 16:40:04 +08:00
    @RisingV python的语法错误完全可以在编写的时候检查
    应该说是动态语言和静态语言在静态类型检查上的不同,这个跟是否解释型语言没关系,只是因为解释型语言大多是动态语言
    而动态类型可不一定是短处,本身是会带来很多好处的
    lookhi
        23
    lookhi  
       2013-02-27 16:46:50 +08:00
    我觉得吧python不错。至少我们的网站就是用python做出来的,能达成需求就好。
    Mac
        24
    Mac  
       2013-02-27 16:59:18 +08:00
    这货用xampp搭的肉鸡网站吧?
    daweiba
        25
    daweiba  
       2013-02-27 17:13:03 +08:00
    「听好儿子,要提出目标,但不可盲目追随它」
    「我明白了爸爸,就像Python那样提出『只采用唯一正确的方法』那样的目标,实际上却存在2、3版本的不兼容」
    「住口!」
    「urllib和urllib2」
    「住口!!!」
    soulhacker
        26
    soulhacker  
       2013-02-27 17:32:35 +08:00
    C/C++ Java 这些静态编译型语言确实有的一大优势是高度优化的编译和静态代码检查,前面有朋友引用 Guido van Rossum 的话说「靠编译器找错误是不对的」,这说法不完全赞同,好的编译器和静态、动态代码检查确实能够极大的提升开发效率,尤其是比较大型的项目,测试驱动并不是万灵药,本身效率也不是那么的高。

    当然万事有得必有失,他们也缺乏现代动态语言的很多优势,这是要辩证去看的。
    clino
        27
    clino  
       2013-02-27 17:38:39 +08:00
    @daweiba 库的问题跟语言本身没关系,这种问题的形成跟python开源的发展方式有关系
    est
        28
    est  
       2013-02-27 17:44:30 +08:00
    python这个强类型语言被黑出翔了。。。。
    lecher
        29
    lecher  
       2013-02-27 17:53:54 +08:00
    Dr. cai 貌似就是蔡万钊,在很多社区都是实名注册的。比如chinaunix
    http://bbs.chinaunix.net/home.php?mod=space&uid=23924138&do=thread&type=reply&view=me&from=space

    目前Dr.cai 维护着几个C++的项目这是他的github:https://github.com/microcai/
    这是他的blog: http://microcai.org/

    神奇的是此人chinaunix的自我介绍是本科退学,学历又是博士
    tangzx
        30
    tangzx  
       2013-02-27 18:49:44 +08:00
    看了网站的第一感觉,被几行闪闪发光的红字亮瞎了眼
    reorx
        31
    reorx  
       2013-02-27 19:59:43 +08:00   ❤️ 1


    just a troll..
    RisingV
        32
    RisingV  
       2013-02-27 22:27:01 +08:00
    @clino 和动态静态没有关系,我说的是部分解释型语言的缺点,比如shell,函数声明都必须在前面。纯粹逐行解释,没有全文遍历的解释型语言都会有这个问题。但,但凡动态语言,基本都是解释型的,js、python之类的解释型语言通过词法分析和语法分析得到语法树后,就可以开始解释执行,语义上的错误必须在运行期才能发现。所以真正的错误运行了才知道。如果没有足够的测试用例覆盖所有的代码,其可靠性比静态语言真差远了。
    RisingV
        33
    RisingV  
       2013-02-27 22:31:33 +08:00
    大拿说的话,听了就当真理。也不搞清楚人家什么意思,显而易见的错误当然由编译器抵下了,业务逻辑上的bug,自然不能依赖编译器。
    RisingV
        34
    RisingV  
       2013-02-27 22:40:41 +08:00
    @ccming 用个golang mascot的头像,帮ruby说话,太没节操啦。。。。。
    dreampuf
        35
    dreampuf  
       2013-02-27 22:58:24 +08:00
    http://microcai.org/2012/12/25/whypythonbad.html

    并发,脚本解释类型带来的开发环境问题
    这两个问题虽然老生常谈,不过因时而异,可以继续讨论。

    编译检查,1000行,开发效率不行,执行效率也不行。。。其他主观(发行版强推,玩具,。。。)
    这些就可以当作放屁了

    总之给我的感觉是非科班出身,随便鼓捣玩玩,不求甚解,广度有余深度不足。浮躁。
    clino
        36
    clino  
       2013-02-27 23:06:18 +08:00
    @RisingV 动态语言不一定是解释型语言,python可以说是编译型语言而不是解释型的,因为基本上都是编译成字节码(文件上看是pyc或pyo)以后再执行的,是解释型还是编译型在这里不是重点

    "没有全文遍历的解释型语言都会有这个问题"python当然可以完整分析完所有的源文件,所有语法错误完全没问题.但关键是在动态,里面的很多东西在运行期才能知道的,很多java/c/c++在解析完文件以后能确定的东西对于动态语言是无法确定的.
    RisingV
        37
    RisingV  
       2013-02-27 23:20:47 +08:00
    @clino 你说的其实应该归为第三类分类,字节码是种中间状态,而非二进制。java有JIT,所以还是将其归为编译语言。
    zuroc
        38
    zuroc  
       2013-02-28 05:00:04 +08:00
    monkeylyf
        39
    monkeylyf  
       2013-02-28 06:25:28 +08:00
    唉 又一轮的online masturbaxxxx.
    cicku
        40
    cicku  
       2013-02-28 07:43:41 +08:00
    microcai 又被喷了。。啊哈哈哈、、

    我们邮件列表的。

    以前听说在新浪。
    lyric
        41
    lyric  
       2013-02-28 08:24:11 +08:00 via Android   ❤️ 1
    此人是中文开源社区的大喷子
    workaholic
        42
    workaholic  
       2013-02-28 09:01:20 +08:00
    有意思么,高手根本不在乎用什么语言
    BOYPT
        43
    BOYPT  
       2013-02-28 09:34:05 +08:00
    呵呵
    clino
        44
    clino  
       2013-02-28 09:41:01 +08:00
    @RisingV 你这是概念不清. 解释/编译和静态/动态类型这两个根本是两个独立的方面.

    照你说的有jit就是编译型语言了?那所有这些语言都可以用jit的,就是javascript也可以.
    rorvn
        45
    rorvn  
       2013-02-28 10:21:02 +08:00
    这货是中文linux圈的一朵奇葩,在#ubuntu-cn偶尔会遇到
    FrankHB
        46
    FrankHB  
       2013-02-28 10:30:31 +08:00
    编译/解释型是对语言实现而言的,对语言分类本来就是扯蛋的(因为通常使用的实现形式的)偷懒说法。
    想想Lisp是编译还是解释型的?C的实现就一定要有编译器?
    aisk
        47
    aisk  
       2013-02-28 10:35:25 +08:00
    @RisingV 非常不认同你的观点,jit和是否编译没有直接关联,上面说了js就是个例子。本来语言就没办法说是否编译/非编译,还得看具体实现了,Java还有GCJ这个AOT编译器呢,C还有很多人写解释器呢。
    就算从具体实现看,那编译到字节码然后解释执行算编译还是解释?全程jit执行又算什么?
    cicku
        48
    cicku  
       2013-02-28 10:44:33 +08:00
    @lyric 对。。。
    cicku
        49
    cicku  
       2013-02-28 10:46:05 +08:00
    @lyric 对。。。
    @rorvn fedora chinese 经常见。
    cicku
        50
    cicku  
       2013-02-28 10:48:07 +08:00
    matz
        51
    matz  
       2013-02-28 10:48:16 +08:00
    对于Python和Ruby来说,我都觉得差不多。。。
    RisingV
        52
    RisingV  
       2013-02-28 10:51:39 +08:00
    @clino
    @aisk
    理论上是不存在编译和解释的分类,两者皆可实现。但是我们还是会以其通常的执行方式作为区分。我一直认为java之类的就是第三类存在,字节码也有自己的指令集,相当于一种虚拟的汇编,而再vm解释成二进制。用字节码技术的语言,有编译型语言的执行效率,但同时又可以具备更多的动态特性。
    RisingV
        53
    RisingV  
       2013-02-28 10:54:29 +08:00
    @workaholic 我认为高手最在乎用什么语言,不同语言之间简直就是不同的宗教,为信仰而言。用热衷函数语言的和热衷OO的几乎是两个世界的人
    keakon
        54
    keakon  
       2013-02-28 10:59:28 +08:00
    RisingV
        55
    RisingV  
       2013-02-28 11:11:09 +08:00
    @keakon 文章见解倒蛮独到的,一直很反感GB系列的编码,没想到还有其自身优势。但是从非技术层面来说,unicode以及得到推广,用起来比较方便,为了省几个字节而用中国国标,老外肯定不答应。
    aisk
        56
    aisk  
       2013-02-28 11:22:07 +08:00
    @RisingV 那你怎么解释gcj呢?
    RisingV
        57
    RisingV  
       2013-02-28 11:36:34 +08:00
    @aisk gcj诞生于openjdk诞生之前,人们希望有一个开源的选择。如今用得不多了吧。我试用过,执行不一定比jre快,更多时候还要慢。

    刚才已经说了,语言规范是脱离于实现的,但是还是会按照主流使用方式和惯例,把XX语言说成编译型,把XX语言说成是解释型,这样比较有实际的参考价值。
    aisk
        58
    aisk  
       2013-02-28 11:39:59 +08:00
    @RisingV 那遇到没主流使用和习惯的语言怎么分类呢?比如lisp系的各种方言?Scheme常用的几个,Guile是字节码+jit,chicken是编译到c->再到机器码,这又怎么算呢?

    我还是觉得,脱离实现讨论语言是耍流氓。
    RisingV
        59
    RisingV  
       2013-02-28 12:00:21 +08:00
    @aisk 那你就认为我是耍流氓把。这些叫法确实都是convention或者tradition,而不是一个truth。LISP的情况在习惯中确实没有被划分到任何一种,那么这就是它的convention,遵循它就是了。
    est
        60
    est  
       2013-02-28 12:15:52 +08:00
    @RisingV 那是你还没碰到unicode的坑。unicode巨烂我同意。utf8mb4受害者路过。
    dreampuf
        61
    dreampuf  
       2013-02-28 12:35:13 +08:00
    @cicku 89年的小同志,闭嘴,干正经事儿,将来世界会是他们的。
    clino
        62
    clino  
       2013-02-28 13:34:58 +08:00
    @RisingV "理论上是不存在编译和解释的分类,两者皆可实现" 服了,是你一直在用解释型语言来说python的缺点,我指出你的理解错误,然后你又来个理论上不存在

    具体对于某个实现例如cpython,当然可以用这个分类来分了
    RisingV
        63
    RisingV  
       2013-02-28 13:55:02 +08:00
    @clino 这句话完全成立,主要也是和aisk同学说的。具体实现当然有分类,这是废话。但谈论语言(本身只是一套规范)的分类不一定有结果,因为不一定只有一种类型的实现,怎么叫只是因为惯例,就这么简单。仔细看一下前文,我只是说部分解释型语言(如果你一定要咬文嚼字的话,就是部分语言的解释型实现)的缺点。我对python不够了解(也没兴趣),通过DR.蔡 的这番论述,以为它也有这个缺点,这点你已经说清楚。我对python没有好恶,你也不必护主心切了
    clino
        64
    clino  
       2013-02-28 14:02:43 +08:00
    @RisingV 以我的了解其实现在的动态类型语言的实现基本上都采用编译型甚至用上jit了,纯粹解释型的应该是很少.对python的缺点我是很清楚的,我之前写的这些完全扯不上护主,不要因为我指出你的理解错误难堪而乱讲话.
    RisingV
        65
    RisingV  
       2013-02-28 14:08:00 +08:00
    @clino 这个所谓的“理解错误”是你一厢情愿的,我承认的是我以为python有shell那样的缺点,那是因为我对它确实不了解。至于你扯解释和动态语言的关系,真的都是你一厢情愿。不妨看一下聊天记录。
    dexter
        66
    dexter  
       2013-02-28 17:57:39 +08:00
    对!!!
    无限支持python是烂语言
    lol
    veggie
        67
    veggie  
       2013-02-28 18:17:53 +08:00
    @dexter 哈哈,用ruby的无压力
    workaholic
        68
    workaholic  
       2013-02-28 19:04:07 +08:00
    @RisingV 我并没有否认各个语言之间的差异,同样是用一个差的语言,高手也能编出nb的程序,就看你水平了,只有“半瓶醋”才讨论哪个语言好哪个不好
    RisingV
        69
    RisingV  
       2013-02-28 19:56:32 +08:00
    @workaholic
    最初接触编程的时候我的想法和你是一样的。好比武学的“无招胜有招”,听上去不错,好比世界大同的美好愿望,看上去美好,但实际却不现实。

    聪明人不会干费劲不讨好的事情,高手有能力去驾驭任何语言,但不代表他有必要去用一门拙劣的语言干NB的事情。事实是,那样不NB,反而显得很不明智。

    很多linux kernel党就都不怎么喜欢C++(我没有贬低C++的意思),就是个例子。

    你可以看看《黑客与画家》,看看保罗•格雷厄姆对编程语言的观点。
    workaholic
        70
    workaholic  
       2013-02-28 20:18:51 +08:00
    @RisingV 这和世界大同怎么能搞到一起去,高手就是高手,编程语言都是他们设计出来的。你回去好好看看,第14章标题下面写着“一种好的编程语言,是让黑客可以随心所欲使用的语言”,你是在帮我证明我的观点
    workaholic
        71
    workaholic  
       2013-02-28 20:26:25 +08:00
    RisingV
        72
    RisingV  
       2013-02-28 20:46:46 +08:00
    @workaholic 你真的理解我说什么了吗?你真的看那本书了吗?雷死我了。和你讨论这个就是我的错误
    workaholic
        73
    workaholic  
       2013-02-28 21:12:04 +08:00
    @RisingV ......没看过的话和你在这墨迹有意思么,希望你再看看
    myrual
        74
    myrual  
       2013-03-01 21:28:31 +08:00 via iPhone
    哇,有空吵架不如赶紧多删除几行无用代码节省宝贵的硬盘空间
    FrankHB
        75
    FrankHB  
       2013-03-03 15:36:11 +08:00
    @workaholic 似乎你在说Paul Graham是半瓶醋?
    asstar
        76
    asstar  
       2013-03-08 10:45:39 +08:00
    pypy不是也有jit么。还有ironpy和jython等实现,以编译论语言者其实没多大意思。而且现在大部分动态语言都是先编译成opcode的。
    动态语言本来带来的是开发效率,如果非要和c/c++比性能,那就没意思了。如果真有开发效率和性能都高过c/c++的动态语言,那还有c/c++存在的价值么?
    shiran
        77
    shiran  
       2013-03-09 09:42:25 +08:00
    这是什么网站啊?
    venglide
        78
    venglide  
       2013-03-10 18:01:29 +08:00
    挺欢乐,感觉说得还是有一定道理的,至少有自己的见解。现在最多的就是看到有这样的帖子,底下就会出现一群疯狗,王垠的最新文章就是个例子。可喜的是,v2ex上的人偏相对理性~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   993 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:46 · PVG 05:46 · LAX 13:46 · JFK 16:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.