以下是一些最佳技术特性的简要概述,用于回答初学者的问题并消除他们最常见的困惑。
01
有哪些技术优势?
1. 面向对象、函数式
从根本上来说,它是一种面向对象的语言。它的类模型支持多态、运算符重载和多重继承等高级概念,并且以其独特而简洁的语法和类型为背景,OOP 非常易于使用。事实上,即使你不理解这些术语,你仍然会发现它比学习其他 OOP 语言要容易得多。
除了是组织和重用代码的强大手段之外,PHP 的 OOP 特性还使其成为其他面向对象系统语言的理想脚本工具。例如,使用适当的粘合代码,程序可以子类化 C++、Java 和 C# 类。
重要的是要明白,OOP 只是一种选择。即使你没有立即成为面向对象专家,你仍然可以继续深入学习它。就像 C++ 一样,它同时支持面向对象和过程式编程模式。如果条件允许,它的面向对象工具可以立即投入使用。这对于策略开发模式非常有用,该模式经常用于软件开发的设计阶段。
除了原有的过程式(基于语句)和面向对象(基于类)编程范例之外,近年来还内置了对函数式编程的支持 - 在大多数情况下,它是生成器、理解、闭包、映射、装饰器、匿名函数和一流函数对象的集合,既是对其自身 OOP 工具的补充,也是对其自身 OOP 工具的替代。
2. 免费
.NET 的使用和分发是完全免费的。就像其他开源软件(例如 Tcl、Perl 和 .NET)一样,您可以免费获取 .NET 的源代码。您可以不受限制地复制它、将其嵌入到您的系统中或与您的产品一起分发。事实上,如果您愿意,您甚至可以出售其源代码。
但请不要误会我的意思:“免费”并不意味着“没有支持”。相反,在线社区对用户需求的响应速度与商业软件一样快。而且,由于它是完全开源的,因此提高了开发人员的实力并产生了庞大的专家团队。
尽管学习或更改编程语言的实现可能对每个人来说都不是一件有趣的事情,但知道在需要时可以做到这一点还是令人欣慰的。您不必依赖商业供应商的智慧,因为最终的文档和最终的安心(源代码)都由您支配。
的开发由社区驱动,是大规模协作努力的结果。语言变更必须遵循一套标准化且具有约束力的程序(称为 PEP 流程),并且需要通过标准化测试系统进行彻底检查。这允许相对于其他语言和系统进行保守的持续改进。
尽管 2.X 和 3.X 版本的分裂有效且故意地破坏了这一传统,但它仍然经常反映在两个系列中。
3.可移植性
标准实现是用可移植的 ANSI C 编写的,可以在所有主要平台上编译和运行。例如,从 PDA 到超级计算机,到处都可以找到它。它可以在以下平台上运行(这只是部分列表):
除了语言解释器本身,发行版附带的标准库和模块也尽可能地考虑到了跨平台可移植性。此外,程序会自动编译为可移植的字节码,在安装了兼容版本的平台上运行时具有相同的结果。
这意味着程序的核心语言和标准库可以在任何带有解释器的平台上无差别地运行。大多数外围接口都有平台特定的扩展(例如 COM 支持),但核心语言和库在任何平台上都是相同的。
正如我们之前提到的,它还包含一个名为 (版本 2.X) 的 Tk GUI 工具包,这使程序能够实现一个功能齐全的用户图形界面,可以在所有主流 GUI 桌面平台上运行而无需进行任何修改。
4. 功能强大
从语言特性来看,它是一种混合体,其丰富的工具集让它介于传统脚本语言(如 Tcl 和 Perl)和系统语言(如 C、C++ 和 Java)之间,既提供了所有脚本语言的简洁性和易用性,又拥有编译型语言才有的高级软件工程工具。
与其他脚本语言不同的是,这种组合使得它在长期和大型开发项目中非常有用。下面简单介绍一下工具箱中的一些工具:
除了这套工具之外,语法和设计也保持相当简单。结果是一个功能强大的编程工具,具有脚本语言的所有可用性。
5. 可混合
程序可以通过多种方式轻松地与其他语言编写的组件“粘合”在一起。例如,C 语言 API 可以帮助程序灵活地调用 C 程序。这意味着可以根据需要在程序中添加功能,或在其他环境系统中使用。
例如,它可以与用 C 或 C++ 编写的库混合,形成前端语言和自定义工具。正如我们之前提到的,这使其成为一个很好的快速原型工具;可以在开发初期实现系统以提高速度,然后转移到 C,并根据不同时期的性能需求逐步实现系统。
6. 相对简单易用
与其他语言(例如 C++、Java 和 C#)相比,编程对于大多数用户来说出奇地简单。要运行程序,只需键入程序并运行即可。不需要其他语言(例如 C 或 C++)所需的编译和链接的中间步骤。
程序可以立即执行,从而创造了一种交互式的编程体验和在不同情况下快速调整的能力,通常允许您在修改代码后几乎立即看到程序更改的效果。
当然,开发周期短只是易用性的一个方面。它提供了简洁的语法和强大的内置工具。事实上,它被称为“可执行伪代码”。由于它降低了其他工具中常见的复杂性,因此与使用其他流行语言编写的程序相比,实现相同功能时程序更简单、更小、更灵活。
7. 相对容易学习
本节提出了本书的要点:该语言的核心非常容易学习,尤其是与其他广泛使用的编程语言相比。事实上,如果你是一名经验丰富的程序员,你可以期望在几天内编写小规模的代码,并且你可能能够在几个小时内学会技巧,但你不能期望在这么短的时间内成为专家(忘记营销宣传)。
当然,掌握像今天这样的任何丰富主题都不是一件容易的事,我们将在本书的其余部分致力于这项任务。但对掌握的真正投资是值得的——你最终将获得适用于几乎所有计算机应用领域的编程技能。此外,许多人发现学习曲线比其他编程语言要平缓得多。
这对于想要学习一门语言用于工作中的专业人士以及使用层进行自定义和控制的系统的最终用户来说都是好消息。如今,许多系统都依赖于这样一个事实:用户可以学习足够的知识,在现场添加和删除自定义内容,几乎不需要任何支持。
此外,还滋生了一批不以谋生为目的、而是为了乐趣而编程的用户,他们并不需要掌握全面的软件开发技能。虽然仍有许多先进的编程工具,但其核心语言精髓无论对初学者还是专家来说都还是相当简单的。
8. 命名
好吧,说了这么多技术优势,我想再透露一个世界上令人惊奇的、保密很好的小秘密。
尽管书中和徽标中都提到了爬行动物,但事实是,它以英国喜剧团体“ ”命名 - 20 世纪 70 年代 BBC 喜剧“ ”和几部至今仍受欢迎的伟大电影的制片人,包括“ 和圣杯”。 “ ”的原始创建者与许多其他软件开发人员一样,是“ ”的粉丝(事实上,这两个领域之间存在一定的对称性......)。
▲学习手册封面上的爬行动物
这段有趣的历史无疑为代码示例增添了幽默感。例如,传统的“foo”和“bar”作为一般变量名,如今却成了世人眼中的“spam”和“eggs”。代码中偶尔出现的“”、“ni”和“”也有类似的表现,甚至影响了整个社区。
当然,如果你熟悉喜剧,你就会明白其中的笑点,但如果你不熟悉,情况就不一样了。你不必熟悉这部剧就能看到剧中启发灵感的例子(包括你将在本书中看到的许多例子),但至少现在你知道它们来自哪里了。(嘿——我告诉过你。)
02
与其他语言相比如何?
最后,正如您可能已经知道的,人们经常将其与 Perl、Tcl 等语言进行比较。本节总结了这方面的一些普遍共识。
我想先声明一下,我个人不喜欢通过贬低竞争对手来取胜——从长远来看,这是行不通的,也不是这里的目的。此外,这不是一场零和游戏——绝大多数程序员在他们的职业生涯中会使用多种语言。尽管如此,编程工具还是提供了值得考虑的选择和权衡。毕竟,如果一种语言没有比其竞争对手提供更多的东西,人们一开始就不会使用它。
我们已经介绍了性能权衡,因此让我们关注功能。尽管以下语言是值得学习和使用的强大工具,但它们通常被考虑:
尤其是对于那些不只是用于个人扫描文本文件,而是将来会被人们(包括您)阅读的程序,许多人会发现它比目前可用的任何脚本或编程语言都更具成本效益。而且,除非您的应用程序需要尖端性能,否则它通常是 C、C++ 和 Java 等系统开发语言的良好替代品:代码通常可以实现相同的目标,但编写、调试和维护起来会麻烦得多。
当然,作者自 1992 年以来一直是 PHP 的全职宣传者,因此请谨慎对待这些观点(以牺牲其他语言的拥护者为代价)。但是,所有这些观点确实代表了许多投入时间和精力探索 PHP 的开发人员的共识。
关于作者:Mark Lutz 是一位世界级的培训师、畅销书作家和自 1992 年以来的社区领袖,拥有超过 30 年的软件开发经验。
本文摘录自《学习手册》(原书第5版),经出版方授权。