Python,路还很长
用了用Python,感觉Python的路还很长。
当然,如果说:Python的路已经走到头了,那还是长点好。
我的感觉是,Python固然有很多优点,但是距离成为一门其他语言无法替代的语言,还有不少事情要做。什么是无法替代?应该是说拥有一块领域,在这块领域上其他语言很难与之争锋。比如C/C++在系统编程方面、Java在跨平台上面,这样一来凡是在这个领域做的人都会去用这门语言,这门语言也越来越适合这个领域,马太效应就可以保持这门语言在一个特定的领域长盛不衰,也保持了语言的生命力和活力。
Python之所以现在如此流行,就是因为它特别好用。C++支持多态,可以用继承、模板两种方法实现,还能进行模板元编程、可以操作符重载……可以这可以那……那如果问一句,Python怎么用模板实现多态?Python能用模板吗?
Python的多态当然可以用继承实现,但是模板呢?Python根本就没有模板——因为Python没有C++强大?不是的,因为Python根本不需要模板就能做到C++要做的。而且Python就提供了很多方便的库为我们做很多事情,C++也有类似的库,但是就是要你去找,麻烦。
这是Python的两个优点,第一语言上方便好用;第二提供了贴心的库给用户用,也许不强大,也许别的语言也有更多更强大的库。第一个优点保证用户在写程序的时候觉得顺手,没有什么编程基础的人也能很麻利的写出合用的程序,注意,这里,我说的是“用户”,不是“程序员”。第二个优点就完全是针对用户,不是针对程序员了,Python的哪一个功能是C/C++没有的?Python的哪一个功能是C/C++实现不了的?要回答这两个问题,可以先回答一下这个问题:Python是用哪个语言实现的?就是用C/C++。那么再问一下,当你需要把一个字符串按照空格切分的时候,你会选择Python还是C/C++?凡是用过Python的,都会选择Python吧。是因为C/C++实现不了这个功能吗?还是因为C/C++没有库函数支持?都不是,C/C++实现Python的split函数完全可以也不复杂,而且我相信早就有现成的函数了。为什么大家还会用Python呢?因为Python的就在手边上,什么也不需要你做就能用,C/C++却需要放狗去网上摆渡一下找出来,然后下载代码、阅读使用说明、编译,才可以用——时间上可能就差个五分钟,对于程序员来说不算什么,但是用户可不愿意费那五分钟的劲——有那五分钟,干嘛不去看看花边新闻呢?
说到这里,Python的地盘应该是:针对普通大众日常编程需要的一种语言。它面对的是编程基础很差的普通大众,它要能让人很容易的学会,然后很容易的写出满足用户希望功能的程序。所以Python的语法很好学很好用,提供的库很贴心——用户想什么它就提供什么,不像C++那样要考虑兼容性考虑性能考虑各个厂商,它只考虑用户的需要。
那么,Python是不是就已经在这个地盘上至高无上,旁观左右而无他?应该不是,类似的语言有BASIC、VBScript、JScript,可能Perl和awk也算,但是我对它们了解不多。对于这些语言来说,Python能做到的他们完全也可以做到,不存在任何质的区别。即使是C++,如果把合适的库打包起来发布,那么Python写的多短的程序C++甚至可以写的更短,但是C++永远无法做到像Python那么容易上手,这是被语法所限制的。对于BASIC、VBScrip和JScript这样的就不是那么回事儿了,它们本来就是解释型语言,语法上也很好学,和Python相比只在伯仲之间。再加上合适的库的支持,那么Python能否从它们的夹击中胜出更是难以预料。
目前Python针对其他的解释型语言已经占有优势,但是这个优势不过是量的优势而不是质的优势。好比当年Delphi/Object Pascal针对VC的优势一样,尽管有优势,但是Delphi/Object Pascal能做到的没有VC做不到的,只是VC做的还不好。等到VC做的够好时候,哪里还有Delphi/Object Pascal的影子?如果其他的语言能够赶上,Python的地位只怕岌岌可危。
那么怎么能一统江山?让其他语言也无法赶上呢?什么才是Python能做到别的做不到的?
今天晚了,明天再续~
[原文在百度空间已经关闭]
标签集合/Tag clouds
C++
Symbain
轻松汇编
算法
论文学习
资治通鉴
Delphi
编程之美
Poco
MFC
Linux
IFC
知乎
汇编
数据分析
交叉编译
poco
j2me
android
XML
Java
DTD
飞信
零宽断言
诺基亚
联系人
编程
真值表
池西木
正则表达式
多线程
命令行
优化
stream
configure
cmake
VIM
UiAutomator
TDD
Symbian
Sqlite
SourceInsight
Python
MPAndroidChart
Kotlin
Flutter
Dokka
Chatgpt