寻找有用的大学课程编程语言

时间:2010-03-02 07:46:40

标签: programming-languages

我是一名即将在下学期修读编程语言课程的大学生。课程要求之一是以一种您没有经验且课程不涉及的语言专门(针对该课程)。我已经开始查看语言列表了,但我希望得到一些反馈,也许还能找到一些我可能不知道的语言。

被拒绝的语言/我知道:

  • Java(大学最爱)

  • (Lisp(在课程中教授,更具体地说是Scheme)(我已经学习了)))

  • 装配(在Comp Org中教授)

  • BASIC(显然,......基本......)

我考虑过学习Haskell或VB6,但我仍然觉得有些语言对我的思维过程可能更有用,我忽略了。我很感谢所有的反馈,并希望这不是太主观。

编辑:我对课程的个人目标要么是体验一种对我未来编码中的思维过程具有挑战性和有用性的范例(例如功能性等),要么学习一种能让我更深入的语言理解解释器/编译器理论以及汇编和高级代码之间的转换(例如C)。

我强烈认为研究生院和研究是职业选择,但这并不妨碍我理解商业环境中使用的遗留语言和语言的好处。但是,有关AI程序中使用的语言的任何信息都会受到特别欢迎。

18 个答案:

答案 0 :(得分:16)

红宝石。它是纯粹的OO,并且具有一些您在其他语言中不易找到的强大功能,例如代码块,mixins和一个出色的元编程API。这是计算机科学的优雅,你的教授会喜欢你的选择。

答案 1 :(得分:10)

为什么不去Erlang

来自wikipedia的简介:

  

Erlang是一个通用的并发   编程语言和运行时   系统。顺序子集   Erlang是一种函数式语言   严格评估,单一任务,   和动态类型。对于并发它   遵循Actor模型。它是   由爱立信设计支持   分布式,容错,   软实时,不间断的应用程序。   第一个版本是由Joe开发的   阿姆斯特朗在1986年。1它支持热   交换代码可以改变   没有停止系统。2 Erlang   最初是一种专有语言   在爱立信内部,但被发布为   1998年开源。

     

虽然线程是   被认为是一个复杂的   大多数语言中容易出错的主题,   Erlang提供语言级别   用于创建和管理的功能   过程旨在简化   并发编程。尽管如此   并发在Erlang中是显式的,   进程使用消息进行通信   传递而不是共享变量,   这消除了锁的需要。

答案 2 :(得分:7)

C怎么样?它与Java类似,你不会在语法上花费太多时间,但又不同以至于它会很难。此外,它仍然是最常用的编程语言之一(阅读:无论如何,你有一天需要学习它。)

答案 3 :(得分:5)

C#听起来经典 - 你不知道它,并且它被广泛使用,所以它可以帮助你的简历。 我也会考虑Ruby,但我会排除VB6(过时)。

答案 4 :(得分:5)

另一种有趣的语言可能是Smalltalk。

答案 5 :(得分:4)

既然你已经解释了你的目标,谢谢你,我会权衡:

按照优先顺序学习Haskell,Lisp或ML中的一个(或多个)。任何这些都将达到你的目标 - 挑战你以新的方式思考编程,并且所有或任何一个都是实现编译器的理想选择(参见SICP,Appel在ML中实现现代编译器)。

功能语言(正如我所认为的)在学术界广泛使用,因为它们具有很好的性能。我认为Haskell现在很热门。赶上潮流,骑行将是有趣的,并为毕业工作做好准备。

答案 6 :(得分:3)

每种语言都很有用(甚至GolfScript ......开玩笑)

我会向你推荐任何(和所有)

  • <强> C
  • C ++
  • C#

因为这些语言非常通用并且广泛使用 请注意,虽然在名称中共享相同的单个字母,但在语法上有一些相似之处这些语言中的每一种都暴露出非常不同的语义,特征和目的。对于属于同一“家族”的C和C ++来说,情况确实如此,通常称为C / C ++。

尽管个别地非常独特,本系列中的语言提供了对命令式编程“演变”的不完整但富有洞察力的“总结”以及对一些关键范例和概念的介绍
这里使用了“ Summary ”这个词,因为许多这些概念甚至早于C语言,尽管不是主流方式。此外,“ Evolution ”不应该被理解为通常意义上的线性进展,以及新的替代旧的。 无论如何,主流语言中的演变的快照可以列出如下

  • 与C:
     指针,
     汇编语言的抽象,
     小而有用的运行时库,提供当时的几个基本类型和实用程序(主要是字符串操作,文件I / O,数学函数,显式内存管理)

  • 使用C ++
    面向对象编程,
    模板,
    对通用数据结构和容器的“内置”支持,
    异常处理,
    某种类型的安全性(主要在编译时强制执行)

  • 用C#
    自动记忆管理,
    广泛的“标准”和“扩展”库(反映与现代应用程序相关的系统和技术的极端多样性和广度:XML,Internet协议,事件驱动框架,数据库访问,设计模式,仅举几例)
    一系列功能性编程,
    强类型,包括在运行时,
    反思/内省,
    语言和框架之间的区别有些模糊。


