探讨Python的优缺点及入门方法

描述

Python 今年 30 岁了,但你不会知道。根据 2019 年 Stack Overflow 调查,高级动态编程语言仍然是增长最快的主要编程语言,超过了 Java,并且是人工智能开发人员最想要的语言。2021 年 1 月,Python 创纪录地第四次获得 TIOBE 年度最受欢迎编程语言奖。该奖项授予一年内最受欢迎的编程语言。

这就引出了一个问题:为什么有这么多开发人员可以从 500 多种语言中进行选择,而且每年都会编写更多的语言?答案可能在于 Python 的简单性。

许多语言都承诺学习曲线短而平坦,但今天的开发人员需要更大的灵活性。当他们尝试不同的堆栈和技术时,他们很快意识到 Python 几乎可以轻松完成所有他们需要的事情。这部分是因为与其他语言相比它使用起来多么容易。一个初出茅庐的开发人员可以在几分钟内构建和运行一个简单的 Hello World Python 应用程序。但通常达成交易的是该语言的内置灵活性,它支持多种编程范式,并且能够以更少的工作量进行开发。

Python 从一开始只是一种便于简单任务编程、自动化脚本和快速应用程序原型设计的工具,现已上升到一流语言的地位。例如,Instagram 最近在语言上加倍下注,选择在 10 个月内分三个阶段将其核心堆栈升级到 Python 3,尽管其母公司 Facebook 严重依赖 PHP:超文本预处理器 (PHP) 的核心架构。经过分析,Instagram 简单地确定 PHP 在性能方面没有显着优势,尤其是随着该语言的每个新版本都在不断提高速度。也可能是 Python 的人工智能和机器学习能力是一个考虑因素。

微软似乎也认识到 Python 的重要性。2020 年 11 月 12 日,创建 Python 的荷兰程序员 Guido Van Rossum 宣布他即将退休,加入微软的开发人员部门。其他依赖 Python 的公司包括亚马逊、工业光魔、Netflix、Reddit、谷歌和 Spotify。由于诸如此类的重击者推动了全球对 Python 开发人员的需求,它不会很快消失,因此每个开发人员都考虑将 Python 添加到武器库中是有意义的。

复杂世界的简单解决方案

开发团队尝试使用最新技术构建复杂系统只是为了中途放弃他们的努力并返回到更简单的编程语言(如 C++ 或 Python)并不是闻所未闻的。有时,需要的是大型柴油发动机,而不是花里胡哨的双涡轮增压 4 缸,如果你能在规划阶段弄清楚这一点,它可以为每个参与者节省很多心痛,时间,还有钱。

人工智能的兴起让开发人员利用 Python 在数据科学、数据分析等方面的潜力。Python 的子集机器学习和深度学习 (DL) 是最简单的语言如何解决最初创建程序时不存在的问题的绝佳示例。

聪明的开发人员会为每个问题找到最简单的解决方案,无论它最初看起来多么复杂。

AI

亚马逊采用了这种方法,并将赌注押在 Python 的机器学习能力上,选择它作为其 DeepLens 设备库的核心。Python 看到了简化机器学习任务的真正需要,这些任务通常需要实现高维数据和手动流程。

Python 的强大功能极大地简化了图像识别、特征提取和对象检测等任务。这使 AWS DeepLens 项目能够使用神经网络通过计算机视觉项目、教程和动手探索使用开发人员可以触摸和感觉的物理设备(例如 AWS DeepLens 相机)进行学习和预测。

AWS DeepLens 的设备库由一组不同的 Python 模块组成,这些模块公开对象和各种设备操作方法。结果是深度学习模型可以在相机上本地运行,以分析并对其所看到的内容采取行动。即使您从未打算在生产中使用该平台,也可以拿起其中一台相机并探索模块。尝试使用诸如此类的工具可以帮助开发人员磨练他们的手艺。

为什么Python Excel?

Python 是数据分析和数字运算的理想选择,这解释了为什么大多数涉及 ML 和数据科学的库都有 Python 接口。但是 Python 不仅仅是开始学习这些学科的好方法。开发人员可以选择采用最适合他们需求的范式:函数式、命令式、面向对象、结构化或反射式。Python 支持所有五个。

Python 在简化复杂性方面处于最佳状态。例如,在处理数字时,Python 擅长极快并且可以使用复杂的数学。它还具有简单的语法来实现诸如两个字符串相加之类的基本计算,一直到构建具有其固有复杂性的 ML 模型。

简单也意味着用户编写更少的代码。Python 支持预定义的包,实际上消除了算法编码。对于需要的代码,理解、更改、复制和共享都大大简化了。这有助于 Python 开发人员社区通过免费和高效的算法、想法和工具交流而蓬勃发展。

Python 很灵活。Python 提供了选择面向对象编程 (OOP) 或脚本的选项,它可以在多个平台上运行,包括 Windows、macOS、Linux 和 Unix。使用 PyInstaller 将代码从一个平台移植到另一个平台。

Python 有大量的社区、组和论坛,程序员可以在其中帮助解决问题。许多资源可供初学者和专业人士使用,因此您永远不会孤单。数百个预建库也可用于实现 ML 和 DL 算法。安装包通常只需要一个命令。

免费、简单和开源,Python 已进入一些最复杂的技术,并被行业巨头、开发人员、数据科学家、ML 工程师和初学者等使用。

流行的 Python 库

一门优秀的语言需要大量的库选择才能茁壮成长,这也是 Python 成为人工智能最流行的编程语言的主要原因之一。Python 库模块包含基本级别的项目,无需每次都对其进行编码。

例如,NumPy 有助于高效管理多维数组,并具有出色的随机功能。它还包含用于集成 C/C++ 和 Fortran 代码的工具。Pandas 帮助处理 Python 中的二维数据表。尽管 SQL 也这样做,但 Pandas 更容易在代码中执行。仅这两个库就可以节省开发人员的时间。

