Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1092976
  • 博文数量: 104
  • 博客积分: 3715
  • 博客等级: 中校
  • 技术积分: 1868
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-30 08:38
文章分类

全部博文(104)

文章存档

2013年(1)

2012年(9)

2011年(41)

2010年(3)

2009年(3)

2008年(47)

分类: Java

2011-03-27 15:29:32

在我之前的一篇文章“完美的编程语言是什么样的?”中(地址:http://blog.chinaunix.net/space.php?uid=13800995&do=blog&id=167028)讨论了我认为的理想的编程语言应具备的特点,遗憾的是,目前
似乎并不存在这么一个语言。昨天去书店,看到《自己动手写操作系统》那本书还在畅销,于是就想,
人家都可以自己构建一个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) |
给主人留下些什么吧!~~