代码改变世界

又一种编程语言?

2008-07-26 20:01  横刀天笑  阅读(1450)  评论(5编辑  收藏  举报
刚上Q同学传我一新闻网页,朦胧的睡眼突然一亮:又一种编程语言or一个开发环境?。如是跑到官方网页瞧了瞧:http://www.ecere.com/

看了一下网页稍微介绍一下。

 

Ecere软件技术是起源于一个跨平台的软件开发工具包。

Ecere集成开发环境

这个集成环境可以用来编辑代码、设计图形用户界面、管理和构建工程,并且还能调试。它的目标是全面支持eCC语言,还可以在工程里包括C++模块。

设计器

设计器可以帮助你可视化的设计对象(比如窗体)

属性窗体和方法窗体可以交互式的修改属性和方法(可以在设计器和代码编辑器中工作)

代码和设计器能保持同步。

代码编辑器

该代码编辑器是个标准的语法高亮文本编辑器

工程管理

IDE支持多种配置(DebugRelease),通过设置编译和链接选项还可以生成可执行程序、静态链接库或共享库。

通过错误报告可以很快的跳到错误代码。资源是嵌入到可执行文件内的,可以很容易的通过Ecere文件访问系统访问。

调试器

允许单步调试代码,查看调用栈。查看线程并且可以在它们之间切换,设置断点等。

看了上面的一些介绍也觉得没有啥,这些.net都可以做到,你这开发环境难道有Visual Studio好用?有点没耐心往下看了。

Ecere运行时组件

这个运行时组件允许跨平台,它给多种平台提供一致的API。还允许程序开发、部署和平台之间没有依赖。现在已经支持了Windows,LinuxMac OS(X11)。还支持一些Unix,如果你只对一部分系统感兴趣的话。未来考虑支持更多的MacOS版本,还考虑增加对PDA和游戏设备的支持。运行时组件非常小,可以编译成一个静态的或者共享库,或者直接编译进可执行程序,在Windows上大小小于1M(这么小?还跨平台?有继续读下去的欲望了)
跨平台的图形用户界面

这个还不错,可以作为xWindows,GTK,QT的替代品了。支持广泛的图形文件格式。

系统功能

运行时组件覆盖了多种强有力的系统编程能力,比如文件访问啊、多线程啊、时间访问啊。还可以进行Socket编程。

3D图形引擎

嘿嘿,非常容易就可以进行3D编程了。引入了相机、材料、灯光等3D引擎的对象。

可以支持从3DS文件格式加载模型。这个引擎包括了Direct3DOpenGL.

貌似很漂亮啊

 

组件对象模型

还支持COM??支持分布式对象、动态注入等玩意儿,不懂。

 

eC语言

终于讲到它的语言了,看看是个啥样子。

是个面向对象语言(哎,今天啥语言都宣称它OO),还完全兼容C。它可以编译成本地代码,这样可以获得最大性能的提升(这个不错,呵呵)。像C#Java那样支持功能强大的OO特性。标准的C编程可以在eC模块里任意使用,其它的标准C模块还可以链接到eC代码里。

这个语言就是为了保持C的性能而设计的。所有的Ecere技术,包括上面提到的那个IDE还有Ecere编译器都是用eC这个语言编写的。看看这语言长啥样子:

import "ecere"

class Form1 : Window
{
   text 
= "Form1";
   background 
= white;
   borderStyle 
= sizable;
   hasMaximize 
= true;
   hasMinimize 
= true;
   hasClose 
= true;
   size 
= { 640480 };

   Button button1
   {
      
this, text = "button1", position = { 280176 };

      bool NotifyClicked(Button button, 
int x, int y, Modifiers m)
      {
         
return true;
      }
   };
}

Form1 form1 {};
怎么感觉有点像在编写HTML语言的层次结构。

没有更多的头文件、方法原型的声明。

内存管理

它通过引用计数来搞定这个内存管理(引用计数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语言的语法树文件