【问题标题】:A dynamic language to learn for curiosity's sake为了好奇心而学习的动态语言
【发布时间】:2009-06-30 17:28:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 我想推荐 python 只是因为可用的资源。不过,我不确定“出发”和“新概念”。

标签: dynamic dynamic-languages


【解决方案1】:

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

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

【讨论】:

  • 我建议使用 IronPython 或 IronRuby,在相同的一致框架之上学习一种新的编程风格非常棒。让您专注于语言而不是框架的差异
【解决方案2】:

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

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

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

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

【讨论】:

  • 不确定我是否会将 SQL 归类为动态语言,但它仍然是大多数开发人员应该知道的(尤其是 Web/企业类型的应用程序)
【解决方案3】:
  • 哪种动态语言将是最大的差异?
  • 哪个会引入最新颖的概念?

我猜应该包括 Scheme、Erlang 和 Oz

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

我会说 Ruby 和 Python

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

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

          【讨论】:

          • 我还想补充一点,学习方案和阅读“计算机程序的结构和解释”是非常宝贵的。它让我对总体上提高数据抽象和 API 的质量有了更深入的了解。
          【解决方案8】:

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

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

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

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

          【讨论】:

          • 我想支持这个,我还没有学习 erlang,但是我做的下一个服务器项目我将尝试在 erlang 中做。这是一种古老的语言,具有令人印象深刻的能力。
          【解决方案9】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多