欢迎访问 Forcal程序设计

Forcal的用途

通常，使用各种高级语言如C/C++、VB、delphi、FORTRAN等设计的程序，不能对源代码进行动态编译，Forcal可为所有这些应用程序增加对字符串源代码的动态编译功能。Forcal可用于各类数学软件的设计，也可用作报表处理、web、组态软件、游戏等的脚本，具有很高的执行效率。
Forcal的优势：
1）Forcal很小。就一个动态库文件Forcal32W.dll，Forcal动态库版本文件小于150K，静态库版本约260K～300K。仅20多个输出函数。
2）Forcal很快。就目前的脚本而言，只有Lua的速度与Forcal相当。Forcal一级函数的计算速度约为(C/C++)或FORTRAN速度的50%左右，二级函数的速度稍有降低。
3）Forcal语法很简单。Forcal中只有常量、变量和函数，没有关键字，但有些符号常量、变量名或函数名使用很频繁，可当作“关键字”来使用。如if、while、until、static、common等等。
4）Forcal功能很强。FORCAL有五种变量，即：自变量、动态变量、静态变量、模块变量和全局变量。有模块私有函数、公有函数的概念；有模块命名空间、二级函数命名空间。既支持小的项目，也支持大的项目。
5）Forcal功能很容易扩展。Forcal用Win32标准函数调用方式（stdcall调用协议）输出了动态库函数，与各种高级语言是无缝链接的，特别是C/C++。加载Forcal32W.dll，往FORCAL中添加函数、常量、往Forcal键树中添加任意的数据等，是很平常的事。程序员对Forcal进行扩展，像用户使用Forcal表达式一样平常。Forcal中通过扩展库FcData提供了非常丰富的数据类型：简单数据、任意维数组、类。所有FcData都通过new、delete申请和销毁，与C++非常相似。FcData提供了自动的内存管理，也可以自己管理内存。
6）应该还能列出一些，大家试用一下就知道了。

Forcal软件的构成是高度组合式的。Forcal32W.dll是核心库，在此基础上可设计种类繁多的Forcal扩展动态库，Forcal程序由Forcal32W.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引擎是一个庞然大物。3）代码矢量化使Matlab代码变得复杂，一般人难以掌握。

与MATLAB等脚本引擎相比，Forcal脚本是真正轻量级的快速脚本。

Forcal的速度与Lua相当，Lua是目前公认的速度最快的脚本语言。

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

Forcal代码的简单例子：

例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扩展动态库中仅有一个输出函数 FcDll32W(...)，设计和应用都很方便。可用C/C++、delphi、FORTRAN等语言设计Forcal扩展动态库。

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

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

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

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

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

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

XSLSF32W.dll：进行 数值计算的动态库，根据徐士良算法改写。必须在 FcData32W.dll 之后加载。

3、作为一门动态语言

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

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

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

版权所有© Forcal程序设计 2002-2010，保留所有权利
E-mail: forcal@sina.com QQ：630715621
最近更新: 2010年08月05日