帮你提升 Python 的 27 种编程语言 已翻译 100%

oschina 投递于 2015/10/12 18:13 (共 30 段, 翻译完成于 10-23)
阅读 10915
收藏 161
8
加载中

27 种语言

  • 过程型编程语言: C, Rust, Cython

  • 面向对象数据建模语言: Java, C#, Eiffel

  • C 的面向对象衍生语言: C++, D

  • 面向数组的数据处理: MATLAB/Octave, Julia

  • 统计数数据分析: R

  • 计算型管道建模: Haskell, Scala, Clojure, F#

  • 事件驱动编程: JavaScript, Go, Erlang, Elixir

  • 渐变类型: TypeScript

  • 动态元编程: Hy, Ruby

  • 实用问题解决: Lua, PHP, Perl

  • 计算型思维: Scratch, Logo

作为这个世界上最流行的编程语言之一的合作设计者,我经常遇到一种令人非常沮丧的行为( Python 社区和其它领域中都存在)就是社区中有影响力的人尝试去在其它开源社区中灌输对于”缺失“的恐惧感,并以此驱动别人对本社区做出贡献(我自己偶尔也会做出这样不当的行为,当别人掉进这个陷阱时我也更容易觉察出来)。

LeoXu
LeoXu
翻译于 2015/10/12 20:22
3

虽然借鉴其他编程语言社区的经验是一件好事,但用基于恐惧的方法来推动行动有很大问题,社区成员为了吸引代码贡献者的注意,容易把其他社区的成员视为竞争对手,而不是作为潜在的盟友共同迎接挑战,推动软件开发技术的进步。还会导致社区排斥那些喜欢其他编程语言的人,把他们当做敌人。

事实上,我们希望有更丰富的跨平台开源编程语言可供选择,编程语言是最重要的思维工具,可以把我们的想法转换成计算机能理解的明确的条款。如果人们发现了某种语言既适合他们的大脑又能直接解决问题,这就很好了,不必关心他们到底选的是那种语言。

l
lxw1
翻译于 2015/10/12 22:36
2

因此我要给 Python 社区提三个具体的要求和一个更广泛的建议,首先说这些要求:

1.当我们想要激励部落成员,提高社区吸引力时,我们不应该使用恐惧法,相反我们应该使用自豪法。当使用恐惧法激励时,比如说这样的话:“如果我们不解决问题 X,那么 Python 开发者将会减少,他们将会转而去使用语言 Y”,那么我们就在故意地向全世界自由贡献代码的人传递负能量。但如果我们使用自豪法,说出来的话将是这样的:“Python 中的问题 X 的确难以解决,看看语言 Y 的社区,他们用一个极好的方法解决了这个问题,我们也可以在 Python 中尝试这个解决方案,以同样优雅的方式解决 Python 中的问题”。积极地强调“以我们自己的努力为自豪”,有利于促进 Python 社区中不断学习的文化,还会不断促进与其他社区关系的发展。

2.克制对其他编程语言社区蔑视的态度,特别是对那些有大牛存在,能自己解决遇到的问题,不必等待商业软件供应商屈尊解决问题的社区。世界上的大多数重要的问题都不是利益驱动的问题(那些人想要解决问题,不是为了谋取财富,也没有机构出钱资助他们),所以我们应该鼓励和赞扬那些加紧尝试解决问题的人。不必管他们使用的是什么技术。

3.如果我们认识的人刚开始学习编程,即使他们所选的编程语言是我们自己所不喜欢的。我们也要支持他们,因为他们比我们清楚什么更适合他们的大脑。所以对我们合适的语言不一定适合他们。如果他们开始对当初的选择感到沮丧,以至于完全打消了他们学习编程的积极性,这时给他们推荐编程语言才更有意义。这个建议甚至也对我们当中做过改进网络安全方面工作的人有用,对于原本不安全的语言,我们的解决方式是,通过改善操作系统中的沙盒功能,渐进地破除这个语言选择障碍,用原生系统的安全属性,改善了编程语言默认行为,不应该从应用安全的角度评价编程语言的好坏,迷惑初学者。(如果有人请编程新手写了一个未经审计的软件,却部署为处理安全敏感的问题,这不是程序员的问题,而应该怪那个部署的人没有尽职调查软件的来源和安全属性。)

