Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.25;
Скачать: CL | DM;

Вниз

Парадокс Блаба и обучению программированию   Найти похожие ветки 

 
Alkid ©   (2008-04-09 11:55) [0]

Есть такой чувак - Пол Грэхам, пророк и мессия LISPа в нашем грешном мире. Он в своё время сформулировал интересную вещь - парадокс Блаба.
(он есть тут, где-то посередине текста:
http://www.paulgraham.com/avg.html ищите по слову "Blub").
ИМХО, рациональное зерно в этом есть.

Так вот, собственно, вопрос - не стоит ли начинать преподавание в профильных ВУЗах с более мощных и высокоуровневых языков, пусть даже и не мэйнстримовых? Того же Лиспа, например (или Схемы), что бы "размять мозги" студенту и не дать ему закоснеть в рамках более ограниченного мэнстрима. А потом уже переходить к распространённым промышленным языкам (C/C++/Java/.NET/Deplhi), что бы подготовить его к реальным задачам. Ваши мнения, коллеги?


 
Kolan ©   (2008-04-09 12:01) [1]

> Блаба

Только с 20 раза прочитал не «бабла».


> Ваши мнения, коллеги?

Мое имхо — надо учить думать, проектировать, а языки — это инстументы&#133


 
Alkid ©   (2008-04-09 12:11) [2]


> Только с 20 раза прочитал не «бабла».

Кому что :)


> Мое имхо — надо учить думать, проектировать, а языки — это
> инстументы…

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


 
clickmaker ©   (2008-04-09 12:23) [3]


> стоит ли начинать преподавание в профильных ВУЗах с более
> мощных и высокоуровневых языков

у нас в ВУЗе давали и лисп и плюсы и трубопаскакаль... только вот программистами, да хоть и просто инженерами, стали по 2-3 человека из группы.
Остальные - кто куда. Кто продает, кто покупает, кто руководит...
Я к чему. Половина идет в ВУЗ просто за дипломом "щоб було". Их "разминать" бесполезно. Другая половина делится на тех, кого удалось "размять", т.е. они сами заинтересовались и тех, кто в конце концов присоединяется к первой половине.
Отсюда вывод: если нет реальных/практических/интересных (нужное подчеркнуть) задач, то размять мозги не сможет даже самый мускулистый массажист. А реальные/практические/интересные задачи - это тот самый мэинстрим


 
Simpson   (2008-04-09 12:29) [4]

Alkid ©   (09.04.08 11:55)

Есть мнение что профессор Вирт писал Паскаль как раз под эти цели, помимо того есть еще и Оберон, и Модула того же автора. Дубовый кофе(Java) много чего утянул у Вирта, так что и простота, и строгость, и логика.

Специально для учебных заведений болтается в сети BlackBox(Windows+IDE+ Pascal), только учат все равно Си


 
Mystic ©   (2008-04-09 12:39) [5]

> Так вот, собственно, вопрос - не стоит ли начинать преподавание
> в профильных ВУЗах с более мощных и высокоуровневых языков,
>  пусть даже и не мэйнстримовых? Того же Лиспа, например
> (или Схемы), что бы "размять мозги" студенту и не дать ему
> закоснеть в рамках более ограниченного мэнстрима. А потом
> уже переходить к распространённым промышленным языкам (C/C++/Java/.
> NET/Deplhi), что бы подготовить его к реальным задачам.
> Ваши мнения, коллеги?


Я бы не сказал про ВУЗы, меня просто интересует методика преподавания программирования.

Итак, вопрос: ты пробовал писать на функциональных языках программирования? На самом деле переходить на них и привыкать к ним очень даже непросто: другой стиль мышления. Нет локальных переменных. Функция зачастую передается в качестве аргумента другой функции. По сути это реализация некоторой математической абстракции.

С другой стороны при таком подходе возможен обратный эффект, о котором упоминал Джоэл Спольский: после этого становится трудно постигнуть указатели, императивный стиль. Да и те, кто программировал на ФЯ, зачастую после этого стремятся перенести функциональные черты в C#/C++/Delphi/Java. Хорошо это или плохо я не знаю, но языки под это мало пригодны (lambda есть только в C#)

Лично мой путь в программировании такой: МК-52, BASIC по книге, C, Pascal а уже потом ради интереса всякие другие языки программирования. Я знаю, что это рабочая схема.


 
clickmaker ©   (2008-04-09 12:40) [6]


> мой путь в программировании такой: МК-52

