python不适合大型项目_在大型项目上,Python 是个烂语言吗? |

【洪强宁的回答(89票)】:

太多硬伤和臆想,懒得批。只说“代码超过 10w 以后你就别想用 python 开发了”这一句,2012年4月豆瓣主站项目代码行数就近50万行了,可我们还在用 python 开发。

【刘鑫的回答(42票)】:

我写过几年Python,也写过几年CPP,写过几年CS,Python做大项目没什么问题,不会比其它主流语言更差,项目的可控规模多大,主要还是取决于人,不是语言——语言当然有差别,但是没有宣传的那么大。至于开发工具的问题,高水平的开发人员根本不会依赖开发工具。而且,Python本身不是那种非常依赖代码补全等功能的技术,我习惯的组合是emacs+ipython+python-mode,用doctesting做TDD,效率很高。最近一段用sublime text比较多,也没觉得离开习惯的环境就做不下去。

至于错误在运行时,这就看自动化测试的水平了。Python项目出现的bug不会比CPP或Java更高。

如果用不好,什么都是烂语言。这是个相当廉价的态度。

==========

看了一下链接里的文章,觉得挺可乐,那位老兄根本不知道Python比Java还要早一年发布吧……(准确的说,1994年是python发布了1.0版,而第一次publish代码是在1991年的0.9.0版)

【猛禽的回答(3票)】:

虽然在TL组的另一个帖里回复过这位microcai,既然在这里看到就再说一下吧。

在那个帖里,他说道:

但是说实话,他这段恰恰就是“缺乏根据在那里胡扯”,而且是从开始提到python就扯——比如解释器比编译器(他还给说成了汇编)简单,除了C++那种变态级别的编译器,python的解释器不比其它编译器简单多少。另外,python也需要编译为pyc,除非说.net/java也是解释语言,何况就算是编译成目标代码,也有cython这种间接方式,或是pypy这种动态方式。

当然我不会真的逐条反驳这么浪费时间的,上面这条就足够说明他的问题了。

回到楼主的问题上:python是否不适合大型项目?

成功的例子参见 @洪强宁 等人的答案。

事实上项目管理的根本问题是对人的管理。java之所以适合做大项目,很大原因在于比较容易找到一帮水平差不多的人,并且管理起来也比较容易。python的优点是易学,虽然找一大帮人不容易,但培养起来比较快,规划得当问题也不太大。但是C++就不同了,找一帮会C++的人不难,但是水平参差不齐,如顶楼匿名人士所说“你修不盈新手挖的坑,扶不正老人搭的庙”,就算是找到一帮C++高手,还各有各的习惯和爱好。至少python还有pythonic这条阳关道。

【梁涛的回答(7票)】:

根据这些年用过的编程语言,我总结出一条判断语言是否值得学习、使用的指导原则:

易用、灵活、高效,一门编程语言最多只能同时拥有两项。

易用 包括:

1. 简洁,易读、易理解、易写;

2. 一致性好,易协作,易接手维护;

3. 基本构造紧凑;

4. 尽可能自包含,拥有丰富的类库和软件包支持;

5. 可移植,对执行环境的假定越少越好;

6. 从编写到执行,整个过程涉及的工具越少越好,程序易部署;

7. 手册可随手取用。

灵活 包括:

1. 伸缩性好,删除依赖性与加入依赖性一样简单;

2. 允许在不同层次上抽象(含DSL);

3. 支持多种编程范式;

4. 尽可能适用于更多的领域;

5. 可定制语言子集(方言);

6. 可编译执行,也可解释执行。

高效 包括:

1. 编写快,越快越好(考虑工具支持与纯手写);

2. 编译快,越快越好;

3. 除错快,越快越好;

4. 执行快,越快越好。

还有一些特性没有罗列出来。

仔细考虑一下,上述各特性不乏相互对立的,如何取得平衡,完全视应用环境而定。

这些特性考量将与设计哲学相互影响,最终决定一门编程语言的编写风格与使用方式。

但终究,一门编程语言被设计出来的主要目的,是在成本最小化的基础上,尽可能好地解决某些问题。

另外,不从架构角度考虑开发与运维、用户操作的关系,做出来的东西必然到外都是坑,且很难持续。

不要随便看不起一门编程语言,它被发明出来必然有其用处。

在恰当的时机用适当的语言解决正确的问题比什么都重要。

【徐辰的回答(17票)】:

NASA用FORTRAN把人送上了月球;K&R用汇编和B语言写出了UNIX……

有争论哪种语言好的功夫还不如去改改程序里的Bug,优化下执行效率,要不就美化下代码多写两行注释,省得总有人说你正在用的语言是个烂语言……

【李遥的回答(1票)】:

我用Python做过商业项目,在同时支持python2和python3以及各种小版本号的时候觉得被坑了。不是完全没有walkaround,但是回顾时觉得选择Python很不明智

【王亞暉的回答(5票)】:

没有烂语言,只有烂人写的语言罢了。

【池静若的回答(5票)】:

