又一种编程语言?
2008-07-26 20:01 横刀天笑 阅读(1482) 评论(5) 编辑 收藏 举报看了一下网页稍微介绍一下。
Ecere软件技术是起源于一个跨平台的软件开发工具包。
Ecere集成开发环境
这个集成环境可以用来编辑代码、设计图形用户界面、管理和构建工程,并且还能调试。它的目标是全面支持eC和C语言,还可以在工程里包括C++模块。
设计器
设计器可以帮助你可视化的设计对象(比如窗体)
属性窗体和方法窗体可以交互式的修改属性和方法(可以在设计器和代码编辑器中工作)
代码和设计器能保持同步。
代码编辑器
该代码编辑器是个标准的语法高亮文本编辑器
工程管理
该IDE支持多种配置(Debug和Release),通过设置编译和链接选项还可以生成可执行程序、静态链接库或共享库。
通过错误报告可以很快的跳到错误代码。资源是嵌入到可执行文件内的,可以很容易的通过Ecere文件访问系统访问。
调试器
允许单步调试代码,查看调用栈。查看线程并且可以在它们之间切换,设置断点等。
看了上面的一些介绍也觉得没有啥,这些.net都可以做到,你这开发环境难道有Visual Studio好用?有点没耐心往下看了。
Ecere运行时组件
这个运行时组件允许跨平台,它给多种平台提供一致的API。还允许程序开发、部署和平台之间没有依赖。现在已经支持了Windows,Linux和Mac OS(X11)。还支持一些Unix,如果你只对一部分系统感兴趣的话。未来考虑支持更多的MacOS版本,还考虑增加对PDA和游戏设备的支持。运行时组件非常小,可以编译成一个静态的或者共享库,或者直接编译进可执行程序,在Windows上大小小于1M。(这么小?还跨平台?有继续读下去的欲望了)
跨平台的图形用户界面
这个还不错,可以作为xWindows,GTK,QT的替代品了。支持广泛的图形文件格式。
系统功能
运行时组件覆盖了多种强有力的系统编程能力,比如文件访问啊、多线程啊、时间访问啊。还可以进行Socket编程。
3D图形引擎
嘿嘿,非常容易就可以进行3D编程了。引入了相机、材料、灯光等3D引擎的对象。
可以支持从3DS文件格式加载模型。这个引擎包括了Direct3D和OpenGL.
貌似很漂亮啊
组件对象模型
还支持COM??支持分布式对象、动态注入等玩意儿,不懂。
eC语言
终于讲到它的语言了,看看是个啥样子。
是个面向对象语言(哎,今天啥语言都宣称它OO),还完全兼容C。它可以编译成本地代码,这样可以获得最大性能的提升(这个不错,呵呵)。像C#和Java那样支持功能强大的OO特性。标准的C编程可以在eC模块里任意使用,其它的标准C模块还可以链接到eC代码里。
这个语言就是为了保持C的性能而设计的。所有的Ecere技术,包括上面提到的那个IDE还有Ecere编译器都是用eC这个语言编写的。看看这语言长啥样子:
class Form1 : Window
{
text = "Form1";
background = white;
borderStyle = sizable;
hasMaximize = true;
hasMinimize = true;
hasClose = true;
size = { 640, 480 };
Button button1
{
this, text = "button1", position = { 280, 176 };
bool NotifyClicked(Button button, int x, int y, Modifiers m)
{
return true;
}
};
}
Form1 form1 {};
没有更多的头文件、方法原型的声明。
内存管理
它通过引用计数来搞定这个内存管理(引用计数VB中不是也用来了么?好像有弊端吧)。不过eC设计初衷是作为一个高级的C语言,所以它没有垃圾回收,所谓的引用计数只是针对类里面的实例成员和全局的对象。
怎么初一看这语言好像是万金油啊,啥都能搞。
不过我从它的IDE环境的输出窗口看出点猫腻了:
Building project blank using the Debug configuration...
blank-Win32-Debug.Makefile
Generating symbols...
blank.ec
Compiling...
blank.ec
blank.c
Writing symbol loader...
blank.main.ec
blank.main.ec
blank.main.c
Linking...
blank.exe (Debug) - no error, no warning
产生符号后进入编译,为啥出现那么多以c为后缀的文件?还一个文件一个,我看工程里面并没有啊,难道是这个语言的编译器先将自己编译成c语言,然后使用c语言的编译器生成目标代码?这只是个猜测,我们去生成目录看看:
Blank.sym是他的编译器生成的符号文件:
[Global Instance]
[Imported Modules]
[Private]
ecere
.
[Defined Classes]
AddThread
[Base]
ecere::sys::Thread
[Defined Methods]
AddItem
[Private]
[Type]
void AddItem(char * string, ecere::sys::Seconds delay)
.
[Defined Data Members]
string
[Private]
[Type]
char[400]
delay
[Private]
[Type]
ecere::sys::Seconds
而那个C语言文件里是一个语法树的描述,还有以imp为后缀的文件,是一些导入的东西。以o为后缀的就是可重定位目标程序了。
我觉得这个东西后面干了这些事情:
第一步:生成符号文件和导入文件
第二步:根据这个生成C语言的语法树文件