free pascal 和 lazarus 有什么区别?
2个回答
展开全部
本人已经离开软件行业多年了,现在主要是做做小生意,炒炒股票,但也经常关注一下软件业的发展,这几天心血来潮,下了个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是一个非常好的选择。
先说下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是一个非常好的选择。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询