Matplotlib 虽然不是最容易使用的,但将为开发人员节省大约六个可重复使用的基本折线图和散点图的代码块。使用 Matplotlib 可以非常快速地创建图表、直方图和绘图,以便更好地理解数据、有效呈现和可视化。

Scikit-Learn 是 Python 程序员应该用于 AI /ML 的第一个库。它处理回归方法、分类方法和聚类、模型验证和模型选择,并使降维和特征提取变得轻而易举。转向更高级的,Scipy(不要与 Scipy 堆栈混淆)为集成、插值和优化等复杂的机器学习过程提供核心数学方法。Scikit-Learn 严重依赖 Scipy 库,因此将其移至列表顶部。

使用 Python 创建快速、干净的原型

创建原型通常需要数小时的编译、调试、编辑、重新编译、调试……你懂的。Python 是原型设计的理想选择,因为它只允许编写和测试几行代码,而无需编译或使用 Makefile。它是高级别的,因此内存管理或垃圾收集等低级细节不是问题。

开始使用模块并从那里构建。存在许多简单且有据可查的 Python 模块。该语言非常流行,用户如此之多,以至于一个小组中的几个人可能会阅读您的代码并帮助您将其完成。因为您的 Python 项目也将在大多数平台上运行,所以开发人员不需要分支代码或维护单独的存储库。

值得探索的 Python 工具

使用库可以帮助显着加快开发速度。很有可能,有人已经编写了所需的功能。开发人员可以将 Python 的内置成像库或 MayaVi 和 VTK 3D 可视化工具包用于科学和数字应用程序。或者,开发人员可以考虑将 ScientificPython 和 Numeric Python 用于数值和科学应用程序。

很有可能,有一个库可以帮助开发人员快速跟踪项目。以下是值得探索的五个社区最爱的列表。

Selenium 构成了无数浏览器自动化工具、应用程序编程接口 (API) 和框架的核心技术。它使 Web 应用程序自动化以进行测试。Selenium 使数据抓取项目更容易,并且通常将复杂的例程减少到几行代码。

Gooey 只需几行代码即可将 Python 命令行程序转变为具有图形用户界面的成熟应用程序,从而使共享工具变得更加容易,无论技能水平如何。Gooey 还提供简单的日期和时间输入。

Pyinstaller 使用传输压缩创建小型、高效、独立的可执行文件。它是多平台的,极大地简化了可执行文件的创建。

PYNQ(Zynq 的 Python 生产力)利用 Xilinx 器件在应用中的优势,无需使用 ASIC 风格的设计工具来设计可编程逻辑电路。

英特尔 Python 分发版可加速 Python 并加速计算包。它使开发人员可以创建和加速可扩展的应用程序和服务,释放现代硬件的力量,并轻松实现算法。

Python 的局限性

引用一位系统架构师朋友的话:“项目的完美语言就是项目的完美语言。”

我们已经讨论了 Python 的许多优势,尤其是在数据科学和脚本领域的数字运算方面。但是没有一种语言对所有应用程序都是完美的,Python 也不例外。了解 Python 的局限性将有助于开发人员更好地确定它是否适合他们的项目。Python 在性能、应用程序打包和项目管理方面受到影响,总结了它的局限性。其他缺点包括:

Python 是一种高级语言。因为它比低级语言更远离硬件,所以速度较慢。

Python 不适合移动开发。

Python 使用灵活的数据类型,无法将其用于内存密集型任务。

高内存消耗。

Python 的数据库访问层是原始的。对于需要复杂遗留数据平滑交互的企业来说,这不是一个好的选择。

因为 Python 是动态类型的,所以它需要更多的测试并且只有在运行时才会出现错误。

尽管每种方法都可以采用优雅的解决方法,但对于依赖于读取和操作任务关键型应用程序的遗留数据的移动开发或企业而言,Python 通常不是正确的选择。

开始你的第一个 Python 项目

任何语言的入门都需要时间,虽然 Python 很容易上手,但建议初学者参考尽可能多的资源。要加入的一个学习资源是 PythonistaCafe,一个点对点学习社区。这个仅限邀请的小组提供了大量专门针对 Python 的练习、活动和聚会,所有这些都在随处可见的最佳运行环境之一中进行。

请务必查看尝试解决特定问题的项目。以下是要查看的开源项目的简短列表:

OpenCog 正在创建具有人类能力的人工智能 (AGI) 项目。它用于 SingularityNET 项目和 Hanson Robotics 项目,为 Sophia 和其他机器人提供智能。

人工智能研究所(不来梅大学计算机科学学院的一部分)研究人工智能并举办旨在推进人工智能技术的研讨会和活动。他们致力于支持现有的人工智能项目和教育。

Zulip 被称为“世界上最高效的团队聊天”,每天可以处理数千条实时消息。Zulip 为团队提供了清晰的组织、异步通信和其他巨大优势。

Magenta 是一个 Python 库和研究项目。它的目标是使用人工智能来创作音乐和艺术。它可以创建图像、歌曲,甚至生成绘图,使艺术家能够探索新的创作方式。

MailPile 是一个创新的电子邮件客户端,专注于安全和私密的通信。它速度快,没有广告,并带有强大的搜索功能、隐私和加密功能。

概括

开发人员学习新语言的三个主要原因:

因为他们必须:也许与您合作的开发团队决定用 Python 构建一些东西,或者您正在申请的工作需要有 Python 经验的开发人员。

为了好玩:如果你感到无聊或只是想尝试 AI、ML 或 DL,Python 会叫你的名字。

解决问题:也许您在项目中使用的语言遇到了障碍。Python 可能值得一试。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分