很多人讲python因为性能问题不适合web开发,其实把问题归结到性能上,也只能说明学习的不够深入。
许多后端业务都是用Python编写的,每个基本微服务至少有数万行代码。每一个项目并没有增加到几百万行或至少几十万行。现在基本上,Java、GO、Python都有。
有些同事讨厌动态的语言,觉得很累。先前的学术研究专门计算了github上不同语言项的错误率,并得出结论,静态语言确实不容易出错,并且更易于维护。动态语言需要良好的工程实践来控制,但灵活性和表达能力更强。如果它真的是一个非常大的单一项目,静态语言确实是更好的选择,支持统计。
脚本语言只是在互联网时代才逐渐流行,而互联网公司很少使用单一的体系结构,大量的服务代码用于项目的维护、开发、部署,网上都是灾难,很多是微服务体系结构。许多语言都能胜任微服务体系结构,几乎所有语言都有成功的业务项目,甚至许多动态语言都具有快速原型化的优势,即使它们在未来遇到瓶颈重构服务也不太困难。
下面是一些众所周知的Python项目代码统计,目前最大的Python项目应该是开放堆栈,达到了一百万行,但大多数大型项目高达几十万行。如果是一个商业项目,目前不可能有一百万行。目前,国内很多Python公司或中小企业,可能只有大型服务、大型网站,不太可能出现超大型的单个项目。如果项目团队不被排除在编写Python之外,Python可以在许多项目中使用。Python在爬虫、网站、数据分析等领域有成熟的解决方案。一开始就不需要太纠结于技术选择。也许工程控制,代码质量更重要。
还有一些未列出的特性。仔细想想,以上特点并不缺乏相互对立,如何实现平衡,完全取决于应用环境。这些特征将与设计哲学相互作用,并最终决定编程语言的写作风格和使用。
此外,没有从体系结构的角度考虑开发和操作、维护和用户操作之间的关系,生成的内容必然会被删减,并且难以维持。不要轻视编程语言随便。它必须是有用的,如果它被发明了。正确的语言在正确的时间内解决正确的问题更为重要。
写Python几年,写CPP几年,写CS几年,Python做一个大项目是没有问题的,不比其他主流语言差,项目的可控大小,主要取决于人,当然不是语言——语言,有区别,但不是大量宣传。至于开发工具,高级开发人员根本不依赖开发工具。Python本身并不是一种依赖代码完成和其他功能的技术。习惯的组合是Emacs IPython Python模式,它使用DOCTREST作为TDD并且是高效的。最近,很多崇高的文本被使用,没有任何感觉,我不能离开习惯的环境。
至于运行时的错误,这取决于自动化测试的级别。Python项目的bug将不会高于CPP或Java的bug。
Python超过1K行是灾难?这些语法正确性完全取决于由提示提示写入的1K行代码。最好的软件工程工具是语言无关的:单元测试,按合同设计。除了非常少的特殊语言(Eiffel,AspectJ),它基本上是由图书馆和程序员手工完成的。
公司可以招聘像谷歌这样的人,他们可以使用任何语言。如果没有,尽早放弃
C ,修复新来的坑,并帮助古庙。
至于性能问题…没有谷歌的规模,性能问题就不需要从全球角度来解决。找到一个热点并用适当的工具替换它。这是一个可行的项目。此外,Python是一种易于用C语言扩展的语言。
Perl,Python,Go,甚至Java。这些语言的问题在于它们从未被取代。它们都解决非常特定的问题,所以当新语言在当前语言框架之外解决新的特定问题时,旧语言会失去许多用户。GO的协同程序,Python的语法简单明了,Perl的字符串处理效率和准备运行,Java的库和GC,从左到右就是回溯波和前向波之间的关系。用正确的工具解决正确的问题是每个程序员和架构师都应该做的。
目前,由于语言速度缓慢,似乎没有出现很多软件问题,除了超级大的互联网公司需要静态语言来节省电力之外。此外,缓慢的程序可能不会在未来缓慢。但是程序员的速度很难提高。没有子弹。
无论考试多么严格,它都不能阻止程序员写垃圾。C检验弱于
C ,但高于TIOBE。里奇相信程序员可以做自己的事情,所以他不会做出太多的假设。
C 似乎严格遵循许多编程范例,但是它太复杂了。直到现在,
C 编译器还不能显式地解决其最复杂的内存泄漏问题。这张支票是否等于。
没有静态编译扩展到大型项目中。请看PHP。请看ROR。更不用说,PaulGraham曾经与Lisp公司合作生产过世界一流的大型软件。这是一个比其他任何东西都好的好例子。动态语言似乎抛弃了静态类型检查,但获得了灵活的类型机制,有利有弊,这似乎是一个好趋势。使用动态语言,回头看一些静态类型的语言,看到更多流血的眼睛,书写更多的流血的手。
我不知道真正的语言开发工具是什么。事实上,除了PHP,现在主要的脚本语言开发工具只有六种,Python仍然是增长最快的。认为良好的语言不应依赖于技术体系,麻省理工学院仍然使用LISP和Emacs作为朝圣。Emacs是一种很好的故障排除方法吗?Emacs部署非常方便吗?Emacs对性能基准测试非常方便吗?这会影响LISP的语言吗?
每种语言的设计都有它的折衷。事实上,它是设计师的视觉。事实上,我很难理解像我这样的低能手。但是如果它给学生第一印象,那就是一门很棒的语言。
好奇公司的250万行代码大部分是用Python生成C的方式编写的。我想知道这是否是一个有10多万行的项目?
麻省理工学院的第一门计算机课程已经教了两件事:计算机程序是写给人们看的,只是运行。软件设计实际上是对抽象复杂性的控制。这两个概念完全独立于性能、静态检查和开发工具。这门课是按计划教了很多年的,在前两年突然变成了Python。