lazarus python_埋没的神器Lazarus

lazarus python_埋没的神器Lazarus最近需要写一个 Windows 平台下的小工具 技术选型上思考了很长时间 最后调研之后还是决定拿 Lazarus 来写 开写之前还有些犹豫的 结果一写之下发现无比利索 不禁感叹 真是个埋没的神器 Lazarus 来源于曾经赫赫有名的 Delphi 不知道这个古老的工具还有多少人记得 但对我来说那就是一个时代的烙印 想当年刚学编程的时候 因为互联网还不发达 学校的机器上安装的还是 TurboPascal 从它开

最近需要写一个Windows平台下的小工具,技术选型上思考了很长时间,最后调研之后还是决定拿Lazarus来写,开写之前还有些犹豫的,结果一写之下发现无比利索,不禁感叹,真是个埋没的神器!

Lazarus来源于曾经赫赫有名的Delphi,不知道这个古老的工具还有多少人记得,但对我来说那就是一个时代的烙印。想当年刚学编程的时候,因为互联网还不发达,学校的机器上安装的还是Turbo Pascal,从它开始踏入编程之路。虽然毕业以后的工作跟编程八竿子打不着,但仍然作为业余爱好,Delphi我曾把玩良久,虽然后来逐渐走向末落,但不妨碍我为之一再惊叹。

Lazarus的发起是在Delphi 7之后,由于Microsoft .net的推出,Delphi从版本8开始转向Delphi .net,包括IDE也转为Dock风格。这个时候,有一批程序员们,他们不喜欢.net模式,也不喜欢Delphi的闭源,便开始筹建Lazarus,力图让其继续沿着Delphi 1~7的风格继续发展,并吸收Kylin的成功经验,使之适应跨平台开发的需要,最终一直发展到今天。Lazarus这个名词来源于圣经,是个曾在死后被耶稣唤醒复活的人物,应当也是寓意着开发者对它的厚望。

这是Lazarus在Win10 1709版本上运行的截图:

lazarus python_埋没的神器Lazarus

win10_1709上运行的Lazarus

那么Lazarus的强大之处在哪?

第一,RAD开发,快速构建UI和应用程序框架。我在写这个工具之初,考虑过很多办法:Electron坑太多且难以访问系统底层,C++开发速度慢,VC的话还要依赖VC_redist,C#要依赖.net平台,各个不同Windows版本的.net版本不一样,又不能完全兼容。但用Lazarus,开发速度快,不需要依赖别的库,普通的界面拖拖拉拉就可以搞定。

第二,底层API无缝访问。作为Delphi的移植,Lazarus保留了对Windows平台API的直接访问,并有着堪比C++的速度。这一点让C#和Electron望尘莫及。尤其Electron,访问底层API得自己写C++依赖包,运气好的话可能会有现成的包,但安装和使用体验同样可能让人崩溃。

第三,跨平台移植性。Lazarus可以支持Windows、Linux、Mac以及Android、iOS、WinCE等多个平台,如果开发的程序需要跨平台,那么在依赖底层API的地方加上条件编译即可。就拿Windows平台来说,Lazarus能够支持的版本包括Win95、Win98、WinMe、WinNT3.51一直到最新的Win10,生成的可执行文件尺寸较小,并有着闪电般的运行速度。这一点恐怕绝大多数开发工具难望其项背。点击这里可以查看Lazarus在各个不同平台上运行的截图。

第四,完全开源并免费。Lazarus及它所基于的Free Pascal都是开源免费的,用它不需要有任何负担。

但是使用Lazarus也不是那么容易的。它的劣势在于:

第一,小众的语言。Lazarus基于Free Pascal,当今还在使用Pascal语言的人数实在不多,对于喜欢跟风的国内程序员恐怕就更少了。相比于常胜不衰的Java、C/C++、Javascript、PHP,以及近年来风头正盛的Python、Go、Swift等,它实在是个偏门语言,甚至我估计大多数人连Lazarus这个名字都没听过。

第二,古典的IDE。Lazarus使用的是Delphi 7式的IDE,没有Git集成,没有像Sublime那样好用的编辑器,没有高度智能的代码提示,尤其是编辑器和热键仍然还是古老的Borland风格,纯粹的现代程序员适应起来,恐怕很需要费一番功夫。

