为啥 Delphi 程序员会使用 Lazarus 作为 IDE 而不是使用 Delphi 的 IDE? [关闭]

Posted

技术标签:

【中文标题】为啥 Delphi 程序员会使用 Lazarus 作为 IDE 而不是使用 Delphi 的 IDE? [关闭]【英文标题】:Why would a Delphi programmer use Lazarus as the IDE instead of using Delphi's IDE? [closed]为什么 Delphi 程序员会使用 Lazarus 作为 IDE 而不是使用 Delphi 的 IDE? [关闭] 【发布时间】:2011-02-15 07:08:44 【问题描述】:

我对使用 Delphi 进行编程的 Delphi IDE 非常满意。

但我听说过Lazarus 编程环境,而且我还听说一些 Delphi 程序员使用它来代替 Delphi IDE。

Lazarus 与 Delphi IDE 相比有哪些优势,为什么 Delphi 程序员会或应该切换到它?


答案给我留下了比以前更多的问题。关于 Lazarus 是否可以用作开发 Delphi 代码的编辑器,似乎存在一些分歧。我想我认为您可以将所有内容都留在 Delphi 中,而只需更改 IDE。 The Lazarus for Delphi Users section of the Lazarus Wiki 说:

转换时要做的第一件事 Delphi 项目 打开了 Lazarus,你应该去工具和 然后将 Delphi 项目转换为 Lazarus 项目。这不会为 你,但仍然会带你一个 很好的方式。请注意, Lazarus IDE 的转换工具是 一般是单向转换。如果你 需要保留 Delphi 兼容性所以 你可以同时编译你的项目 德尔福和拉撒路,考虑 改为使用XDev Toolkit 转换您的文件。

因为 Lazarus 是免费的,所以不是切换的理由,但不会因为切换而在物理 $ 上惩罚您。 (您仍然需要投入时间来转换和学习。时间 = $)。

我从您的回答中得出的结论是,关于为什么有人可能会从 Delphi 切换到 Lazarus:显然它必须提供 Delphi 目前无法提供的东西。目前这是多平台支持和可能的 64 位支持。 Delphi 曾经有过 Kylix,但不支持 Mac。

但由于 Embarcadero 很快承诺了这两个和 64 位,你已经回答了我的问题,告诉我没有理由(至少对我来说)切换。

【问题讨论】:

显而易见的原因是有些人喜欢它。但至于真正的功能比较,我不能告诉你。 在***.com/questions/629837/…,我们看到了其他用于编写 Delphi 代码的 IDE,包括 Emacs、Multi Edit 和 EditPad Pro。如果有人将它们用于Delphi,那么肯定是有原因的。我认为这个问题问为什么 Delphi 用户可能会选择 Lazarus 而不是其他替代品,而不是继续使用 Delphi 自己的 IDE。 (如果 Ikessler 可以支持我的这种解释当然会很好,因为很多其他人似乎认为这是完全放弃 Delphi 以支持 Free Pascal。) Rob:Lazarus 与普通编辑器不同,因为表单编辑器和代码工具之类的东西可以工作,并且通过一些技巧可以来回迁移(特别是使用更新的版本)但我同意替代是不好的思维方式。几乎所有全职 Lazarus/FPC 用户也使用 Delphi。甚至几个开发者(包括我)也这样做。 对于那些使用 Delphi 编写“枯燥/严肃”客户端软件作为交付客户端解决方案所需的许多技能的一部分的人来说,Lazarus 现在是在 Delphi 中构建这些 64 位二进制文​​件的一个很好的解决方案模式。一些程序员被聘为 Object Pascal 程序员 4 生活,他们可能会像 FPC/Lazarus 一样密切关注 Delphi 和 Object Pascal 的开发,并且没有任何问题。对于少数幸运儿来说,使用 Delphi 是一种奢侈的选择,而 FPC 适合所有人,而 Lazarus 是一个很好的 IDE。 2021 年更新:我看到的唯一大区别/问题是,与 Delphi 相比,Lazarus 调试器缓慢而痛苦。提示:使用fpdebug 包,它开始变得可用。但是 Lazarus 作为编辑器现在非常稳定。代码版比 Delphi 更稳定、更快速。它的完成工作。它真的是跨平台的。我建议使用github.com/LongDirtyAnimAlf/fpcupdeluxe 从源代码构建 FPC 和 Lazarus,然后轻松安装交叉编译器。问题仍然是第 3 方组件,很可能(很遗憾)只有 Delphi。 【参考方案1】:

