Pascal及其当前应用

39

1997年,我学习了Turbo Pascal,非常喜欢这门语言。一切都非常结构化,编译器确保你以正确的方式完成任务。之后我尝试过Delphi,但对它不是很感兴趣。

自那时以来,我使用了许多不同的编程和脚本语言(C,C++,PHP,Python,Perl,TCL),最近我开始想起我的旧Turbo Pascal的日子。

因此,我想知道Pascal有哪些实际用途,并且有哪些API和框架可用。是否有人有在现代开发环境中使用Pascal的经验,还是这门语言已经死了?

澄清一下我的问题:Pascal能否用于现代应用程序开发?它正在被使用吗?如何使用?

维基百科链接或快速谷歌搜索没有帮助,这就是为什么我询问“专家”的原因。


我在Delphi中创建的应用程序总是看起来有点丑陋,不协调。此外,我也没有必要的数据库和网络背景知识,无法创建任何有用的东西。这并不是Delphi的错 :) - Andrioid
1
哇, 安卓系统啊,你必须得好好研究一下,它非常强大。我只是在三个月前学会了Delphi编程,它真是太棒了(唯一不喜欢的就是Pascal语法 :-))。 - tekBlues
嘿,在我的书架上,我有一本来自Borland的小书,名为“21天学会Delphi 2”。也许我会读一下 :) - Andrioid
1
这个问题适合在programmers.stackexchange.com上提问。 - TimothyP
@Andrioid:不知道。我见过用Delphi制作的精美程序。新的FMX和多种样式选项使得制作外观漂亮、易于使用的程序更加容易。当然,这也取决于您的UI设计技能 ;-)。顺便说一下,您是不是把Delphi和Java混淆了?那些程序在我看来总是格格不入的。 - Rudy Velthuis
显示剩余2条评论
11个回答

35
注意,老版本(1.0.x)的Free Pascal编译器的源代码与Turbo Pascal兼容,可以使用TP进行调试,这展示了基本的Pascal能力。
关于Pascal作为基础语言的使用问题与C大致相同,因为它们在语言层面上几乎等同。唯一的区别在于编译器的数量、多样性和质量。
我强烈建议走Delphi方向(使用Delphi或Lazarus / FPC),而不是回到Turbo。
DOS-ism和16-bitisms会严重限制您的开发,并且几乎所有没有DOS-ism和16-bititms的方言都由FPC或Delphi支持。
Turbo Pascal是DOS时代主要的编译器之一,而Delphi仍然是全球第二畅销的IDE(仅次于Visual Studio),因此我认为“死语言”和“教学语言”的说法有些夸张。

1
我喜欢术语“DOS-isms”,甚至更喜欢“16-bitisms”。<g> 除此之外,我完全同意。现代的Delphi和FreePascal已经不再像TP了。它们已经发展得相当多了。纯Pascal最初是一种教学语言,但嘿,大多数人也都是从婴儿开始的,然而他们中的大多数都会进化。 - Rudy Velthuis
2
就此而言,Pascal并不是作为一种“教授编程”的语言开始的,它最初是作为一种“教授编译器构建”的语言开始的。当前的Delphi和FreePascal编译器要复杂得多,功能也更加多样化。 - Rudy Velthuis
据我所知,旨在向数学专业的学生教授算法。那时通常没有计算机科学作为独立的系,但那些具有编程倾向的数学学生现在可能相当于计算机科学硕士学生。 - Marco van de Voort