а счеты? ))


 
Kolan ©   (2008-04-09 12:46) [7]

> счеты

Между прочим у нас в России я частенько вижу как на них считают в маленьких магазинах&#133

Привычка с 4 века до нашей эры видимо осталась&#133


 
DiamondShark ©   (2008-04-09 12:47) [8]


> а счеты? ))

А у них не фоннеймановская архитектура.


 
Alkid ©   (2008-04-09 12:51) [9]


> у нас в ВУЗе давали и лисп и плюсы и трубопаскакаль... только
> вот программистами, да хоть и просто инженерами, стали по
> 2-3 человека из группы.
> Остальные - кто куда. Кто продает, кто покупает, кто руководит.
> ..

Я не спорю, с ЭТИМ (т.е. с мотивацией) ситуация реально плачевная, но это тема для отдельной дискуссии. Я сейчас о другом - о том, как правильно научить тех, у кого с мотивацией в порядке и кто готот реально вложиться в обучение. Как правильно "потратить" этот ресурс, выжать из него максимум пользы - вот вопрос.


 
DiamondShark ©   (2008-04-09 13:04) [10]


> Я не спорю, с ЭТИМ (т.е. с мотивацией) ситуация реально
> плачевная, но это тема для отдельной дискуссии. Я сейчас
> о другом - о том, как правильно научить тех, у кого с мотивацией
> в порядке и кто готот реально вложиться в обучение. Как
> правильно "потратить" этот ресурс, выжать из него максимум
> пользы - вот вопрос.

А тогда надо посмотреть на мотивацию ВУЗов.
Кодить на жабе, паскале и плюсах можно и обезьяну обучить. А у учебных заведений, даже типа некоммерческих, баблос за поголовье капает, а не за качество, всё равно рынок эту стаю обезьян слопает и не подавится. А то что продукт -- говно, так это фигня, для этого на соседнем факультете маркетоиды учатся.


 
Alkid ©   (2008-04-09 13:06) [11]


> Итак, вопрос: ты пробовал писать на функциональных языках
> программирования? На самом деле переходить на них и привыкать
> к ним очень даже непросто: другой стиль мышления. Нет локальных
> переменных. Функция зачастую передается в качестве аргумента
> другой функции. По сути это реализация некоторой математической
> абстракции.

Немного пробовал. Мой путь тоже "традиционен" и "рабоч" - Turbo Pascal, Turbo Basic, калькулятор Б3-34, потом C, C++, C#.  
Засада тут вот в чём - долгое время я учился (восновном сам) программировать н этих языках и они сформировали моё понимание программирования. Я не знал, что это лишь частный случай и есть альтернативные подходы.  

Первая ломка сознания у меня случилась лет в 17, когда я начал изучать ООП. К тому времения я уже лет 7 самопалом прогарммировал в процедурном стиле и по-началу не мог вообще понять, что это за ООП, нафига оно надо, когда у меня и так всё замечательно. А там каких-то сложностей понавыдумывали.
Но потом я всё же изучил ООП и с тех пор (мне щас 26) "прокачивал" именно эту парадигму.

К сожалению, наш ВУЗ давал весьма хреновый уровень знаний по программированию и ни о каких альтернативах нам даже не рассказывали.
Из-за этого про альтернативы я узнал поздно, уже достаточно приросши мозгом к ООП. С другой стороны, хотелось развиватьс и я самостоятельно начал изучать ФП и ЛП, что привело к второй ломке сознания, когда уже сложившееся представление о том, как надо программировать, было отброшено и я начал снова его выстраивать. И пусть я даже не программирую на работе на Лиспе и Прологе (у нас С++), но те идеи, которые я почерпнул из них помогают мне.

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

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


 
Alkid ©   (2008-04-09 13:09) [12]


> А тогда надо посмотреть на мотивацию ВУЗов.
> Кодить на жабе, паскале и плюсах можно и обезьяну обучить.
>  А у учебных заведений, даже типа некоммерческих, баблос
> за поголовье капает, а не за качество, всё равно рынок эту
> стаю обезьян слопает и не подавится. А то что продукт --
>  говно, так это фигня, для этого на соседнем факультете
> маркетоиды учатся.

Увы, есть такое дело. Как пример - ВУЗ, в котором я учился. К счастью я самопалом учил всё сам и сильно за пределами программы. Уровень преподавания у нас был УЖАСЕН, при том, что победных фанфар на тему "какие мы крутые" было много :(


 
Mystic ©   (2008-04-09 13:21) [13]

> И пусть я даже не программирую на работе на Лиспе и Прологе
> (у нас С++)


Программирование на шаблонах и есть функциональный стиль :)


