是否有一个很好的理由Uni课程仍然使用像modula2这样的“学术”语言?

时间:2010-04-20 17:39:34

标签: programming-languages modula-2

This question提示我问一下 - 为什么大学仍然使用Modula2这样的语言教学,当免费提供现代语言时?

例如,是否还有教授帕斯卡的单身人士?我的意思是,30年前它很好,但是......现在呢?为什么?

为什么不是Java,C#,Haskell?

相关:还是教导LISP倒退吗?


这是一个重复的问题吗?如果没有,我认为它应该是社区维基话题。

7 个答案:

答案 0 :(得分:15)

大学的工作不是教你编程语言,而是教你编程概念。他们使用的语言仅与他们已经生成或从其他来源使用的教材相关。

我认为重做课程就像重写大型应用程序一样 - 只有当你有令人信服的理由时才会这样做,即便如此,你也要三思而后行。

答案 1 :(得分:8)

  

免费提供改进的现代语言(Java,C#,Haskell)?

所以通过“改进”你的意思是强大的,加载了外部库和框架,并且非常复杂?迷茫的小功能迷宫,初学者很容易迷路?当它们丢失时,它们会收到错误信息,而初学者可能无法理解这些信息?

优秀的大学抵制教授当时流行语言的压力,因为我们的工作是教授50年来仍然具有相关性的永恒真理和技能。 (今天的大学生可以期望至少工作到70岁。)我们最好的工具是简单,简单和简单。 Modula-2是一个不错的选择。 (PLT Scheme的初学者语言也是如此。

我爱Haskell,在研究中大量使用它,在高级课程中教它。你不能付我足够的费用在介绍性的课程中教它 - 我会割断自己的喉咙。

答案 2 :(得分:4)

  

为什么不是Java,C#,......

由于缺乏与现有代码库互操作的要求,Java或C#有什么优势,比如Smalltalk?我白天是一名C#程序员(以及前Java程序员)并且有一些关于它的好东西和一些不好的东西,但有一点真正突出的是它是多么复杂。看看这里有多少关于C#语法和语义的细节问题。你会浪费整个学期或一年的教学琐事。 Modula-2更简单,非常适合许多问题。

你也需要学习装配,从Modula-2到装配是一个比装配C#容易得多的步骤。我不想尝试向一群只懂微软专业工具的学生讲授装配。

  

相关:是否仍在教授LISP?

(大约有50种不同的解释方法......)

我没有看到它有什么“倒退”,除非你看到它在低级语言之前,之前,之后教过,并认为它应该在{之后,之前}教授。

你能建议另一种语言能做到吗? (Smalltalk?Forth?Icon?Factor?)例如,如果你想看到一个真正的OO系统的设计(可以说比Java或C#更强大),你可以选择AMOP并查看整篇小说,包括完整的源代码。 (Common Lisp不是最简单的Lisp方言,但它比C#或Java简单得多,而AMOP无论如何都使用了相对较小的子集。)你如何用Java教授元编程,甚至多次调度?

或者:Lisp的最初目的是取代图灵机作为构建算法的构造。 (它恰好对编写真正的程序非常有用!)你是否建议你宁愿使用图灵机来教授算法?还是C#用于建模计算?图灵机是一个7元组 - 我无法想象C#计算模型会有多少组件! Lisp完美地填补了这个空白,我在这个领域只见过一两种语言 - 想到了这一点,但无论出于什么原因,它都没有在学术界流行起来。

  

... Haskell的?

我认为这是一个好主意。我是在学校里学到的。然后,我认为该语系的任何成员都会做得很好。如果你在学校学习ML,我认为你不会更糟。概念是一样的。

这就像在柏林和芝加哥学习机械工程一样:语言可能不同,但概念是相同的。但是如果你什么都不知道,甚至不是语言,那么从最简单的语言开始是有意义的。如果你想成为柏林的一名工程师但不会说德语,那么学习工程学和学习德语是有意义的,但传统的想法是,从德语专业的工程课开始就不那么有效了。

答案 3 :(得分:3)

我能想到的两个原因,一个好,一个不。 (我是一名教授。)

理由很简单:简化教学。教学介绍学生就像在跳水板上放牧小鸡。如果他们有办法让他们脱落,他们会。如果我不得不教C,我会把我的头发撕掉,charunsigned charchar*char**char*[],{{ 1}},等等都是合法的和不同的,而这只是树上的一些碎片。对于第二或第三门课程,这是一个不同的故事。

不好的理由:学术自由。我们有一个人教一些远远解释的语言因为他喜欢它。另一个坚持教电子表格编程,因为这是“未来的浪潮”。

答案 4 :(得分:1)

虽然这个问题似乎已经处理了一段时间以前我想添加一些东西(因为我是上述问题的提问者:)) 为什么我们在第一年学习Modula2: 除了已经提到的所有原因之外,它是为了掌握基本的东西(例如指针)在参与类似Java的事情之前的工作方式,其中所有这些东西对于程序员来说都是不可见的:)

答案 5 :(得分:0)

我意识到这个问题相当陈旧,并且有很多好的答案。不过,我想加入进来。

大多数答案都是“Modula-2更简单,因此更容易教学/学习”主题的变体。虽然这是正确的,但是大学应该选择教授Modula-2的原因并不是这种不合格的理由。

将Modula-2教授给本科计算机科学专业的学生最重要的好处是,它是良好的习惯形成和纪律灌输。

另请参阅“Modula-2最重要的好处是什么?”于:

http://modula-2.info/m2info/pmwiki.php/General/FAQ

那里的语言很少,教授严格的编程规则,遵守工程原则和良好的习惯。大多数现代语言,尤其是流行语言实际上都是相反的,他们教导不良习惯。

在严格的语言中,Modula-2是最小的语言,而在小语言中,Modula-2是最严格的语言。

这种组合使得Modula-2成为任何不仅仅是想成为软件力学职业学校的大学的完美选择。

这可能听起来很苛刻,但如果软件开发人员渴望被称为软件工程师,那么他们应该像工程师一样接受培训,像工程师一样思考,最重要的是,当他们上班时表现得像工程师。

电气,机械和土木工程师有义务建造首先安全可靠的东西。除了少数例外,软件并不能达到这个标准,缺乏经典的工程思维是这里的一个主要因素。例如,早期发布,后期修复的流行概念与工程原理截然相反。

答案 6 :(得分:-1)

Lisp / ADA与C / Java的问题与信息学与编程相同。一个是科学,另一个是手艺。