l
lxw1
翻译于 2015/10/14 00:47
1

我更多的建议是针对人开始遭遇 Python 的核心程序集的境界,也因此开始探索更多的 Python 自身的“思维工具”。

我们做 Python 核心开发过程的一部分事情是由于领会的特点具有在其他语言我们具有优势,是否能够用一种合适的方式让 Python 代码容易读写。这意味着学习别的程序语言能够明确特定的风格,并且在 Python 中编程提高人对软件开发的认识。

Ryan-瑞恩
Ryan-瑞恩
翻译于 2015/10/13 09:34
2

为了有助于这样的努力, 我已经列出了下面可供探索的领域,还有一些对这些领域可能提供额外见解的语言。我尽可能的链接到 Wikipedia 页面而不是直接转向相关的首页,因为维基百科经常会给出一些有趣的历史背景,当选择一门新的编程言作为一项学术型的练习而不是被立即用来实践性使用的时候,这些背景值得去探索。

然而就我个人而言, 我熟悉许多的编程语言(并且已经使用了其中的一些进行开发生产系统) 。所有的推荐包括我间接了解的语言(或通过阅读一些材料和设计文档,又或者是从和我信任的朋友之间的交流中得知一门语言的优势和劣势)。

skull
skull
翻译于 2015/10/13 23:11
1

本应该有很多的与沿出现在名单之中,但是对于列出来的这些特定的语言只是随意的一些子集,它们从某些程度来讲是基于我自己的兴趣而选出来的(比如说:我主要的兴趣点在于占支配地位的Linux,Android 和 Windows生态系统,所以在这里我就忽略了封闭但是更加有利可图的以 Apple 为中心的 Objective-C 和 Swift 编程语言,而且我对于专注于艺术环境的编程语言就不太了解,如Processing,我甚至需要猜测从其中学到的东西怎么样可以指导一个 Python 开发者)。对于一个更全面的编程语言名单而言需要考虑很多因素,除了考虑一个编程语言能够指导你成为一个开发者外,IEEE Spectrum 的一年一度关于编程语言流行度和增长的排名也非常值得了解一下。

面向过程编程语言 C,Rust,Cython

Python 默认的运行模型是过程型的:我们从主模块的顶部开始然后一句一句执行。所有的 Phthon 对于其他数据和计算模型的方法支持都是基于它是过程型的这一特性。

明日天涯993
明日天涯993
翻译于 2015/10/14 17:46
1

C 语言毫无疑问仍然是底层编程语言的统治者. 它是实现 Python 解释器的核心语言,同样也是实现 Linux 操作系统内核的核心语言。作为软件开发人员,学习 C 语言是学习更多关于软件所运行的底层硬件的最好起点 - C 语言经常被描述为“可移植的汇编语言”,通常使用 C 语言编译器作为交叉编译器,为新的 CPU 体系结构编译出第一个应用程序。

Rust,相比之下, 是一个由 Mozilla 创建的比较新的语言。它能够进入这个名单的原因是,Rust 吸取了工业界已知的关于不能在 C 语言中做什么的教训,并且被设计成可以与 C 库互操作的语言,它对硬件的控制达到了和低级系统编程语言相同的精度,但它使用不同的编译时方法进行数据建模和内存管理,在结构上消除了许多常见的困扰 C 程序的的缺陷(比如缓存溢出、重复释放内存错误、空指针访问以及线程同步问题)。我是一名嵌入式系统工程师,通过培训具备了最初的专业经验,我已经看到,当前被 C 语言和定制汇编代码统治的各个领域很有可能会被 Rust 取代。

l
lxw1
翻译于 2015/10/15 21:13
2