template <int n>
 struct Factorial<0>
 {
   const value = 1;
 };

template <int n>
 struct Factorial
 {
   const value = n * Factorial<n-1>::value;
 };

int array[Factorial<5>::value];


> Так вот, можно ли как-нибудь изначально дать студентам больше
> кругозора, что бы они не замыкались в одной парадигме?


Это безусловно полезно, вопрос с чего начинать?С фон Неймановской архитектуры, а потом писать на ней интерпретатор LISP или с LISP-а, а потом писать на нем интерпретатор фон Неймановской машины?


 
Alkid ©   (2008-04-09 15:47) [14]


> Программирование на шаблонах и есть функциональный стиль
> :)

Это compile-time прибамбасы :) Кстати, шаблоны в Ц++ это тоже пример. Я сначала изучил С++ без шаблонов и, даже прочитав про них, не стал их использовать - мне и так было хорошо, я знал, как всё и без них сделать. Потом, когда уже научился ими пользоваться и "распробовав" их я начал извлекать из реальную выгоду.


> Это безусловно полезно, вопрос с чего начинать?С фон Неймановской
> архитектуры, а потом писать на ней интерпретатор LISP или
> с LISP-а, а потом писать на нем интерпретатор фон Неймановской
> машины?

С чего начинать - не знаю. Наверное РЕШАЮЩЕЙ роли это не играет. Тут дело в другом - надо достаточно быстро дать разные альтернативы, что бы человек не коснел в рамках одной парадигмы, а знал, что есть разные подходы.


 
TRSteep ©   (2008-04-09 16:11) [15]

LISP по крайней мере в нашем университете проходили
Думать как работает язык после паскаля получаеться очень даже не сразу...


 
neanderthal   (2008-04-09 18:45) [16]

>
>  Есть мнение что профессор Вирт писал Паскаль как раз под
> эти цели

"размять мозги"? паскалем-то?! LOL


 
Alkid ©   (2008-04-09 19:10) [17]


> "размять мозги"? паскалем-то?! LOL

Паскалем - нет, не удастся.
Только если наряду с паскалем дать ещё какой-нибудь незамутнённый функциональный язык + Пролог.


 
Mystic ©   (2008-04-09 20:37) [18]

> "размять мозги"? паскалем-то?! LOL

Если программировать только на ФЯ, то любой императивный язык, в том числе и паскаль, будет разминать мозги: столько всего нового :)


 
jack128_   (2008-04-10 00:07) [19]


> Тут дело в другом - надо достаточно быстро дать разные альтернативы,
>  что бы человек не коснел в рамках одной парадигмы, а знал,
>  что есть разные подходы.

один подход станет родным, а остальные он будет знать. Сколь угодно хорошо, но просто знать.  И дай бог, что б родным стал подход, используемый мейнстримом..


 
Игорь Шевченко ©   (2008-04-10 00:16) [20]

А меня на фортране учили. Ничего страшного.


> не стоит ли начинать преподавание в профильных ВУЗах с более
> мощных и высокоуровневых языков, пусть даже и не мэйнстримовых?
>  Того же Лиспа, например (или Схемы), что бы "размять мозги"
> студенту


Матаном надо мозги разминать. Или сопроматом.


 
neanderthal   (2008-04-10 01:31) [21]


> Mystic ©   (09.04.08 20:37) [18]
> > "размять мозги"? паскалем-то?! LOL


> Если программировать только на ФЯ, то любой императивный
> язык, в том числе и паскаль, будет разминать мозги: столько
> всего нового :)

Автор процитированого мною поста [4] явно не ФЯ имел ввиду. Просто у многих при виде слов "обучение программированию" в голове загорается лампочка "пиарим Оберон" и взводится флажок "Си - бууууу!!!". Что мне и бросилось в глаза в свете темы ветки.


 
Германн ©   (2008-04-10 01:32) [22]


> Игорь Шевченко ©   (10.04.08 00:16) [20]

Матаном - да. Но не сопроматом.
Эвтаназия не должна быть мучительной! :)


 
clickmaker ©   (2008-04-10 09:47) [23]


> Матаном надо мозги разминать. Или сопроматом

