寻找满足这几个要求的编程语言
寻求编程语言。必须具有以下品质(按字符中功能长度的升序排列):
- 已编译的
- 命名空间
- 垃圾收集
- 省略 OOP 功能!
- 固定数量的类型
- 在 Mac OS X 上可用
- 第一类函数 首选
- 动态类型
- 闭包(词法作用域)
- 可以与 C 库(ncurses 等)交互
- 在 Linux 上的可用性是一个优点,但不是必需的
--
为了提供更多上下文,我想要能够使用它为 linux/BSD/Mac 编写命令行实用程序,这些实用程序可能会也可能不会使用现有的 C 库(例如 ncurses 等)。
更新澄清:
命名空间: 当我可以创建一个名为 string< 的新命名空间时,我希望避免将函数命名为
string_strip
/code> 并在其中定义一个名为 strip
的函数。
省略 OOP 功能:具有某个功能而我没有使用该功能的语言与故意省略该功能的语言之间肯定存在差异。如果我想使用 Go 但不接触任何与 OOP 相关的内容,我就无法使用大部分标准库。
固定数量的类型:为什么没有 OOP 的语言会为您提供创建自定义“类型”的选项?如果没有 OOP,类型意味着什么?它可能只用于类型的组合,即。 a Person = struct { Name, Age },而您可以使用 Hash 或 Map 来完成此操作。
首选动态类型:类型推断很好,我猜......
Seeking programming language. Must have the following qualities (in order of ascending length of feature in characters):
- Compiled
- Namespaces
- Garbage collection
- Omits OOP features!
- Fixed number of types
- Available on Mac OS X
- First-class functions
- Dynamic typing preferred
- Closures (lexical scoping)
- Can interface with C libraries (ncurses, etc)
- Availability on linux a plus but not necessary
--
To give a little more context, I want to be able to use it to write command-line utilities for linux/BSD/Mac, which may or may not use existing C libraries (such as ncurses, etc).
Update for clarification:
Namespaces: I want to avoid having to name my function string_strip
when I could create a new namespace called string
and define in it a function named strip
.
Omits OOP Features: There's definitely a difference between a language having a feature and me not using it, versus the language intentionally omitting it. If I wanted to use Go but without touching anything OOP-related, I couldn't use most of the standard library.
Fixed number of types: Why would a languages without OOP give you the option of creating a custom "type"? What does type even mean without OOP? It would probably just be used for composition of types, ie. a Person = struct { Name, Age }, whereas you could do this with a Hash or Map just fine.
Dynamic typing preferred: Type inference is fine, I guess......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不确定你所说的命名空间是什么意思,但你不是在描述Scheme吗?
I'm not sure what you mean by namespaces, but aren't you describing Scheme?
好吧,我将尝试提出一些几乎满足所有要求的语言:
Well, I'll try to put forth some languages that fit almost every single requirement:
查看Racket(基于Scheme)。
它有一个 FFI。我用它为 SQLite 和 ODBC 创建了 FFI 绑定,并且我发现 FFI 非常有用且方便。
“命名空间”对我来说含糊不清。 Racket有一个模块系统,它也有所谓的命名空间,它们是一流的顶级环境对象。
它没有“固定数量的类型”。我根本不明白这个要求。
Check out Racket (based on Scheme).
It has an FFI. I've created FFI bindings for SQLite and ODBC with it, and I've found the FFI to be useful and convenient.
"Namespaces" is ambiguous to me. Racket has a module system, and it also has what it calls namespaces, which are first-class top-level environment objects.
It does not have "a fixed number of types". I don't understand that requirement at all.