23
一位从Java / C / C++转换到FPC的满意用户的观点:
Pascal,特别是Free Pascal(FPC),可用于几乎所有事情。应用程序编程具有良好的性能(因为它正在编译),游戏编程(例如通过OpenGL),以及Web编程,因为它可以编译成Java字节码。它运行在所有重要平台上(MS、Linux、Mac、iOS、Android等)。
FPC高度更新,与一些人认为我们正在讨论的20世纪70年代/80年代语言相比,它是一种非常现代的语言。它具有面向对象编程扩展(包括用于使用Objective-C类的"Objective Pascal"模式),而且OOP与C++一样不强制。它还具有操作符重载、函数重载、动态数组、有限垃圾回收、自动命名空间…此外,它是一种模块化语言(像Java),而C/C++在这些年后仍然是非模块化的(通过#include来伪造)。 (我很感兴趣进行一个关于今天一种“现代”语言必须具备哪些功能的严肃讨论。)
我提到过可移植性吗?FPC带有一个大的运行时库,其中很多是跨平台的,包括一个类库(据我所知,主要用于Lazarus)。 FPC非常适合编写可移植的代码。
作为教学语言,它与C/C++非常接近,这是一个主要优点。它只在最微不足道的语法上(以及不同的对象模型)有所不同,但实际上非常接近C ++。在C / C ++和Pascal之间进行移植比在ObjC和C ++之间进行移植更容易。但是FPC具有易于学习的优势,具有更简单的语法。
因此,我声称FPC既可用作教学语言,也可用于严肃的应用程序编程。(我认为它是理想的,但这更多是一种看法。)
总是有一些Pascal haters,他们发表无知的言论,通常指的是70年代的原始语言。就个人而言,我认为不值得讨论70年代的Pascal或20年前的问题(当时可移植性是个问题)。有趣的是你现在可以做什么,在语言之间的利弊方面,超出了“但是其他人都…”的论据。

1
如果没有具有Pascal的API的库,它如何“适用于一切”?FPC并不是“非常现代化”的。它缺乏类型推断、闭包、Lambda函数、内存管理、打包/解包、多重赋值、列表推导、生成器、切片表示法、元组、对比设计、过滤/映射/归约、字典和列表作为本地类型,大整数等。运行时库与JVM、.NET或Python相比不具备可比性。在大多数国家已经没有了相关的书籍、杂志、工作、现场会议、在线课程等。为什么在如今的选择中会选择Pascal而不是Python、Nim、D、Go、Rust等? - alcalde
4
@alcalde,醒醒吧,孩子。Pascal有许多库,它们既由实现者提供,也可以从第三方来源获取。即使你不是很了解这种语言(你提到Pascal没有内存管理,这是100%错误的),也不要以为你能评判这些库。 - LeleDumbo
2
@LeleDumbo,“Pascal的库不多”这种说法是不正确的。Torry.net上的文件不到13000个,其中大部分是商业演示或者是Delphi 3-5时期的遗留物。相比之下,Python的仓库中有超过72K个库,Java有128K个,Go有106K个,node.js则有超过200K个!Delphi没有对象的自动内存管理。我已经使用Pascal编程近30年了,对这门语言非常熟悉。如果不夸大其词,就不能真正地为今天的可行性辩护。当亚马逊为Pascal提供API支持时,我们才能谈论支持问题。Crystal Reports在20世纪90年代后期就停止了对Delphi的支持等等。 - alcalde
1
@alcalde,“适用于一切”的说法并不正确。但“最适合某些程序”的说法绝对正确。我是指最好的。你列出了你认为很好的东西,但它们并不是 - 至少并非总是如此。例如类型推断、多重赋值、内存管理。它比 Python 更低级,但更快、更干净。也许你还太年轻,无法理解? - linuxfan says Reinstate Monica
1
@alcalde 刚刚发现这个:https://dev59.com/jFgR5IYBdhLWcg3wV8He -- 在 Pascal 中不会出现这些歧义。 - linuxfan says Reinstate Monica
显示剩余4条评论

13
Pascal因为缺乏库支持而没有实际用途,这是一派胡言。Delphi、FreePascal和Lazarus可以使用大量的库。
正如McWafflestix所说,拥有简化的环境是有价值的。
“简化的环境”?那只是贬低它。我会说它一直都很复杂。

2
Delphi/FreePascal并没有“大量的库”可用。自90年代以来,Pascal的软件包汇编网站Torry.net还没有达到13,000个软件包。那里有很多是为旧版本的Delphi编写的,或者是试用版。相比之下,Python的软件包管理网站PyPI在一年内添加了超过12,000个(免费、开源)软件包。同样,我的分析显示,Torry每天只会以略低于0.5个软件包的速度添加一个新的免费或开源软件包。Modulecounts.net显示Go每天有158个,Java有115个,.Net有47个,Python有59个等。 - alcalde
1
@alcalde:是的,有。也许与C++或Python相比不算太多,但仍然有大量的库。但是不要再只在Torry上寻找了,它已经不再是过去的那个样子了。只需谷歌一下,或者在GitHub和类似的网站上查找。还可以看看JEDI网站。在Delphi中,Pascal的最流行实现之一,您还可以使用GetIt管理器查找Delphi软件(付费、试用和开源软件)。阅读像“begin end”或“DelphiFeeds.com”这样的网站,以了解有关Delphi和FreePascal的更多信息。对于Pascal来说,Torry上发生的事情已经不那么重要了。 - Rudy Velthuis

11

4
请停止使用“FPK”这个别名,改名已经十年了:_) - Marco van de Voort