или "проектированием механизмов и приборов". Отличная разминка. Ползаешь по листу ватмана, рисуешь вектора моментов и смотришь, чтоб все сошлось. Почти как дебет с крЕдитом


 
oldman ©   (2008-04-10 10:14) [24]


> Alkid ©   (09.04.08 12:11) [2]
> Язык, как естественный, так и программирования,
>  навязывает нам абстракции, которыми мы мыслим, т.е. серьёзным
> образом определяет наш способ думать.


Имхо, язык - способ выражения мыслей, а не их навязывания...
Можно думать и на русском и на нерусском (при хорошей тренировке, разумеется).
Мысли при этом одинаковые.


 
Alkid ©   (2008-04-10 10:45) [25]


> один подход станет родным, а остальные он будет знать. Сколь
> угодно хорошо, но просто знать.  И дай бог, что б родным
> стал подход, используемый мейнстримом..

Согласен. Но знать про остальыне полезно. Как я уже на своём опыте убедился - успешно применять эти знания можно и программируя на мэнстриме.


> Матаном надо мозги разминать. Или сопроматом.

Не согласен. Да как прокачка именно абстрактной думалки это сгодится, но это слишком далеко от программирования, что бы дать непосредственный эффект.


> Имхо, язык - способ выражения мыслей, а не их навязывания.
> ..
> Можно думать и на русском и на нерусском (при хорошей тренировке,
>  разумеется).
> Мысли при этом одинаковые.

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

Например, возвращаясь к моей работе: сейчас я пишу оптимизатор команд. Достаточно интересная и нетривиальная программа. Первый прототип я набросал в традиционном стиле, ООП, STL, контейнеры. В принципе получилось неплохо (по меркам ООП).

В последнее время я активно изучал новые для меня языки Lisp, Scheme, Prolog и их варианты. После анализа получившегося прототипа я увидел, что некоторые абстракции, которые я почерпнул из них могут очень пригодиться. В Частности продолжения (Scheme) и бэктрэкинг (Prolog). Плюс к этому я реорганизовал код, выразив его в виде набора чистых функций, оперирующих неизменяемыми структурами данных (т.е. порождающих их).

Вуаля! Код сократился в полтора раза, количество классов сократилось в два раза. И это при том, что продолжения и бэктрэкинг мне пришлось моделировать самому, в некотором специальном виде.

Так вот к чему я - если бы я не изучал эти "ненужные" немэйнстримовые языки, я был бы ограничен способах выражения своих мыслей.


 
Игорь Шевченко ©   (2008-04-10 10:58) [26]

Alkid ©   (10.04.08 10:45) [25]


> Не согласен. Да как прокачка именно абстрактной думалки
> это сгодится, но это слишком далеко от программирования,
>  что бы дать непосредственный эффект.


Видишь ли, прокачка именно абстрактной думалки и дает способность к поиску изящных решений, вне зависимости от используемого языка программирования. Если нужно воспитать китайца, работающего методом copy|paste (а использование этого метода широко варьируется), тогда ему и думалка ни к чему - заставил вызубрить грамматику языка и вперед.


 
jack128_   (2008-04-10 11:06) [27]


> Имхо, язык - способ выражения мыслей, а не их навязывания.
> ..

Новояз и ему подобные - не просто так придумываются ;-)


> В Частности продолжения (Scheme) и бэктрэкинг (Prolog).

хе, а мона чуть подробнее?? что то судя по описанию - в ОО языках это реализуется добовлением в класс методов SaveToSream/LoadFromStream -)


 
DiamondShark ©   (2008-04-10 11:24) [28]


> > В Частности продолжения (Scheme) и бэктрэкинг (Prolog).
>
>
> хе, а мона чуть подробнее?? что то судя по описанию - в
> ОО языках это реализуется добовлением в класс методов SaveToSream/LoadFromStream
> -)

~~
о-0
\_/

День удался ;)


 
jack128_   (2008-04-10 11:59) [29]


> День удался ;)

Я что то не то сморозил???

Ну вот цитата:

есть так называемый откат ("бэктрэкинг"). Откат, это когда программа возвращается к пройденному ранее состоянию, если доказательство очередной подцели закончилось неудачей. Во время отката программы отменяются все присваивания переменным, сделанные в ходе её исполнения, и переменные становятся снова неопределёнными. Обычно программа откатывается до первой пройденной развилки в алгоритме, чтобы попытаться пройти по другому пути. (с)  http://www.cplire.ru/Lab144/start/r_intro.html

И ??  в delphi я бы так это сделал:

begin
 SaveToStream(TmpStream);  
 if not TryProve then
   LoadFromStream(TmpStream);
 ...
end;

PS - что такое логические языки предстовляю смутно :-)


 
Alkid ©   (2008-04-10 12:09) [30]


> Видишь ли, прокачка именно абстрактной думалки и дает способность
> к поиску изящных решений, вне зависимости от используемого
> языка программирования. Если нужно воспитать китайца, работающего
> методом copy|paste (а использование этого метода широко
> варьируется), тогда ему и думалка ни к чему - заставил вызубрить
> грамматику языка и вперед.

Да, даёт. Но это слишком оторвано от нашей специфики. Да, математику изучать надо. Сопромат - не уверен. Но это ни в коем случае не заменит изучения нашей специфики, может только помочь - вот что я хочел сказать.


> хе, а мона чуть подробнее?? что то судя по описанию - в
> ОО языках это реализуется добовлением в класс методов SaveToSream/LoadFromStream
> -)

Эхм...
Нет, абсолютно неверно.
Вот первое что нашёл - английская википедия.
Продолжения:
http://en.wikipedia.org/wiki/Continuation
Бэктрэкинг:
http://en.wikipedia.org/wiki/Backtracking


 
Alkid ©   (2008-04-10 12:14) [31]


> PS - что такое логические языки предстовляю смутно :-)

Советую этот пробел ликвидировать :)
Как реализовать НОРМАЛЬНЫЙ бэктрэкинг на Delphi/C++ в нормальном виде я не знаю. Даже если можно, это, наверное, будет непросто и неизящно. Я реализовывал его для ОЧЕНЬ СПЕЦИАЛЬНОГО случая, применяя продолжения (тоже сработанные на коленке), рекурсивные функции и immutable data structures (IDS).

В *принципе* вместо IDS можно использовать сериализацию/восстановление, но это, ИМХО, некрасиво и неоптимально.


 
Игорь Шевченко ©   (2008-04-10 13:30) [32]

Alkid ©   (10.04.08 12:09) [30]


> Да, даёт. Но это слишком оторвано от нашей специфики. Да,
>  математику изучать надо. Сопромат - не уверен. Но это ни
> в коем случае не заменит изучения нашей специфики, может
> только помочь - вот что я хочел сказать.


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

Вот откуда они взялись, с прокачанными мозгами ?

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

Архангельского начитается и вперед :)


 
Alkid ©   (2008-04-10 14:10) [33]


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

Самообразование ещё никто не отменял. Хотя, если честно, среди программистов с непрофильным образованием я видел больше плохих программистов, чем хороших.


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

Это смотря ещё что считать программированием, а что - нет. Например, есть задача - написать оптимизатор очереди команд. К этому оптимизатору может быть несколько подходов: шаблонный оптимизатор, оптимизатор генерирующий минимальную достаточную последовательность команд, оптимизатор на базе генетических алгоритмов и т.п. Выбрать подход, конкретизировать его в рамках задачи, оценить побочные свойства подхода (его расширяемость, аддитивность, протухаемость, и т.п.), расписать модель классов (процедур/функций/модулей/предикатов и т.п.) их свойства, взаимодейтствия  и потом  всё это закодировать. Где здесь граница между приминением "набора технических приёмов", котрые можно "тупо вдолбить" и реальной работой инженера? Для меня всё это - программирование, начиная от формализации задачи, кончая заливкой файлов в систему контроля версий.

P.S.
Кстати, замечу между делом, что я в корне не согласен с позицией, что программирование - это нечто такое несерьёзное, чему легко научиться побочно основной (другой) специальности, и вообще сводится к "набору технических приёмов".  Как правило так считают взрослые программисты, получившие техническое образование раньше и перепрофилировавшиеся потом в программистов, но по-прежнему считающие свою первую специальность чем-то, несоизмеримо более высоким и важным. Другой стороной этой медали являются стада молодёжи, считающие, что после прочтения книги "С++ для чайников" они уже круты и должны получать не меньше пары тысяч зелени.

Я повидал уже немало таких "программистов" и достаточно поковырялся в их коде, что бы сделать такие выводы. Программирование - это самостоятельная дисциплина, которую надо упорно изучать, что бы добиться в ней успехов. Это упорное изучение не может быть заменено в полной мере упорным изучением других дисциплин, или общим уровнем наглости (это про молодёжь). Я не говорю "математику на свалку", нет. Математика, как и многие другие дисциплины (в т.ч. и гуманитарные) программисту изучать ПОЛЕЗНО, они будут способствовать его развитию. Но они никак не могут заменить изучение своей специальности.