第三,稀缺的文档。Lazarus跟曾经的Delphi一样,架构优秀然而文档极缺。当你需要帮助的时候,不要指望能轻易找到合用的文档,如果恰好可以用Delphi的旧经验那还算幸运,如果没有,要么自己去看LCL源码,要么去Lazarus官方论坛去查询或提问,所以英文基础必须要好。

说了这么多,其实最终归结起来,任何一种语言、平台、技术都有它好用的地方,也都不能包打天下,关键在于学好用好,根据不同的需求,选择最合适的工具而已。如同Lazarus,虽然如今想要用它并不容易,但只要能用起来,适合你的需求,你就能感觉到它的强大和变态。

作者:魏兆华

链接:https://www.jianshu.com/p/526d23ab64a4

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203900.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午9:20
下一篇 2026年3月19日 下午9:20


相关推荐

  • 2026年主流智能体沙箱对比评测与强化学习训练选型指南

    2026年主流智能体沙箱对比评测与强化学习训练选型指南

    2026年3月16日
    3
  • Python基础之lambda表达式

    Python基础之lambda表达式目录1、lambda函数介绍2、lambda函数与def函数的区别3、lambda案例4、map方法混搭有时在使用函数时不需要给函数分配一个名称,该函数就是“匿名函数”。在python中使用lambda表达式表示匿名函数语法:lambda参数列表:lambda体lambda是关键字声明,在lambda表达式中,参数列表与函数中的参数列表一样,但不需要用小括号括起来,冒号后面是lambda体,lambda表达式的主要代码在lambda体处编写,类似于函数体。提示:lambda体不能是一个代码块,不能包含多条

    2022年10月17日
    5
  • java 中 BigDecimal 详解「建议收藏」

    java 中 BigDecimal 详解「建议收藏」首先,学习一个东西,我们都必须要带着问题去学,这边我分为【为什么?】【是什么?】【怎么用?】【为什么要用BigDecimal?】首先,我们先看一下,下面这个现象那为什么会出现这种情况呢?因为不论是float还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度。注:根本原因是:十进制值通常没有完全相同的二进制表示形式;十进制数的二进制表示形式可能不精确…

    2022年5月2日
    50
  • 怎么修改HTML网页的名字_如何修改html文件内容

    怎么修改HTML网页的名字_如何修改html文件内容NetCms默认设置中,只能上传Doc文件,不能上传xls文件和PPT文件。 上传文件类型可以“控制面板–>参数设置–>上传文件允许格式”中设置。但是,仅能上传,添加新闻时,添加附件的文件选择框中无法看到xls文件和ppt文件。 通过查看源文件,添加新闻页面是~/Manage/News/News_add.aspx文件,在该文件中,添加附件位置,通过调用JavaScript的s

    2022年9月29日
    4
  • 渗透测试笔记汇总_渗透测试怎么做

    渗透测试笔记汇总_渗透测试怎么做【拿shell】1.直接上传aspasajspcerphpaspxhtrcdx格式的木马,不行就利用IIS6.0解析漏洞”:1.asp;1.jpg/1.asp;.jpg/1.asp;jpg/1.asp;.xls2.上传图片木马遇到拦截系统,连图片木马都上传不了,记事本打开图片木马在代码最前面加上gif89a,一般就能逃过拦截系统了。3.上传图片木马把地址复制到数据库…

    2026年2月10日
    11
  • javaEE与java的区别

    javaEE与java的区别好程序员Java培训分享JavaEE与Java的区别,有不少想要转行做程序员的朋友都会有一个疑问,JavaEE和Java是不是一种语言,这两者之间又有什么区别呢?  Java一共分为三个版本:JavaSE(标准版)、JavaEE(企业版)以及JavaME(微型版)。  其中JavaSE就是大家所熟知的Java根底,JavaEE在企业最常用的地方就是网站PC端的开发,而JavaME常用于移动端开发,现在熟悉的安卓系统便是用JavaME开发的。  Java既可以被编译,也可以被解说。经过

    2022年7月7日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号