11

到目前为止,还没有人提到 TeX(和 METAfont 以及其他 TeX 软件包)是用 Pascal 编写的。

在 90 年代初,我使用一种定制的 Pascal 方言开发了商业 X/Motif CAD 应用程序。


5

我从Pascal的第一个版本一直使用到2012年的RAD Studio XE3。这是我的第一种编程语言。学习Pascal几乎就是学习它运行的系统。

它是一种惊人的语言,为我打下了成为C、嵌入式C和模拟/数字电路设计专家的基础 - 都是我自学而成。后来我学习了PHP、JS和TCP模型,毫不费力地理解了它们背后的核心概念。

当然,Pascal现在是Object Pascal,就像Basic是Visual Basic一样。以下是Pascal在2012年商业产品中所能做的事情。(非商业版的Pascal做得可能更好)

支持几乎所有Web技术。 支持几乎所有数据库技术。 单个代码库的跨平台。 庞大的社区、组件和库。

一个流行的用Pascal开发的应用程序是Skype。

去年微软以8亿美元收购了拥有自己语言的Skype。


1
好的,VB从来都不兼容Quick Basic。Delphi与TP兼容度很高。FPC甚至更加兼容。 - Marco van de Voort

5

主要的编程语言是带有Pascal衍生物的Delphi(来自Embarcadero,曾经由Borland拥有)。

请参阅Wikipedia获取更多列表,主要是开源的。


5
帕斯卡语言可以用于现代应用程序开发,并且被广泛使用。只需看看Lazarus CT(免费的Delphi克隆)就知道了,它可以从单个源生成现代跨平台本机应用程序。它有大量组件和许多示例,是RAD工具,具有8个主机操作系统/ CPU层(win32 / 64,lin32 / 64,freebsd 32/64,solaris 32/64)和22个目标操作系统/ CPU层(i386-win32,x86_64-win64,i386-linux,x86_64-Linux,arm-wince,arm-linux,powerpc-linux,powerpc64-linux,sparc-linux,i386-freebsd,x86_64-freebsd,sparc-solaris,i386-solaris,x86_64-solaris,i386-haiku,arm-gba,arm-nds,arm-embedded,armeb-linux,arm-android,i386-android,powerpc-wii)。还有哪个工具能与之匹配呢?请参考以下链接:请注意,以管理员/根用户身份安装。

1
“还有什么工具能匹配它呢?” 实际上,所有这些工具都可以。包括C、C++、Python、Ruby、D、Go、Java等等。 - alcalde
2
@alcalde 许多编程语言依赖于字节码或类似的东西。但这并不完全一样。 - linuxfan says Reinstate Monica

4
搜索关键字'pascal',并使用'programming language'过滤结果,你会发现一堆使用pascal的应用程序,如果不是企业级别,至少是严肃程序员的级别。有这么多开源和跨平台的IDE、库,我认为pascal仍然很活跃(除了流行的delphi方言),可以完成实际任务。正如结果所示,pascal可以做操作系统、编译器、跨平台库、桌面编程。因此,似乎pascal至少可以完成许多严肃的任务,即使不能立即回报太实际的利润。无论如何,我喜欢这种语言,虽然我没有用它进行过任何严肃的编程。

嗯,流行的大多数都是面向Delphi的,所以如果你从Pascal中排除Delphi,“pascal”的规模就会大幅缩小。 - Marco van de Voort
也许你想说的是“尤其”而不是“除了”,因为Delphi是其中最活跃的形式。 - eis

2
我认为Turbo Pascal之所以受欢迎的主要原因不是Pascal语言,而是IDE。就我所记得的而言,Turbo Pascal真的很容易使用,速度也很快,甚至调试都很有趣。
另一方面,Pascal语言有些过时,因此Borland公司为Pascal语言添加了许多内容(使其更类似于Module-2)。

2
不完全正确。Pascal Ansi/ISO委员会正在与Wirth一起研究模块化系统。据我所知,Borland主要借鉴了他们早期的提案。 - Marco van de Voort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接