博采27门语言之长,提升Python的能力转载

原创
小哥 3年前 (2022-11-03) 阅读数 128 #js教程
文章标签 PHPJavaScript

作者:Nick Coghlan

译者:《豌豆花下的猫》翻译:《豌豆花下的猫》@Python猫

英文:https://www.curiousefficiency.org/posts/2015/10/languages-to-improve-your-python.html

免责声明:此译文用于交流和学习,基于 CC BY-NC-SA 4.0 许可协议。内容在可读性方面稍有改动。

目录

  • 开阔眼界开阔眼界开阔眼界

  • 工艺编程。程序性编程。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 (和其他社区):有影响力的人试图通过激发人们对“输给”其他开源社区的恐惧来激励人们为社区做出贡献。(我自己偶尔也会为此感到内疚,这让我更容易发现其他人是否也落入了同样的陷阱)。

虽然学习其他编程语言社区的经验是好的,但基于恐惧的方法来激励行动存在严重的问题,因为它刺激社区成员将其他社区中的人视为争夺开源贡献者注意力的敌人,而不是在更大的挑战(推进软件开发艺术)中将其视为潜在的盟友。它还告诉那些喜欢其他语言的人,在一个将他们和他们的同龄人视为“敌对竞争对手”的社区里,他们是不受欢迎的。

事实上,我们希望有各种各样的跨平台开源编程语言可供选择,因为编程语言是思考的主要工具-使我们能够以一种清晰的方式表达我们的想法,以便甚至计算机也能理解它们。如果有人能找到一种大脑友好的语言,无论他们选择哪种语言,都能解决手头的问题,那就太好了。

所以,我对所以,我非常感兴趣,所以,我对 Python 该社区有三个具体的要求,以及一个更一般的建议。首先,我的要求是这样的。

  1. 如果我们要用社区本能来激励行动,我们应该避免使用恐惧,而应该使用自豪感。 当我们把恐惧作为一个激励因素时,就像在说,如果我们不去做 X如果您这样做,您将失去开发人员对 Python 担忧“等同于故意在免费开源贡献者中制造悲观情绪。 Python 中解决 X 问题。如果我们看一下 Y 语言,你可以看到他们有一个很好的方法来解决这个问题 X我们可以吸收我们可以吸收它我们可以吸收它 Python积极的态度让我们为自己的努力感到自豪,而不是贬低别人的努力,这有助于 Python 在社区内培养一种持续学习的文化,促进与其他社区的改善合作和共同发展。

  2. 不要对其他开源编程语言社区采取不屑一顾的态度,特别是当这些社区让人们能够解决自己的问题而不是等待商业软件供应商这样做的时候。 世界上大多数重要问题的解决都无利可图(因为遭受这些问题之苦的人并不富有,也无法左右机构基金的决策),因此我们应该鼓励那些试图解决这些问题的人,无论我们如何看待他们的技术选择。

  3. 如果我们认识一个刚刚开始学习编程的人,而他们选择了一门我们不喜欢的语言,我们应该支持他们的选择。 他们比我们更清楚什么是适合他们的,而适合我们的语言不一定适合他们。如果他们对最初的选择感到沮丧,或者甚至没有学习编程的动力,那么在那个时候推荐另一种编程语言。这个建议也适用于那些正在改善糟糕的网络安全状况的人:我们在处理本质上不安全的语言时采取的方法是改进操作系统的沙箱功能,逐步学习具有更好的本地安全属性的语言,并改进现有语言的默认行为,而不是列出从编程安全的角度来看为什么他们选择的语言是糟糕的选择来迷惑程序员。初学者。(如果有人部署由初学者编写的未经审查的软件来处理安全敏感任务,这不是开发人员的问题,而是部署人员的问题,他们没有对软件的来源和安全属性进行适当的尽职调查。)

