除了Mono和Java之外,是否有任何好的,可移植的,开源的,高级的,静态类型的,命令式的,面向对象的,垃圾收集的,安全的语言/运行时具有合理的性能?单声道很好,但它是微软的技术,我有点害怕使用它(我不确定这种恐惧是多么理性)。 Java的问题在于它太简单了(没有无符号数据类型,没有结构等)。
答案 0 :(得分:9)
Mono不是Microsoft技术。 .NET是,但Mono不是--Mono是ECMA-334和ECMA-335国际标准的开源实现。是的,它们起源于微软,但Mono本身并非不是 Microsoft技术。
当然不是Mono是一种语言 - C#是语言。但是 languages 并不是真正的开源或不是 - 实现是。
听起来你可能对C#有一种非理性的恐惧 - 而且对Java也是如此。我当然希望在Java中看到这些东西(我非常喜欢C#),但它仍然完全有可能在其中编写非常重要的应用程序。
答案 1 :(得分:2)
Eiffel满足您的所有要求
答案 2 :(得分:2)
答案 3 :(得分:2)
嗯,在java中没有无符号数据类型很少被认为是一个问题。
但是Lisp呢 - 它是引入垃圾收集的语言,可能是最强大的语言。
检查Peter Norvig(Google的研究主管)的表现comparison。您可能会对Lisp在某些领域甚至是Java中击败C ++感到惊讶。
然而Lisp似乎不是主流语言 - 我wondering为什么会这样? 因为它有点简约 - 它可能不会被当前或未来的任何语言所击败。
(我想是什么让C#或Java如此受欢迎不仅仅是语言而是图书馆。)
答案 4 :(得分:2)
带有garbage collector的C ++?虽然你对Java的问题不是那么多的显示限制因素(除非你能详细说明为什么你需要这些东西,但从表面上来看,这些论点通常不是很合理,但有时候它们也是如此)。
答案 5 :(得分:2)
我想指出Vala,这是一种基于C#语法的语言,但它以C编译器(类似于Eiffel)和轻量级自托管运行时为目标。但它缺乏garbace系列。
答案 6 :(得分:1)
你怎么能说java太简单了?
好的,开发Java的原因之一是使它比没有900多页规范的C ++复杂化。但是,它比C复杂得多。
大约10年前,我参加了Les Hatton的课程,他研究了如何使您的C程序更安全。他认为几乎没有人能够记住140页的C标准,因此理解像C ++这样的东西会非常难。
当然,你的目标可能不需要安全,但如果你这样做是值得记住的。
答案 7 :(得分:1)
scala比java更简洁,它运行在java运行的任何地方,因为它编译为java字节码。 twitter在scala中重新实现了一些核心基础架构。
答案 8 :(得分:0)
总有Python和Ruby
答案 9 :(得分:0)
首先,Mono不是微软的技术。 第二,只有两个具有上述功能的严重虚拟机(VM) - .Net / Mono和Java。但是,撇开静态类型语言的要求,您可以在新的Parrot Virtual Machine(Wikipedia article about Parrot)上引起注意。
当然,Ruby,Python Erlang等也是跨平台的VM(用于单动态语言)
答案 10 :(得分:0)
您可以查看D编程语言。
但说实话?我建议远离mono / C#。为什么?很多原因......
另外,对于实际的选择,需要使用Java或C ++。
Java与C#一样好,即使它有点不同。 C ++也很好,因为使用引用计数可以解决99%的GC问题......
答案 11 :(得分:0)
如果你想学习这个以便能够更适合工作,我建议你考虑.NET(如果你想去微软平台)或Java(如果你想去平台)独立),并做了很多编码。两者都是非常大的平台!
其他任何东西都只是在一些地方使用的小众语言,这可能非常好,但不太可能让你在任何地方找到工作,但在那几个地方。