五千年(敝帚自珍)

主题:【原创】三年级也可以学编程 -- 月色溶溶

共:💬209 🌺336
全看分页树展 · 主题 跟帖
家园 俺推荐两个:VBA+OZ

VBA在微软Office套件里的Word,Excel,Access等产品里都可以使用,功能强大,而且效果比较直观,容易做出比较实用的工具。但是VBA本身似乎已经被微软抛弃,现在已经进化成更强大的VSTO,后者支持VB.Net和C#,可以看成是专业的Visual Studio的简化版,自带编译器和图形开发界面,如果只是了解编程的化这两个已经足够了,学完后对命令式编程和面向对象都有了基本的认识,进可攻退可守。

另一个语言是OZ(就是《绿野仙踪》里的奥兹国的那个“奥兹”)。推荐的理由是这个语言是比较少见的多范式语言。支持目前几乎所有的编程范式和特性,网上有个总结:

 函数型语言(词法域 第一类过程 模式匹配 第一类统一语法),lazy,高阶(可实现非递归的循环),尾递归,描述式编程

 面向对象(状态 Stateful/抽象数据类型 多重继承),

 并行(多线程)(dataflow(数据流)线程 动态 连续 互影响),

 约束编程和逻辑推理(逻辑变量 分离结构 可编程搜索策略),人工智能,

 分布式(网络透明的分布式运算 组件编程 自动连接自动断线 共享变量/对象/类/过程),

 网络编程,无状态数据,

 安全,动态类型,异常处理,内存管理,交互的IDE

 多用途语言(交互的应用程序,GUI窗口程序,移动客户应用程序,Separation of Concerns (Aspects),跨平台,扩展dll,....)

举个约束求解的例子(摘自网络):

  X 属于 [1 11]

  Y 属于 [12 30]

求X Y使得满足

  X+Y=25

  X*Y=150

  条件的X和Y。

程序如下:

  declare X Y in

  X :: 1#11

  Y :: 12#30

  X+Y =: 25

  X*Y =: 150

  {Show [X Y] }

据说还有解决爱因斯坦五色房子的OZ程序,不过一时找不到。

俺推荐这种语言的理由是,对于小孩子来说,过早学习C这类工业用语言有害无益,目前主流语言基本就是命令式编程+面向对象,而实际上编程远远不止这两种思想。而且这类语言是为工业化设计的,容易陷进细节的陷阱而学不到背后的思想,限制小孩的创造力。而OZ语言可以按照需要进行取舍,不管是简单的还是复杂的,需要哪块学那块,学起来也比较有趣味,甚至可以自己添加关键字甚至定义一门新的语言(这点难度比较高,不过相对自己从头写应该容易许多,因为OZ和大部分主流语言不同,是基于核心语言的思想开发的,扩展起来相对比较容易)。

MOZART是OZ语言的一个实现,自带开发环境,网站是http://www.mozart-oz.org/

遗憾的是MOZART的中文资料非常少,国内也很少人用(估计知道的都很少),如果懂英文的话配上《Concepts,Techniques and Models of Computer Programming》这本教材就完美了(据说是大名鼎鼎MIT的SICP后继,SICP这门课据说已经停止了)。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河