Размышления на тему обучения программистов
2 февраля 2008 - 20:54
Размышления на тему того, как надо правильно обучать программистов, навеяно комментариями к этому.
Итак, школьные годы:
1-4 классы: общее знакомство с компьютером, Windows там, MS-DOS (командную строку учить необязательно, а вот Norton Commander как минимум на уровне копирования файлов и запуска игр)
5-7 классы: знакомство с программированием, основы алгоритмизации, на примере какого-нибудь лого (кенгурёнка и прочих кукарач)
8-11 классы: алгоритмизация, лучше всего на Turbo Pascal 5, на крайний случай сойдёт и TP 7, главное никакого Delphi, иначе детей можно будет считать потерянными для мира программирования. Также можно использовать Basic (само собой под DOS), но паскаль в данном случае будет лучше
Институт:
1-ый курс: старый добрый C, основная цель курса обучить студента правильно работать с указателями и прочим стандартным вещам
2-ой курс: ООП, в основном теория, примеры на C++, но не забывая упоминать про прочие типа Smalltalk-а, Java, C# и т.д...
3-ий курс: обучение правильному построению архитектуры приложений, рефакторингу/отладке/тестированию/профайлингу и т.д. и т.п. Плюс основы функционального программирования. Факультативы по Java, C# и прочим(именно по языкам, никакого формошлепства и прочего визуального программирования). Также неплохо давать основы WinAPI, предпочтительно с какой-нибудь навороченной курсовой в конце семестра. Также как факультатив возможно введение в web-программирование, хотя это совсем не обязательно.
4-5 курсы: практика, практика, и ещё раз практика. Само собой в реальных проектах, в реальных фирмах, никакой теории уже не надо. С этого момента студенты должны учиться на своём опыте и на опыте старших коллег. Естественно это требует тесного взаимодействия ВУЗов и предприятий, чего сейчас нет и в помине.
Краткие примечания
- я считаю, что для обучения школьников наиболее подходящим языком будет Pascal (именно старый добрый процедурный паскаль, а ни в коем случае не жутчайшие Delphi или Object Pascal)
- основной недостаток паскалистов (большинства по крайне мере) - это абсолютное неумение работать с памятью, именно поэтому на первом курсе института этому должно уделяться особое внимание
- ни в коем случае нельзя использовать для обучения Deplhi(а также CBuilder, Visual C# и прочие IDE, где доминирует формошлепство), ибо как показывает практика большинство людей начавших с формошлепства так никуда и дальше и не продвигается, именно поэтому я считаю, что закупка в школы BDS`а приведёт к тому, что хороших программистов станет значительно меньше (впрочем их и так совсем немного), а вот всяких быдлокодеров, которые только и умеют, что раскидывать кнопки по форме, станет просто немерено (хотя их и так немало)
- по настоящему хороший программист без особых проблем сможет сменить язык программирования на другой(имеются ввиду естественно императивные языки, с функциональными есть своя специфика), конечно в каждом языке есть свои тонкости, но основа-то в конечном итоге у всех одна, поэтому не играет большой разницы C это, Pascal, Basic или что-то ещё.
PS. Всё это моё личное мнение, навеянное жизненным опытом, и совсем не претендующее на стопроцентную объективность.
Итак, школьные годы:
1-4 классы: общее знакомство с компьютером, Windows там, MS-DOS (командную строку учить необязательно, а вот Norton Commander как минимум на уровне копирования файлов и запуска игр)
5-7 классы: знакомство с программированием, основы алгоритмизации, на примере какого-нибудь лого (кенгурёнка и прочих кукарач)
8-11 классы: алгоритмизация, лучше всего на Turbo Pascal 5, на крайний случай сойдёт и TP 7, главное никакого Delphi, иначе детей можно будет считать потерянными для мира программирования. Также можно использовать Basic (само собой под DOS), но паскаль в данном случае будет лучше
Институт:
1-ый курс: старый добрый C, основная цель курса обучить студента правильно работать с указателями и прочим стандартным вещам
2-ой курс: ООП, в основном теория, примеры на C++, но не забывая упоминать про прочие типа Smalltalk-а, Java, C# и т.д...
3-ий курс: обучение правильному построению архитектуры приложений, рефакторингу/отладке/тестированию/профайлингу и т.д. и т.п. Плюс основы функционального программирования. Факультативы по Java, C# и прочим(именно по языкам, никакого формошлепства и прочего визуального программирования). Также неплохо давать основы WinAPI, предпочтительно с какой-нибудь навороченной курсовой в конце семестра. Также как факультатив возможно введение в web-программирование, хотя это совсем не обязательно.
4-5 курсы: практика, практика, и ещё раз практика. Само собой в реальных проектах, в реальных фирмах, никакой теории уже не надо. С этого момента студенты должны учиться на своём опыте и на опыте старших коллег. Естественно это требует тесного взаимодействия ВУЗов и предприятий, чего сейчас нет и в помине.
Краткие примечания
- я считаю, что для обучения школьников наиболее подходящим языком будет Pascal (именно старый добрый процедурный паскаль, а ни в коем случае не жутчайшие Delphi или Object Pascal)
- основной недостаток паскалистов (большинства по крайне мере) - это абсолютное неумение работать с памятью, именно поэтому на первом курсе института этому должно уделяться особое внимание
- ни в коем случае нельзя использовать для обучения Deplhi(а также CBuilder, Visual C# и прочие IDE, где доминирует формошлепство), ибо как показывает практика большинство людей начавших с формошлепства так никуда и дальше и не продвигается, именно поэтому я считаю, что закупка в школы BDS`а приведёт к тому, что хороших программистов станет значительно меньше (впрочем их и так совсем немного), а вот всяких быдлокодеров, которые только и умеют, что раскидывать кнопки по форме, станет просто немерено (хотя их и так немало)
- по настоящему хороший программист без особых проблем сможет сменить язык программирования на другой(имеются ввиду естественно императивные языки, с функциональными есть своя специфика), конечно в каждом языке есть свои тонкости, но основа-то в конечном итоге у всех одна, поэтому не играет большой разницы C это, Pascal, Basic или что-то ещё.
PS. Всё это моё личное мнение, навеянное жизненным опытом, и совсем не претендующее на стопроцентную объективность.