我的广泛建议是针对那些遇到过 Python 核心计划的局限性,因此想要探索 Python 在这个建议中,人们可以使用的“思考工具”是。

开阔眼界开阔眼界开阔眼界

在开发 Python 在我们的核心计划过程中,我们要做的一件事是查看其他语言中解决了我们面临的问题的功能,看看是否有方法既可以合并它们,又可以使 Python 代码更易于阅读和编写。这意味着学习其他专注于特定软件开发风格的编程语言可以帮助我们使用 Python 当提高您对这种编程风格的理解时。

为了提供帮助,我在下面列出了一些值得探索的领域,以及可能加深您对这些领域的理解的语言。我尽可能地链接到维基百科的页面,而不是直接链接到该语言的主页,因为维基百科经常提供有趣的历史背景,当你出于教育目的学习一门新的编程语言时,值得了解这些背景,而不是直接用于实际应用。

虽然我了解这些语言中的大多数(并在开发生产系统时使用了几种语言),但这个推荐列表也包括我间接了解的语言(通常是通过阅读教程和设计文档,或者通过与我信任的人交谈来深入了解一种语言的优点和缺点)。

还有更多的语言应该放在列表中,但没有出现在列表中,所以下面的列表只是我感兴趣的语言(例如,我主要感兴趣的是 Linux、Android 和 Windows 生态系统,所以我丢弃了生态系统 Apple 生态中的 Objective-C 和 Swift 语言,而且我也不熟悉语言,再加上我不熟悉语言,另外我不熟悉语言,另外我也不熟悉 Processing 这种注重艺术的编程语言,是不可想象的,学习它们可以教会 Python (开发商什么)。(开发商什么)。

除了考虑一门语言可能教会你什么之外,如果你想要一个更全面的清单,请查看 IEEE Spectrum 关于编程语言的流行和增长的年度榜单。

工艺编程。程序性编程。C、Rust、Cython

Python 默认的执行模型是过程性的:从主模块的顶部开始,逐条语句执行。Python 对下面描述的所有数据和编程建模方法的支持都建立在这个基于流程的执行模型之上。

C 语言仍然是潜在程序性编程的无可争议的统治者。它是 Python 官方口译员和官方口译员以及 Linux 操作系统内核的核心实现语言。作为软件开发人员,学习 C 语言是更多地了解底层硬件的最佳方式之一-C 该语言通常被称为任何新的 CPU 在架构方面,第一个交叉编译的应用程序将是 C 编译器。

Rust 是一种相对较新的编程语言,由 Mozilla 创造。Rust 我们的目标是借鉴整个行业在不使用 C 在课程设计过程中遇到的所有经验教训 C 一种新的库互操作语言,提供对底层系统编程所需的硬件使用的精确控制,但使用不同的编译方法来进行数据建模和内存管理,从结构上消除了许多麻烦 C 程序中的常见缺陷(如缓冲区溢出、指针重复释放错误、空指针访问和线程同步问题)。经过作为嵌入式系统工程师的培训和早期专业经验,以及 Rust 是我见过的第一个看起来有可能将电流缩小 C 一种以语言和定制汇编代码为主的生态位新语言。

Cython 也是一种更原始的过程语言,但不同于 C 和 Rust 不同于公共语言,例如不同于公共语言,不同于公共语言,例如Cython 专门用于写作专门用于准备 CPython 扩展模块的。为了实现这一目标,Cython 被设计为 Python 允许程序员选择何时支持纯 Python 语法以获得何时支持语法的灵活性以在支持语法时获得灵活性以获得何时支持的灵活性 Cython 语法扩展,以生成在速度和内存效率方面与本机相当的语法 C 码等效码。

学习这些语言可以加深您在内存管理、算法效率、二进制接口(ABI)对诸如兼容性、软件可移植性和将源代码转换为操作系统等实践的洞察。

面向对象面向对象数据模型。面向对象面向对象数据模型。面向对象面向对象数据模型。Java、C#、Eiffel

编程的主要任务之一是对真实世界进行建模,而最流行的方法是提供本机语法来支持面向对象面向对象编程:对数据进行结构化分组并使用类方法来操作这些数据结构。

Python 本身是经过精心设计的,无需先编写自己的类就可以使用面向对象面向对象特性。并不是每种语言都采用这种方法——本小节中列出的语言都认为学习面向对象设计是使用该语言的必要条件。

在 20 世纪 90 90年代中后期,90年代中后期,80年代中后期Sun Microsystems 该公司开展了一场大规模的营销活动,Java 它已经成为许多高等院校计算机科学入门课程的默认语言。虽然在今天的许多教学活动中,Java 已经被 Python 它仍然是开发人员在他们的程序中使用的最流行的语言之一。还有一些通用的 JVM(Java (虚拟机)运行时语言,诸如(虚拟机)运行时语言,诸如(虚拟机)运行时语言,例如 Python 的 Jython 实现。Android 系统的 Dalvik 和 ART 环境是以环境为基础的,环境是以 Java 开放的 API 二次开发。二次开发。

C# 在许多方面它与在许多方面相似它在许多方面相似 Java 相似,在 Sun 而微软未能解决他们对微软 Java 实现(即 J++业务差异后)业务差异后)业务差异后C# 成为了另一种选择。喜欢 Java 除了是开发人员开发程序的流行语言外,还有其他语言共享 .NET CLR(公共语言运行时),包括(公共语言运行时),包括(公共语言运行时),包括 Python 的 IronPython 实现 (最早的 IronPython 1.0 核心组件被提取到独立于语言的 .NET (动态语言运行时库)。很长一段时间以来,. NET 它是一种奉献,它是一种专业,它是一种特殊用途,它是一种特殊 Windows 技术,而技术,和技术,而技术,和 mono 作为跨平台的开源实现,但微软 2015 在今年年初转向开源生态系统战略。

与此列表中的大多数语言不同,我不推荐使用 Eiffel然而,我仍然建议学习它,因为它教会了我很多关于好的面向对象设计的知识。然而,我仍然推荐学习它,因为它教会了我很多关于好的面向对象设计的知识,例如它相信“可验证的正确性”是应用程序的设计目标。(学习 Eiffel 这也让我明白为什么“可验证的正确性”不是大多数软件开发的设计目标,因为可验证的正确软件确实不能很好地处理多义性,并且根本不适用于您不清楚相关约束但需要给自己留出足够的回旋余地以能够迭代开发(以找到更具体的细节)的情况。(了解更多具体细节。)

学习这些语言可以让您深入了解继承模型、契约设计、类的不变性(class invariant)、前置条件、后置条件、协方差、倒置、类方法解析序列、泛型编程以及 Python 类型系统的概念。还有许多标准库模块和第三方框架使用这种“可见的面向对象”设计风格,例如 unittest 和 logging 模块和模块,以及 Django 框架中的基于类的视图。框架中的基于类的视图。

面向对象面向对象 C 派生:C++、D


CPython 运行时环境可以被认为是一个“具有 C编程环境--它的核心,编程环境--它的核心。编程环境-在它的核心,编程环境-在它的核心。CPython 使用 C 一种实现面向对象编程的方法,即定义 C 结构来保存相关数据,并将该结构的一个实例作为第一个参数传递给函数,然后该函数对数据进行操作(这是 CPython C API 中全能的 PyObject * (指针)。此设计模式对应于 Python 级别,这是实例方法的显式级别,它是显式实例方法 self 参数和显式用于类方法参数和显式参数以及显式 cls 参数。

C++ 目标是跟上,目标是保持关系 C 该语言与源代码完全兼容,同时添加了更多高级功能,如支持本机面向对象编程和基于模板的元编程。它的冗长和编程难度是出了名的(尽管 2011 (语言标准的年度更新解决了许多糟糕的问题),但它也是许多领域编程的首选,包括 3D 用于跨平台应用程序的建模和开发框架的图形引擎(例如 Qt)。

D 这种语言也很有趣,因为它与 C++ 关系类似于关系,关系类似于关系之间的关系 Rust 与 C 关系:它的目标是保持关系:它的目标是保持 C++ 它的大多数令人向往的功能,同时避免了它的许多问题(如缺乏内存安全)。不像 Rust,D 并不是从头开始设计的一种新的编程语言--恰恰相反。D 是 C++ 衍生品,虽然它不是衍生品,虽然它不是衍生品,尽管它不是衍生品,尽管它不是 C++ 与严格相同与严格相同与严格一如既往 C 超集,但它遵循的设计原则是任何落入 C 和 D 必须在两种语言中行为一致的公共代码子集。

通过学习这些语言,您可以更深入地了解将高级语言与底层语言相结合的功能 C 组合运行时模型的复杂性。学习 C++,在 Python 中操作用 C++ 在编写库和工具包时,它也可能很有帮助。

面向数组的数据处理。面向数组的数据处理。面向数组的数据处理。面向数组的数据处理。MATLAB/Octave、Julia

面向数组的编程旨在支持数值编程模型:基于矩阵代数和相关数值方法的模型。

虽然 Python 的标准库不直接支持这一点,但是 Python 设计时考虑到了面向数组的编程,并专门为第三方设计 NumPy 该库和类似的面向数组的工具添加了一系列语法和语义功能。

在许多方面,在许多方面。在许多方面,Python 科学技术栈科学技术栈 被用作商业被用作商业被用作商业 MATLAB 后者广泛应用于科学和工程领域的建模、仿真和数据分析。GNU Octave 是一个开源解决方案,旨在兼容 MATLAB 代码的语法允许将这两种方法与面向数组编程进行比较。

Julia 是另一种相对较新的语言,它专注于面向数组的编程和基于类型的函数重载。

学习这些语言,这样你就能理解 Python 科学技术栈科学技术栈,以及有机会通过像 OpenCL 和 Nvidia 的 CUDA 这项技术用来探索硬件级别的并行执行 Apache Spark 和专用于 Python 的 Blaze 了解分布式数据处理。学习分布式数据处理。来了解分布式数据处理。

统计数据分析。统计数据分析。R

随着对大型数据集的敞口越来越大,对分析工具的需求也越来越大,以灵活地处理它们。R 编程语言就是这样的工具,特别注重统计数据分析和可视化。

学习 R 它会让你洞察它会让你洞察它让你洞察它会让你洞察 Python 科学技术栈的统计分析能力,特别是 pandas 数据处理库和数据处理库以及 seaborn 统计可视化库。统计可视化库。统计可视化库。

计算性管道建模。计算管道建模。计算管道建模。Haskell、Scala、Clojure、F#

面向对象面向对象数据建模和面向数组的数据处理主要关注静态的数据,无论是以命名的属性形成集合的形式,还是以结构化数据形成数组的形式。

相比之下,函数式编程语言强调以计算流的形式对动态数据进行建模。即使是学习函数式编程的基础知识,也可以极大地改进数据转换操作的结构,甚至在其他过程性、面向对象或面向数组的程序中也是如此。

Haskell 是的函数编程语言是的函数编程语言 Python 的设计产生了重大影响,最显著的是在 Python 2.0 中引入的列表派生中引入的列表派生

Scala 它是(可疑的)是(可疑的)它是(可疑的)JVM 函数式编程语言,加上函数式编程语言, Java、Python 和 R,它们是 Apache Spark 数据分析平台的四种主要编程语言。虽然 Scala 旨在支持函数式编程,但其语法、数据模型和执行模型也被设计为最小化 Java 程序员使用的门槛(因此有所谓的“可疑”--事实上,因为Scala (最好归类为具有强大函数式编程支持的面向对象编程语言)。

Clojure 它是基于它的另一个 JVM 作为函数式编程语言的函数式编程语言是 Lisp 一种方言的。它出现在此列表中是因为它是 Python 的 toolz 函数式编程工具包的灵感。

F# 这不是一种我自己特别熟悉的语言,但它可以作为 .net CLR(公共语言运行时)推荐使用函数式编程语言,因此仍值得关注。

学习这些语言会让你对学习这些语言有更深入的了解,这样你就可以获得洞察 Python 自己的计算管道建模工具,包括容器导数、生成器、生成器表达式functools 和 itertools 标准库,以及第三方标准库和第三方标准库,以及第三方标准库和第三方 Python 诸如函数工具包的函数工具包,诸如诸如函数工具包的函数工具包 toolz。

事件驱动编程。事件驱动编程。JavaScript、Go、Erlang、Elixir

计算管道是处理数据转换和分析问题的一种很好的方法,但许多问题需要程序作为持久服务运行,等待事件发生,然后处理这些事件。在这种服务中,通常需要同时处理多个事件,以便能够同时容纳多个用户(或多个操作)。

JavaScript 最初和最初一样,它被用作 Web 是作为浏览器的事件处理语言开发的,允许Web开发人员在本地响应客户端操作(如鼠标点击和击键)和事件(如网页完成呈现时)。所有现代浏览器都支持它,并且它可以与 HTML5 域对象模型(域对象模型(DOM合在一起,它们已经成为定义用户界面外观和行为的事实标准。

Go 是一款谷歌设计,旨在创建高度可扩展的 Web 特定于服务的语言,并已被证明是开发命令行应用程序的优秀语言。从编程语言设计的角度来看,Go 最有趣的方面是在其核心并发模型中使用通信顺序进程(Communicating Sequential Processes)概念。

Erlang 是爱立信设计的一种专门语言,用于创建高度可靠的电话交换机和类似设备。它被用来开发流行的 RabbitMQ 消息代理中间件。消息代理中间件。Erlang 使用 Actor 模型作为核心并发原语,在执行线程之间传递消息,而不是让它们直接共享数据。尽管我从来没有用过 Erlang 编程,但我的第一份全职工作涉及 Actor 的 C++ 并发框架是由一位前爱立信工程师开发的,除了我自己开发的一个这样的框架之外,它基于德州仪器(T.N:行情)(T.N:行情)和微软(T.N:行情).Texas Instrument轻量级的)轻量级的)轻量级的 DSP/BIOS 运行时(Now Runtime(当前运行时(Now)运行时(Current)) TI-RTOS)里面的 TSK (Task)和 MBX (Mailbox)原语。

Elixir 显示在此列表中,因为它被设计为在 Erlang VM ON提供与ON相同的信息,提供与ON相同的信息 Erlang 相同的并发语义,加上一系列语言级别的功能,创建了一个更全面的环境,更有可能吸引其他语言,如 Python、Java 或 Ruby 开发商。开发商。开发商。

学习这些语言会让你对学习这些语言有更深入的了解,这样你就可以获得洞察 Python 支持并发和并行,包括本机并发、基于生成器的并发和concurrent.futures 和 asyncio 标准库模块、第三方Web服务开发框架(例如 twisted 和 Tornado)、Django 中引入的 channel 概念、GUI 事件处理在框架中循环。事件处理在框架中循环。框架中的事件处理循环。

渐变类型。渐变类型。渐变类型。TypeScript

在 Python 3.5 在新的引入中出现的较有争议的功能之一 typing 模块,它提供模块,它提供 Python ECO带来了支持渐变类型的标准词典。

Python猫注:Gradual typing 是 Jeremy Siek 和 Walid Taha 在 2006 它是2001年提出的一种理论,它允许动态类型和静态类型同时出现在程序中。《中国》中有人将其翻译为《渐近型》、《渐近型》、《渐近型刻板印象》、《动静混合型》等,但我觉得还不够好。 渐变类型 也许这是我的第一次创作,可能是从我的第一次借来的,可能是从我的第一次借来的,从我的第一次借来的 Photoshop 颜色的渐变表示从动态类型到静态类型的过渡(或共存)。渐变这个词的含义是打破状态的边界(如大小、距离、明暗),以实现中性状态。

对于那些主要来自于那些主要从那些人那里拿到钱的人对于那些主要来自 C、C++ 和 Java 对于在这种语言中接触静态类型的人来说,这似乎是一个出人意料的糟糕特性(因此引起了争议)。

微软的 TypeScript 为 Javascript 该程序提供了渐变类型,因此可以更好地解释概念。TypeScript 将代码编译成代码将被编译成代码被编译成 JavaScript 代码(然后不包括运行时类型检查),流行的 JavaScript 库的 TypeScript 注记在专用注记中维护,在专用注记中维护将在专用注记中维护 DefinitelyTyped 仓中。

正如 Chris Neugebauer 在澳大利亚 PyCon 演讲 中指出的,这非常像中指出的 Python 与 typeshed 类型提示库,以及像类型提示库这样的库,以及像 mypy 这类推理与分析工具之间的关系。

从本质上讲,在本质上TypeScript 和 Python 中的类型提示是编写特定类型测试的所有方法,要么使用单独的文件(与普通测试一样),要么嵌入代码体(与静态类型语言中的类型声明一样)。对于这两种情况,您可以运行单独的命令来检查其余代码是否与已添加的类型断言一致(对于 TypeScript,它被编译成这个被编译成,它被编译成 JavaScript 在当时隐式发生;for隐式发生;for隐式发生;for Python (类型提示,这是一个完全可选的静态分析任务)。

动态元编程。动态元规划。Hy、Ruby

C、C++、C# 和 Java 语言学习者,如语言学习者 Python 其中一个经常令人不安的特点是“代码即数据”(code is data):函数和类等都是运行时对象,可以像处理任何其他对象一样进行操作。

Hy 是一种 Lisp 方言可以在方言中同时使用,也可以在方言中同时使用 CPython VM 和 PyPy VM 上运行。Lisp 而且它的方言把“代码即数据”的概念发挥到了极致,比如 Lisp 代码由描述要执行的操作的嵌套列表组成(语言本身的名称代表列表处理器“LISt Processor”)。Lisp 样式语言的强大之处在于,它使编写自己的特定于域的代码变得非常容易。Lisp 风格语言的最大缺点是,它们使编写自己的领域特定代码变得非常容易,但这可能会导致每个人编写的代码变得难以阅读。

Ruby 语言在许多方面它与在许多方面相似它在许多方面相似 Python 是相似的,但对于是相似的,但对于相似的,但对于 Python 中“支持但不鼓励”的动态元编程特性Ruby 另一方面,社区是相对开放的。这包括向现有类定义添加新方法,以及使用闭包实现核心语言构造,如迭代。

学习这些语言将使您深入了解 Python 自己的动态元编程特性,包括函数和类装饰器、猴子补丁unittest.mock 标准库和标准库之类的库,以及 wrapt 这样的第三方对象代理模块。)我不知道该学哪种语言才好 Python 的元类制,如果有人在这方面有什么建议,请在评论中告诉我。Python (元类驱动许多功能,例如核心类型系统、抽象基类、枚举类型和渐近类型表达式的运行时计算。)

务实地解决问题。务实解决问题。解决实际问题。Lua、PHP、Perl

主流编程语言并不是孤立存在的--它们作为出版商(公司和社区组织)、终端用户、框架开发人员、工具开发人员、教育工作者等更大生态系统的一部分而存在。

Lua 是一种流行的编程语言,作为脚本引擎嵌入到大型程序中。一个标志性的例子是,它被魔兽世界游戏用来编写客户端插件,而且它还嵌入了许多 Linux 由发行版使用的发行版中使用的发行版使用 RPM 组件。使用 CPython 相比,Lua 运行时大小通常仅为运行时大小通常仅运行时大小通常仅为运行时大小 CPython 百分之一,由于其较弱的自省能力,它更容易与程序的其余部分和服务器的操作系统隔离。Lua 社区对 Python 生态学的显著贡献之一是生态学的显著贡献 LuaJIT FFI(Foreign Function Interface 外部函数接口),该接口由 CPython 和 PyPy 通过,作为支持通过,作为支持 JIT 的 cffi 接口库的基础。接口库的基础。

PHP 是另一种流行的编程语言,如 Linux-Apache-MySQL-PHP LAMP 在技术堆栈中“在技术堆栈中”技术堆栈中P并因专注于发电而声名鹊起,而崛起则是因为专注于发电 HTML 页面,在虚拟专用服务器的早期(Virtual Private Server,简称 VPS) 在供应商中广泛使用。尽管它的许多概念设计缺陷让人绝望,但它现在是几个非常受欢迎的开源软件之一 Web 服务的基础,包括 Drupal 内容管理系统、内容管理系统、Wordpress 博客引擎和维基百科的博客引擎和维基百科 MediaWiki 引擎。PHP 它还支持一些重要服务,如它还支持重要服务,如它还支持重要服务,如 Ushahidi 平台,这是一个开源的社会新闻分发社区。

像 PHP 一样,Perl 也是基于 Linux 和崛起。但是有了 PHP 专门作为 Web 开发平台不同。开发平台不同。开发平台各不相同。开发平台不同,Perl 是为系统管理员提供的一种基于文本的工具 Linux 操作系统,它使用正则表达式将命令的输出转换为字符串并执行操作。什么时候 sh、awk 和 sed 当两个人都不能完成某些任务时,当两个人都不能完成任务时Perl 出现了,并派上了用场。出现并派上用场。出现了,并派上了用场。

学习这些语言不太可能在编程语言设计方面产生任何美观或优雅的概念。学习它们最有可能导致理解编程语言在现实中是如何分发和采用的,以及这些依赖于机会、历史意外事件和出版商降低在其系统中默认集成的使用门槛的程度,而不是取决于语言本身的固有功能。

特别是,它可以提供对以下方面重要性的洞察CKAN、OpenStack NFV、Blender、SciPy、OpenMDAO、PyGMO、PyCUDA树莓派基金会和树莓派基金会和 Python 被大量商业组织采用,以保护他们 Python 对生态的持续投入。对生态的持续投入。对生态的持续投入。对生态的持续投入。

编程思维。编程思维。程序性思维。Scratch、Logo

我经常与函数式和面向对象编程的倡导者交谈,他们声称这种语言像过程性语言一样容易学习。

如果我们谈论通过嵌入式编程(例如机器人)进行教学,在软件中建模的对象具有真实世界的对应物,例如学生可以触摸的传感器、电机和继电器,那么我会争辩说 OOP 的人都有一定的正确性。他们有一定的合法性。有一些真相的人。那些有一定道理的人。

但对于其他人来说,我现在有一个标准的挑战:拿起一本食谱,将其中一份食谱翻译成你认为容易学习的编程语言,然后找到一个懂食谱中语言的学生,让他们遵循翻译后的食谱。事实上,他们并不需要真正做到这一点--只需做一个思维实验,就能意识到他们通过声称这很容易学到了多少先验知识。(我期待看到学术研究人员在现实中做这样的研究--我真的很想看到结果)

解决这个问题的另一种方法是学习实际上被用来教孩子编程思考的语言。

最受欢迎的是最受欢迎的是 Scratch它使用拖放式编程界面,允许学生操纵独立的图形环境,在该环境中,电子图形可以移动并对环境中的事件做出响应。喜欢 Scratch 这样的图形环境相当于我们用来教孩子读写的图画书。

使用特殊教育语言来操纵图形环境的想法并不新鲜;最早的例子之一是 1960 发明于20世纪90年代发明于20世纪60年代发明于 Logo 环境。在 Logo 在(和类似的环境中,例如在(和类似的环境中(和类似的设置,例如 Python 的 turtle 模块),您主要处理的是一只“海龟(turtle),你可以通过画线条来指示它移动和修改它的环境。这样,命令序列、重复和状态(例如,“开始”、“向下”)可以基于一个人的自然直觉(“想象你是乌龟,如果你向右转 90 学位怎么办?“)学位怎么办?”)(学位会发生什么变化?)(学位会发生什么变化?)

复习和重新学习这些语言有助于有经验的程序员放弃固化的想法:他们使用的概念可以提醒我们,这些概念是我们今天理所当然的,但初学者需要首先学习。当我们这样做时,我们能够更好地与学生和其他初学者打交道,因为我们更有可能解开逻辑的链条,不再忽视学习所必需的步骤。

推荐阅读:
入门: 最完整的零基学习最全面的零基学习最完整的零基学习Python的问题  | 从零开始学习从零基础学习从零基础学习8个月的Python  | 实战项目 |学Python这是捷径,这是捷径,这是捷径
干货:爬行豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析最佳球员分析 |   从万众期待到口碑惨败!唐探3令人失望  | 笑新伊田图龙记笑新伊田图龙记笑新伊田图龙记 | 谜语之王回答灯谜之王灯谜之王谜语之王 |用Python人山人海素描图人山人海素描图人山人海 Dishonor太火了,我用机器学习做了一个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python日常酷跑游戏日常酷跑游戏日常酷跑游戏!
AI: 会写诗的机器人会写诗的机器人会写诗的机器人 | 给图片上色给图片上色给图片上色 | 预测收入 | 《耻辱》太火了,我用机器学习做了一部迷你推荐系统电影
小工具: Pdf转Word易于修复表单和水印!易于处理的表单和水印!易于修复表单和水印!简单的表格和水印! | 一键把html将页面另存为网页另存为网页另存为pdf!|  再见PDF提款费!提款费!提款费!提款费用! | 用90构建最强大的代码行构建最强大的代码行构建最强大的代码行PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一个固定的低成本机票提醒!制作一张别针的低价机票提醒! |60代码行做了一个语音墙纸切换,天天见女士!

年度弹出文案年度弹出文案年度爆炸性文案

  • 1). 卧槽!Pdf转Word用Python轻松搞定 !

  • 2).学Python闻起来好香!我用100一行代码做了一个网站,帮助人们做了一行代码,做了一个网站,帮助了人们做了一行代码,帮助了人们PS旅行图片赚鸡腿吃旅行图片赚鸡腿

  • 3).第一次播放量过亿,火爆全网,我分析了《波妹》,发现了这些秘密

  • 4). 80一行行代码!使用Python让救济金做正确的事做做的人做好事的人A梦分身

  • 5).你必须掌握的东西你必须掌握20个python代码,简短而紧凑,永无止境的有用代码,简短而甜蜜,永无止境的有用的代码,简短而紧凑,永无止境的使用代码,简短而甜蜜,永无止境的用途

  • 6). 30个Python古怪技能集古怪小贴士收藏古怪技能集

  • 7). 我总结的80《菜鸟学习专页》《菜鸟学习专页》《菜鸟学习》Python精选干货.pdf》,都是干货

  • 8). 再见Python!我要学Go了!2500词深度分析词深度分析词深度分析 !

  • 9).发现一只舔狗的福利!这Python爬虫神器太酷了,不能自动下载女孩的照片

点击阅读原文点击查看点击点击阅读点击阅读原文点击查看200个Python案例!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门