FREE PASCAL/LAZARUS 与 DELPHI 全面比较

sztony 2009-12-12 07:35:28
加精


本人已经离开软件行业多年了,现在主要是做做小生意,炒炒股票,但也经常关注一下软件业的发展,这几天心血来潮,下了个LAZARUS,玩了一下,一下子被它迷住了,感叹真是太牛了!现在把这几天玩的感受写下来,从各个方面比较,供大家看看。
先说下LAZARUS是个啥东西,它是一个OBJECT PASCAL的集成开发环境,其编译器用的是FREE PASCAL,跟DELPHI 几乎一个模样,很多基本的单元,类库,都是用同样的名字,会DELPHI 的人毫不费力就可以使用LAZARUS,凡是FREE PASCAL编译器能运行的平台,LAZARUS就能运行,口号是:“一次编写,到处编译”,官方网站是:http://www.freepascal.org/

为了简单点,把FREE PASCAL/LAZARUS统称为FPC

1) 运行硬件平台:
DELPHI :仅仅在INTEL X86上运行。
FPC: INTEL、POWER PC、SPARC、ARM\ 、Motorola 680x0等,同时还支持64位

2)操作系统:
DELPHI: WINDOWS。
FPC: Linux, FreeBSD, Mac OS X, DOS, Win32, Win64, WinCE, OS/2, Netware (libc and classic) and MorphOS,其最新版本2.4还支持IPHONE、SymbianOS。看起来比DELPHI 多的多了。
更牛的是:可以为没有操作系统的一些微控制器开发程序!从这点上,可以与C平起平坐了。

3) 图形库接口
DELPHI(VCL) : WIN32:
FPC(LCL): WIN32/64、GTK、QT、WINCE、MAC OS X 的COCOA等等。

4) 第三方控件库:
相对来说,FPC要少些,但现在移植的工作非常快,很多重要的库都可以从DELPHI 那里移过来,比如著名的网络控件INDY 、数据库访问控件:ZEOSLIB都能在LAZARUS下使用了。
我做了下测试,在DELPHI 下创建一个窗体,上面堆满了很多控件,然后在LAZARUS下用它带的功能转换一下,一些最基本的控件(如STANDARD页和ADDTIONAL页的),不用任何修改就能用,其他的有可能用不了,随着以后移植的增多,相信大部分都能用,但在运行的时候,老会出现一个DOS窗口,不知道是啥原因,我还没搞清楚。

5)语言区别:
都是OBJECT PASCAL语言,高度兼容DELPHI ,其类,封装,关键字等都一样,但我发现,FPC在某些方面引用了C的风格,如:+=、 -= 、*=、/=。而在DELPHI中,这是不行的,从我个人角度看,不赞成这种写法,这会让代码变得复杂,破坏PASCAL语言的简明。RTL运行库的函数也几乎全部一样,真的很佩服那些牛人,要搞出这样的东西出来,确实要花不少心血的哦!
在FPC的2.4最新版本中,引进了FOR .. IN .. .DO循环,可以兼容DELPHI 2010了。其实我觉得PASCAL语言中,要把FOR … TO … DO 改进下,增加一个STEP,这样就可以加快某些情况下的循环,而现在只能每次加1个,效率有时候就低了。其他语言都可以的,比如 MODULA都有,不知道以前的BORLAND和现在的CODEGEAR为啥不加?很难吗?

在UNICODE支持方面,FPC早就支持了,DELPHI 直到2009才开始。FPC用的UTF8,DELPHI 用的UCS-2方式。
在测算的时候是不同的,比如一个字符串:“abcdefg程序”,如果在DELPHI 2010中,用LENGTH算出的长度是9,而在FPC中则是13。在UTF8中,非ASCII码用三字节编码,而在DELPHI 中,无论中文英文,都看成是一个字。所以才造成这样的区别。
所以同样的字符串在DELPHI 和FPC中得出不同的长度,千万不要大惊小怪。

在64位支持方面:FPC早就有了,而DELPHI 现在都还没点影,真搞不懂那么多专业工程师怎么干不过这些业余的呢?DELPHI 这几年确实太没落了,啥也没改进,整天跟MS后面玩.NET,结果玩到半途,发现这样玩下去,小命也没了,才又反回来。可惜浪费太多时间了。

6)代码编辑器:
我个人感觉,其编辑器要比DELPHI 7好用,风格跟DELPHI 2010差不多。


7)编译效率:
FPC比DELPHI 要慢一些

8)执行效率:
我写过一个对整数的快速排序算法,随机生成个数,存在数组中,数据规模是5000万,FPC比DELPHI 7要慢30%。

我又测试了浮点数计算:数据规模也是5000万,测试时候分成二个方面:
一个是只做基本的加减乘除:如这样的公式 sum := sqrt(sum+((arr_float[i] / arr_float[i-1]) / 7.7) * 0.056) ; FPC也是比DELPHI 7慢30%左右。

但在进一步测试科学计算时,FPC慢很多了,将近慢1.5倍。如增加了一条语句: sum := power(sum,random * 1.5)+sin(100 * 3.14/180)+cos(100 * 3.14 /180)+log10(sum * 100); 也就是说,FPC在进行POWER,SIN,COS,LOG等函数计算时,效率下降很快,我大致看了下,发现RTL中,FPC是用PASCAL写的函数,而DELPHI 很多使用汇编写的。但如果只是语言差异,效率应该也不会下降那么多,应该还跟一些算法有关。

