有关语言和学习地点的建议吗?

时间:2010-12-10 22:59:31

标签: programming-languages

我上一次java课程的决赛将是星期一。什么是一个很好的语言与许多免费资源(这里的贫困大学生)工作?我听说过关于Ruby和Erlang的好东西,但两者对我来说都很陌生。

也许在我转向另一种语言之前我应该​​首先尝试使用Java,比如某种类型的框架或库,这样建议我的速度要快于采用新语言?

6 个答案:

答案 0 :(得分:6)

作为一名学生,我从很多教授那里听到了很多话:

“它不是关于语言,关于算法!!”

经过将近4年的尝试不同语言,我发现这是真的。 因为如果你学习如何用一种语言做某事......其余的只是用不同的语法来运用你的知识。

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

  • 继承
  • 多型
  • 数据结构

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

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

另请阅读this帖子。

答案 1 :(得分:3)

我肯定会推荐Ruby - 作为一种有趣的语言来学习更多有关编程的知识。 Java是静态类型的,并且是严格面向对象的,因此Ruby很自然地对你感到陌生。

Ruby在许多范例中都很强大 - 特别是面向对象,功能和元编程。学习很多范例以及如何将它们结合起来,无论您将来使用哪种语言,都将使您成为更好的程序员。

学过Java之后,JRuby将是Ruby的良好实现 - 它是用Java编写的,可以在JVM上运行。 JRuby的另一个优点是您可以使用Ruby代码中的Java库。只需从您的软件包管理器安装jruby即可开始使用。

要了解ruby,请查看以下资源:

答案 2 :(得分:2)

既然你已经了解java,那就去体验一下Python,Perl和Ruby等其他风格吧。 PHP,Java和C ++是风格密切相关的。

答案 3 :(得分:2)

我建议您查看ScalaF# / SML / Ocaml和Haskell - 特别是Scala:

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

即使只学习C#3/4(它通常具有比Scala更强大的类型系统,虽然并非所有区域都重叠)都会打开眼睛,使用Java中不容易做到的结构 - 简单地传递“函数”作为对象或者能够统一且轻松地对列表进行查询和操作是Java无法实现的。你可以 伪造Java中的闭包/ lambdas(看看anon-inner类或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语言的工作原理。您可以编写“Scala中的Java”,即使不可取/惯用,但您实际上无法在Haskell中编写“Java”。

答案 4 :(得分:1)

如果您正在寻找网络开发,我强烈建议学习PHP(这是一种非常有趣和有用的语言)。如果您正在为桌面,C ++开发,如果您想尝试iPhone / iPad开发,请尝试使用Objective-C。

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

希望这有帮助!

答案 5 :(得分:1)

我完全赞同克里斯所说的,确保当你开始学习时,在Google中寻找所有内容,有数以千计的资源可用于你选择使用的语言的方法。