From 47e77fbf819329f42103b0aff91b4b4b5d1dadc7 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Mon, 20 Aug 2018 23:38:36 +0800 Subject: [PATCH] PRF:20171009 Considering Pythons Target Audience.md @qhwdw @pityonline --- ...1009 Considering Pythons Target Audience.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translated/tech/20171009 Considering Pythons Target Audience.md b/translated/tech/20171009 Considering Pythons Target Audience.md index ff63940da5..65f6305864 100644 --- a/translated/tech/20171009 Considering Pythons Target Audience.md +++ b/translated/tech/20171009 Considering Pythons Target Audience.md @@ -5,13 +5,13 @@ Python 是为谁设计的? 几年前,我在 python-dev 邮件列表中,以及在活跃的 CPython 核心开发人员和认为参与这一过程不是有效利用个人时间和精力的人中[强调][17]说,“CPython 的发展太快了也太慢了” 是很多冲突的原因之一。 -我一直认为事实确实如此,但这也是一个要点,在这几年中我也花费了很多时间去反思它。在我写那篇文章的时候,我还在波音防务澳大利亚公司(Boeing Defence Australia)工作。下个月,我离开了波音进入红帽亚太(Red Hat Asia-Pacific),并且开始在大企业的[开源供应链管理][18]方面收获了再分发者redistributor层面的视角。 +我一直认为事实确实如此,但这也是一个要点,在这几年中我也花费了很多时间去反思它。在我写那篇文章的时候,我还在波音防务澳大利亚公司(Boeing Defence Australia)工作。下个月,我离开了波音进入红帽亚太(Red Hat Asia-Pacific),并且开始在大企业的[开源供应链管理][18]方面取得了再分发者redistributor层面的视角。 ### Python 的参考解析器使用情况 我尝试将 CPython 的使用情况分解如下,尽管看起来有些过于简化(注意,这些分类的界线并不是很清晰,他们仅关注于考虑新软件特性和版本发布后不同因素的影响): -* 教育类:教育工作者的主要兴趣在于建模方法的教学和计算操作方面,不会去编写或维护生产级别的软件。例如: +* 教育类:教育工作者的主要兴趣在于建模方法的教学和计算操作方面,*不会去*编写或维护生产级别的软件。例如: * 澳大利亚的[数字课程][1] * Lorena A. Barba 的 [AeroPython][2] * 个人类的自动化和爱好者的项目:主要且经常是一类自写自用的软件。例如: @@ -31,7 +31,7 @@ Python 是为谁设计的? * 大多数的公共 PaaS 无服务器环境(Heroku、OpenShift、AWS Lambda、Google Cloud Functions、Azure Cloud Functions 等等) * 长周期性升级的标准的操作环境:对其核心组件进行常规升级,但这些升级以年为单位进行,而不是周或月。例如: * [VFX 平台][6] - * 长期支持LTS的 Linux 分发版 + * 长期支持(LTS)的 Linux 分发版 * CPython 和 Python 标准库 * 基础设施管理和编排工具(如 OpenStack、Ansible) * 硬件控制系统 @@ -47,8 +47,8 @@ Python 是为谁设计的? * 多用户游戏,和其它明显处于持续状态还没有被定义为 “终止” 的游戏 * 有自动升级功能的嵌入式软件系统 * 共享的抽象层:在一个特定的问题领域中,设计用于让工作更高效的软件组件。即便是你没有亲自掌握该领域的所有错综复杂的东西。例如: - * 大多数的运行时runtime库都归入这一类的框架(如 Django、Flask、Pyramid、SQL Alchemy、NumPy、SciPy、requests) - * 适合归入这一类的许多测试和类型接口工具(如 pytest、Hypothesis、vcrpy、behave、mypy) + * 大多数的运行时runtime库和框架都归入这一类(如 Django、Flask、Pyramid、SQL Alchemy、NumPy、SciPy、requests) + * 适合归入这一类的许多测试和类型推断工具(如 pytest、Hypothesis、vcrpy、behave、mypy) * 其它应用程序的插件(如 Blender plugins、OpenStack hardware adapters) * 本身就代表了 “Python 世界” 基准的标准库(那是一个[难以置信的复杂][7]的世界观) @@ -61,11 +61,11 @@ Python 是为谁设计的? 把 Python 作为一种脚本语言来使用的开发者的典型特性包括: * 主要的工作单元是由一个 Python 文件组成的(或 Jupyter notebook),而不是一个 Python 和元数据文件的目录 -* 没有任何形式的单独的构建步骤 —— 是作为一个脚本分发的,类似于分发一个独立的 shell 脚本的方式 +* 没有任何形式的单独的构建步骤 —— 是*作为*一个脚本分发的,类似于分发一个独立的 shell 脚本的方式 * 没有单独的安装步骤(除了下载这个文件到一个合适的位置),因为在目标系统上要求预配置运行时环境 * 没有显式的规定依赖关系,除了最低的 Python 版本,或一个预期的运行环境声明。如果需要一个标准库以外的依赖项,他们会通过一个环境脚本去提供(无论是操作系统、数据分析平台、还是嵌入 Python 运行时的应用程序) * 没有单独的测试套件,使用 “通过你给定的输入,这个脚本是否给出了你期望的结果?” 这种方式来进行测试 -* 如果在执行前需要测试,它将以试运行dry run>预览preview模式来向用户展示软件将怎样运行 +* 如果在执行前需要测试,它将以试运行dry run>预览preview模式来向用户展示软件*将*怎样运行 * 如果使用静态代码分析工具,则通过集成到用户的软件开发环境中,而不是为每个脚本单独设置 相比之下,使用 Python 作为一个应用程序开发语言的开发者特征包括: @@ -97,7 +97,7 @@ Python 是为谁设计的? ### 适合进入 PyPI 规划的方面有哪些? -任何提交给 python-ideas 或 python-dev 的提案所面临的第一个门槛就是清楚地回答这个问题:“为什么 PyPI 上的模块不够好?”。绝大多数的提案都在这一步失败了,为了通过这一步,这里有几个常见的话题: +*任何*提交给 python-ideas 或 python-dev 的提案所面临的第一个门槛就是清楚地回答这个问题:“为什么 PyPI 上的模块不够好?”。绝大多数的提案都在这一步失败了,为了通过这一步,这里有几个常见的话题: * 比起下载一个合适的第三方库,新手一般可能更倾向于从互联网上 “复制粘贴” 错误的指导。(这就是为什么存在 `secrets` 库的原因:它使得人们很少去使用 `random` 模块,由于安全敏感的原因,它预期用于游戏和模拟统计) * 该模块旨在提供一个参考实现,并允许与其它的竞争实现之间提供互操作性,而不是对所有人的所有事物都是必要的。(如 `asyncio`、`wsgiref`、`unittest`、和 `logging` 都是这种情况) @@ -114,7 +114,7 @@ Python 是为谁设计的? 现有的第三方模块有时候会被批量地采用到标准库中,在其它情况下,实际上添加的是吸收了用户对现有 API 体验之后进行重新设计和重新实现的 API,但是会根据另外的设计考虑和已经成为其中一部分的语言实现参考来进行一些删除或细节修改。 -例如,与流行的第三方库 `path.py`、`pathlib` 的前身不同,它们并没有定义字符串子类,而是以独立的类型替代。作为解决文件互操作性问题的结果,定义了文件系统路径协议,它允许使用文件系统路径的接口去使用更多的对象。 +例如,与流行的第三方库 `path.py`、`pathlib` 的前身不同,它们并*没有*定义字符串子类,而是以独立的类型替代。作为解决文件互操作性问题的结果,定义了文件系统路径协议,它允许使用文件系统路径的接口去使用更多的对象。 为了在 “IP 地址” 这个概念的教学上提供一个更好的工具,`ipaddress` 模块设计调整为明确地将主机接口定义与地址和网络的定义区分开(IP 地址被关联到特定的 IP 网络),而最原始的 `ipaddr` 模块中,在网络术语的使用方式上不那么严格。