Чому сім'я c є стандартним навчальним полком CS для програм з математики / CS замість сімейства LISP? [зачинено]


14

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

Я читав багато речей Джоела Спольського про школи JAVA, і що ні - і я згоден з його оцінкою - але моя школа не навчила JAVA саме з цієї причини. Вони були суворі у навчанні фундаментальним поняттям, таким як покажчики, дизайн алгоритму, рекурсія та навіть інструкції зі складання. Однак вони зробили це все на C і c ++. Хтось знає причини цього та / або його історії?


Зрештою, ступінь інформатики має певною мірою бути агностиком мови. Ідея КС полягає в тому, щоб він / вона мала змогу вивчати будь-яку нову мову, оскільки інформатика є теоретичною. Зовнішній вигляд КС, як видається, є всеохоплюючим, вчить вас бути програмістом і вченим. Це не так, навчитися вивчати мову - це те, що стосується CS.
Кріс

2
Так само, як LISP "перегукується на фактичну математичну модель алгоритму", C повторює фактичну структуру апаратури, і це зрозуміло, як будується в C-карті для пам'яті (що, природно, особливо корисно для вбудованих систем). Однак я повністю з вами згоден. Я оцінив би ще декілька курсових робіт з LISP, щоб я міг зануритися далі
Білл VB

Відповіді:


13

ДОБРЕ. Отже, нудна відповідь полягає в тому, що, врешті-решт, більшість шкіл навчають того, що професорам зручно, а більшість професорів не виросли на хакерство Лісп; вони провели свої перші роки в полі за допомогою мов на основі алголю. Через це через роки, коли вони будують навчальну програму, ви закінчуєте школи, які навчають CS з фундаментом у Паскалі, потім C, потім C ++, а потім Java.

Тоді у вас є школи, які на нижчий рівень і на кілька років молодші. І вони дивляться на бар, який встановили школи, що ведуть дорогу, і вони бачать, що учні залишають ті школи, які знають С, і бачать, що їхні ж учні очікують того ж - вони починають викладати C, потім C ++, потім Java.

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

Це , так би мовити, деякі школи роблять диспут Lisp, хоча це може бути більш виборним , а не основний мовою. І навіть школи, які не викладають Lisp як самостійну мову, широко використовують її на курсах AI, тому курси AI для початківців дійсно отримують концентрацію на початку програмування Lisp.


2
Я чую тебе. Ніякої неповаги до C та c ++, вони були моєю мовою вибору за всю мою кар’єру, але LISP був би набагато кращим навчальним інструментом для студентів з математики, ніж це C. хто цього не знав, але мета ступеня КС - це не технічне польове навчання, а оволодіння поняттями математики та інформатики. LISP здається набагато більш підходящим для цієї мети.
Джонатан Хенсон

Я думаю, що обидва мають своє місце, і університети, можливо, виграють від того, щоб мати більш теоретичний / академічний трек до ступеня CS, де ви розширите свою думку. Цей трек повинен мати приємний діапазон мов, включаючи Lisp, Prolog, на основі Algol тощо, та трек, заснований на практиці, з концентрацією уваги на будь-якому практичному смаку дня.
Андрій Бутов

@Jonathan Henson: Spot on!
Кріс

9

Це дійсно залежить від університету. Схема (діалект lisp) була мовою для вступного курсу інформатики в MIT протягом віків, хоча його замінив пітон останнім часом. Я отримав ступінь бакалавра в КС в інженерній школі, де під час першого курсу я потрапив на С, Схему, Пролог та С ++. Я думаю, що це була гарна суміш.

Я твердо вірю, що мова, з якої ви починаєте, набагато менш важлива, ніж піддаватися дії декількох парадигм на початку, перш ніж ваш мозок застигне в один спосіб погляду на світ.


1

Принципово теорія інформатики є математичною. Однак інженерія програмного забезпечення - це не так. Моделювання математичних понять безпосередньо не є притаманною перевагою - я можу стверджувати, що це часто може бути недоліком.

Хороші теорії та хороші програми не обов'язково пов'язані між собою.


"Гарні теорії та хороші програми не обов'язково пов'язані між собою.": Програмування полягає у створенні та поєднанні абстракцій, які вирішують проблеми. І, згідно з вікіпедією, "Теорія - це ... тип абстрактного або узагальнюючого мислення, або результати такого мислення". ( en.wikipedia.org/wiki/Theory ) Отже, теорія та (хороше) програмування дійсно дуже близькі один одному.
Джорджіо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.