2

这是一个“最佳语言”问题,但希望有足够的转折使其值得。

作为一个只使用 C 和 C# 的人,我很想学习一门动态语言来扩展我的知识。我不知道该选哪个。

问题是我的动机不一定是创建任何“现实世界”项目或与其他系统集成的项目,而只是为了学习。

话虽如此,对于那些只熟悉我提到的语言的人来说,可能会忽略默默无闻和缺乏支持..

  • 哪种动态语言将是最大的不同?
  • 哪个会引入最新颖的概念?
  • 哪个是动态语言的典范?
4

9 回答 9

4

函数式语言(LISP、Scheme 等)总是值得一试。他们可能是一些更大的偏离。

JavaScript 是从 C 领域到函数领域的重要垫脚石。从那里你可以乱用 JQuery,虽然它不是一种语言,但它会迫使你以非程序化的方式做事。

另一种经常被忽视的语言是 SQL。它显然是一种小众语言,正如 Josh 指出的那样,它并不是真正的“动态”,但深入了解基于集合的语言的工作方式可以真正提升编码人员的水平。

小心,如果你“学习”太多,你最终可能会对旧语言感到沮丧。

于 2009-06-30T17:33:19.203 回答
4

我建议学习IronPython。作为一种语言,它对您来说仍然是一个重大的转变,但您将能够使用您熟悉的 .NET 框架中的所有内容。(我通常认为尝试一次从根本上改变开发的一个方面是一个好主意......一次通过不同的方面工作,你总是会对你的部分内容感到满意做,这将帮助你更快地学习新的部分,IMO。)

此外,使用 C# 4,您将能够从 C# 代码调用 IronPython,包括以这种方式使用其动态特性。

于 2009-06-30T17:38:40.070 回答
3

我会建议任何 Lisp 方言或 Smalltalk。这些是动态的,对其他更主流语言的设计产生了重大影响。它们还包括其他语言中没有的有趣概念。

另一个有趣的动态语言是 Lua。

于 2009-06-30T17:34:11.947 回答
3
  • 哪种动态语言将是最大的不同?
  • 哪个会引入最新颖的概念?

我想这将包括 Scheme、Erlang 和 Oz

  • 哪个是动态语言的典范?

我会说 Ruby 和 Python

于 2009-06-30T17:34:39.717 回答
2

很难说,在很多方面这绝对是个人品味的问题。我喜欢学习 Python,但我相信你可以从 Ruby 中学到很多关于动态类型语言的好东西。

如果您习惯于 C 和 C#,那么任何动态类型的语言都将是一种背离。所以我说你应该使用 Python,因为那是我喜欢的,希望你也会喜欢它。如果您开始使用它并且讨厌它,请尝试其他东西(如 Ruby、Perl、PHP 等)。

于 2009-06-30T17:30:59.317 回答
2

我会说 Lisp 符合您的大多数(如果不是全部)标准。这绝对与 C/C++ 和 C# 大相径庭。它有很多新颖的概念,许多人会争辩说很难找到一种更有活力的语言。

除了 Lisp,我自己会选择 Ruby。

于 2009-06-30T17:34:34.257 回答
1

我将不得不在这里投票给 Common Lisp。它是一种高度动态的语言,几乎可以适应任何事物。您不仅可以获得函数式编程,还可以获得 OO,如果您愿意,甚至可以进行程序化。Lisp 中的宏学习起来非常有趣,因为据我所知,没有其他语言有它的等价物。

另外,以函数式开发也有助于其他语言的开发。例如,由于受 Lisp 和 Scheme 影响的概念,我注意到我主要使用不可变对象进行 OO。有了这个,我注意到我的 OO 应用程序的稳定性和可维护性有所提高。只是我的两分钱。

于 2009-06-30T18:00:35.547 回答
0

我长期从事 C++ 和 C# 开发,最近开始尝试和学习其他语言。我和 Ruby 一起玩了一会儿并且喜欢它,但这不是我想要的。

我最终选择了Erlang。在阅读了有关 Erlang 的文章后,我决定我真的很想学习它。我学习 Erlang 并没有希望找到一份编写 Erlang 代码的工作。我学习 Erlang 只是为了成为更好的开发人员。

到目前为止,我真的很喜欢这种语言。才一个月左右,语法有时仍然让我着迷,但我真的可以看到模式匹配的力量,并为再次编写它而感到兴奋。起初,我为一切都是不可变的概念而苦苦挣扎。但这主要是因为我在 C# 和 C++ 上“长大”了。C# 是一门很棒的语言,并且有一些很棒的工具,但是你真的很喜欢其他一些语言,尤其是像 Erlang 这样的语言。只是不要期望找到一份全职 Erlang 开发人员的工作。(至少现在还没有)。

对于任何好奇的人,我的爱好项目是连接到 Erlang 服务器的多玩家 iPhone 应用程序。对于 Windows 开发人员来说,这是一个重大变化。但它重新激发了我对编程的热情,这确实是我的目标。

于 2009-06-30T17:37:53.630 回答
0

如果您真的想发疯,但希望事情至少有点熟悉(我知道这听起来很矛盾,但确实如此),请查看 F#。它是一种类型推断语言,但它支持许多动态类型属性。它是一种建立在 CLR 之上的函数式语言,因此您可以充分利用非常酷的 .Net 对象系统。因为它是一种功能性语言,所以有足够多的新概念来真正地锻炼你的大脑。

如果你真的想追求“最大的偏离”,Clojure 可能会很有趣。它是一种建立在 JVM 上的 Lisp 方言。它在 Java 和 Lisp 世界中都受到了相当严重的关注。它可能适合您的目的。

于 2009-06-30T17:38:37.060 回答