Forcal的用途

来源:互联网 发布:手机看电影软件 编辑:程序博客网 时间:2024/04/30 18:49

 

欢迎访问Forcal数学软件

Forcal的用途

    通常,使用各种高级语言如C/C++、VB、delphi、FORTRAN等设计的程序,不能对源代码进行动态编译,Forcal可为所有这些应用程序增加对字符串源代码的动态编译功能。Forcal可用于各类数学软件的设计,也可用作报表处理、web、组态软件、游戏等的脚本,具有很高的执行效率。

    Forcal的优势:
    1)Forcal很小。就一个动态库文件forcal32.dll,Forcal动态库版本文件小于100K,静态库版本约200K~300K。仅20多个输出函数。
    2)Forcal很快。比Matlab快约2倍甚至更多(与Matlab的矢量化运算相比)。就目前的脚本而言,只有Lua的速度与Forcal相当。执行"f(x)=2+cos[sin(x)]+... ..."这类数学函数运算恐怕是最快的了。Forcal一级函数的计算速度约为(C/C++)或FORTRAN速度的50%左右,二级函数的速度稍有降低。
    3)Forcal语法很简单。Forcal中只有常量、变量和函数,没有关键字,但有些符号常量、变量名或函数名使用很频繁,可当作“关键字”来使用。如if、while、until、static、common等等。
    4)Forcal功能很强。FORCAL有五种变量,即:自变量、动态变量、静态变量、模块变量和全局变量。有模块私有函数、公有函数的概念;有模块命名空间、二级函数命名空间。既支持小的项目,也支持大的项目。
    5)Forcal功能很容易扩展。Forcal用Win32标准函数调用方式(stdcall调用协议)输出了动态库函数,与各种高级语言是无缝链接的,特别是C/C++。加载FORCAL32.DLL,往FORCAL中添加函数、常量、往Forcal键树中添加任意的数据等,是很平常的事。程序员对Forcal进行扩展,像用户使用Forcal表达式一样平常。Forcal中通过扩展库FcData提供了非常丰富的数据类型:简单数据、任意维数组、类。所有FcData都通过new、delete申请和销毁,与C++非常相似。FcData提供了自动的内存管理,也可以自己管理内存。
    6)应该还能列出一些,大家试用一下就知道了。

    Forcal软件的构成是高度组合式的。Forcal32.dll是核心库,在此基础上可设计种类繁多的Forcal扩展动态库,Forcal程序由Forcal32.dll及零个或任意多个Forcal扩展动态库提供支持。根据完成的功能不同,一个Forcal程序的规模(包括所有支持模块)可以很小(例如只有几百K),也可以非常大。

    操作Windows注册表,这对Forcal程序来说并不是必须的,因而Forcal程序完全可以设计成免安装的绿色软件。

    下面从三个方面讨论Forcal的应用:

    1、设计数值计算软件

    Forcal最初就是为数值计算而设计的,因而最适合此类软件的开发。

    FORTRAN是当之无愧的数值计算语言的老大,但FORTRAN是编译型语言,不能对数学表达式进行动态编译,因而FORTRAN仅仅成为了专业人士使用的工具,在计算量不是特别大的工程中,使用FORTRAN显得力不从心,因此Matlab等解释性脚本语言应运而生。

    MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。由于其脚本优势,使用 MATLAB,可以较使用传统的编程语言(如 C、C++ 和 Fortran)更快地解决技术计算问题。但在我看来,MATLAB有如下缺点:1)MATLAB速度较慢,因Forcal比Matlab快约2倍甚至更多(与Matlab的矢量化运算相比),Matlab的循环操作会慢得让人难以忍受。2)由于Matlab的循环速度很慢,不得已采取了矢量化操作,大大提高了运算速度,但增加了代码的复杂性,书写和阅读Matlab的矢量化代码也是让人大伤脑筋的。3)Matlab引擎是一个庞然大物。

    与MATLAB等脚本引擎相比,Forcal脚本是真正轻量级的快速脚本,执行"f(x,y)=2+cos[sin(x)-y]+... ..."这类数学函数运算恐怕目前无人能比,估计应是脚本速度之极限了。Forcal的循环速度与Lua相当,Lua是目前公认的速度最快的脚本语言。

    使用Forcal设计的数值计算程序是小巧玲珑的、绿色免安装的,可装在U盘里随处使用。如果仅仅使用MATLAB的一个功能,你必须安装MATLAB,这是何等的麻烦啊。多数情况下,你也不必使用FORTRAN,除非是运算量极大的工程。

    例1 简单的函数定义

