2010-04-20 2 views
0

This question подсказывает мне, почему университеты все еще учатся на таких языках, как Modula2, когда улучшенные современные языки доступны бесплатно?Есть ли веская причина, что курсы Uni по-прежнему используют «академические» языки, такие как modula2?

Есть ли uni, которые все еще учат Pascal, например? Я имею в виду, это было хорошо 30 лет назад, но ... теперь? Зачем?

Почему бы не Java, C#, Haskell?

Относительно: Является ли это обратным, чтобы еще преподавать LISP?


Это дублированный вопрос? Если нет, я думаю, что это должна быть тема сообщества.

+1

Студенты молоды, учителя не являются xD – elias

+1

Uni по-прежнему не считается технической школой - когда это так, они будут учить языку du jour. – KevinDTimm

+0

Ха-ха! Но Кевин, modula2? В самом деле? Java является основной темой в течение 15 лет. Кто-нибудь все еще считает это «du jour»? – Cheeso

ответ

15

Работа университета заключается не в том, чтобы научить вас языку программирования, это научить вас концепциям программирования. Язык, который они используют, имеет отношение только к учебному материалу, который они уже создали или используют из других источников.

Я предполагаю, что повторное составление учебного плана - это что-то вроде перезаписи большого приложения - что-то, что вы делаете, только если у вас есть веская причина, и даже тогда вы думаете об этом дважды.

+1

Знаешь, я собирался написать то же самое, что и я, но слишком вовлечен в мои комментарии (ответы). +1 – KevinDTimm

+1

Переписав учебный план, я без колебаний могу сказать «ДА!». переписывая учебную программу ТОЛЬКО, потому что язык не в моде, действительно очень раздражает. –

+1

Как человек, который много работал с Modula-2 в прошлом, я не могу с этим согласиться.Modula-2 - очень элегантный язык с очень маленьким словарем ключевых слов/зарезервированных слов. Это (для меня) поддается обучению концепциям. Конечно, есть другие языки с наборами функций, которые лучше подходят для других вещей, но для обучения Modula-2 блестящий. – PKCLsoft

3

Две причины, о которых я могу думать, один хороший, один нет. (И я был профессором.)

Хорошая причина: упростить обучение. Преподавание вступительных учеников - это как пастушье цыплята на борту дайвинга. Если им удастся упасть, они будут. Если бы мне пришлось преподавать C, я бы разорвал свои волосы, что с char, unsigned char, char*, char**, char*[], char[10]* и т. Д. Все юридические и разные, и это всего лишь несколько осколков на дереве. Для второго или третьего курса это совсем другая история.

Плохая причина: академическая свобода. У нас был один человек, преподающий какой-то далекий интерпретируемый язык, потому что ему это нравилось. Другой настаивал на обучении программированию электронных таблиц, потому что это была «волна будущего».

+1

'char [10] *' не является законным. Юридическим выражением должно быть 'char (*) [10]' (указатель на массив 10 символа), который отличается от 'char * [10]' (массив 10 указателя на char). Да, я вижу порванные волосы ... – kennytm

4

Почему не Java, C#, ...

В отсутствие требований к взаимодействию с существующими базами кода, какое преимущество имеет Java или C# есть над, скажем, Smalltalk? Я программист C# днем ​​(и бывший программист Java), и есть некоторые хорошие вещи об этом и некоторые плохие вещи, но одна вещь, которая действительно торчит, насколько невероятно сложна. Посмотрите, сколько вопросов есть здесь о точках синтаксиса и семантики C#. Вы потратите весь свой семестр или год, изучая мелочи. Модула-2 намного проще и вполне адекватна многим проблемам.

Вам также необходимо изучить сборку, и переход от модуля-2 к сборке намного проще, чем C# для сборки. Я бы не захотел научить сборку кучке студентов, которые знали только профессиональные инструменты Microsoft.

Относительно: Является ли это обратным, чтобы еще преподавать LISP?

(Существует около 50 различных способов интерпретировать это ...)

Я не вижу, что в нем «назад», если вы не видите, что он учил (до, после) более низкого уровня и думал, что его следует научить {после, раньше}.

