寻求满足这些要求的编程语言

时间:2011-10-19 18:04:49

标签: programming-languages

寻求编程语言。必须具有以下特性(按字符中特征的上升长度顺序):

  • 编译
  • 命名空间
  • 垃圾收集
  • 省略OOP功能!
  • 固定数量的类型
  • 适用于Mac OS X
  • 一流的功能
  • 动态输入首选
  • 闭包(词汇范围)
  • 可以与C库(ncurses等)接口
  • Linux上的可用性加号但不是必需的

-

为了提供更多的上下文,我希望能够使用它为linux / BSD / Mac编写命令行实用程序,这些实用程序可能会也可能不会使用现有的C库(例如ncurses等)。

更新澄清:

命名空间:当我可以创建一个名为string_strip的新命名空间并在其中定义一个名为{{1}的函数时,我想避免必须命名我的函数string。 }。

忽略OOP功能:具有功能的语言和我没有使用它的语言之间肯定存在差异,而不是有意省略它的语言。如果我想使用Go但没有触及任何与OOP相关的内容,我就无法使用大部分标准库。

固定数量的类型:为什么没有OOP的语言会为您提供创建自定义“类型”的选项?没有OOP,什么类型甚至意味着什么?它可能只用于类型的组合,即。一个Person = struct {Name,Age},而你可以用Hash或Map来做到这一点。

首选动态类型:类型推断很好,我猜......

3 个答案:

答案 0 :(得分:2)

我不确定你的命名空间是什么意思,但你不是在描述Scheme吗?

答案 1 :(得分:1)

好吧,我会尝试提出几乎符合所有要求的语言:

  • Haskell(静态输入)
    • 特别是GHC发行版 - 它已编译(或可发出LLVM代码)
    • 它使用类似于Namespaces的模块
    • 收集垃圾,不是OO语言
    • 我不是特别理解“固定数量的类型”,因为Haskell为您提供类型,但您可以创建更多,Haskell支持algebraic types和模式匹配
    • 可在所有Win / Mac / Linux上使用
    • 它有头等功能和闭包(毕竟是功能语言)
    • 它可以与C库连接。

  • Erlang
    • 它有一个字节码编译器,如果你在Intel x86系列CPU上,有一个名为HiPE的本机编译器。
    • 动态输入
    • 不是OO语言,它几乎是功能性的
    • 有8个基元和2种复合类型 - 如果你想要一个集合你正在构建它们的列表或元组
    • 是垃圾收集
    • 有(不可变)闭包
    • 有一流的功能
    • Windows,Mac,Linux支持
    • 具有充当命名空间保护程序的包
    • C绑定 - Erlang has port driversErlang Native Interface

答案 2 :(得分:0)

查看Racket(基于Scheme)。

它有一个FFI。我已经用它为SQLite和ODBC创建了FFI绑定,并且我发现FFI非常有用且方便。

“命名空间”对我来说是模棱两可的。 Racket有一个模块系统,它还有它所谓的名称空间,它们是一流的顶级环境对象。

它没有“固定数量的类型”。我根本不明白这个要求。