Почему семейство c является стандартным учебным полком CS для программ по математике / CS вместо семейства LISP? [закрыто]

14

Я знакомился с LISP в целях самосовершенствования. Одна из вещей, которые я заметил, состоит в том, что LISP гораздо больше входит в парадигму математики, чем, скажем, C. Синтаксис и структура проекта, кажется, отражают непосредственно фактическую математическую модель алгоритма. Мне не имеет смысла, почему даже хорошие математические CS-программы изучают C вместо LISP. Я думаю, что LISP более непосредственно использует более высокие математические концепции, чем C. Я не говорю, что вы не можете моделировать математические структуры в C. Я просто замечаю, что LISP, кажется, запрограммирован для математиков.

Я читал многие из беспорядков Джоэла Спольски в школах JAVA, а что нет - и я согласен с его оценкой - но моя школа не преподавала JAVA именно по этой причине. Они были строгими в обучении фундаментальным понятиям, таким как указатели, разработка алгоритмов, рекурсия и даже инструкции по сборке. Тем не менее, они сделали все это на C и C ++. Кто-нибудь знает причины этого и / или его историю?

Джонатан Хенсон
источник
В конце концов, степень информатики должна быть в некоторой степени независимой от языка. Идея CS заключается в том, что он / она должен быть в состоянии выучить любой новый язык, поскольку информатика является теоретической. Снаружи CS, кажется, все включено научит вас, как быть программистом и ученым. Дело обстоит не так, изучение CS - это то, чем занимается CS.
Крис
2
Во многом аналогично тому, как LISP «повторяет фактическую математическую модель алгоритма», C повторяет реальную структуру аппаратного обеспечения, и очень просто, как конструкции в C отображаются в память (что, естественно, особенно полезно для встроенных систем). Тем не менее, я полностью согласен с вами. Я был бы признателен за дополнительную курсовую работу в LISP, чтобы действительно углубиться в нее
Билл В.Б.

Ответы:

13

OK. Итак, скучный ответ заключается в том, что, в конце концов, большинство школ преподают то, с чем профессора чувствуют себя комфортно, и большинство преподавателей не выросли, взламывая Лисп; они провели свои первые годы в области с основанными на Алголе языками. Из-за этого, спустя годы, когда они создают учебную программу, вы попадаете в школы, которые преподают CS с основами на Pascal, затем C, затем C ++, а затем Java.

Тогда у вас есть школы, которые находятся на более низком уровне и на несколько лет моложе. И они смотрят на планку, которую установили ведущие школы, и видят, что ученики покидают эти школы, зная C, и видят, что их собственные ученики ожидают того же - поэтому они начинают преподавать C, затем C ++, затем Джава.

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

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

Андрей Бутов
источник
2
Я слышу тебя. Никакого неуважения к C и C ++, они были моими любимыми языками на протяжении всей моей карьеры, но LISP был бы гораздо лучшим учебным пособием для студентов-математиков, чем C. C - отличный язык, и я бы никогда никого не нанял кто не знал этого, но цель получения степени CS - не техническая подготовка на местах, а овладение понятиями математики и информатики. LISP кажется гораздо более подходящим для этой цели.
Джонатан Хенсон
Я думаю, что у обоих есть свое место, и университеты могут выиграть от более теоретического / академического курса до степени CS, где вы расширяете кругозор. Этот трек должен иметь хороший набор языков, включая Lisp, Prolog, на основе Algol и т. Д., И трек, основанный на практике, с концентрацией на практическом аромате дня.
Андрей Бутов
@ Джонатан Хенсон: Найди!
Крис
9

Это действительно зависит от университета. Scheme (диалект lisp) был языком для вводного курса по информатике в Массачусетском технологическом институте целую вечность, хотя недавно он был заменен на python. Я получил степень бакалавра в области CS в инженерной школе, где я познакомился с C, Scheme, Prolog и C ++ в течение первого года обучения. Я думаю, что это было хорошее сочетание.

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

Дима
источник
1

По сути, теория информатики является математической. Программной инженерии, однако, нет. Непосредственное моделирование математических понятий не является неотъемлемым преимуществом - я бы сказал, что это часто может быть недостатком.

Хорошие теории и хорошие программы не обязательно связаны.

DeadMG
источник
«Хорошие теории и хорошие программы не обязательно связаны». Программирование - это построение и объединение абстракций, которые решают проблемы. И, согласно википедии, «Теория - это ... тип абстрактного или обобщающего мышления или результаты такого мышления». ( en.wikipedia.org/wiki/Theory ) Итак, теория и (хорошее) программирование действительно очень близки друг к другу.
Джорджио