【问题标题】:Advice on languages and places to learn them?关于语言和学习地点的建议?
【发布时间】:2011-05-23 18:42:09
【问题描述】:

我最后一堂 Java 课程的期末考试将在星期一举行。有许多免费资源(这里是可怜的大学生)可以使用的好语言是什么?我听说过关于 Ruby 和 Erlang 的好消息,但它们对我来说似乎都是陌生的。

也许我应该先在 Java 中尝试一些东西,然后再转向另一种语言,比如某种框架或库,这些东西比这么快采用一种新语言更能给我提供建议?

【问题讨论】:

  • 您是否正在寻找互联网编程语言(Ruby、PHP、ASP 等)?
  • 这对programmers.stackexchange.com来说真的是一个问题。
  • @matthewpavkov 网页编程看起来很有趣,但我认为我不仅可以使用的东西会更好。

标签: programming-languages


【解决方案1】:

作为一名学生,我经常从我的许多教授那里听到这些话:

“与语言无关,与算法有关!!”

在尝试不同语言将近 4 年后,我发现这是真的。 因为如果你学会了如何用一种语言做某事......剩下的就是使用不同的语法应用你的知识。

我的建议是坚持你开始的(Java),在你掌握了基础知识之后,然后处理:

  • 继承
  • 多态性
  • 数据结构

因为您会在几乎所有语言中找到上述内容。

Algorithm Animations 帮助我想象和理解了很多。

另请阅读this 帖子。

【讨论】:

  • 我不同意 - 语言很重要。您使用的语言可以限制或增强您处理算法的方式。
  • 我相信语言在制作阶段很重要。如果您正在制作一个 Web 应用程序,您可能会选择 PHP 而不是 C,或者如果您正在制作一个 SMTP 服务器,您可能会选择 Python 而不是 Whatever。但在学习阶段,我相信你会坚持一种语言。
【解决方案2】:

我肯定会推荐 Ruby - 作为一种有趣的语言来学习更多关于编程的知识。 Java 是静态类型且严格面向对象的,所以 Ruby 对您来说很陌生是很自然的。

Ruby 在许多范式中都很强大——尤其是面向对象、函数式和元编程。学习大量范式以及如何将它们结合起来,无论您将来使用哪种语言,您都会成为一名更好的程序员。

学习过 Java,JRuby 将是 Ruby 的一个很好的实现——它是用 Java 编写的并在 JVM 上运行。 JRuby 的另一个优点是您可以从 Ruby 代码中使用 Java 库。只需从您的包管理器安装jruby,您就可以开始使用了。

要学习 ruby​​,请查看以下资源:

【讨论】:

  • Netbeans 与 jruby 一起工作,开箱即用。当我尝试 ruby​​ 之前,我不得不摆弄所有东西才能让它在 Windows 上运行。 JRuby 看起来是个不错的选择。
【解决方案3】:

由于您已经了解 java,因此可以尝试其他风格,例如 Python、Perl 和 Ruby。 PHP、Java 和 C++ 在风格方面密切相关。

【讨论】:

  • 我注意到在我个人购买的一些书中。它将是一个主题,并有一个免责声明,即您应该具备基本的 C 或 C++ 知识,但语法看起来几乎相同,而且很多时候我可以在没有书解释的情况下理解 C/C++ 代码在做什么。
【解决方案4】:

我建议查看ScalaF#/SML/Ocaml 和Haskell——尤其是 Scala:

原因是 Scala 表明可以存在一种“有趣”的静态/强类型高级(真正意义上的)“OO”语言。由于设计和实现的限制,有许多有用的编程结构在 Java 中是不可能的。 (Scala 绝不是一门完美的语言。)

即使只学习 C#3/4(它的类型系统通常不如 Scala 强大,尽管并非所有领域都重叠)也会对 Java 中不容易实现的构造大开眼界——只需传递“函数”作为对象或能够统一且轻松地对列表运行查询和操作是 Java 无法实现的。您可以在 Java 中伪造闭包/lambda(查看非内部类或 Functional Java 库),但这并不漂亮:Scala 和 C# 为这些构造添加了语言支持,因此它们是“自然的” ”。

我不会说 Ruby 或 Python(或许多其他语言,不包括 PHP ;-) 的坏话——但 他们缺少的一件事是静态类型。有些人认为这是一种祝福,但我通常认为这是一种诅咒(good static type systems can prove the absence of a number of type problems)——问题是,如果 Java/C/C++ 是/是您处理过的唯一静态类型语言,您会认为静态类型必须是痛苦的(并暗示“过多的类型注释”和“过于脆弱/封闭的类型”)——在具有类型推断的更高级的静态类型语言中,这根本不是真的,视图边界、类型类等。

学习 Haskell 真的会让你大开眼界——但它真的是不同的野兽,需要忘记语言 X 的工作原理。您可以写“Java 中的 Scala”,即使不是可取/惯用的,但您真的不能写“Java 中的 Haskell”。

【讨论】:

    【解决方案5】:

    如果您正在寻找 Web 开发,我强烈建议您学习 PHP(它是一种非常有趣且有用的语言)。如果您正在寻找针对桌面、C++ 的开发,并且如果您想尝试 iPhone / iPad 开发,请尝试 Objective-C。

    我学习了一个 Java 课程,我发现它为我转向 Objective-c 奠定了良好的基础,你只需要小心,因为该语言不会管理你的内存使用(没有垃圾收集器)。上述所有语言都在互联网上免费提供了大量支持。如果您正在寻找一种学习语言的技术,我发现查看示例代码是最好的方法。

    希望这会有所帮助!

    【讨论】:

    • 我从来没有进行过垃圾收集。我知道,但没有任何细节。我知道一些垃圾收集在某些事情上比其他垃圾收集更好。我认为我的大学确实提供了 C 或 C++ 课程,但我不确定。无论如何,我的特定注意力并不需要它,而且我看到了许多更高级别语言的概念证明。
    【解决方案6】:

    我完全同意 Chris 所说的,确保当你开始学习时,在 Google 中查找所有内容,有数以千计的资源可用于关于你选择使用的语言的操作指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2011-02-22
      • 2011-08-17
      • 1970-01-01
      相关资源
      最近更新 更多