Есть ли веская причина, по которой курсы Uni по-прежнему используют «академические» языки, такие как modula2? - PullRequest
0 голосов
/ 20 апреля 2010

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

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

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

Связанный: Это все еще задание учить LISP?


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

Ответы [ 7 ]

15 голосов
/ 20 апреля 2010

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

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

8 голосов
/ 21 апреля 2010

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

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

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

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

4 голосов
/ 20 апреля 2010

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

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

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

Связанный: Это все еще задание учить LISP?

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

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

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

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

... Haskell?

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

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

3 голосов
/ 20 апреля 2010

Я могу придумать две причины: одна хорошая, другая нет.(А я был проф.)

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

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

1 голос
/ 21 мая 2010

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

0 голосов
/ 15 октября 2015

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

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

Самым важным преимуществом обучения Модула-2 для студентов, изучающих информатику, является то, что он формирует привычку и прививает дисциплину.

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

http://modula -2.info / m2info / pmwiki.php / Общие / FAQ

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

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

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

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

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

0 голосов
/ 21 мая 2010

Вопрос Lisp / ADA против C / Java такой же, как у Informatics против программирования. Один - наука, другой - ремесло.

...