Cython 也是一种默认的更底层的语言,但是与通用目标语言 C,Rust 不同,Cython 主要用于书写 CPython 扩展模块。Cython 被设计作为一个 Python 的超集,让程序员选择何时支持纯 Python 语法的灵活性,当 Cython 语法支持的扩展使其可以生成的代码相当于本地C代码的速度和内存效率。

学习这些语言之一是以实用的角度增强其对内存管理,算法效率,二进制接口兼容性,软件可移植性,将源代码转换成运行系统的深刻理解。

溪边九节
溪边九节
翻译于 2015/10/12 20:35
2

面向对象的数据建模: Java, C#, Eiffel

编程中最主要的任务之一是为现实世界的状态建模,这方面最通常的方法是面向对象语言所提供的那些原生的语法支持:把数据结构、操作这些数据结构的方法组合成类。

Python原生设计上就可以直接使用面向对象的特性,而不需要一上来先学习如何编写自己的类。不是每种语言都才有这样的方式 - 对于本节列出的这些语言,学习面向对象的设计思想是使用这些语言的前提。

zicode
zicode
翻译于 2015/10/15 12:58
2

得益于 Sun Microsystems 在 20 世纪 90 年代中后期对 Java 语言的市场推广,Java 成了很多大专院校计算机科学入门课程的默认语言。虽然现在在很多教育领域它正被 Python 淘汰,但它在商业应用程序开发领域仍然是一种最受欢迎的语言。有一系列其它语言针对公共的 JVM(Java 虚拟机)运行时的实现,包括 Python 的 Jython 实现。Android 系统的 Dalvik 和 ART 环境是基于 Java 编程 API 实现的。

C# 在很多方面与 Java 相似,在 Sun 和 Microsoft 解决关于 J++(微软实现的 Java 语言)和标准 JAVA 不一致的问题失败后,它是作为J++的替代语言出现的。像 Java 一样,它也是一个受欢迎的商业应用开发语言,有一系列其它语言针对共享 .NET CLR(公共语言运行库)的实现,包括 Python 的 IronPython 实现(原始的 IronPython 1.0 中的核心组件被抽取出来创建 .NET 动态语言运行库的中间层)。在很长的一段时间里,.NET是只能在 Windows 系统中使用的专有技术,有一个跨平台的开源代码 mono 重新实现了.NET,但在 2015 年初,微软宣布了 .NET 开源计划。

l
lxw1
翻译于 2015/10/15 22:39
2
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(20)

d
dwcz
有人为什么只看到黑,却看不到文中指出的编程领域的复杂性。人们实现很多特性,却没有能力将其进行有效的整合。
桔子
桔子
屁眼最sb的语言
W
Win32DBG
难道pascal/delphi(object pascal),以及fortran一无是处?
台俊峰
台俊峰

引用来自“Mallon”的评论

我看傻了...
我表示也没有看懂
小郭一号
小郭一号
这篇文章的中心思想是python支持这27种语言的特性。
__JM_Joy__
__JM_Joy__
工作用合适的语言,平时随意。
一位极其不愿意透漏姓名的马先生
一位极其不愿意透漏姓名的马先生

引用来自“eechen”的评论

“如果我们认识的人刚开始学习编程,即使他们所选的编程语言(注:比如PHP)是我们自己所不喜欢的。我们也要支持他们,因为他们比我们清楚什么更适合他们的大脑。所以对我们合适的语言不一定适合他们。”
典型的sb
扫地小沙弥
扫地小沙弥

引用来自“雨翔河”的评论

不带这样的黑的。。。
+1.
雨翔河
雨翔河
不带这样的黑的。。。
eechen
eechen
“如果我们认识的人刚开始学习编程,即使他们所选的编程语言(注:比如PHP)是我们自己所不喜欢的。我们也要支持他们,因为他们比我们清楚什么更适合他们的大脑。所以对我们合适的语言不一定适合他们。”
返回顶部
顶部