zoukankan      html  css  js  c++  java
  • 又一种编程语言?

    刚上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语言的语法树文件


  • 相关阅读:
    《VR入门系列教程》之21---使用Unity开发GearVR应用
    《VR入门系列教程》之20---使用Oculus移动端SDK
    《VR入门系列教程》之19---GearVR开发初识
    《VR入门系列教程》之18---Oculus代码剖析
    《VR入门系列教程》之17---发布第一个应用
    《VR入门系列教程》之16---第一个OculusVR应用
    阿里巴巴开发手册提取信息
    国富论
    富通天下(W 笔试)
    富通天下(T 面试)
  • 原文地址:https://www.cnblogs.com/yuyijq/p/1252203.html
Copyright © 2011-2022 走看看