Можете ли вы предложить другой язык, который делает то, что он делает? (Smalltalk? Forth? Icon? Factor?) Например, если вы хотите увидеть дизайн реальной системы OO (и, возможно, более мощный, чем Java или C#), вы можете забрать AMOP и посмотреть все это в короткая книга, включая полный исходный код. (Common Lisp - не самый простой диалект Lisp, но он намного проще, чем C# или Java, и AMOP использует относительно небольшое подмножество в любом случае.) Как бы вы научили метапрограммированию или даже многократной отправке с Java?

Или: первоначальная цель Lisp состояла в том, чтобы заменить машины Тьюринга как конструкцию для построения алгоритмов. (Это действительно очень полезно для написания реальных программ!) Вы предлагаете, чтобы вы предпочли использовать машины Тьюринга для обучения алгоритмам? Или C# для моделирования вычислений? Машина Тьюринга - это 7-кортеж - я не могу себе представить, сколько компонентов будет иметь вычислительная модель C#! Лисп прекрасно преодолевает разрыв, и я видел только один или два других языка в этом пространстве - Форт приходит на ум, но по какой-то причине он не стал популярным в академических кругах.

... Haskell?

Я думаю, что это отличная идея. Я узнал об этом в школе. С другой стороны, я думаю, что любой член этой языковой семьи справится с этим. Если вы изучите ML в школе, я не думаю, что вам будет хуже. Концепции те же.

Это как изучение машиностроения в Берлине и Чикаго: язык может быть другим, но понятия одинаковы. Но если вы ничего не знаете, даже не язык, имеет смысл начать с самого простого языка. Если вы хотите быть инженером в Берлине, но не говорите по-немецки, имеет смысл изучать технику и изучать немецкий язык, но традиционное мышление заключается в том, что менее эффективно начинать с инженерных классов только для Германии.

+0

Ничего себе. «Common Lisp намного проще, чем C# и Java». Вау, говорю я. И не просто проще, «намного» проще. Опять же, Вау - это все, что приходит на ум. –

+1

Я согласен с Кеном. Синтаксис Lisp может быть полностью понят в минутах по сравнению с C#/Java, которые имеют все виды тупых случаев, которые в течение некоторого времени продолжают путешествовать людьми! –

8

Улучшенные современные языки (Java, C#, Haskell) доступны бесплатно?

Так что, «улучшенный», вы имеете в виду мощные, загруженные внешними библиотеками и фреймворками и безумно сложными? С лабиринтом извилистых мелких особенностей, в которых начинающие студенты могут легко потеряться? И когда они потеряны, они получают сообщения об ошибках, которые ни один новичок не может понять?

Хорошие университеты сопротивляются давлению, чтобы учить популярные языки того времени, потому что наша задача - научить вечным истинам и навыкам, которые по-прежнему будут актуальны в течение 50 лет. (Сегодняшние студенты университета могут рассчитывать на работу как минимум до 70 лет.) Наши лучшие инструменты для этого - простота, простота и простота. Modula-2 - довольно хороший выбор. (Так Начало Student язык PLT Scheme.

Я люблю Haskell, использовать его в исследовании, приучили его в продвинутых классах. Вы не могли бы заплатить мне достаточно, чтобы научить его во вводном курсе — я бы . резки меня собственное горло

+2

"(Сегодняшние студенты университета могут рассчитывать на работу как минимум до 70 лет). - (хотя сегодняшние компании не нанимают никого старше 35 лет). –

+0

Я никогда не думал о том, что C# или Java как безумно сложный. Оба они кажутся мне проще, чем C++. – Cheeso

+2

@ Чисо: это похоже на то, что Ранье легче подняться, чем Эверест. Правда, но почти все легче подняться, чем Эверест. Но если вам нравится, я буду весело смаковать C++ как «вдвойне безумно сложный». –

1

Хотя этот вопрос, кажется, было обработано некоторое время назад я хотел бы добавить что-то (так как я являюсь Аскер упомянутого вопроса :)) Почему мы учимся в Модула-2 первый год: Apart по всем уже упомянутым причинам, для того, чтобы понять, как основные вещи (например,указатели), прежде чем заниматься чем-то вроде Java, где все эти вещи довольно незаметны для программиста :)

-1

Дело Lisp/ADA против C/Java такое же, как и информатика и программирование. Одна из них - наука, другая - ремесло.

+2

амбициозное заявление, но вы делаете это без каких-либо оснований или поддержки. Вы просто заявляете это так, как будто это очевидно для всех. Это не так. – Cheeso

+2

@ Чисо: Это очевидно для людей, которые там. Команда бывших демосценонеров, разработчики игр получают CS PhD на борту ... и им нужно учить его всем. Между тем, они ушли из университета за неудачу в классах CS ... –

+2

Видимо для людей, которые ... где? Я задал оригинальный вопрос. Я просто говорю, ваш ответ не добавил никакого понимания. – Cheeso

0

Я понимаю, что этот вопрос довольно старый, и есть много хороших ответов. Тем не менее, я хотел бы прослушивать.

Большинство ответов - это варианты «Модулы-2 - это более простая, более легкая для обучения/изучения» тема. Хотя это и верно, но это не значит, что университет должен выбрать преподавание Модулы-2.

Важнейшим преимуществом обучения Modula-2 студентам компьютерных дисциплин является то, что это формирование доброй привычки и воспитание дисциплины.

См. Также «Каковы наиболее важные преимущества Модулы-2?» по адрес:

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

Есть очень мало языков, которые там учат строгую дисциплину программирования, соблюдение инженерных принципов и хорошие привычки. Большинство современных, и особенно популярных языков на самом деле делают наоборот, они учат вредным привычкам.

Среди строгих языков Modula-2 является самым маленьким, а среди небольших языков Modula-2 является самым строгим.

Эта комбинация делает Modula-2 идеальным выбором для любого университета, который не просто хочет стать профессиональным училищем для механики программного обеспечения.

Это может показаться суровым, но если разработчики программного обеспечения стремятся называться инженерами-программистами, то их следует обучать, как инженеры, думать, как инженеры, и, самое главное, вести себя как инженеры, когда они приходят на работу.

Электрические, механические и гражданские инженеры обязаны строить вещи, которые в первую очередь безопасны и надежны. За некоторыми исключениями, программное обеспечение не совсем соответствует этому стандарту, и отсутствие классического инженерного мышления является основным фактором здесь. Например, популярное понятие «релиз рано, исправить позже» диаметрально противоположно техническим принципам.

 Смежные вопросы

  • Нет связанных вопросов^_^