写大项目主要是逻辑的管理,和人的管理能力,与语言没关,有些语言强制加了管理能力,就省了很多管理的规划。举个浅显的例子。

汇编语言是最没管理能力的,甚至变量就是内存和寄存器

C语言有点管理能力,至少分了全局,局部,函数,函数体内变量隔离

汇编就不说了,C语言对于没经验的几个人来说很难写大型程序,

但是简单的规划一下就可以写了

例如,每个变量都前缀个人的名字,int tom_var; char jerry_var;float xx_var;

然后如果需要共用的,就写 int public_var;

函数同样处理,这是个非常好的技巧。。。。。。。

但是这种技巧一直被别有用心的公司讽刺

于是出现了C++;c++ 其实把名字换成了命名空间,然后把一些函数加了class头,然后引入了面向对象的东西。但是class里面加了太多的歧义和难于理解。

于是又出现了,java ,强制用包,类

java算是编译语言走到的极点,算软件工程的产物,加了太多管理和约束的东西

导致写代码又罗嗦,又麻烦。适合大工程,但是效率很低(开发效率)

python出现了,更接近人的语言,高度的逻辑化,用python 基本上比java的逻辑减少了3倍。

大项目本质上是大逻辑的管理,python从理论上说能写比java大3倍的项目

一个语言只要具备了,函数,类,模块,包就是一个具有良好管理能力的语言。

如果你觉得什么语言写不了大程序,仔细思考一下你的逻辑管理能力

或许 c是个好的锻炼方式,如果没有类,每个文件变量会冲突,你该如何解决呢!

分割线----------------------------------------分割线

吐槽。。。。加班中。。。写代码。。。。。随便看到,忍不住吐槽。。。。。,继续写。。。

【Pyclass的回答(1票)】:

哪一种语言没有缺点呢?在适用的领域,用好Python,那Python就是最好的语言,在不适用的领域,即使写再好的程序,也无法完成任务。 烂的不是语言,而是不懂的人把它用烂了、、、

【长风的回答(0票)】:

可以看看OpenStack有多少行代码,或者Django多少行代码

【陈思源的回答(0票)】:

语言只是个工具,python作为动态语言,有快速开发的优势,遇到大项目时,架构是项目成败的关键,至于bug量,完全的团队的水平相关,与语言无关

【alexzhan的回答(0票)】:

Dropbox算不算大型项目?但是基本上所有的客户端都是Python写的。

有很多网站也是用Python开发的,比如豆瓣还有豆瓣的很多客户端都是用纯Python,Quora也是用的Python,不过最近可能转到Scala上了。

【夜末的回答(0票)】:

因人而异

【杨浪的回答(0票)】:

用python的好处就是这位兄弟还在跟你讲python怎么不好的时候 你的1k行的代码都快写完了..

语言之争从来都是毫无意义,好的设计架构才是最重要的

【冯子浩的回答(0票)】:

为什么python没有好的ide……因为不大需要……

为什么python没有强大的debugger……因为不大容易写出有明显bug的程序……

纵使Java死搞类型,该出bug的照样出……

【zhoutall的回答(7票)】:

我记得一句话,写出来的代码目的是给别人看的,顺便可以在机器上执行。

好的代码是可读性强的,好的语言便是为了方便写出可读性强的代码。

我觉得Python很不错

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

996页阿里Android面试真题解析火爆全网,分享面经!

导语 学历永远是横在我们进人大厂的一道门槛,好像无论怎么努力,总能被那些985,211 按在地上摩擦! 不仅要被“他们”看不起,在HR挑选简历,学历这块就直接被刷下去了,连证明自己的机会也没有,学…

access ole 对象 最大长度_Redis 数据结构和对象系统,有这 12 张图就够了!

作者 | 程序员历小冰责编 | 林瑟Redis 是一个开源的 key-value 存储系统,它使用六种底层数据结构构建了包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象的对象系统。 今天我们就通过 12 张图来全面了解一下它的数据结构和对象系统的实现原理。01数据结…

python烟花表白_python炫酷烟花表白源代码

详细内容天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花秀。python炫酷烟花表白源代码这个有趣的小项目并不复杂,只需一点可视化技巧&a…

【面试总结】2021Java春招面试经历

三、堆空间 基本描述 JVM启动时创建堆区,是内存管理的核心区,通常情况下也是最大的内存空间,是被所有线程共享的,几乎所有的对象实例都要在堆中分配内存,所以这里也是垃圾回收的重点空间。 堆栈关系 栈是JVM运行时的…

tableau地图城市数据_Tableau 地图 | 无法识别的城市

Tableau自带的地图功能很强大,也很简单只要双击具有地理位置角色的字段,即可生成地图不过有的时候在你部署地图的时候总会发现有些城市或地名无法识别,提示如下:这篇post就来简单聊聊为啥今天直说处理方法,不谈后台原理…

【高级Java架构师系统学习】最新Java高级面试题汇