P.P.S. Хорошая статься, немного не по этой теме, но релевантная :)
http://www.williamspublishing.com/21-days.html


 
Игорь Шевченко ©   (2008-04-10 14:26) [34]

Alkid ©   (10.04.08 14:10) [33]


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


А эта...тут такой момент - программированию раньше не обучали. А программисты потом получались. Заметь, получались и хорошие. Значит, не в профиле образования дело. Или под профильным образованием понимаем разное ?


> Кстати, замечу между делом, что я в корне не согласен с
> позицией, что программирование - это нечто такое несерьёзное,
>  чему легко научиться побочно основной (другой) специальности,
>  и вообще сводится к "набору технических приёмов".  


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


> P.P.S. Хорошая статься, немного не по этой теме, но релевантная
> :)
> http://www.williamspublishing.com/21-days.html


Хорошая статья.


 
oldman ©   (2008-04-10 14:58) [35]


> Игорь Шевченко ©  


Но некоторые задачи более успешно решаются "в лоб" школьниками с задатками алгоритмизирования на QBasic for DOS, чем заумными дядьками с дипломами по SQL... И код у школьников более читабелен...

Особливо те задачи, где эффектность не влияет на эффективность.

Вы согласны?


 
DiamondShark ©   (2008-04-10 15:00) [36]


> Но некоторые задачи более успешно решаются "в лоб" школьниками
> с задатками алгоритмизирования на QBasic for DOS, чем заумными
> дядьками с дипломами по SQL... И код у школьников более
> читабелен...

Можно пример такой задачи увидеть?


 
oldman ©   (2008-04-10 15:04) [37]


> DiamondShark ©   (10.04.08 15:00) [36]
> Можно пример такой задачи увидеть?


Нет.


 
Alkid ©   (2008-04-10 15:28) [38]


> А эта...тут такой момент - программированию раньше не обучали.
>  А программисты потом получались. Заметь, получались и хорошие.
>  Значит, не в профиле образования дело. Или под профильным
> образованием понимаем разное ?

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

Кроме того, понятие "хорошего программиста" со временем меняется. Как я могу судить, сейчас "хороших программистов" нигде не готовят. У нас не готовят. Я, интереса ради,  изучал курс SICP из Массачусетского Технологического Института - это уже гораздо больше похоже на то, что надо.

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


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


Циклы, ветвления и организация подпрограмм - это ДАЛЕКО не всё, что надо знать программисту. :) Но и это ещё не всё. Легко выучить синтаксис языка и понять основы, но научиться хорошо программировать - сложно. Приведу аналогию - правила шахмат обычный человек может усвоить за 10 минут, но это не значит, что он научился ИГРАТЬ в шахматы (т.е. эффективно применять разрешённые ходы фигур). Играть он может учиться потом всю жизнь, открывая для себя что-то новое.


 
Alkid ©   (2008-04-10 15:29) [39]


> Но некоторые задачи более успешно решаются "в лоб" школьниками
> с задатками алгоритмизирования на QBasic for DOS, чем заумными
> дядьками с дипломами по SQL... И код у школьников более
> читабелен...
>
> Особливо те задачи, где эффектность не влияет на эффективность.
>
> Вы согласны?

"Навёрнутость"  программы не равна её оптимальности.


 
DiamondShark ©   (2008-04-10 15:33) [40]


> oldman ©   (10.04.08 15:04) [37]
>
> > DiamondShark ©   (10.04.08 15:00) [36]
> > Можно пример такой задачи увидеть?
>
> Нет.

Тогда цак надень и в пепелаце сиди.



Страницы: 1 2 вся ветка

Текущий архив: 2008.05.25;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.029 c
2-1209224503
No_Dead
2008-04-26 19:41
2008.05.25
Почему выдается не правильный размер файла:(


2-1208956311
Foo Fighters
2008-04-23 17:11
2008.05.25
как узнать результат запроса в ADOQuery?


2-1208982779
Жуков Олег
2008-04-24 00:32
2008.05.25
BDE и латышский язык (LANGDRIVER)


3-1198054213
Дядя Вова
2007-12-19 11:50
2008.05.25
Правильно отфильтровать поля


2-1209038366
worldmen
2008-04-24 15:59
2008.05.25
Как показать Hint любого объекта на StatusBar?