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

Looking for a useful programming language for university class

我是一名大学生,在下学期将要上一门编程语言课程。课程要求之一是(针对课程)专门使用一种您没有经验且未在课程中涵盖的语言。我已经开始浏览语言列表,但是我想得到一些反馈,也许能找到一些我可能不知道的语言。

被拒绝的语言/我知道:

  • Java(大学最爱)

  • (Lisp(在课程中教授,更特别的计划)(我已经在学习了)))

  • 装配(在公司组织中教授)

  • 基本的(显然也是……基本…

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

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

我强烈认为研究生院和研究是职业选择,但这并不妨碍我理解商业环境中使用的传统语言和语言的好处。不过,关于人工智能程序中使用的语言的任何信息都将特别受欢迎。


红宝石。它是纯OO,并且有一些在其他语言(如代码块、mixin和一个伟大的元编程API)中不容易找到的伟大特性。这是一流的计算机科学,你的专业人员会喜欢你的选择。


为什么不去二郎?

维基百科简介:

Erlang is a general-purpose concurrent
programming language and runtime
system. The sequential subset of
Erlang is a functional language, with
strict evaluation, single assignment,
and dynamic typing. For concurrency it
follows the Actor model. It was
designed by Ericsson to support
distributed, fault-tolerant,
soft-real-time, non-stop applications.
The first version was developed by Joe
Armstrong in 1986.1 It supports hot
swapping thus code can be changed
without stopping a system.2 Erlang
was originally a proprietary language
within Ericsson, but was released as
open source in 1998.

While threads are
considered a complicated and
error-prone topic in most languages,
Erlang provides language-level
features for creating and managing
processes with the aim of simplifying
concurrent programming. Though all
concurrency is explicit in Erlang,
processes communicate using message
passing instead of shared variables,
which removes the need for locks.


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


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


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


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

学习haskell、lisp或ml中的一个(或多个,如果你想学习的话),按照这个优先顺序。其中任何一个都将达到您的目标——挑战您以一种新的方式思考编程,并且所有或任何一个都是实现编译器的理想选择(参见sicp,Appel在ML中实现现代编译器)。

函数语言(在我看来是正确的)因其优良的特性在学术界得到了广泛的应用。我认为哈斯克尔现在是最热门的。跳上车,这趟旅行会很有趣,为研究生的工作做好准备。


每种语言都是有用的(即使是golfscript…开玩笑吧)

我向你推荐

  • C
  • C++
  • C.*

因为这些语言非常通用,并且广泛使用。注意,尽管在它们的名称中共享相同的单个字母和一些语法上的相似性,但这些语言中的每一种都暴露出非常不同的语义、特征和目的。C和C++属于同一个"家庭",通常被称为C/C++。

本系列中的语言虽然各不相同,但对命令式编程的"演进"提供了一个不完整但有见地的"总结",并介绍了一些关键的范例和概念。这里不严格地使用"摘要"一词,因为这些概念中的许多甚至早于C语言,尽管不是以主流方式。此外,"进化"不应该被理解为它通常意义上的线性进步,向更好的方向发展,在哪里新的取代旧的。不管怎样,主流语言中这种进化的快照可以列出如下

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

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

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

编辑注释:我编辑这个答案的初衷是澄清C、C++和C是有效的非常不同语言的事实。在我思考这些语言的时候,这个系列是对过去35年主流编程的一个大致的、有点深刻的总结。我向佩特佩勒道歉,因为他扩大了他原来的意图;请随时恢复编辑和/或以其他方式更改它,如果这不符合你的喜好!干杯,-MJV--


在.NET框架上运行的f如何?


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

它提供了一个有趣的现实应用程序,因为许多企业使用的旧系统仍然是用它编写的,而企业没有理由改变这一点——代码仍然起作用。然而,在70-80年代写下这段代码的人已经从这个行业退休了。这会产生大量不受支持的代码,这些代码您可能会发现自己必须在某个行业环境中维护一天。

您可以使用OpenCOBOL作为编译器。网址:http://www.opencobol.org/


当我学习编程语言的时候,我必须学习6种新语言,所以说实话,你很容易就学会了。

我认为你应该选择有市场价值的东西。我认为大多数编程语言课程都是在大三开始的,所以你没有C方面的经验是有点麻烦的。你已经知道Java了,所以我真的不关注C语言了。您可能不知道任何逻辑语言,如prolog,但它不是很畅销。所以我最重要的清单是

C

毫升

二郎

Prolog语言

Python


当我在大学学习的时候,我们从Lisp开始,我觉得这很奇怪(在上大学之前我做了很多编程)。几周后,A开始看到lisp的优雅——语言的语法非常简单,只关注算法和概念。与通常使用的命令式语言相比,概念上的lisp是一种功能性语言,它在编程时强制使用另一种思维方式。

对于我个人来说,从Lisp课程中获得的编程概念的理解在我从那时起用各种语言进行的所有开发工作中都具有明显的价值,因此我投票支持Lisp。


想想斯卡拉吧。

它可能是最"多范式"的语言,从某种意义上说,它包含了比任何其他"真实"语言更不相关的概念。不是你想在工作中用到的东西,但它对学习应该是很好的——因为如果你掌握了它,以后很少有事情能让你感到惊讶。


C是一种主要的编程语言。二郎或哈斯凯尔的一些不寻常的东西。J或K代表完整的WTF。

您可能还想考虑像,python。摘录:

1
2
3
4
5
6
7
8
9
10
#!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

对于学习经验来说,你不能打败CLU。这是芭芭拉·里斯科夫获得图灵奖的作品。她的团队解决了今天仍然相关的一系列问题,正如人们所说的ALGOL60,CLU是大多数继任者的改进。

把你的脚趾浸入水中的一个好方法是阅读李斯科夫和齐勒斯的一篇早期论文,尽管记住静态类型系统还没有开发出来,这是其中一篇更有趣的文章。


我知道你没有提到python——但是如果haskell对你来说太传统了,你可能想去别处看看……实际上,我建议只为类型系统尝试haskell,这使得所有不是现代功能语言的东西相比之下都显得不舒服。

您可以考虑使用基于堆栈的语言,如forth或postscript。这和上面提到的都有点不同。


如果你有权使用Mac电脑,可以试试Objective-C吗?开发工具都是免费的,对于未来可能的iPhone来说,这也是一项有用的技能。


使用javascript/ecmascript肯定是错的!

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

观看道格拉斯·克罗克福德的JS视频


我想归根结底就是你想学什么,你愿意学多远。我一直对Java有一个软肋,我认为这可能是因为它是一种有趣的学习语言,如果你来自一个你不太了解OOP的背景,那么它也提供了一些非常棒的语言基础。