性能调优 影响MySQLServer 性能的相关因素 商业需求对性能的影响系统架构及实现对性能的影响Query语句对系统性能的影响Schema设计对系统的性能影响硬件环境对系统性能的影响 MySQL 数据库锁定机制 MySQL锁定机制简介各种锁定机制分析合理利用锁机制优化MySQL MySQL数据库Qu…

vue 安装指定版本swiper_Vue中的runtime-only和runtime-compiler

在我们使用vue-cli的时候,会提示你安装的版本可以看到有两种版本:Routime Only和Runtime Compiler版本1.Runtime Only - 代码中不可以有任何template 性能更高在该版本下,通常需要借助如webpack的vue-loader发工具把.vue文件编译成js因为是在…

一文搞懂JVM架构:入职3个月的Java程序员面临转正

Java基础 1.JAVA 中的几种数据类型是什么,各自占用多少字节。 2.String 类能被继承吗,为什么。 3. 两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗? 4. String 属于基础的数据类型吗? 5.…

不显示调用super_让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第11篇

欢迎回到我们的iPhone开发教程系列,让我们继续前进吧。重新来过别害怕,哥不是让你抛弃之前所有的源代码,从零开始重新构建这个项目!这里说的是游戏界面里面的“Start over”按钮。在我们的to-do清单里面曾经提到过,这个…

一文搞懂JVM架构:跳槽面试大厂被拒

正文 在实际的工作项目中, 缓存成为高并发、高性能架构的关键组件 ,那么Redis为什么可以作为缓存使用呢?首先可以作为缓存的两个主要特征: 在分层系统中处于内存/CPU具有访问性能良好,缓存数据饱和,有良好…

全局变量_Python函数中的全局变量与局部变量

# a,b变量是全局变量,在整个py文件中都可以访问a 11b 12# 定义一个函数def first():# 这个变量是函数内部定义的变量,属于局部变量,只能在函数中使用c "Hello"# 大括号{} 是format()函数的用法,格式化print("c {}".format(c))# 如果局部变量定义的名称…

一文详解:字节面试官必问的Mysql锁机制

一面 1 自我介绍和项目 2 Java的内存分区 3 Java对象的回收方式,回收算法。 4 CMS和G1了解么,CMS解决什么问题,说一下回收的过程。 5 CMS回收停顿了几次,为什么要停顿两次。 6 Java栈什么时候会发生内存溢出,Jav…

install npm 到某个文件下执行_你可能不知道的 npm 依赖管理那些事

点击上方蓝字关注我们npm 是 Node.js 默认的、以 JavaScript 编写的包管理工具,如今,它已经成为世界上最大的包管理工具,是每个前端开发者必备的工具。不知你是否遇到过下面问题:哎?我本地明明是好的,线上的…

万字总结!腾讯、字节跳动面经已发

二、常见的并发问题 1、脏读 一个事务读取了另一个事务未提交的数据 2、不可重复读 一个事务对同一数据的读取结果前后不一致。两次读取中间被其他事务修改了 3、幻读 幻读是指事务读取某个范围的数据时,因为其他事务的操作导致前后两次读取的结果不一致。幻读…

ncbi查找目的基因序列_NCBI大搜索之目的基因寻踪

NCBI大搜索之目的基因寻踪最近经常碰到查找目的基因的问题,那今天就讲一下如何利用NCBI数据库查找目的基因!NCBI(National Center For Biotechnology Information),美国国家生物技术信息中心,分子生物学,生物化学及遗传学领域常用…

万字长文!2020-2021京东Java面试真题解析

我整理的spring学习笔记: 像spring这种知识点我们不能盲目的学习,首先我们得有一套学习路线,我总结了一套spring的学习思维导图,今天通过我整理的Spring学习路线.xmind给大家分析spring需要掌握的一些核心知识点。 spring的特点&…

echarts label固定位置_ECharts+百度地图网络拓扑应用

前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图、ECharts和HT for Web三者结合起来也做一个类似空气质量报告的报表拓扑图应用,于是有了下面的Demo&#xff1a…

三年Java开发,你连基础的JVM运行时内存布局都忘了

面:为什么要使用双亲委派机制去加载类? 答:避免多份同样字节码的加载,浪费内存。 类的加载方式 隐式加载:new显示加载:loadClass、forName等 类的装载过程如下图: 面:loadClass和…

vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...

如果想将文字转成语音,那大家平时都是怎么操作?下面小编就为大家介绍手机,电脑上都可以使用的方法,让我们一起来看看吧!一、手机端操作1、苹果手机其实苹果手机就自带了文字转语音功能,只要打开手机&#x…

三面美团Java岗,面试竟然被这31道Java基础题难倒了

01 分布式限流:NginxZooKeeper 1.1 分布式限流之Nginx 请解释一下什么是 Nginx? 请列举 x Nginx 的一些特性。 请列举 x Nginx 和 和 Apache 之间的不同点 请解释 x Nginx 如何处理 P HTTP 请求。 在 x Nginx 中,如何使用未定义的服务器名称来阻止…