2009-06-17

чему учить программистов?

А вот тут друг, преподающий программирование в ОмГУ, спрашивает как бы улучшить это самое преподавание. До него дошли-таки слухи что учат они чему-то не тому и как-то не так. Если у кого есть мысли на эту тему - велкам в комменты.

24 comments:

rehatep said...

Как чему, культуре :)
В данном случае культуре программирования. А ещё наверное доводить дело до конца, а не пытаться сдать только что успешно запустившуюся прогу (утрирую).

vnaum said...

Там комментировать надо, не тут :-)

Оно понятно, что культуре.
Но как это выразить в программе?
Какие задачи на каком языке задавать, что читать на лекциях?

Alex Ott said...

посмотреть в сторону SICP, How to design programs, Introduction to Algorithms и т.д. и по ним составить свой план лекций. Я знаю, что в питере читали лекции по мотивам SICP

VVelichko said...



Выучите С до окончания учебы.


Часть вторая: С. Обратите внимание я не сказал С++. И хотя С используется все реже и реже, он остается лингва-франка для работающих программистов. Это тот язык, который используется чтобы общаться друг с другом и, что еще более важно, он гораздо ближе к машине, чем “современные” языки, которым вас учат в колледже: ML, Java, Python, какому бы новомодному мусору не учили сегодня. Вам нужно, как минимум, семестр чтобы стать ближе к машине, иначе вы никогда не сможете создавать эффективный код на языках более высокого уровня. Вы никогда не сможете работать над компиляторами и операционными системами, а это одни из самых лучших рабочих мест. Вам никогда не доверят создавать архитектуру больших проектов. Меня не интересует сколько вы знаете о последовательностях, замыканиях и обработке исключений, если вы не можете объяснить почему while (*s++ = *t++); копирует строку, или это для вас не одна из самых естественных вещей в мире, ну, тогда вы программируете основываясь на суевериях, подобно доктору, который не зная анатомии отпускает рецепт основываясь на том, что говорит аптекарша.

Alex Ott said...

2VVelichko: компиляторов, написанных на ML, Haskell & Lisp - очень много, и это как раз те языки, на которых это делать удобно, в отличии от С
Изучение архитектуры машины и использование С хоть и близки, но не обязательно друг другу соответствуют...

VVelichko said...

2Alex Ott
> ML, Haskell & Lisp
ни один из трех названных к десятке самых распространненых и близко не подобрался.

VVelichko said...

TIOBE — рейтинг языков программирования

Alex Ott said...

а как связанна популярность языка с возможностью разрабатывать на нем компиляторы? По таким параметрам можно считать, что идеальным языком для разработки компиляторов, будет PHP :-)
посмотрите чем занимаются в MS Research, например? Какой язык был включен в новую версию Visual Studio?

VVelichko said...
This comment has been removed by a blog administrator.
Alex Ott said...

По моему опыту Lispер будет трудоустроен на большие деньги, чем PHPист. И человек знающий не только C/C++ имеет больше возможностей...
А насчет учебников вы не особо правы - есть и учебники и учебные курсы по лиспу, хаскелю, прологу и ML и русских авторов, и переводные, вы просто про них не знаете...

Alex Ott said...

а насчет С/С++ vs. другие языки - давайте начинающих альпинистов будем сразу отправлять на эверест, а не пытаться их тренировать где-то в спортзалах и простых горках.
кроме ML/Haskell/Lisp есть еще Python, который может быть хорошим учебным языком и т.д.
мой опыт преподавания С говорит как раз о том, что не надо его делать первым языком

VVelichko said...

У меня были и первокуры с паскалем и второй курс с С. Паскаль осваивается гладко до второго семестра, пока не начинаются указатели, потом все ппц. У второго курса половина первого семестра идет псу под хвост, потому что большинство пишет паскаль программы на С, переучиваются тяжело. Понимание указателей и структур лучше чем в паскале, но все равно у большинства представление чисто формальное, не владеют. С алгоритмами ситуация не меняется, что на С что на паскале пишут примерно одинакого. Так что единственный существенный бонус паскаля - нет нужды объяснять на вводной, что такое main и зачем ее писать.


Ставить первым языком что-либо объектное плохо, формируется масса дурных привычек. Сишники хотя бы приучаются на руки не ссать.
Твои ML/Haskell/Lisp мона ставить на третий курс и выше, для тренировки мозгов и отсева не способных. Устраивать "отсев" раньше в Омском универе нереально, завалится процентов эдак 95.


//
А вообще омский универ пора уже закрывать в связи с полной и окончательной деградацией :-(

Alex Ott said...

в германии наоборот отсеивают на 1-2-м семестрах, до 70 процентов (абитур, нужный для поступления, получить достаточно сложно)
но я бы все-таки начинал с чего-то типа SICP & HTDP, чтобы люди думали в терминах алгоритмов, а не решений на конкретном языке...

VVelichko said...
This comment has been removed by a blog administrator.
Alex Ott said...
This comment has been removed by a blog administrator.
VVelichko said...

> в германии наоборот отсеивают на 1-2-м семестрах.

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

VVelichko said...
This comment has been removed by a blog administrator.
Alex Ott said...
This comment has been removed by a blog administrator.
anarresti said...

http://swc.scipy.org/

anarresti said...

> http://swc.scipy.org/

Походу, я тебе уже советовал, и по ходу ты уже в оригинальной дискуссии уже сослался на это :-)

vnaum said...

2VVelichko: тут не филиал ЛОРа, и Alex Ott - не анонимус.
Кто он такой - в профиле написано. Соглашаться с ним во всём не
обязательно, но в любом случае оппонентов следует уважать: тут они как
минимум мои гости.

Джоэль прекрасно пишет и молодец, но по поводу указателей и управления
памятью я с ним не согласен (почему - в комментариях к оригинальному посту).

Ссылка на TIOBE-шный индекс да, не в тему.

2Alex Ott: Приношу извинения за эээ... неподобающее поведение некоторых
комментаторов. К сожалению, не получилось вмешаться раньше :-(

2anarresti: да-да-да, там уже перешло у нас в email обсуждение (ЖЖ-шный
лимит на 6K в комментарии был достигнут удивительно быстро). Кажется,
вопрошавший заинтересовался темой. Посмотрим чего получится. В случае
чего я тебя добавлю в CC, если ты не против :-)

2everybody: ребята, я понимаю что тема - потенциальная комменторезка, но
я только разместил объяву! Комментировать - в оригинальном посте (спасибо всем, кто так и сделал).

anarresti said...

Ага, не против. the.pythy@gmail.com если что.

Читал дискуссию когда там было примерно 80-90 комментов. Ты молодец, мне бы на 3-4 комменте надоело бы отвечать ;-) А ты планомерно указал на неконсистентность позиции собеседника :-) Особенно понравилось про "классичность" образования :-D

anarresti said...

> ЖЖ-шный лимит на 6K в комментарии был достигнут удивительно быстро

> Читал дискуссию когда там было примерно 80-90 комментов.

Гм. Сходил, посмотрел -- 83 коммента к посту...

vnaum said...

[смущённо] Да, у меня было определённо слишком много свободного времени: семья в отъезде, выходные... Так-то я белый и пушистый, в холиварах не воюю :-)

Subscribe / RSS