Free Pascal本身就是一种编程语言吗?或者,只是一个支持Pascal开发的编译器?

时间:2017-06-30 14:03:24

标签: pascal freepascal

当我搜索Free Pascal时,我非常困惑。 freepascal.org表示它是一个编译器,用于在各种体系结构的系统上编译Pascal语言代码。但是,我也发现在网上寻找免费Pascal程序员的工作很少。请详细说明一下。提前谢谢!

2 个答案:

答案 0 :(得分:12)

Free Pascal是一个支持多种方言的编译器。

像你这样的很多混乱来自过于简化的文章,这些文章将FPC / Lazarus作为dropin Delphi的替代品。 Lazarus / fpc的整个开发历史与TP和Delphi不同。

大多数方言模式都是具有次要扩展的现有方言(通常是所有方言都支持的功能),而某些方言(如Objective Pascal)完全是免费的Pascal发明。

一些方言:

  • {$ mode tp } - turbo pascal dialect
  • {$ mode fpc } - 默认模式。 Turbo Pascal方言清除了dosisms和16-bitism(与TP的差异很小)
  • {$ mode Delphi } - Delphi方言+兼容扩展
  • {$ mode DelphiUnicode } - 将字符串更改为unicodestring的Delphi方言,如D2009(虽然运行时支持不完整)
  • {$ Mode objfpc } - Delphi方言的免费Pascal版本。 (不兼容的扩展名)
  • {$ mode macpascal } - 基于Apple的pascal,主要是Codewarrior派生的
  • {$ mode ISO } - 正在处理ISO-7185 Pascal模式。
  • {$ modeswitch objectivec1 }和{$ modeswitch objectivec2 },启用客观C对象模型以便更轻松地进行COCOA接口,差异与目标C 1相同。 x和2.x语言/运行时。这是目标Pascal

主要缺失的是ISO10206(1990),第二个Pascal语言标准(大多数主要供应商都忽略了)

方言模式是每单位决定,可以在一个程序中使用多种方言。模式objfpc是Lazarus的默认模式,因此是当今最常用的方言。

模式objfpc中不兼容扩展的典型示例是要求@ for procedure(或method-)变量赋值。对于proctype是函数的返回值的某些情况,这是一种消歧。

某些$ mode objfpc差异已在后来的Delphi版本中实现(如{$ pointermath on},后者默认为$ mode objfpc)。 $ Mode objfpc在C ++之后也非常早期(2007年初)实现了泛型模型

答案 1 :(得分:5)

Free Pascal是一个编译器,正如网站所说。但是,各种编译器制造商(甚至包括FOSS编译器作者)将扩展纳入编译器编译的语言的标准定义并不罕见。当您看到“ x 程序员”的作业广告,其中 x 是特定的实现(例如,Free Pascal)时,通常意味着“这是我们使用的编译器” ;您应该熟悉它以及它所支持的语言的扩展名。“

在某些情况下 - 例如,早期的Turbo Pascal - 它也可能指特定产品作为完整的开发环境(IDE)的使用,如果它包含一个,并且您应该熟悉各种IDE的组件也是如此。