f(x,y)=x+y;                //定义两个数相加

    例2 三角形面积公式

F(a,b,c:s)= s=(a+b+c)/2,sqrt[s*(s-a)*(s-b)*(s-c)];//定义三角形面积公式
F[3,4,5];

    例3 变步长辛卜生一元积分

f(x)=sin[x]+0.8;            //定义一元函数
SimpIntegrate(1,2,0.0001,"f");

    2、进行嵌入式开发

    Forcal用Win32标准函数调用方式(stdcall调用协议)输出了动态库函数,可供C/C++、VB、delphi、FORTRAN等程序使用。

    很容易对Forcal进行功能扩展,Forcal扩展动态库中仅有一个输出函数 ForcalDll(...),设计和应用都很方便。可用C/C++、delphi、FORTRAN等语言设计Forcal扩展动态库。

    FcData32.dll、QuitFc32.dll、MForcal32.dll、OpenFcGl32.dll、Calculas32.dll等Forcal扩展动态库都是根据Forcal的输出函数设计的,这一切说明Forcal对各种嵌入式开发提供了淋漓尽致的支持。Forcal不仅可用于各类数学软件的设计,也可用作报表处理、web、组态软件、游戏等的脚本,具有很高的执行效率。

    下面是一些Forcal扩展动态库的简单说明:

    FcData32.dll:Forcal数据扩展动态库,支持简单的到任意复杂的数据类型,基本操作对象是FcData数据指针。该库可对其他Forcal扩展模块提供支持,提供必需的数据类型。

    QuitFc32.dll:在任意可接受输入的窗口,按 Ctrl+Alt+Q(q) 键可以退出Forcal运行时的无限循环。

    MForcal32.dll:MForcal对Forcal源程序进行模块化编译,能够编译运行具有固定格式的源程序(字符串表达式),源程序中可以使用C++风格的注释。

    OpenFcGl32.dll:基于OpenGL的进行图形绘制的动态库,将尽可能全面封装OpenGL函数。必须在FcData32.dll之后加载。

    Calculas32.dll:进行微积分运算的动态库。必须在FcData32.dll之后加载。

    3、作为一门动态语言

    Forcal致力于发展成为一个通用的跨平台的脚本语言,既支持嵌入式开发,又自成体系,成为一个功能不断完善的动态语言。目前,Forcal主体结构(Forcal32.dll)已基本完成,支持嵌入式开发方面可发挥地淋漓尽致,但要成为一个功能完善的动态语言,还有大量的工作要做,这不是依靠个人能力所能完成的,期待有志者的关注和参与。

    作为一门动态语言,它必须有许多的标准库,支持输入输出、支持完善的字符串操作、支持正则表达式、支持数据库操作等等。Forcal做的还很不够,很不完善,... ...,待续。

    Forcal或许将成为程序员不得不关注和应用的技术,因为它或许将成为一个普通的中学生、一个普通的工程技术人员、一个普通的游戏爱好者、或者就是一个普通人所越来越熟悉的脚本。


版权所有©Forcal数学软件 2002-2009,保留所有权利
E-mail: forcal@sina.com  QQ:630715621

最近更新: 2009年05月19日

原创粉丝点击