在这方面,FPC应该还有很大的改善空间,一是提升编译器本身,二是改进RTL库。在RTL库方面,DELPHI 最新的版本中,都引进了开源的FASTCODE,我想FPC应该也可以引进,移植到FPC上面来,这样就可以利用开源的成果,快速提高RTL品质,如果什么都要自己造轮子的话,那效率就会太慢了。
如果FPC在整体效率上能与DELPHI 缩小到10%左右的差距时候,那FPC的实际应用领域就大大拓展了!会给DELPHI 造成极大的威胁。

顺便提一下,前几天下了个DELPHI 2010,跟DELPHI 7对比测试后,发现DELPHI 2010要比DELPHI 7慢那么一点点,大概在3-5%之间。当然,DELPHI 2010也加了很多花哨的东西,比如泛型模板、反射等,由于没有许可,只能用14天,还时不时弹出公司试用许可警告,要重新启动才能用,一怒之下,把它删除了。

9)程序体积:
不得不说,FPC编译后的程序体积太大了,当然,如果去掉调试信息后,体积可大幅度减少,但还是比DELPHI 大很多,这是非常需要改进的地方。

10)结论:
总体上,FREE PASCAL已经很不错了,做一些要求不是很高的软件开发,没啥问题。同时其发展速度很快,假以时日,应该会有很好的表现,特别对于需要做跨平台的开发,FPC是一个非常好的选择。


Tony tang
2009-12-12
深圳


...全文
9701 51 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
kartrider 2012-02-03
  • 打赏
  • 举报
回复
学校统统只用Lazarus……
kezhji 2012-01-21
  • 打赏
  • 举报
回复
Delphi没用过,Lazarus装过两次,一次winXP 32bit,一次Linux,哪次也没上手!可能是我学得东西还不够吧,毕竟一直是业余的,最多也就参加过一次NOIP,用gedit编写,在终端用FP + GCC编译也对付的过去。但好像Lazarus支持窗口!FPC怎么编才能有窗口啊,以前在windows里用TP,也只能在调试时用窗口,一旦正式编译后就不行了,有人知道吗?
Terony 2011-08-25
  • 打赏
  • 举报
回复
我曾多次接触过Lazarus,给我的感觉并没有期望的好,但我仍然很关心它的发展,当然最终取决于FPC的发展,毕竟除了Delphi外,它是Object PASCAL家族最大的希望了。如果将来FPC的效率、性能能够更好,那么建立在它之上的Lazarus会更有竞争力。
OO_is_just_P 2011-08-19
  • 打赏
  • 举报
回复
我更倾向于用Turbo Delphi,控件带源码的不安装,直接引用。界面都用基本界面。
hzg134679hzg 2011-08-12
  • 打赏
  • 举报
回复
楼主胡说八道,一看就是没什么了解的,就在那装深沉,最BS这种人!
xzhifei 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 chyanog 的回复:]
默认什么都不做的空窗体都近12M了,通过加壳最小2M多吧,比delphi做的大多了。
[/Quote]

设置一下Lazarus的编译条件,就可以很小了,忘记是哪个设置,网上搜索一下,很多的
hxl126 2011-04-10
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 chyanog 的回复:]

默认什么都不做的空窗体都近12M了,通过加壳最小2M多吧,比delphi做的大多了。
[/Quote]

太恐怖了
疯狂的犹太人 2011-04-08
  • 打赏
  • 举报
回复
吼吼!佩服你呀!不做软件好多年,写东西还是那么专业!以前应该是个高手啊
chyanog 2011-04-06
  • 打赏
  • 举报
回复
默认什么都不做的空窗体都近12M了,通过加壳最小2M多吧,比delphi做的大多了。
llwlz 2010-08-31
  • 打赏
  • 举报
回复
我在想,是不是新出的Delphi XE又落后了。。。
nkym0626 2010-08-30
  • 打赏
  • 举报
回复
为什么编译后的EXE那么大???
kye_jufei 2010-08-30
  • 打赏
  • 举报
回复
支持。。。
kazarus 2010-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sanguomi 的回复:]
看完了
只羡慕楼主 “已经离开软件行业多年了,现在主要是做做小生意,炒炒股票”
[/Quote]

同羡!

Lazarus没有Delphi手感好.
zhangxuyu1118 2010-08-27
  • 打赏
  • 举报
回复
下了试了下,竟然乱码
zhangxuyu1118 2010-08-26
  • 打赏
  • 举报
回复
看看.
sg_knight 2010-04-18
  • 打赏
  • 举报
回复
最近刚开始用delphi2010,先熟悉下。
HeroicDragon 2010-04-18
  • 打赏
  • 举报
回复
真是好东西!
w95927w 2010-04-18
  • 打赏
  • 举报
回复
其实现在看,还不如Python发展的好
somemak 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 xzhifei 的回复:]
前段时间研究过,有两个大问题使我不敢用它,
1.如楼主所说,速度太慢,特别是数值运算时,同样的程序要慢N倍,头疼啊。。。
2.BUG不少,比如楼上说的那个KOL-CE,莫名其妙报错,一报错,整个工程就无法使用了。

不过还是非常看好FPC,希望它越做越好
[/Quote]

严重同意
slmax1 2010-04-16
  • 打赏
  • 举报
回复
我只是来拿每天的10分
加载更多回复(31)

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