好的。这是一个旧线程,但可以进行一些更新。大概十年前,我停止使用 Delphi,主要是因为我别无选择。在担任 Delphi 编码员 5 年多之后,我现在又是一名学生,而 Delphi 的价格简直太离谱了。 Delphi 的问题从来都不是 Delphi。 Delphi 是一个天才系统,但 Borland(以及后来的继任者)完全误解了不断变化的计算机世界。微软能够提供一个可以免费下载的编程环境,它的 .NET 环境在所有重要方面都可以与 VCL 媲美,同时即使是基本版本的 Delphi 也会让你破产或对学生来说显然无法使用预算。最终结果是,由于没有新的 Delphi 程序员上线,企业继续使用它成为一个冒险的提议。最后随着 linux 的兴起,Kylix 被证明是一个环境的彻底破坏,没有使用可用的 UI 工具链,并且弥漫着一股可疑的 Wine 恶臭,最后以对 GPL 软件的侮辱态度对待它,就好像它是共享软件。最后,当 Turbo Delphi 多年后问世时,它无法利用通过像 tories 组件站点这样的站点提供的惊人资源。很明显,Borland 根本不尊重其编码器生态系统。

因此,Lazarus 似乎从这一切中脱颖而出,经过很长时间的酝酿,并且似乎瞄准了 Delphi 4 的某种类似物,被许多人认为是 Delphi 系列中最干净、最整洁的版本之一。它几乎符合所有要求,它对 Object Pascal 的实现非常准确,最重要的是,它在所有与开源相关的意义上都是免费的。

但是,它长期以来一直存在错误,并且其控件的实现不完整。这对我和其他许多人来说有点破坏交易。

话虽如此,我最近出于好奇决定下载它,并发现它实际上已经走了很长一段路。数据库组件可以正常工作,尽管您可能需要遵循一些教程并寻找一些线索以使它们全部启动并运行,并且在 iPhone 和 android 构建目标方面取得了重大进展。

我不确定我是否已准备好将它部署到我的任何商业客户,但我将通过个人项目再次运行它以完成它的步伐,如果它确实有效,我想我终于要和我的初恋编程爱好者 Pascal 重逢了,在这件事上,我可以使用我的 Mac 来完成繁重的工作,同时提供 Windows 和 Linux 版本。

所以基本上这里是比较的事实;- Lazarus 和 Delphi 是完全独立的实体。 Lazarus 不是 Delphi 的交叉编译器,但具有一定程度的兼容性。它更像是 GCC 与 MS C++。 Delphi 更精致,可能更稳定。 Lazarus 提供了一个类似 Delphi 4 的环境,老手 Delphi 编码人员会觉得非常舒服。 但 Lazarus 有时会喜怒无常,Delphi 程序员需要明白,并非最新最好的 Delphi 中的所有内容都适合他们。 Delphi 做 Windows,而且做得非常好(是的,我知道新的有一些交叉编译目标,但街上的消息是,它有点 hacky,需要在 embacardo 炊具中一段时间​​才能真正存在),同时拉撒路几乎遵守一切。当前的目标列表是:Darwin、NetBSD、OpenBSD、FreeBSD、Linux、Solaris、Win32、Win64、WinCE go32v2(我认为那是带有 32 位扩展的 MS-DOS!)、OS2、Netware(!)、BEOS、Haiku(? !)、QNX、wdosx(?)、emx、netwlibc、Atari、Amiga、Palm-os、Gameboy Advance、nds、MacOS、Morphos、Plus,还有对 ios 和 Android 的实验性支持。最重要的是,Thing 可以使用来自 QT、GTK、GTK2、Win32/WIn64、Carbon、fpGUI(不知道)、Cocoa 或根本没有 GUI 的小部件集,具有不同程度的实现透明度。

这是一份详尽的清单!

因此,请注意 Emptor。我强烈建议 Delphi 编码人员下载这个并做一些个人项目来感受它,而不是靠老板的一角钱,但 Lazarus 有很多深度和实质,它可能是处理生活的重要工具在 Windows 婴儿床外。

另外,由于 Delphi 的新大师们还没有了解 !@#$%^&* 为何 Delphi 失宠(提示,让业余爱好者和学生能够负担得起或免费学习和创建自定义组件),它是真的是唯一可用的预算选项。如果 Embarcadero 醒来,也许这会改变。在那之前,万岁拉撒路。

【讨论】:

感谢@Shayne 的精彩历史和讨论。 +1 感谢您的详尽回答。作为自 v1(以及之前的 Turbo Pascal 3)以来的 Delphi 用户,我肯定会更好地了解 Lazarus。 “但拉撒路有时会喜怒无常” - 在过去的几年里,拉撒路变得稳固而稳定。不幸的是,我不能说同样的话。随着岁月的流逝,德尔福变得越来越不稳定。我最近花钱买了一个非常不稳定的 Delphi XE7 许可证。我有另一个朋友几年前购买了 XE3,但从未使用过它(它坚持使用 XE1)。如果一个版本的 Lazarus 变得不稳定,至少你还没有为此支付 1000 欧元以上! 我同意,@Frostyfrog,我最近又看了一遍,它确实是一个非常有用的 IDE。 并且FPC在内部汇编器中支持AVX2。我的几个 Delphi 应用程序目前加载了一个 FPC 生成的 dll,其中包括 MD5(部分库,但这更容易,因为 FPC 具有加速 MD5 的 ROR/ROL 内在函数)和 AVX(2) 的使用)。【参考方案2】:

我的两个主要原因是

1) 多平台支持(Linux、Mac OS X、Windows)

2) 价格 $0

【讨论】:

@RRUZ:但你不是必须购买 Delphi 才能在 Lazarus 中使用它吗?那么您就已经拥有了 Delphi IDE,无需额外费用。 @lkessler,Lazarus 与 Delphi 没有任何商业关系,它们是两种不同的产品。 @Rob,根据我的个人经验,当我需要为我的客户开发 Linux 桌面应用程序时,我使用 lazarus 而不是 Delphi。因为不幸的是,Delphi 仍然不支持 Linux。 @Rob:好吧,如果我必须(本机)针对 Delphi 尚不支持的平台(例如 64 位!!!)并且不想学习新语言 - 一直希望一旦 Embarcadero 添加对相关目标的支持后,该项目可以移植回 Delphi。 我现在是一名 FPC 开发人员,但十三年前我开始使用 FPC,因为 Delphi 无法为我的 (FreeBSD) 网络帐户生成 CGI。【参考方案3】:

Delphi 程序员不能使用 Lazarus 编写 Delphi 代码,因为 Lazarus 不是 Delphi。 Lazarus 实际上是一个 IDE 和一堆用于 Free Pascal 的 Delphi 类库。但请注意,Delphi 的 VCL 之类的东西并不存在,而且坦率地说,Lazarus 中的 IDE 和调试体验相当参差不齐,但它是免费的,所以这很重要。

底线,德尔福拉撒路。如果您想要一个出色的 IDE 和调试器,并且您的目标是 MS Windows,请使用巨大的 3 方支持和技术支持,并且您愿意为此付费。如果您想要一个支持多个平台并具有 Delphi 式语法的免费 IDE,请使用 Lazarus(免费帕斯卡)。

【讨论】:

一个 Delphi 程序员一定可以使用 Lazarus 来编写 Delphi 代码。哎呀,Delphi 程序员甚至可以使用记事本来编写 Delphi 代码。这个问题的前提是有 Delphi 程序员使用Lazarus 编写Delphi 代码(不是Free Pascal 代码)。伊克斯勒问他们为什么要这么做。如果你的回答是否定这个前提,那么你能更明确一点吗?否则,我根本看不出你是如何回答这个问题的。 嘿 Rob,也许我应该说编写和编译 Delphi 代码。确保你可以用任何东西编写 Delphi 代码。我的观点是帕斯卡的方言和 2 种产品中使用的类库,虽然相似但不可互换。 (除了最简单的情况) 我的私人笔记本电脑上有 Lazarus。在最近的版本中,我已经在那台笔记本电脑上设置了项目(甚至是可视项目),然后在工作时将它们加载到 delphi 中。使用一些 DFM 清洁工具,在 Delphi 版本之间移动并没有太大区别 "Delphi != Lazarus" ...不应该是“Delphi Lazarus”吗?咧嘴一笑 这个答案没什么意义。 Borland (Codegear/Inprise) 所说的“Delphi”代码就是他们过去所说的“Object Pascal”代码,无论如何其他人都这么称呼它。 Delphi 和 Lazarus 一样只是一个 IDE。任何一种都可用于编写 Object Pascal 代码。更重要的是,FreePascal 甚至有一个“Delphi 兼容模式”,它使语言语法和默认值更像 Delphi。如果你想说“因为它是商业的,Delphi 得到了更好的支持”,就直说吧。然而,两者都具有对方没有的功能。【参考方案4】:

也许我只是读错了,但您似乎认为 IDE 在某种程度上是可以互换的。这是不正确的。 Lazarus 建立在 FPC 编译器之上,并且与 Delphi 与 DCC 编译器的绑定方式非常相似。此外,它们使用不同的表单描述文件格式。 Delphi 无法读取 LFM,Lazarus 可以尝试读取 DFM,但它并没有做得特别好。