编辑注释:
我编辑这个答案的初衷是澄清C,C ++和C#是非常不同的语言这一事实​​。在我考虑这些语言的过程中,这个系列构成了过去35年中主流编程的近似和有点深刻见解的概念。我向 Petr Peller 道歉,因为他的扩展远远超出了他原来职位的意图;如果这不符合您的喜好,请随时恢复编辑和/或以其他方式更改编辑! 干杯,
-mjv -

答案 7 :(得分:2)

你可以尝试专攻COBOL课程。是的,我知道COBOL是老派,但是听我说。

它提供了一个有趣的实际应用程序,因为企业使用的许多旧系统仍然写在其中,并且企业没有理由改变它 - 代码仍然起作用。然而,在20世纪70年代到80年代编写代码的人正在从业界退休。这会产生大量不受支持的代码,您可能会发现自己必须在行业环境中维持一天的代码。

您可以使用OpenCOBOL作为编译器。它可以在这里找到:http://www.opencobol.org/

答案 8 :(得分:2)

当我学习编程语言时,我不得不学习6种新语言,所以说实话,你很容易上手。

我认为你应该选择具有市场价值的东西。我认为大多数编程语言课程都是由大三学生教授的,所以你没有C语言经验这一事实有点令人不安。你已经了解java,所以我真的不会专注于C#。您可能不知道任何像Prolog这样的逻辑语言,但它不是很有市场。所以我的列表最重要的顺序是

C

ML

二郎

的Prolog

的Python

答案 9 :(得分:2)

当我在大学学习时,我们开始使用Lisp,我认为这很奇怪(我在开始大学之前做了很多编程)。几周之后,我开始看到Lisp的优雅 - 语言的语法非常简单,专注于算法和概念。从概念上讲,Lisp是一种函数式语言,与大多数使用的命令式语言相比,它在编程时强迫另一种思维模式。

就我个人而言,我从Lisp课程中获得的编程概念的理解在我从那时起所做的各种语言的所有开发工作中都非常有价值,因此我的投票是针对Lisp。

答案 10 :(得分:2)

在.Net框架上运行的F#怎么样?

答案 11 :(得分:1)

考虑Scala。

它可能是“最多范式”的语言,从某种意义上说,它包含的概念比任何其他“真实”语言都要多。不是你想要在工作中使用的东西,但它应该对学习很有帮助 - 因为如果你掌握了它,很少有东西会让你感到惊讶。

答案 12 :(得分:1)

C用于主食编程语言。 ErlangHaskell表示不寻常的事情。 完整的WTF JK

您可能还想考虑Like, Python。 摘录:

#!usr/bin/python   uh from sys import exit
# Grab the user's name.    
ok so like name = raw_input("yo! what's your name?" ) right

# Make sure they entered something, then say hi.   
if name.strip() is actually like "":
     toootally just exit()   
else:
     um yeah
     print like "Hi %s, nice to meet you." % name

答案 13 :(得分:0)

我看到你没有提到Python - 但如果Haskell对你来说过于传统,你可能想要寻找其他地方......实际上,我建议单独使用Haskell作为类型系统,这使得所有的东西都没有相比之下,现代功能语言看起来很恶心。

您可能会考虑使用基于堆栈的语言,如Forth或Postscript。这与上面提到的所有内容完全不同。

答案 14 :(得分:0)

如果您可以访问Mac,请尝试使用Objective-C?开发工具都是免费的,对于未来可能的iPhone工作也是一项非常有用的技能。

答案 15 :(得分:0)

使用Javascript / ECMAScript不能错!

转到developer.yahoo.com/yui/theater /

观看Douglas Crockford的js视频

答案 16 :(得分:0)

我想这取决于你想要学习什么以及你愿意接受它的程度。我一直对Java情有独钟,我想可能是因为它是一种有趣的语言学习,如果你来自一个你可能不太了解OOP的背景,那么它也提供了一些很好的核心基础到目前为止作为一种语言。

答案 17 :(得分:0)

对于学习体验,你无法击败CLU。这是Barbara Liskov获得图灵奖的作品。她的团队解决了一系列今天仍然存在的问题,正如关于Algol 60的说法,CLU对其大部分继任者都有所改进。

将脚趾浸入水中的好方法是阅读early paper by Liskov and Zilles,但请记住静态类型系统尚未开发,这是更有趣的部分之一。