logix的学习和一些想法

该博客围绕将BioSpi语言转化为Logix下可编译运行的程序展开。介绍了BioSpi是描述生物反应的并发语言,重点讲述了Logix,它是用FCP语言写成的并发系统,由Computations、Modules、Services构成,还说明了在Logix下编写和运行程序的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前我要做的一个项目是关于怎样将BioSpi语言转化成可在logix下可编绎运行的程序。BioSpi是一个并发的用于描述生物反应的语言,目前我对它的了解不深,正在搜集资料,估计资料收全后会做一些相关介绍。这里讲一讲这几天对logix的学习。

Logix是一个用FCP(Flat Concurrent Prolog)语言写成的并发系统(也可以说一个编程环境),在它上面可以并发的运行程序。CP(Concurrent Prolog)是一种为程序的并发执行而设计的逻辑编程语言。它是面向进程(process oriented)的语言,以数据流的同步和命令执行的不确定行作为它的基本控制技术。FCPCP的一个子集,它拥有绝大多数CP具有的功能。做为了一个编程环境,logix拥有自己的编绎器,编绎器将FCP编写的程序解释成抽象的FCP机器指令,并由一个由C编写的仿真器(emulator)执行它。

Logix由三种类型的对象构成,它们分别的:ComputationsModulesServicesComputationsLogix中程序执行、控制、调试的基本单位(可以理解为一个正在运行的进程,事实上一个Computation由很多Processes构成)ModulesLogix中程序编绎的基本单位(可以理解为一段程序代码);而Services提供了调用Logix系统中底层功能的接口(可以理解为系统调用)

那么,在Logix下编写一个程序并让它执行的过程如下:

(1)       编写调试程序的过程跟所有高级语言类似(编写,运行,修改,直到运行结果正确)。

(2)       这里我们说说编写的程序的组成以及它是怎样运行的,以一个简单的反转串列的例子来说明问题。(rev.cp)

                reverse([X|Xs],Ys):-

                reverse(Xs,Zs),append(Zs,[X],Ys).

reverse([],Ys):-true:Ys=[].

append([X|Xs],Ys,Zs):-true:Zs=[X|Zs'],

append(Xs,Ys,Zs').

append([],Ys,Zs):-true:Zs=Ys.

以上这段程序我们可以看做是一个Modules,在里面包含了两个Procedures,分别的reverseappend,它们分别都用到了递归调用。如果我们想编绎运行它们,可以在”@”提示符下输入下列命令:

compile(rev) //可省

rev#append([1,2,3],[4,5],L1)

系统开始自动运行

<1>started

<1>terminated

接着我们输出我们想要的值

L1^

L1=[1,2,3,4,5]

这里我们可以看出,一个Modules可以由很多个Procedures组成。就象C程序可以由很多函数组成一样。一个Module可以调用很多的Services。最后面我们声的那句reverse([],Ys):-true:Ys=[].事实上代表了一个Process,所以一个Computation可以由很多Processes组成,并同时跨越很多的Services。一言一毕之,一个Computation(计算)由很多的Processes并发执行,ProcessModule里定义并通过解释器解释执行,Module里可以同时调用多个的Services

最后,Logix还提供了很多的接口(类似WindowsAPI),这些是编程时可以查手册的,这里不做详细介绍。

一些想法:Logix在实现程序的并发运行时做得很不错,如果有它的源代码我相信会学到更多。 

一些想法:Logix在实现程序的并发运行时做得很不错,如果有它的源代码我相信会学到更多。 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值