FPC/Lazarus 与 Delphi 非常相似,但它是 Object Pascal 的不同方言,认为它们等价是错误的。

【讨论】:

为什么 Lazarus 不能阅读基于文本的 DFM,这看起来很疯狂?它是一种非常简单的格式。 @Toby:我真的不知道。它有点可以,但你得到的结果看起来都错了。控制在错误的位置等。 Mason:你尝试过新项目,还是打开旧的 lazarus 代码?基本的表单编辑对我来说相当兼容。如果您使用的是较旧的 Lazarus 项目,则某些针对不受支持的 Delphi 功能的较旧解决方法可能会导致问题。 @Marco:我尝试使用转换后的 Delphi 项目。自从我上次尝试以来已经有一段时间了,但过去每次我尝试过时,都会导致表单布局完全错误。 不同的delphi版本也会发生。【参考方案5】:

我有一个在 Delphi 上运行的声音识别算法。当我的上司要求在 WinCE 上运行它时,我尝试了 Lazarus。帕斯卡是帕斯卡。拉撒路超级棒。我已经做到了。

算法是用 Pascal 编写的。我试图转换。 C# 容易反编译并使用不同的逻辑。幸运的是我找到了 Free Pascal。

我让它在 ARM 上的 WinCE 上运行。感谢所有 FPC 合作者。

编辑:我也在 Linux 上运行它。

【讨论】:

【参考方案6】:

Lazarus 是跨平台的,并且在语音和啤酒方面都是免费的,而 Delphi 两者都不是。 Lazarus 确实使用了一个different compiler,它编译了一种与 Delphi 99% 兼容的语言,并提供了一个different visual component library,与 Delphi 的 VCL 类似但不兼容。

【讨论】:

@glebm:但 Delphi 还不是跨平台的。 那么,您是说您在 Windows 以外的其他平台上编写您的 Delphi 程序吗? Lazarus 是跨平台的还有什么意义呢? @Ikessler Delphi 不是,Lazarus 是。 Lazarus 根本不使用 Delphi,它使用 FreePascal 编译器。 Delphi 语言 Delphi IDE。 Delphi 是一种语言的名称(在 Borland Delphi 7 出现之前称为 Object Pascal)。 FreePascal 编译器编译的语言是 Delphi 语言 (99%)。 Delphi 编译器也是从 Delphi 语言编译的,但是,它是一个完全不同的产品。我希望这能为你解决一些问题。我不是“德尔福程序员”,我是软件开发人员。 :) 我认为值得注意的是 Marco,虽然出于商标原因 FPC 确实将其称为 Obj Pacal,但开关仍然区分 Turbo-pascal 目标帕斯卡模式和德尔福目标帕斯卡模式。幸运的是,FPC 可以很好地解决这些实现之间的细微差异。【参考方案7】:

我的主要原因 - Delphi 目前无法编译 64 位应用程序,因此无法查看、读取或写入某些注册表项。

【讨论】:

实际上你可以从 32 位进程中读取注册表的 64 位部分 为了看看这怎么可能,我推荐你msdn.microsoft.com/en-us/library/aa384129(v=VS.85).aspx “事实上你可以阅读 64 位部分”不幸的是只有部分 - 有 64 位 reg 键没有显示出来。在我发布此内容时,我发现 SOFTWARE\Wow6432Node\Classes\Filter\ 中缺少一些 64 位密钥。我在 Lazarus 中编写的 64 位应用程序可以查看所有密钥。 如果我使用 RegOpenKeyEx() 而不是 TRegistry 函数,我可能会在 Dephi 中得到不同的结果。另一方面,我能够使用我的原始代码(处理注册表信息)并在 Lazarus 中未经修改地使用它(我记得)。 更新:Delphi XE2 现在支持 64 位 Windows。【参考方案8】:

是的,Linux 安装在 70% 的服务器上。它正在为拥有 400,000,000 多名用户的 Facebook 提供动力。你告诉我使用Windows?你告诉我不要使用 64 位?

我会使用拉撒路。直到 Delphi 流行起来。

【讨论】:

【参考方案9】:

嗯,我是使用 Lazarus IDE 编写 Delphi 源代码的人之一。

我非常喜欢德尔福。但是使用Delphi 的编辑器真的很痛苦。我试过VIM,一直梦想有一个像visual studio这样的IDE:简单、干净、可以水平或垂直分割窗口……

我终于找到了 Lazarus 编辑器,比 Delphi 的要好得多。所以我使用 Lazarus 编写 Delphi 源码,而 RAD IDE 仅用于编译和调试。

【讨论】:

您介意对此进行扩展吗?你真正说的是你喜欢拆分窗口。我很好奇您在 Delphi 的编辑器中还发现了哪些“痛苦”的东西,而 Lazarus 更适合。 我应该在这里指出,Lazarus 的 IDE 与 Delphi 4 的 非常 相似。顺便说一句,这并不是一件坏事,我们中的许多人都认为 Delphi 4 是 IDE 处于最佳状态的地方。当然,都是主观的。 是的,Lazarus IDE 比 Delphi IDE 聪明得多。当您粘贴一堆代码时,它会正确缩进它。它可以对方法覆盖进行代码竞争,当更改函数原型和 ctrl-shift-up/down 跳转到实现时,光标在您需要修复它的位置,它甚至可以为您完成代码更改好吧!只要您知道键盘快捷键,它就可以节省大量时间。看到它应该如何完成让我想知道为什么 Delphi 现在不是那样。不幸的是,对于 Embarcadero 来说,Lazarus/FPC 会粉碎他们。他们再也赶不上了。 我想补充一点,这个问题是专门针对 IDE 的,而这并没有得到实质性的解决。话虽如此,我想重申:Delphi 是一个垂死的品种,不仅仅是因为成本高,还因为 FPC 无处不在。此外,开放性为任何人提供了解决烦人问题的机会,例如 Laz IDE 中的代码完成增强功能。请注意,这非常重要。代码的很大一部分是单调乏味的东西,比如在接口和实现中重复函数签名。这应该是一件轻而易举的事,在拉撒路是非常容易的。 @lkessler 抱歉已经有一段时间了。这是我注意到的一些事情:【参考方案10】:

对我来说:

64 位还活着(Delphi...可能是,不是,又是,最后不是...) 跨平台(Delphi 不是)顺便说一句,还有很多工作要做,但它确实有效! FPC 是一个非常好的编译器 社区很酷,很活跃

【讨论】:

【参考方案11】:

我没有太多新东西要添加,但我想我会介绍一下我的跨平台体验。就相当快速地组合一个跨平台应用程序草图而言,我发现 Lazarus 工作得非常好。我最近一直在使用 MonoDevelop,其中有很多值得称赞的地方,但是 gui 设计器的概念似乎不如 Lazarus GUI 设计器那么完整。还是似乎缺少一些位的工具包(GTK#)?在此之前,我使用过 Qt / C++,它似乎也适用于跨平台开发,但我对 C++ 并不热衷,而且 Qt 的信号/插槽框架有点好奇,但一旦你得到你的头缠着它。总而言之,我发现 RAD 工作,使用 Lazarus 进行编码非常有趣,此外,IDE 的名称多么酷!

干杯

【讨论】:

【参考方案12】:

只有 CodeTyphon/Lazarus/FreePascal 支持 4 个 CPU/OS 主机(Win32、Win64、Linux32、Linux64)和 16 个 CPU/OS 目标(arm-WinCE、arm-Linux、arm-Embedded、arm-gba、arm- nds, i386-Win32, i386-Linux, i386-FreeBSD, i386-Haiku, x86_64-Win64, x86_64-Linux, x86_64-FreeBSD, powerpc-Linux, powerpc64-Linux, sparc-Linux, sparc-Solaris)。 Lazarus/FreePascal 支持更多平台,但其他平台尚未集成在 CodeTyphon 中。一个代码来统治它们;-)。 CodeTyphon 是一个强大的一键式安装包,适用于跨平台原生 Delphi,如基于 Lazarus/FreePascal 的 RAD/IDE,消除了痛苦的跨平台安装。您可以在下载几分钟后开始编码,因此如果跨平台、64 位或价格是您的主要优势,那么选择 Lazarus 而不是 Delphi。 Lazarus 与 Delphi 高度兼容,我已经转换了几个应用程序而没有太多问题。可以维护在两者上编译的代码。

【讨论】:

上次我检查时,CodeTyphon 的一些内部库存在严重的许可问题。有一个初步的 FMX 代码 - DXScene 产品 - 作为他们自己的“Orca 库”提供。我怀疑其他侵犯版权的行为也适用。我不推荐使用它,而是github.com/LongDirtyAnimAlf/fpcupdeluxe

以上是关于为啥 Delphi 程序员会使用 Lazarus 作为 IDE 而不是使用 Delphi 的 IDE? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

lazarus 的用法

用 Lazarus 开发 OPC Client 1 (关于字符集)

Lazarus是啥?

用 Lazarus 开发 OPC Client 2 (关于Lazarus 编译器)

FreePascal - CodeTyphon 和 Lazarus, 如何像Delphi一样有代码之间的连线?

从delphi或lazarus调用visual studio dll