帮你加强 Python 的 27 种编程语言
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">(点击<span style="color: black;">上方蓝字</span>,快速关注<span style="color: black;">咱们</span>)</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">编译:开源中国 </span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">www.oschina.net/translate/languages-to-improve-your-python</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><a style="color: black;">如有好<span style="color: black;">文案</span>投稿,请点击 → <span style="color: black;">这儿</span><span style="color: black;">认识</span>详情</a></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">27 种语言</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">过程型编程语言: C, Rust, Cython</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">面向对象数据建模语言: Java, C#, Eiffel</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C 的面向对象衍生语言: C++, D</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">面向数组的数据处理: MATLAB/Octave, Julia</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">统计数数据分析: R</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">计算型管道建模: Haskell, Scala, Clojure, F#</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">事件驱动编程: JavaScript, Go, Erlang, Elixir</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">渐变类型: TypeScript</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">动态元编程: Hy, Ruby</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">实用问题<span style="color: black;">处理</span>: Lua, PHP, Perl</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">计算型思维: Scratch, Logo</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">做为</span>这个世界上最流行的编程语言之一的合作设计者,我经常遇到一种令人非常<span style="color: black;">懊丧</span>的<span style="color: black;">行径</span>( Python 社区和其它<span style="color: black;">行业</span>中都存在)<span style="color: black;">便是</span>社区中有影响力的人尝试去在其它开源社区中灌输<span style="color: black;">针对</span>”缺失“的恐惧感,并以此驱动别人对本社区做出贡献(我自己偶尔<span style="color: black;">亦</span>会做出<span style="color: black;">这般</span><span style="color: black;">欠妥</span>的<span style="color: black;">行径</span>,当别人掉进这个陷阱时我<span style="color: black;">亦</span><span style="color: black;">更易</span>觉察出来)。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然借鉴其他编程语言社区的经验是一件好事,但用基于恐惧的<span style="color: black;">办法</span>来推动行动有很大问题,社区成员为了吸引代码贡献者的<span style="color: black;">重视</span>,容易把其他社区的成员视为竞争对手,而不是<span style="color: black;">做为</span>潜在的盟友<span style="color: black;">一起</span>迎接挑战,推动软件<span style="color: black;">研发</span>技术的进步。还会<span style="color: black;">引起</span>社区排斥<span style="color: black;">哪些</span><span style="color: black;">爱好</span>其他编程语言的人,把<span style="color: black;">她们</span>当做敌人。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">事实上,<span style="color: black;">咱们</span><span style="color: black;">期盼</span>有更丰富的跨平台开源编程语言可供<span style="color: black;">选取</span>,编程语言是最重要的思维工具,<span style="color: black;">能够</span>把<span style="color: black;">咱们</span>的想法转换成计算机能理解的<span style="color: black;">知道</span>的条款。<span style="color: black;">倘若</span>人们<span style="color: black;">发掘</span>了某种语言既适合<span style="color: black;">她们</span>的大脑又能直接<span style="color: black;">处理</span>问题,这就很好了,不必关心<span style="color: black;">她们</span>到底选的是那种语言。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因此呢</span>我要给 Python 社区提三个<span style="color: black;">详细</span>的<span style="color: black;">需求</span>和一个更广泛的<span style="color: black;">意见</span>,<span style="color: black;">首要</span>说这些<span style="color: black;">需求</span>:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1.当<span style="color: black;">咱们</span>想要激励部落成员,<span style="color: black;">加强</span>社区吸引力时,<span style="color: black;">咱们</span><span style="color: black;">不该</span>该<span style="color: black;">运用</span>恐惧法,相反<span style="color: black;">咱们</span>应该<span style="color: black;">运用</span>自豪法。当<span style="color: black;">运用</span>恐惧法激励时,<span style="color: black;">例如</span>说<span style="color: black;">这般</span>的话:“<span style="color: black;">倘若</span><span style="color: black;">咱们</span>不<span style="color: black;">处理</span>问题 X,<span style="color: black;">那样</span> Python <span style="color: black;">研发</span>者将会减少,他们将会转而去<span style="color: black;">运用</span>语言 Y”,<span style="color: black;">那样</span><span style="color: black;">咱们</span>就在故意地向全世界自由贡献代码的人传递负能量。但<span style="color: black;">倘若</span><span style="color: black;">咱们</span><span style="color: black;">运用</span>自豪法,说出来的话将是<span style="color: black;">这般</span>的:“Python 中的问题 X 的确难以<span style="color: black;">处理</span>,<span style="color: black;">瞧瞧</span>语言 Y 的社区,<span style="color: black;">她们</span>用一个极好的<span style="color: black;">办法</span><span style="color: black;">处理</span>了这个问题,<span style="color: black;">咱们</span><span style="color: black;">亦</span><span style="color: black;">能够</span>在 Python 中尝试这个<span style="color: black;">处理</span><span style="color: black;">方法</span>,以<span style="color: black;">一样</span>优雅的方式<span style="color: black;">处理</span> Python 中的问题”。积极地强调“以<span style="color: black;">咱们</span>自己的<span style="color: black;">奋斗</span>为自豪”,有利于促进 Python 社区中<span style="color: black;">持续</span>学习的文化,还会<span style="color: black;">持续</span>促进与其他社区关系的发展。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2.克制对其他编程语言社区蔑视的态度,<span style="color: black;">尤其</span>是对<span style="color: black;">哪些</span>有大牛存在,能自己<span style="color: black;">处理</span>遇到的问题,不必等待<span style="color: black;">商场</span>软件供应商屈尊<span style="color: black;">处理</span>问题的社区。世界上的大<span style="color: black;">都数</span>重要的问题都不是利益驱动的问题(<span style="color: black;">哪些</span>人想要<span style="color: black;">处理</span>问题,不是为了谋取财富,<span style="color: black;">亦</span><span style="color: black;">无</span><span style="color: black;">公司</span>出钱<span style="color: black;">帮助</span><span style="color: black;">她们</span>),<span style="color: black;">因此</span><span style="color: black;">咱们</span>应该鼓励和赞扬<span style="color: black;">哪些</span>加紧尝试<span style="color: black;">处理</span>问题的人。不必管<span style="color: black;">她们</span><span style="color: black;">运用</span>的是什么技术。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3.<span style="color: black;">倘若</span><span style="color: black;">咱们</span>认识的人刚<span style="color: black;">起始</span>学习编程,即使<span style="color: black;">她们</span>所选的编程语言是<span style="color: black;">咱们</span>自己所不<span style="color: black;">爱好</span>的。<span style="color: black;">咱们</span><span style="color: black;">亦</span>要支持<span style="color: black;">她们</span>,<span style="color: black;">由于</span><span style="color: black;">她们</span>比<span style="color: black;">咱们</span>清楚什么更适合<span style="color: black;">她们</span>的大脑。<span style="color: black;">因此</span>对<span style="color: black;">咱们</span>合适的语言不<span style="color: black;">必定</span>适合<span style="color: black;">她们</span>。<span style="color: black;">倘若</span><span style="color: black;">她们</span><span style="color: black;">起始</span>对当初的<span style="color: black;">选取</span>感到<span style="color: black;">懊丧</span>,以至于完全打消了<span style="color: black;">她们</span>学习编程的积极性,<span style="color: black;">此时</span>给<span style="color: black;">她们</span><span style="color: black;">举荐</span>编程语言才更有<span style="color: black;">道理</span>。这个<span style="color: black;">意见</span><span style="color: black;">乃至</span><span style="color: black;">亦</span>对<span style="color: black;">咱们</span><span style="color: black;">其中</span>做过改进网络安全方面工作的人有用,<span style="color: black;">针对</span><span style="color: black;">本来</span>不安全的语言,<span style="color: black;">咱们</span>的<span style="color: black;">处理</span>方式是,<span style="color: black;">经过</span>改善操作系统中的沙盒功能,渐进地破除这个语言<span style="color: black;">选取</span><span style="color: black;">阻碍</span>,用原生系统的安全属性,改善了编程语言默认<span style="color: black;">行径</span>,<span style="color: black;">不该</span>该从应用安全的<span style="color: black;">方向</span><span style="color: black;">评估</span>编程语言的好坏,迷惑初学者。(<span style="color: black;">倘若</span>有人请编程新手写了一个未经审计的软件,却<span style="color: black;">安排</span>为处理安全<span style="color: black;">敏锐</span>的问题,这不是程序员的问题,而应该怪那个<span style="color: black;">安排</span>的人<span style="color: black;">无</span>尽职调查软件的<span style="color: black;">源自</span>和安全属性。)</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">我<span style="color: black;">更加多</span>的<span style="color: black;">意见</span>是针对人<span style="color: black;">起始</span>遭遇 Python 的核心程序集的境界,<span style="color: black;">亦</span><span style="color: black;">因此呢</span><span style="color: black;">起始</span>探索<span style="color: black;">更加多</span>的 Python <span style="color: black;">自己</span>的“思维工具”。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">咱们</span>做 Python 核心<span style="color: black;">研发</span>过程的一部分事情是<span style="color: black;">因为</span>领会的特点<span style="color: black;">拥有</span>在其他语言<span style="color: black;">咱们</span><span style="color: black;">拥有</span><span style="color: black;">优良</span>,<span style="color: black;">是不是</span>能够用一种合适的方式让 Python 代码容易读写。这<span style="color: black;">寓意</span>着学习别的程序语言能够<span style="color: black;">知道</span>特定的风格,并且在 Python 中编程<span style="color: black;">加强</span>人对软件<span style="color: black;">研发</span>的认识。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">为了有助于<span style="color: black;">这般</span>的<span style="color: black;">奋斗</span>, 我<span style="color: black;">已然</span>列出了下面可供探索的<span style="color: black;">行业</span>,还有<span style="color: black;">有些</span>对这些<span style="color: black;">行业</span>可能<span style="color: black;">供给</span>额外见解的语言。我尽可能的链接到 Wikipedia 页面而不是直接转向<span style="color: black;">关联</span>的首页,<span style="color: black;">由于</span>维基百科经常会给出<span style="color: black;">有些</span>有趣的历史背景,当<span style="color: black;">选取</span>一门新的编程言<span style="color: black;">做为</span>一项学术型的练习而不是被立即用来实践性<span style="color: black;">运用</span>的时候,这些背景值得去探索。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">然而就我个人而言, 我<span style="color: black;">熟练</span>许多的编程语言(并且<span style="color: black;">已然</span><span style="color: black;">运用</span>了其中的<span style="color: black;">有些</span>进行<span style="color: black;">研发</span>生产系统) 。所有的<span style="color: black;">举荐</span><span style="color: black;">包含</span>我间接<span style="color: black;">认识</span>的语言(或<span style="color: black;">经过</span>阅读<span style="color: black;">有些</span>材料和设计文档,又<span style="color: black;">或</span>是从和我信任的<span style="color: black;">伴侣</span>之间的交流中得知一门语言的<span style="color: black;">优良</span>和劣势)。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">本应该有<span style="color: black;">非常多</span>的与沿出<span style="color: black;">此刻</span>名单之中,<span style="color: black;">然则</span><span style="color: black;">针对</span>列出来的这些特定的语言只是随意的<span style="color: black;">有些</span>子集,它们从某些程度来讲是基于我自己的兴趣而选出来的(<span style="color: black;">例如</span>说:我<span style="color: black;">重点</span>的兴趣点在于占<span style="color: black;">安排</span>地位的Linux,Android 和 Windows生态系统,<span style="color: black;">因此</span>在<span style="color: black;">这儿</span>我就忽略了封闭<span style="color: black;">然则</span>更加有利可图的以 Apple 为中心的 Objective-C 和 Swift 编程语言,<span style="color: black;">况且</span>我<span style="color: black;">针对</span>专注于艺术环境的编程语言就不太<span style="color: black;">认识</span>,如Processing,我<span style="color: black;">乃至</span>需要猜测从其中学到的东西怎么样<span style="color: black;">能够</span><span style="color: black;">指点</span>一个 Python <span style="color: black;">研发</span>者)。<span style="color: black;">针对</span>一个更全面的编程语言名单而言需要<span style="color: black;">思虑</span><span style="color: black;">非常多</span><span style="color: black;">原因</span>,除了<span style="color: black;">思虑</span>一个编程语言能够<span style="color: black;">指点</span>你<span style="color: black;">作为</span>一个<span style="color: black;">研发</span>者外,IEEE Spectrum 的一年一度关于编程语言流行度和增长的排名<span style="color: black;">亦</span>非常值得<span style="color: black;">认识</span>一下。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">面向过程编程语言 C,Rust,Cython</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Python 默认的运行模型是过程型的:<span style="color: black;">咱们</span>从主模块的顶部<span style="color: black;">起始</span><span style="color: black;">而后</span>一句一句执行。所有的 Phthon <span style="color: black;">针对</span>其他数据和计算模型的<span style="color: black;">办法</span>支持都是基于它是过程型的这一特性。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C 语言毫无疑问仍然是底层编程语言的统治者. 它是实现 Python 解释器的核心语言,<span style="color: black;">一样</span><span style="color: black;">亦</span>是实现 Linux 操作系统内核的核心语言。<span style="color: black;">做为</span>软件<span style="color: black;">研发</span>人员,学习 C 语言是学习<span style="color: black;">更加多</span>关于软件所运行的底层硬件的最好起点 – C 语言经常被描述为“可移植的汇编语言”,<span style="color: black;">一般</span><span style="color: black;">运用</span> C 语言编译器<span style="color: black;">做为</span>交叉编译器,为新的 CPU 体系结构编译出<span style="color: black;">第1</span>个应用程序。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Rust,相比之下, 是一个由 Mozilla 创建的比较新的语言。它能够进入这个名单的<span style="color: black;">原由</span>是,Rust 吸取了工业界已知的关于<span style="color: black;">不可</span>在 C 语言中做什么的教训,并且被设计成<span style="color: black;">能够</span>与 C 库互操作的语言,它对硬件的<span style="color: black;">掌控</span>达到了和低级系统编程语言相同的精度,但它<span style="color: black;">运用</span><span style="color: black;">区别</span>的编译时<span style="color: black;">办法</span>进行数据建模和内存管理,在结构上消除了许多<span style="color: black;">平常</span>的<span style="color: black;">困惑</span> C 程序的的缺陷(<span style="color: black;">例如</span>缓存溢出、重复释放内存错误、空指针<span style="color: black;">拜访</span>以及线程同步问题)。我是一名嵌入式系统工程师,<span style="color: black;">经过</span>培训具备了最初的专业经验,我<span style="color: black;">已然</span>看到,当前被 C 语言和定制汇编代码统治的各个<span style="color: black;">行业</span><span style="color: black;">特别有</span>可能会被 Rust 取代。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Cython <span style="color: black;">亦</span>是一种默认的更底层的语言,<span style="color: black;">然则</span>与通用<span style="color: black;">目的</span>语言 C,Rust <span style="color: black;">区别</span>,Cython <span style="color: black;">重点</span>用于书写 CPython 扩展模块。Cython 被设计<span style="color: black;">做为</span>一个 Python 的超集,让程序员<span style="color: black;">选取</span>何时支持纯 Python 语法的灵活性,当 Cython 语法支持的扩展使其<span style="color: black;">能够</span>生成的代码相当于本地C代码的速度和内存效率。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习这些语言之一是以实用的<span style="color: black;">方向</span><span style="color: black;">加强</span>其对内存管理,算法效率,二进制接口兼容性,软件可移植性,将源代码转换成运行系统的深刻理解。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">面向对象的数据建模: Java, C#, Eiffel</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">编程中最<span style="color: black;">重点</span>的任务之一是为现实世界的状态建模,这方面最<span style="color: black;">一般</span>的<span style="color: black;">办法</span>是面向对象语言所<span style="color: black;">供给</span>的<span style="color: black;">哪些</span>原生的语法支持:把数据结构、操作这些数据结构的<span style="color: black;">办法</span>组合成类。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Python原生设计上就<span style="color: black;">能够</span>直接<span style="color: black;">运用</span>面向对象的特性,而不需要一上来先学习<span style="color: black;">怎样</span>编写自己的类。不是每种语言都才有<span style="color: black;">这般</span>的方式 – <span style="color: black;">针对</span>本节列出的这些语言,学习面向对象的设计思想是<span style="color: black;">运用</span>这些语言的前提。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">得益于 Sun Microsystems 在 20 世纪 90 年代中后期对 Java 语言的市场推广,Java <span style="color: black;">成为了</span><span style="color: black;">非常多</span>大专院校计算机科学入门课程的默认语言。虽然<span style="color: black;">此刻</span>在<span style="color: black;">非常多</span>教育<span style="color: black;">行业</span>它正被 Python 淘汰,但它在<span style="color: black;">商场</span>应用程序<span style="color: black;">研发</span><span style="color: black;">行业</span>仍然是一种最受欢迎的语言。有一系列其它语言针对公共的 JVM(Java 虚拟机)运行时的实现,<span style="color: black;">包含</span> Python 的 Jython 实现。Android 系统的 Dalvik 和 ART 环境是基于 Java 编程 API 实现的。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C# 在<span style="color: black;">非常多</span>方面与 Java <span style="color: black;">类似</span>,在 Sun 和 Microsoft <span style="color: black;">处理</span>关于 J++(微软实现的 Java 语言)和标准 JAVA 不一致的问题失败后,它是<span style="color: black;">做为</span>J++的替代语言<span style="color: black;">显现</span>的。像 Java <span style="color: black;">同样</span>,它<span style="color: black;">亦</span>是一个受欢迎的<span style="color: black;">商场</span>应用<span style="color: black;">研发</span>语言,有一系列其它语言针对共享 .NET CLR(公共语言运行库)的实现,<span style="color: black;">包含</span> Python 的 IronPython 实现(原始的 IronPython 1.0 中的核心组件被抽取出来创建 .NET 动态语言运行库的中间层)。在很长的一段时间里,.NET是只能在 Windows 系统中<span style="color: black;">运用</span>的专有技术,有一个跨平台的开源代码 mono 重新实现了.NET,但在 2015 年初,微软宣布了 .NET 开源计划。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">与列表里大<span style="color: black;">都数</span>语言<span style="color: black;">区别</span>,我并不<span style="color: black;">举荐</span>在<span style="color: black;">平常</span><span style="color: black;">运用</span> Eiffel。它之<span style="color: black;">因此</span>在<span style="color: black;">举荐</span>列表里,是<span style="color: black;">由于</span>这门语言有着<span style="color: black;">海量</span>优良的面向对象设计思想,<span style="color: black;">包含</span>以“正确可信”<span style="color: black;">做为</span>程序的设计<span style="color: black;">目的</span>。(<span style="color: black;">同期</span>,Eiffel <span style="color: black;">亦</span>告诉我<span style="color: black;">针对</span>大<span style="color: black;">都数</span>的软件<span style="color: black;">研发</span>,并<span style="color: black;">无</span>以“正确可信”为设计<span style="color: black;">目的</span>,这是<span style="color: black;">由于</span>正确可信的软件确实<span style="color: black;">没法</span>妥善处理不确定的<span style="color: black;">状况</span>。当<span style="color: black;">非常多</span><span style="color: black;">关联</span>约束还不清楚,需要在<span style="color: black;">持续</span>迭代的过程中去逐步完善的时候,这种设计理念就完全不适合了)</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习这类编程语言,就需要去<span style="color: black;">熟练</span>继承模型、契约设计、类不变项、前置<span style="color: black;">要求</span>、后置<span style="color: black;">要求</span>、协变(covariance)、逆变(contravariance)、<span style="color: black;">办法</span><span style="color: black;">查询</span>路径、泛型编程,以及其他<span style="color: black;">各样</span>在 Python 的类型系统上<span style="color: black;">亦</span>支持的特性。<span style="color: black;">另外</span>还有<span style="color: black;">非常多</span>标准库模块和第三方框架,会用到“<span style="color: black;">表示</span>的面向对象”设计风格,例如 unittest 和 loggingmodules,以及 Django 框架里基于类的 view。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">面向对象的 C:C++, D</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">运用</span> CPython 的一种方式,是把它的内核当做一种“<span style="color: black;">包括</span>对象的 C 语言”的编程环境 – CPython 是<span style="color: black;">经过</span> C 语言的风格去实现面向对象编程,<span style="color: black;">亦</span><span style="color: black;">便是</span>用 C 的结构体描述数据,<span style="color: black;">而后</span>把结构的实例指针<span style="color: black;">做为</span><span style="color: black;">第1</span>个参数传给<span style="color: black;">哪些</span>数据处理函数(<span style="color: black;">亦</span><span style="color: black;">便是</span> CPython的C 里面的 omnipresentPyObject* 指针)。这种设计模式被有意复制到 Python 里,在实例<span style="color: black;">办法</span>和类<span style="color: black;">办法</span>需要<span style="color: black;">表示</span>的指定 self <span style="color: black;">或</span> cls 参数。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">C++ 的<span style="color: black;">目的</span>是在源码级完全兼容 C 语言,<span style="color: black;">这里</span>之上<span style="color: black;">增多</span>了<span style="color: black;">有些</span>高级特性,例如原生的面向对象编程支持和基于模板的元程序<span style="color: black;">研发</span>。C++ 的晦涩和<span style="color: black;">繁杂</span>是臭名昭著的(即使 2011 年的语言标准的更新<span style="color: black;">处理</span>了<span style="color: black;">海量</span>最糟糕的问题),<span style="color: black;">不外</span>就算<span style="color: black;">这般</span>,C++ 仍然是<span style="color: black;">非常多</span>场景下的<span style="color: black;">选取</span>,<span style="color: black;">包含</span> 3D 建模图形引擎和跨平台应用<span style="color: black;">研发</span>框架,如 Qt。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">D 编程语言<span style="color: black;">亦</span><span style="color: black;">特别有</span>趣,<span style="color: black;">由于</span>它和 C++ 的关系很像 Rust 与 C 语言之间的关系:设计 D 语言的目的是,既要<span style="color: black;">保存</span> C++ 的大部分优点,<span style="color: black;">亦</span>要避免 C++ 中存在的<span style="color: black;">非常多</span>缺陷(<span style="color: black;">例如</span>缺乏存储安全性)。与 Rust <span style="color: black;">区别</span>,D 语言不是一个从零<span style="color: black;">起始</span>设计的全新编程语言,相反,它是直接从 C++ 衍生出来的语言,尽管它不像 C++ 那样是 C 语言的严格超集,但它遵守一个设计原则,任何落入 C 语言和 D 语言公共子集中的代码,在两种语言中的<span style="color: black;">行径</span>必须相同。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习这些语言有利于深刻理解把高级语言特征和底层 C 运行时模型相结合的<span style="color: black;">繁杂</span>性。学习 C++ <span style="color: black;">亦</span>有助于<span style="color: black;">运用</span> Python 操作已有的用 C++ 编写的库和工具包。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">面向数组的数据处理: MATLAB/Octave, Julia</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">面向数组的编程用于数值编程模型:基于矩阵代数和<span style="color: black;">关联</span>的数值<span style="color: black;">办法</span>。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">虽然 Python 的标准库并<span style="color: black;">无</span>直接支持,<span style="color: black;">不外</span>在语言设计上<span style="color: black;">已然</span>做了<span style="color: black;">思虑</span>,一系列语法和语义上的功能支持,有助于第三方库 NumPy 以及类似的面向数组的工具。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">在<span style="color: black;">非常多</span><span style="color: black;">状况</span>下,Python科学计算 软件系列都被当做专用的 MATLAB 编程环境的替代者,被广泛用于科学和工程上的建模、仿真和数值分析。开源项目 GNU Octave 的<span style="color: black;">目的</span>是在语法上与MATLAB代码兼容,让人<span style="color: black;">能够</span>比较面向对象编程的这两种方式。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Julia 是另一个相对较新的语言, 它的<span style="color: black;">重点</span>特点是支持面向数组编程和基于类型的函数重载.</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习一种<span style="color: black;">这般</span>的语言有助于深入理解 Python 科学计算工具包的威力,<span style="color: black;">同期</span>,学习<span style="color: black;">这般</span>的语言有助于<span style="color: black;">科研</span><span style="color: black;">怎样</span>利用 OpenCL 和 Nvidia 的 CUDA 等类似的技术实现硬件级并发执行,<span style="color: black;">亦</span>有助于<span style="color: black;">科研</span><span style="color: black;">怎样</span><span style="color: black;">运用</span> Apache Spark 和 Blaze 等数据处理框架实现分布式数据处理。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">统计数据分析语言: R</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">因为</span>有越来越多的大数据集需要处理。<span style="color: black;">因此呢</span>需要一种免费的能处理<span style="color: black;">这般</span>的数据集的分析工具,编程语言 R <span style="color: black;">便是</span>一种<span style="color: black;">这般</span>的工具,它<span style="color: black;">尤其</span>注重统计数据分析和可视化。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习 R 语言有助于深入理解 Python 科学计算工具包的统计功能,<span style="color: black;">尤其</span>是其中的数据分析库 pandas 和统计可视化库 seaborn 。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">计算管道建模语言:Haskell, Scala, Clojure, F#</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">面向对象数据建模和面向数组数据建模<span style="color: black;">重点</span>用于对数据进行静态建模,有两种建模方式,一种是把数据<span style="color: black;">保留</span>在对象的各个属性中,另一种是把结构化的数据<span style="color: black;">保留</span>为数组。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">相比之下,函数式编程语言更强调以计算流的形式对数据进行动态建模。只要学一下函数式编程<span style="color: black;">基本</span>,就会<span style="color: black;">明显</span><span style="color: black;">加强</span><span style="color: black;">运用</span>数据转换操作对数据建模的能力,这<span style="color: black;">针对</span><span style="color: black;">运用</span>其他范式的编程语言(<span style="color: black;">例如</span>面向过程、面向对象、面向数组的编程语言)<span style="color: black;">研发</span>应用程序<span style="color: black;">亦</span>是有<span style="color: black;">帮忙</span>的。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Haskell 是一个函数式编程语言,对 Python 的设计产生过重大的影响, 最<span style="color: black;">显著</span>的<span style="color: black;">便是</span> Python 2.0 引入的列表解析。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Scala 毫无疑问是基于JVM的函数式编程语言,与Java, Python和R<span style="color: black;">同样</span>,是Apache Spark数据分析平台的四门<span style="color: black;">重点</span>编程语言之一。在设计上支持函数式编程方式的<span style="color: black;">同期</span>,Scala的语法、数据模型和执行模型在设计上<span style="color: black;">尽可能</span>避免为原有的Java程序员带了太大的<span style="color: black;">阻碍</span>(从这个<span style="color: black;">方向</span>上看,Scala更恰当的<span style="color: black;">归类</span>应该是有着强函数式语言支持的面向对象的编程语言)。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Clojure是另一门基于JVM的函数式编程语言,被看作是Lisp的一个变种。它在我们的<span style="color: black;">名单</span>中<span style="color: black;">拥有</span>一席之地,是<span style="color: black;">由于</span>它为Python的函数式编程工具箱toolz的实现带来灵感。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">我自己对F# 并不<span style="color: black;">熟练</span>,<span style="color: black;">不外</span><span style="color: black;">因为</span>它是 .NET CLR <span style="color: black;">举荐</span>的语言,<span style="color: black;">因此</span>还是值得关注的。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习这些编程语言,有助于<span style="color: black;">认识</span> Python <span style="color: black;">自己</span>的计算管道建模工具,<span style="color: black;">包含</span>容器推导表达式、生成器、生成器表达式、functools 和 itertools 标准库模块,和第三方函数式 Python 工具如 toolz。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">事件驱动编程语言:JavaScript, Go, Erlang, Elixir</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">计算管道是处理数据转换和分析问题的一种很好的<span style="color: black;">办法</span>,<span style="color: black;">不外</span><span style="color: black;">非常多</span>问题需要程序以持久的方式运行,等待事件<span style="color: black;">出现</span>,<span style="color: black;">而后</span>处理这些事件。对这类服务,<span style="color: black;">一般</span><span style="color: black;">能够</span>并发的处理多个事件,来实现<span style="color: black;">同期</span>为多个用户(<span style="color: black;">或</span><span style="color: black;">最少</span>多个<span style="color: black;">行径</span>)<span style="color: black;">供给</span>服务。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">JavaScript 最初是为浏览器<span style="color: black;">研发</span>的事件处理编程语言,<span style="color: black;">能够</span>让 web <span style="color: black;">研发</span>人员处理客户端本地的用户<span style="color: black;">行径</span>(例如鼠标移动和按键)和事件(例如页面渲染结束)。所有现代的浏览器都支持 JavaScript,与 HTML5 的 DOM <span style="color: black;">一块</span>,<span style="color: black;">已然</span><span style="color: black;">作为</span>用户界面的外观和<span style="color: black;">行径</span>事实上的标准。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Go 是Google设计出来的,设计这个语言的目的是为了创建高度可扩展的网络服务,Go语言非常适合<span style="color: black;">研发</span>命令行程序。从设计编程语言的<span style="color: black;">方向</span>看,最引人注目的是Go语言在它的核心并发模型中<span style="color: black;">运用</span>了“<span style="color: black;">次序</span>通信过程(Communicating Sequential Processes)”这一概念。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Erlang 是爱立信设计出来的,设计这个语言的目的是为了制造高度<span style="color: black;">靠谱</span>的<span style="color: black;">tel</span>交换机以及类似的设备,著名的开源框架RabbitMQ的<span style="color: black;">信息</span>服务器<span style="color: black;">便是</span>用Erlang实现的。Erlang<span style="color: black;">运用</span>Actor模型实现了核心并发原语,不<span style="color: black;">准许</span><span style="color: black;">区别</span>线程直接共享数据,线程间的通信只能靠传递<span style="color: black;">信息</span>。尽管我自己从来<span style="color: black;">无</span><span style="color: black;">运用</span>过Erlang语言, 但我的<span style="color: black;">第1</span>份工作<span style="color: black;">触及</span>到了一个基于Actor模型<span style="color: black;">研发</span>的并发框架,它是一个前爱立信工程师用C++<span style="color: black;">研发</span>的,我自己<span style="color: black;">亦</span>基于TSK(任务)和MBX(邮箱)原语<span style="color: black;">研发</span>过<span style="color: black;">这般</span>的框架,是在德州仪器的轻量级DSP/BIOS运行时(<span style="color: black;">此刻</span>叫TI-TROS)中实现的。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Elixir 能够出<span style="color: black;">此刻</span>这个名单中的理由是,虽然它运行在Erlang虚拟机中,与编程语言Erlang<span style="color: black;">拥有</span>相同的并发语义,但它<span style="color: black;">亦</span><span style="color: black;">包括</span>了一系列额外的语言级特征,<span style="color: black;">供给</span>了更全面的<span style="color: black;">研发</span>环境,<span style="color: black;">更易</span>吸引从其他编程语言(<span style="color: black;">例如</span>Python、Java或Ruby)转过来的<span style="color: black;">研发</span>者。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习一种<span style="color: black;">这般</span>的语言有助于深入理解Python本身是<span style="color: black;">怎样</span>支持并发和并行的,<span style="color: black;">包含</span>原生协程、基于生成器的协程、concurrent.futures和asyncio标准库模块、第三方网络服务<span style="color: black;">研发</span>框架(<span style="color: black;">例如</span>Twisted和Tornado)、Django中新引入的channels概念和GUI 框架中的事件处理循环。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">动静混合类型: TypeScript</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Python 3.5 引入的特性里,最有争议的一项是新的类型模块,为 Python 体系加上了混合类型的支持。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">针对</span><span style="color: black;">哪些</span>接触过的静态类型编程语言<span style="color: black;">重点</span>是 C, C++ 和 Java 的<span style="color: black;">研发</span>者<span style="color: black;">来讲</span>,这简直<span style="color: black;">便是</span>一个及其可怕的想法。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Microsoft 的 TypeScript 为 JavaScript 应用<span style="color: black;">供给</span>动静混合类型支持,让你对这个概念会有好<span style="color: black;">有些</span>的看法。TypeScript 代码会编译成 JavaScript 代码(编译后不<span style="color: black;">包括</span>任何运行时类型<span style="color: black;">检测</span>),主流的JavaScript 库的 TypeScript 注释(annotations)在DefinitelyTyped代码库里<span style="color: black;">能够</span>找到。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">正如 Chris Neugebauer 在澳大利亚 PyCon 大会的报告上指出的那样,这很像是 Python 与类型提示库 typeshed 以及类似 mypy 那样的类型推导和分析工具之间的关系。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">本质上,TypeScript 和 Python 的类型提示都是实现特定测试程序的方式,不管是独立文件(常规的测试程序),还是内嵌在主代码里(类似静态编程语言的类型声明)。不管哪种<span style="color: black;">状况</span>,你都<span style="color: black;">能够</span>运行单独的命令<span style="color: black;">检测</span>剩余的代码<span style="color: black;">是不是</span>符合已知的类型约束(<span style="color: black;">针对</span> JavaScript 和 TypeScript,在编译<span style="color: black;">周期</span>会隐式的去完成,<span style="color: black;">针对</span> Python 的类型提示,则是可选的静态分析任务)。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">动态元程序设计: Hy,Ruby</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">像 C、C++、C#、Java <span style="color: black;">这般</span>的编程语言给 Python 带来的一个有点让人不安特性是“代码即数据”:类似函数和类都是运行时对象,<span style="color: black;">能够</span>被其他对象操作。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Hy 是一个 Lisp 的变种,<span style="color: black;">能够</span>在 CPython 虚拟机和 PyPy 虚拟机上运行。Lisp 在“代码即数据”上做到了极致,Lisp 代码本身<span style="color: black;">便是</span>由描述需要实现的操作的嵌套的列表<span style="color: black;">构成</span>的(这门语言的名字就源自”LISt Processor”)。Lisp 风格的语言,最强大的一点是它们<span style="color: black;">能够</span>很<span style="color: black;">容易</span>的实现自己的<span style="color: black;">行业</span>特定语言(DSL),<span style="color: black;">不外</span>这有时候<span style="color: black;">亦</span>为阅读其他人的代码带来困难。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Ruby 在<span style="color: black;">非常多</span>方面都与 Python 很类似,<span style="color: black;">然则</span><span style="color: black;">做为</span>更为开放的社区,Ruby 更接受动态元程序设计,而<span style="color: black;">针对</span> Python,这方面只是“支持,但不鼓励”。这方面的功能<span style="color: black;">包含</span>重定义类加入<span style="color: black;">有些</span><span style="color: black;">办法</span>,用闭包实现语言核心结构如迭代器。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习这些语言<span style="color: black;">能够</span><span style="color: black;">帮忙</span>深入<span style="color: black;">认识</span> Python <span style="color: black;">自己</span>的动态元程序设计的支持,<span style="color: black;">包含</span>函数和类装饰、monkeypatching(动态修改代码)、unittest.mock 标准库模块以及第三方对象代理模块入如wrapt(我还没找到什么编程语言有助于<span style="color: black;">认识</span> Python 的元类(metaclass),<span style="color: black;">倘若</span>有人有好的<span style="color: black;">意见</span>,<span style="color: black;">能够</span>在评论里告诉我。元类的高级特性<span style="color: black;">包含</span>核心类型、抽象基类、枚举类型和混合类型(动态类型和静态类型混合)表达式的运行时执行)。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">实用主义者:Lua, PHP, Perl</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">流行的编程语言<span style="color: black;">一般</span>并不是孤立的 —— <span style="color: black;">她们</span>属于庞大的生态系统的一部分(<span style="color: black;">商场</span>和社区都是<span style="color: black;">这般</span>),<span style="color: black;">另外</span>还有终端用户、框架<span style="color: black;">研发</span>者、工具<span style="color: black;">研发</span>者、教育人员等等。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">Lua是一门流行的编程语言,<span style="color: black;">重点</span><span style="color: black;">做为</span>脚本引擎内嵌于大型的程序里。值得一提的例子有,为魔兽争霸游戏客户端编写的插件,在很多 Linux 发行版存在的 RPM 工具<span style="color: black;">亦</span>内置了 Ruby。与 CPython 相比,Lua 运行时<span style="color: black;">体积</span><span style="color: black;">仅有</span>其<span style="color: black;">非常</span>之一,并且它的弱反省(weaker introspection)的能力<span style="color: black;">亦</span>能让它<span style="color: black;">更易</span>独立于应用程序的其他部分和宿主操作系统。一个值得<span style="color: black;">说到</span>的来自 Lua 社区对 Python 生态系统的贡献是,CPython 和 PyPy 采用 LuaJit FFI(Foreign Function Interface)<span style="color: black;">做为</span>其 JIT 友好的 cffi 接口库的<span style="color: black;">基本</span>。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">PHP 是另一个受欢迎的编程语言,<span style="color: black;">因为</span>PHP<span style="color: black;">善于</span>生成HTML页面,被<span style="color: black;">初期</span>的虚拟服务器主机<span style="color: black;">供给</span>商广泛<span style="color: black;">运用</span>,<span style="color: black;">因此呢</span>它<span style="color: black;">做为</span> LAMP stack(Linux-Apache-MySQL-PHP)的<span style="color: black;">构成</span>部分被广为人知。尽管PHP在设计中存在<span style="color: black;">非常多</span>令人苦恼的概念上的缺陷,它仍然<span style="color: black;">成为了</span><span style="color: black;">非常多</span>著名的开源web 服务的<span style="color: black;">基本</span>,<span style="color: black;">包含</span>Drupal内容管理系统、WordPress博客引擎和支撑Wikipedia的MediaWiki引擎。PHP<span style="color: black;">亦</span>能支撑<span style="color: black;">非常多</span>重要的服务,<span style="color: black;">例如</span>众包社区所<span style="color: black;">运用</span>的分布式事件报告平台 Ushahidi。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">和PHP<span style="color: black;">同样</span>,Perl <span style="color: black;">亦</span>是Linux系统上的一个受欢迎的语言,与PHP<span style="color: black;">区别</span>,Perl不是<span style="color: black;">做为</span>网站<span style="color: black;">研发</span>平台被人熟知的,它更<span style="color: black;">平常</span>的用途是<span style="color: black;">做为</span>系统管理员管理系统的工具,它既能<span style="color: black;">运用</span>正则表达式处理字符串又能处理基于文本的Linux操作系统命令的输出结果。只<span style="color: black;">运用</span>Perl就能处理所有的任务,不需要再<span style="color: black;">运用</span>Whensh、awk和sed等工具了。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">学习其中的一门语言并<span style="color: black;">不可</span><span style="color: black;">供给</span>任何好的见解在审美上<span style="color: black;">美丽</span><span style="color: black;">或</span>在理念上简洁的程序语言设计。可能的结果是在实践中<span style="color: black;">供给</span><span style="color: black;">有些</span>编程语言的结构和采纳的知识,以及<span style="color: black;">认识</span>关于偶然的机会、历史的<span style="color: black;">累积</span>和降低入门门槛(<span style="color: black;">经过</span>重新分配使缺省变得可能)所起到的<span style="color: black;">功效</span>,这些都强于语言本身固有的能力。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">尤其</span>是,它<span style="color: black;">能够</span><span style="color: black;">供给</span><span style="color: black;">有些</span>见解关于 CKAN、OpenStack NFV、Blender、SciPy、OpenMDAO、PyGMO、PyCUDA、 Raspberry Pi Foundation 和 Python 的项目<span style="color: black;">道理</span>,<span style="color: black;">经过</span>广泛的<span style="color: black;">商场</span>组织,<span style="color: black;">保证</span> Python 生态系统的<span style="color: black;">公司</span>投资<span style="color: black;">连续</span>进行。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">数值计算的思想:Scratch,Logo</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">最后想说的是,我常常陷入<span style="color: black;">这般</span>的讨论,即结构化编程和面向对象倡导者的争论。后者自<span style="color: black;">叫作</span>面向对象编程语言和结构化编程语言<span style="color: black;">同样</span>易学。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">当<span style="color: black;">咱们</span>谈论的是<span style="color: black;">经过</span><span style="color: black;">详细</span>的数值实验来<span style="color: black;">教育</span>(<span style="color: black;">设备</span>人学),<span style="color: black;">科研</span>对象在仿真软件中的模型有着直接现实世界的参照物时,<span style="color: black;">例如</span>学生们<span style="color: black;">能够</span>接触到传感器,发动机,继电器等。我认为支持面向对象的小伙伴们有<span style="color: black;">必定</span>的道理。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">然而<span style="color: black;">针对</span>其他人来讲,我遇到的一个典型的挑战是:拿起一本食谱,将其中一个菜谱转换成你认为易学的面向对象编程语言,<span style="color: black;">而后</span>找到一个理解这门编程语言的学生,沿着我的思路,来继续转换这个菜谱。(我期待着看到学术研究人员真正践行<span style="color: black;">这般</span>的学习过程,——我会发自内心的为<span style="color: black;">这般</span>的<span style="color: black;">状况</span>感到欣慰。)大<span style="color: black;">都数</span>的<span style="color: black;">状况</span>下,小伙伴们不必遵循<span style="color: black;">这般</span>的流程——仅仅需要在头脑中进行思维的实验就足以让<span style="color: black;">她们</span>感受到<span style="color: black;">想要</span>学会这“易学的”编程语言需要多少预备知识。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">然而<span style="color: black;">另一</span>一个<span style="color: black;">处理</span>此问题的<span style="color: black;">办法</span>是学习<span style="color: black;">哪些</span>用于教育小<span style="color: black;">孩儿</span>数值计算的编程语言。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">其中一种最流行的莫过于 Scrach,它是一种让学生利用拖动的方式来操作封闭的图形化环境,从而<span style="color: black;">能够</span>看到图形化界面中相应的移动和反应的编程接口。像 Scrach <span style="color: black;">这般</span>的图形化环境是一种类似于利用连环画<span style="color: black;">帮忙</span><span style="color: black;">孩儿</span>们逐步学习读书认字的方式的程序设计方式。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">然而,这种利用一种特殊教育目的编程语言来操作一个图形化界面的想法并不新奇,随着的<span style="color: black;">初期</span>最经典环境之一的 Logo 环境在 2 0世纪 60 年代的创建(类似于 Python 自己的海龟模块),那时候,你所接触的<span style="color: black;">重点</span>的东西是一个“海龟”,你<span style="color: black;">能够</span>用命令它的移动来画线,从而改变图形环境。<span style="color: black;">经过</span>这种方式,像命令行、迭代、状态(例如:向上划、向下划)都以一种<span style="color: black;">创立</span>在人们的自然直观的思维方式(想象一下,假如你是一只海龟,<span style="color: black;">倘若</span>向右旋转 90 度将会<span style="color: black;">出现</span>什么?)的<span style="color: black;">基本</span>上来介绍。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">回归本源,<span style="color: black;">做为</span>一名富有经验的程序员,重新学习以上的任何一门编程语言是最有效的方式来忘掉所学(抛弃<span style="color: black;">有些</span>轮子):这些语言工具所涵盖的概念<span style="color: black;">帮忙</span><span style="color: black;">咱们</span>回想起<span style="color: black;">哪些</span><span style="color: black;">咱们</span>曾经认为理所当然的概念,<span style="color: black;">然则</span>需要以初学者的眼光重新学习。当<span style="color: black;">咱们</span>这么做的时候,<span style="color: black;">由于</span><span style="color: black;">咱们</span>更加愿意回想起<span style="color: black;">全部</span>的<span style="color: black;">规律</span>链条,<span style="color: black;">包含</span><span style="color: black;">哪些</span><span style="color: black;">咱们</span>之前认为理所当然而省略的思维<span style="color: black;">过程</span>,<span style="color: black;">咱们</span>会更加有效地和学生以及其他的初学者<span style="color: black;">一块</span>工作。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">看完本文有收获?请转</span><span style="color: black;">发分享给<span style="color: black;">更加多</span>人</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">关注「P</span></strong></span><span style="color: black;"><strong style="color: blue;"><span style="color: black;">ython<span style="color: black;">研发</span>者」,<span style="color: black;">提高</span>Python技能</span></strong></span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><img src="http://mmbiz.qpic.cn/mmbiz_png/2A8tXicCG8ylbWIGfdoDED35IRRySQZTX4z1S7g8K0bdR1moHJuUZLIS1vElDnOYdoeGLTeS776gNyIujmiaicP5A/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1" style="width: 50%; margin-bottom: 20px;"></p>
我完全赞同你的观点,思考很有深度。 楼主发的这篇帖子,我觉得非常有道理。
页:
[1]