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

StackOverflow https://stackoverflow.com/questions/2677326

  •  30-09-2019
  •  | 
  •  

Вопрос

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

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

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

Связанные: это задом наперед, чтобы по-прежнему преподавать Lisp?


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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

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

Связанные: это задом наперед, чтобы по-прежнему преподавать Lisp?

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

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

Можете ли вы предложить другой язык, который делает то, что он делает? (SmallTalk? ШВАБРА и увидеть все это в короткой книге, включая полный исходный код. (Common Lisp - это не самый простой диалект на льску, но это намного проще, чем C # или Java, и AMOP все равно использует относительно небольшое подмножество этого.) Как бы вы преподаете метапрограммирование или даже несколько диспетчеров, с Java?

Или: первоначальная цель LISP было заменить Turgines Machines в качестве конструкции для алгоритмов строительства. (Это просто происходит действительно полезным для написания реальных программ!) Вы предполагаете, что вы предполагаете, что вы предпочитаете использовать Turging Machines для учебных алгоритмов? Или C # для моделирования вычислений? Turging Machine - это 7-кортеж - я не могу себе представить, сколько компонентов модели вычисления C #! Лискус Бридж разрыв идеально, и я видел только один или два других языка в этом пространстве, а по какой-то причине это не становится популярным в академии.

... haskell?

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

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

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

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

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

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

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

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

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

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

http://modula-2.info/m2info/pmwiki.php/general/faq.

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top