似乎并不存在这么一个语言。昨天去书店,看到《自己动手写操作系统》那本书还在畅销,于是就想,
人家都可以自己构建一个os来玩,为什么我不能自己搞一个语言?基于上面的原因,我开始了这个pet
project——zlang语言。
zlang的名字的灵感来自于ZFS,希望这是我需要的最后一种通用编程语言。zlang的主要目标就是前
面那篇文章中提到的10个原则。我自己不知到这个项目会持续多久(我不知到自己有多少时间花在这个
上面,也不知到我会坚持多久),但愿有一天能看到完整的语言定义和一个实现。
下面,再次列举出zlang要满足的特点/原则:
* 语法简洁,类似Python3;
* 完全的面向对象,我认为OO的支持对于软件架构设计(模块划分、接口定义、代
码 组织等)有很大的帮助;
* 函数或方法是“first class object”,这可以说是上面一条的延展,我认为,函
数式编程的思想很好,在设计、开发具体的算法、函数等组件时,这种思想会有
很大的帮助;
* 静态类型,有类型推导,类似于ML、Haskell。我一直认为动态类型并没有减轻
程序员的负担,因为编码时始终要思考对象的类型,如果没有类型声明,反而增
加了程序员的负担。动态类型只是把类型错误留到了运行时。另外,静态类型也
倾向于有更好的编译优化支持;
* 自动垃圾收集:承认吧,今天的自动垃圾收集器已经可以比绝大部分程序员更有
效的管理内存。人工的内存管理也是最容易出现性能问题和Bug的地方;
* 拥有针对C的FFI(Foreign Function Interface),也许未来不再需要这个,不
过今天绝对需要;
* 动态特性支持(注意,不要把这个和动态类型搞混了),主要指reflection的支
持;
* 名字空间管理机制,类似于Java的package或C++的namespace;
* 泛型支持,支持成Java那样我就满足了,如果能支持到C++那样就太好了(具体差
异请参考“Think in Java 5th Edition”书中对泛型的讨论);
* 高概念一致性,在语言本身和标准库定义上有很高的概念一致性,毕竟,概念一
致才会有“美”的感觉,才会有“简洁”、“优雅”的感觉。这一条可以说是一个总体
的原则而不是一个“特性”。(概念一致性是所有设计师的原则之一,在编程方
面,请参考“Beautiful Architechture”那本书的前言中的定义。)
zlang的语法和思想主要参考Python3和Java,实现基于LLVM。希望这三个巨人能帮我看得更远。
==============================================================================
Introduction
Author: Liang Kun
Date: 2011-03-26
Last Change: 2011-03-27
阅读(2452) | 评论(0) | 转发(0) |