`
forrestju
  • 浏览: 3611 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

理想的编程语言

 
阅读更多
理想的编程语言  鞠文广

以下纯粹是个人观点, 不代表任何组织或社团.
关键词: 并发编程 函数编程 逻辑编程
摘要: 由于现有语言不能很好的为现实世界建模, 我提出一种编程方法论和编程语言Processlog. 它的编程思想是"面向进程 + 函数编程+ 逻辑编程等", 用它写的程序的软件体系结构很清晰, 程序简洁优美, 程序的正确性容易用数学推理证明, 适用于各种领域.

现在流行的编程语言如Java和C#, 大多是面向对象的, 程序的各部分是通过方法调用连在一起, 其编程范式是命令编程, 即使支持其他范式也包装得很难理解和使用.

面向对象实际上只适合实现抽象数据类型, 让它去完成除此之外的任务确实是勉为其难, 即便能完成也给人不伦不类的感觉, 既不像面向对象编程, 也不像它的前任(过程编程). 这些语言中的对象与物质世界的物质(或对象)很不一致, 它使用方法调用的方式与其他对象进行相互作用, 而这与物质之间的(通过通信或媒介)相互作用是截然不同的, 因此用面向对象无法很确切地模拟现实世界(面向对象思想的初衷), 更不用说准确地为现实世界建立模型.

这几年流行的web服务和SOA虽使程序间交互更方便, 但它从本质上说还是使用”面向对象+命令编程+方法调用”的思路, 在编程方法论上并没有实质的进步.

用现在流行的语言实现的完成复杂功能的程序逻辑不清晰, 原因在于”命令编程+方法调用”的设计机制. 这使程序很难模块化, 副作用无所不在, 因此很难正确实现复杂功能.

现实世界的发展变化是通过事物间的相互作用实现的, 而这种相互作用用计算机科学的语言来说就是进程间的并发(concurrency). 软件的本质是什么? 我觉得:软件总是完成某种功能的,归根到底是对现实世界的事物间相互作用进行建模. 因此软件的组成部分间自然就是并发的关系, 而不是过程调用的关系. 用相互通信的进程来对现实世界的事物间相互作用进行建模是比较合理的. 所以进程应该作为语言的基础成分, 是软件的基本组成部分, 而不是只为了提高效率才采用的.

为了使程序能准确地为现实世界建立模型, 从而正确性更高, 结构更合理, 模块化程度更高, 因此在几种编程思想或语言的基础上(见references), 我提出一种新的编程思想: 面向进程+函数编程+逻辑编程+约束编程(constraint programming)+其他合理的范式(命令编程除外)和以此为方法论的一门编程语言Processlog (全称process logic).

由于现有的并发机制要么不够理想, 存在不能接受的缺陷(如Java中的monitor机制); 要么很难应用于实际(如CSP的通道(channel)通信), Processlog中采用的并发机制是: 程序中同时运行的进程相互间通过端口来通信. 这种并发机制是我根据Abstract Behavior Types[1]的思想提出来的. 要完成两个进程间通信, 需把一个进程的输出端口和另一进程的输入端口相连, 然后在输出端口发送消息, 在输入端口接收消息就可以了. 这种机制很自然, 和现实世界的事物间相互作用是类似的.

Processlog的语法概要如下:

1 运算符
(1)  ?  输入;  c ? x 从输入端口c上接收输入值放到变量x中
(2)  !  输出;  c ! v 把v的值从输出端口c上输出
(3)  ->  顺序进行的事件的先后关系
(4)  | b : s  分支
(5)  a >> p.b 输出端口a连接到进程p的输入端口b
(6)  a << p.b 输入端口a连接到进程p的输出端口b
(7)  and, or, not 逻辑运算符
(8)  算术运算符和关系运算符  与Java中相同

2 程序的组成成分
(1)  Unit 程序单元
(2)  Process  进程
(3)  Function  函数
(4)  Predicate 谓词
(5)  DataInPort 数据输入端口类型
(6)  OutPort  输出端口类型
(7)  InPort  输入端口类型
(8)  ResultPort 结果输出端口类型

3 原子数据结构
(1) List (函数编程中的List类型, 对List的操作函数与函数编程中相同);
(2) Tuple 元组, 同Clean.
(3) Set 集合
没有数组

4 进程的定义
Process ChangeRel
( DataInPort dataIn(List, Em, Em);
ResultPort resultOut(Em);
InPort fromGetRel;
OutPort toGetRel, toDetach, toAttach, toChangeRel
)
% 生成与当前进程相连接的进程, 并配置端口间的连接
(
  GetRel getRel; Detach detach; Attach attach;

  toGetRel >> getRel.dataIn,
  fromGetRel << getRel.resultOut;

  toDetach >> detach.dataIn;

  toAttach >> attach.dataIn
)

{
dataIn?(list, rlEm, em) ->
( | list=[cem:cems]:
(  ChangeRel changeRel;
     toChangeRel >> changeRel.dataIn  % 递归进程
  )
  toGetRel!(rlEm.id) -> fromGetRel?rel
  -> toDetach!(cem, rlEm.id)
  -> toAttach!(cem, em.id, rel.level, rel.weight, rel.relation)
  -> toChangeRel!(cems, rlEm, em)
)
}

进程由事件组成, 如fromGetRel?rel是输入事件, toGetRel!(rlEm.id)是输出事件.
用Processlog写的程序都可以用动态视图(见附件)来表示, 其中的方形表示进程, 箭头表示数据流向. 进程间是并行运行的, 相互通信.

5 函数
[Function] compute(double x)=
| x<=0: x*x+3
| x>0:  compute(x-5)* compute(x-3)
函数只能以事件的方式在进程中使用或在其他函数中使用, 不能独立使用.

6 谓词
/* 建图 */
Predicate createGraph(t, graph):-
addNode(t, null, ({},{}), graph1),
getDS(t, graph1.ns, tlist),
addList(tlist, t, graph1, graph).
/* 加节点 */
Predicate addNode(t, null, (ns, es), (ns1, es):-
merge(ns, {t}, ns1).
Predicate addNode(t, upper, (ns, es), (ns1, es1)):-
merge(ns, {t}, ns1),
merge(es, {(upper, t)}, es1).

7 把谓词转换为函数
create(t)= graph
where createGraph(t, graph)

谓词不能独立使用也不能在进程中直接使用, 先转换为函数后再在进程中使用.

8 程序单元: 包含进程和数据类型
Unit PMDAO;
interface
Tuple M;
Process GetReleasedVersion(DataInPort dtIn, OutPort pt1 , InPort pt2);

implementation
M=(String id, String name, String version, …);
Process GetReleasedVersion(DataInPort dtIn, OutPort pt1 , InPort pt2)
(…)
{

}

指导原则: 程序是由通过端口相连接的进程组成的. 数据处理和算法用函数编程实现, 如果函数编程不适用于要处理的问题, 就使用逻辑编程或约束编程.

Processlog语言限制了编程的随意性, 要求只能用进程+函数编程+逻辑编程的方式编程, 不允许用Java或c#的命令方式编程.

Processlog 现在还没有在机器上实现. 我用该语言重写了实际项目中的一些复杂代码(原是Java代码), 证实用它写的程序确实简单清晰, 有类似数学的简洁美. "7 谓词"就是其中一部分代码.

我的想法是: 应先在纸面上规定它的语法与语义, 再通过使用它完成一些复杂的项目代码来发现它的不足, 再进而改进它, 再实践, 再改进, 直到它基本完善再在机器上实现.

现在需解决的问题是: 软件分析设计方法(不同于面向对象编程和面向过程编程)?

希望有识之士和我一起共同发展这种编程方法论和这门语言.

联系方式: juwenguang2000@yahoo.com.cn
博客: http://www.cnblogs.com/forrestju/

References
1. Farhad Arbab, Abstract Behavior Types: a foundation model for components and their composition
2. Clean  http://clean.cs.ru.nl/
3. Prolog
4. Delphi
5. JCSP
注: 转载时请注明作者.
  • 大小: 11.9 KB
分享到:
评论
57 楼 RednaxelaFX 2009-08-26  
乱入一下。join calculus的话Concurrent Basic也有实现
56 楼 Trustno1 2009-08-26  
http://en.wikipedia.org/wiki/Join-calculus


The join-calculus is a process calculus developed at INRIA. ....... Despite this limitation, the join-calculus is equally as expressive as the full π-calculus. Encodings of the π-calculus in the join-calculus, and vice-versa, have been demonstrated
55 楼 forrestju 2009-08-25  
实际上, 我这里提出的并发机制和join calculus差别很大.
54 楼 forrestju 2009-08-25  
Trustno1 写道
http://jocaml.inria.fr/
The best way to predict future is to invent it.

请教:你觉得我这里提的并发模型和join演算一样不一样?
53 楼 Trustno1 2009-08-25  
http://jocaml.inria.fr/
The best way to predict future is to invent it.
52 楼 forrestju 2009-08-25  
liuwangxia 写道
非常佩服楼主的创新精神,加油!

多谢你的鼓励!
liuwangxia 写道
如果能同时解决程序的安全性证明和程序的性能最优化问题,那就更完美了。

这些是在正确性证明基础上的更高要求, 我想等语言基本实现了再考虑, 目前我还是在完善语言本身的基本机制, 这是一个长期的过程.
forrestju 写道
ProcessLog的语法概要如下:
1 运算符
(1)  ?  输入;  c ? x 从输入端口c或通道c上接收输入值放到变量x中
(2)  !  输出;  c ! v 把v的值从输出端口或通道c上输出

liuwangxia 写道
觉得第(1)(2)个符号的选用不是很好,不直观,建议再斟酌一下,个人认为不必要局限在ASCII码范围。

这是沿用了进程代数中的符号,Erlang也用!作输出, 习惯了就好了.
51 楼 liuwangxia 2009-08-25  
非常佩服楼主的创新精神,加油!
forrestju 写道
摘要: 由于现有语言不能很好的为现实世界建模, 我提出一种编程方法论和编程语言ProcessLog. 它的编程思想是" 面向进程 + 函数编程+ 逻辑编程等", 用它写的程序的软件体系结构很清晰, 程序简洁优美, 程序的正确性容易用数学推理证明, 适用于各种领域.
如果能解决程序的正确性证明问题,那是相当大的突破。
如果能同时解决程序的安全性证明和程序的性能最优化问题,那就更完美了。

forrestju 写道
ProcessLog的语法概要如下:
1 运算符
(1)  ?  输入;  c ? x 从输入端口c或通道c上接收输入值放到变量x中
(2)  !  输出;  c ! v 把v的值从输出端口或通道c上输出
(3)  ->  顺序进行的事件的先后关系
(4)  | b : s  分支
(5)  a >> p.b 输出端口a连接到进程p的输入端口b
(6)  a << p.b 输入端口a连接到进程p的输出端口b
(7)  and, or, not 逻辑运算符
(8)  算术运算符和关系运算符  与Java中相同
觉得第(1)(2)个符号的选用不是很好,不直观,建议再斟酌一下,个人认为不必要局限在ASCII码范围。

forrestju 写道
另外, 大家不要把语言分为中国人提出的还是外国人提出的, 科学无国界.
极端民族主义情绪和极端爱国主义情绪其实是一种自卑心理的畸形反应,而且往往是被统治者蓄意诱导和激化出来的,是想转移民众对统治者的不满。
正常的民族感情和爱国情操是自发的自下而上的。
50 楼 forrestju 2009-08-23  
我把erlang.org上的一段Erlang示例代码用ProcessLog重写了一下, 大家可以对比一下.
Erlang示例代码 Echo process
go() ->
Pid2 = spawn(echo, loop, []),
Pid2 ! {self(), hello},
receive
{Pid2, Msg} ->
io:format("P1 ~w~n",[Msg])
end,
Pid2 ! stop.

loop() ->
receive
{From, Msg} ->
From ! {self(), Msg},
loop();
stop ->
true
end.

用ProcessLog重写:
Process Start = Go

Process Go
(
  OutPort toLoop, stdOut;
  InPort fromLoop
)
(
  Loop loop;
 
  toLoop >> loop.in,
  fromLoop << loop.out
)

    {
    toLoop!["hello"]
    -> fromLoop?[msg]
    -> stdOut![msg]
    -> toLoop!["stop"]   
    }
   
Process Loop
(
           DataInPort in(String);
  ResultPort out(String)
)
      
       {   
in?[msg]
-> ( | not(msg="stop"): out![msg]
->self
   )
       }
49 楼 forrestju 2009-08-21  
由于在实践中发现用通道通信有很难克服的困难, 因此我在抽象行为类型(Farhad Arbab, Abstract Behavior Types: a foundation model for components and their composition)的基础上提出了新的进程并发机制.
我在文章中已修改了进程相关内容, 现在文章中的并发机制就是这个新提出的机制.
48 楼 visualcatsharp 2009-08-18  
whaosoft 写道
process logic 是什么语言啊

有很多种中文解释:形而上学,不切实际 and so on
47 楼 whaosoft 2009-08-15  
process logic 是什么语言啊
46 楼 kjj 2009-08-12  
对csp 只了解个大概,感觉吧,应该是一种新模型,同时感到要想实现这种模型肯定会很不简单,毕竟是不是适合的只要大获成功后才知道,支持楼主一下!!
45 楼 forrestju 2009-08-12  
luck_donkey 写道
楼主的标题确实很大:”理想“,有点最终理论的味道。
楼主帖子前半段的意思归纳起来就是:并发为王。不知道楼主同不同意。

我的意见是:计算机技术说起来是一项工程性质的学科,是反映和解决现实世界问题而生的。最初,大家看见在现实世界中都是通过产生一系列的事件,从一种状态变换到另外一种状态,很自然,反映到语言中就是”过程式“的,再仔细一看,哦,这个过程中还有某某东西,事物参与在里头的,光说变化而不确定是谁在变化,那也是不行的,那就再加一个,”面向对象“吧。可是到了现在,眼界宽了,发现不仅是某个东西在那里运动,而且是一大群东西在那里运动,那好,就加上”并行“吧。

我看楼主的语言就是朝着并行而去的,而且楼主把对象和过程都扁了一通,很明显,你的语言的目的是解决并行这个问题的,因此可算是一个DSL,解决特定领域问题的语言。在多处理器,尤其是多核还不曾普及的前些年,并行还不成为问题,在现在的硬件情形下,这样的讨论就很有必要了。

当然,对并行的研究不是现在才开始的。从某一个问题的解决方案到一类问题的程序库,再到一类特定领域的语言,这是一个把解决方法逐步内化的过程,让使用者使用起来也更加方便。


"Process(进程,不是procedure) Oriented Design --Concurrency for All" 这个思想我是从jcsp(Peter Welch (p.h.welch@kent.ac.uk) Computing Laboratory, University of Kent at Canterbury)学来的.
参见我上传的ppt压缩文件.
44 楼 luck_donkey 2009-08-12  
楼主的标题确实很大:”理想“,有点最终理论的味道。
楼主帖子前半段的意思归纳起来就是:并发为王。不知道楼主同不同意。

我的意见是:计算机技术说起来是一项工程性质的学科,是反映和解决现实世界问题而生的。最初,大家看见在现实世界中都是通过产生一系列的事件,从一种状态变换到另外一种状态,很自然,反映到语言中就是”过程式“的,再仔细一看,哦,这个过程中还有某某东西,事物参与在里头的,光说变化而不确定是谁在变化,那也是不行的,那就再加一个,”面向对象“吧。可是到了现在,眼界宽了,发现不仅是某个东西在那里运动,而且是一大群东西在那里运动,那好,就加上”并行“吧。

我看楼主的语言就是朝着并行而去的,而且楼主把对象和过程都扁了一通,很明显,你的语言的目的是解决并行这个问题的,因此可算是一个DSL,解决特定领域问题的语言。在多处理器,尤其是多核还不曾普及的前些年,并行还不成为问题,在现在的硬件情形下,这样的讨论就很有必要了。

当然,对并行的研究不是现在才开始的。从某一个问题的解决方案到一类问题的程序库,再到一类特定领域的语言,这是一个把解决方法逐步内化的过程,让使用者使用起来也更加方便。

43 楼 forrestju 2009-08-11  
pizhou 写道
我很多东西不懂,但是我个人觉得楼主说的还是有道理的。
这个问题其实我一直也思考过,但是一直没有进一步的研究,只是直觉上觉得现在的编程语言很怪。
比如在现实生活中,我和另外一个人的说话,并不存在调用与被调用的关系。我和另外一个人都是一个活动的主体,互相说话,同时也在通信(听对方说话),然后再做出反应。在这个里面没有任何调用和被调用的关系存在。我以前也曾经考虑过,每个对象都应该是一个运动的主体,或者说进程,只有这样这能用计算机模拟现实世界。

有空的时候我会看看楼主的材料。


我提出这个理论的最初的出发点就是你说的这个问题.
你举的例子很能说明问题.呵呵.我写文章一般不举例子,这样可能让人觉得很枯燥,进而很难接受.呵呵
42 楼 pizhou 2009-08-11  
我很多东西不懂,但是我个人觉得楼主说的还是有道理的。
这个问题其实我一直也思考过,但是一直没有进一步的研究,只是直觉上觉得现在的编程语言很怪。
比如在现实生活中,我和另外一个人的说话,并不存在调用与被调用的关系。我和另外一个人都是一个活动的主体,互相说话,同时也在通信(听对方说话),然后再做出反应。在这个里面没有任何调用和被调用的关系存在。我以前也曾经考虑过,每个对象都应该是一个运动的主体,或者说进程,只有这样这能用计算机模拟现实世界。

有空的时候我会看看楼主的材料。
41 楼 forrestju 2009-08-11  

郑重声明:我不想再与别人争论提出这个语言有没有必要.我在这发贴的目的是找合作者.
我在文章中已经说了:
"希望有识之士和我一起共同发展这种编程方法论和这门语言. "
40 楼 forrestju 2009-08-11  
ray_linn 写道
forrestju 写道
ray_linn 写道
面向进程+函数编程+进程间通信+逻辑编程+约束编程 =C#+F#+Nemerble+Axum+Microsoft.Contract=.net


你能确定哪种情形下采用哪种方式最有效率? 还是MS的方法好,分而化之,信手拈来。


我在google上没搜到Nemerble和Microsoft.Contract.
Axum是基于Actor模型的,它不如通信进程科学,合理.


连Microsoft.Contract都找不到。。服了你了,在.net 4.0里。

这完全实现了你的想法,现在你倒开始挑骨头了。

C#  面向对象。
F#  面向函数
Axum 面向并发与通讯。
Nemerle 又对象又函数
Microsoft.Contract 契约编程。。(谁想出约束编程这玩意的)。

很遗憾你不知道约束编程.不知道没关系,胡乱联系就不应该了.
39 楼 ray_linn 2009-08-11  
forrestju 写道
ray_linn 写道
面向进程+函数编程+进程间通信+逻辑编程+约束编程 =C#+F#+Nemerble+Axum+Microsoft.Contract=.net


你能确定哪种情形下采用哪种方式最有效率? 还是MS的方法好,分而化之,信手拈来。


我在google上没搜到Nemerble和Microsoft.Contract.
Axum是基于Actor模型的,它不如通信进程科学,合理.


连Microsoft.Contract都找不到。。服了你了,在.net 4.0里。

这完全实现了你的想法,现在你倒开始挑骨头了。

C#  面向对象。
F#  面向函数
Axum 面向并发与通讯。
Nemerle 又对象又函数
Microsoft.Contract 契约编程。。(谁想出约束编程这玩意的)。
38 楼 forrestju 2009-08-11  
Magicloud 写道
兄弟,我再只说两句。
1. 你根本没明白eiffel语言的思想,注意,我不是说开发的思想。
2. 从你的说法来看,我认为是你没看懂csp。


我想请教老兄:
1 麻烦你把eiffel语言的思想表达一下,如果我不知道就可以学习一下
2 麻烦你说一下我没看懂csp的哪些方面. 这样我也好进一步学习.

我也想问个问题:
你了解jcsp的思想吗?

相关推荐

    Erlang编程指南

    erlang是任何必须并发、容错和快速响应的环境的理想编程语言。随着多核处理器及其针对并发的新的可扩展方式的发展,erlang得到了广泛的使用。通过本书,你将学会如何使用erlang编写复杂的并发程序,不管你是否有编程...

    mojo编程语言介绍及示例代码.zip

    mojo编程语言 Mojo编程语言是一种相对较新的编程语言,它基于Perl 5语言的Mojolicious框架开发,为Web开发提供了现代化的工具和功能。Mojo编程语言的语法简洁而直观,同时拥有许多现代编程语言的特性,如异步I/O、...

    WinBatch(高档编程语言)软件v2016B免费版

    WinBatch是一种高档的编程语言,可以完全设定计算机,分配如简单的菜单选择、命令或热键。使用我们的完整编程语言的力量,你可以创作出强大实用的应用程序,解决日常问题,例如只需一个热键就能输入一段完整的句子。...

    c是最好的编程语言.docx

    c是最好的编程语言 作为一个语言模型,我必须指出,C 作为编程语言在很多方面都有其独特的优点,但是否是“最好”的编程语言取决于具体的需求和背景。以下是一些关于 C 语言的优点: 1. **效率高:** C 语言是一种...

    简单的中文编程语言青语言是一门完全基于中文语言习惯打造的编程语言,主要面向青少年、儿童和非专业人士

    青语言是一门完全基于中文语言习惯打造的编程语言,主要面向青少年、儿童和非专业人士。当今世界信息化高速发展,信息技术已成为促进社会进步的重要推力。随着我国信息化的不断进步,尤其是互联网行业的高速发展,...

    基于scratch的可视化编程语言项目

    基于Scratch的可视化编程语言项目是一款面向初学者和教育者的编程工具,旨在通过图形化界面让用户轻松学习编程概念和逻辑。Scratch是一种块状编程语言,用户可以通过拖放代码块来创建动画、游戏和互动故事,无需编写...

    C语言和其他编程语言相比有什么优点,并举例说明C语言编写代码的过程.docx

    C语言和其他编程语言相比有什么优点,并举例说明C语言编写代码的过程 C语言是一种通用的高级编程语言,它可以被用于开发各种类型的应用程序。由于其高效性和广泛应用的情况,它在操作系统、嵌入式系统、游戏开发、...

    Python发展史-一门编程语言的起源.pdf

    Python 发展史 - 一门编程语言的起源 Python 语言的作者 Guido van Rossum 是一位荷兰人,他于 1982 年从阿姆斯特丹大学获得了数学和计算机硕士学位。Guido 是一位数学家,但他更加享受计算机带来的乐趣。在那个...

    RPi平台,编程语言为C语言,基于wiringPi的函数库,通讯接口为SPI.zip

    C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据...

    牛肉编程语言-C/C++开发

    Beef编程语言Beef是一种面向性能的开源编译语言,已与其IDE环境紧密结合。 语法和许多语义是最直接从C#派生的,而Beef编程语言Beef是一种开放源代码的面向性能的编译语言,已与其IDE环境紧密结合。 语法和许多语义...

    C#语言教程:掌握.NET下的编程艺术

    C#(读作“C Sharp”)是一种功能强大的、类型安全的、面向对象的编程语言,它是由微软公司开发并作为.NET框架的一部分而推出的。C#语言结合了C++的强大功能和Java的易用性,同时增加了许多创新的特性,例如LINQ...

    C#制作用户自定义控件GlassButton VS2010 ~ 2022 已测试 这款按钮采用了C#编程语言的风格,具有简洁、现

    这款按钮采用了C#编程语言的风格,具有简洁、现代的设计风格。按钮的外观简洁大方,采用了扁平化设计风格,使用户界面更加清晰易懂。按钮的颜色搭配和字体风格都经过精心设计,使得按钮看起来更加专业和吸引人。同时...

    Perl语言编程-精简版.doc

    这意味着Perl对于小的编程问题的快速解决方案和为大型事件创建原型来测试潜在的解决方案是十分理想的。 .Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。Perl还支持sed到Perl及awd到...

    Rust是一门系统编程语言,它强调安全性、并发性和性能 以下是关于Rust的500字资源介绍: Rust由Mozilla研究院

    Rust是一门系统编程语言,它强调安全性、并发性和性能。以下是关于Rust的500字资源介绍: Rust由Mozilla研究院的Graydon Hoare设计创造,经过众多开发者的贡献逐步完善。Rust的语法与C++相似,但它在设计时更加注重...

    Fortran中文教程,为初学者提供了学习Fortran编程和算法设计的基础知识

    内容概要:Fortran中文教程是一门专门为中文用户设计的编程语言学习教程。它详细介绍了Fortran编程语言的基础知识,包括语法规则,数据结构,循环控制等内容。此外,教程还通过实例代码,帮助学习者理解和掌握...

    Python编程入门.pptx

    Python是一种简单易学,功能强大的编程语言。它有高效率的高层数据结构,能够简单、有效地实现面向对象编程。 Python语法简洁,支持动态输入,是解释性语言。 在大多数平台上,对于众多领域,Python都是一个理想的...

    Windows 网络编程第二版

    作为更新的编程指南,本书着重于Windows XP中革新的联网特性,同时包含了对C#编程语言的支持。本书还介绍了最新的网际协议:IPv4和IPv6,以及可靠IP多播协议。书中用大量的实例详细地描述了Microsoft网络API函数的...

    python编程基础练习题

    这系列Python基础编程练习题资源是你掌握语言核心概念、语法和基本算法的理想之选。通过解决这些练习,你将建立起对变量、循环、条件语句等基础构建块的深刻理解,并逐步提升你的编程技能。无论是入门者还是希望夯实...

    python编程基础练习2

    这系列Python基础编程练习题资源是你掌握语言核心概念、语法和基本算法的理想之选。通过解决这些练习,你将建立起对变量、循环、条件语句等基础构建块的深刻理解,并逐步提升你的编程技能。无论是入门者还是希望夯实...

Global site tag (gtag.js) - Google Analytics