Причины нынешней ситуации в преподавании программирования:
1. Сегодняшняя ситуация, когда отдельные части единого процесса программирования считаются независимыми в действительности вытекает из ситуации прошлого и ничем не подкреплена в настоящем. Я конечно имею ввиду Паскаль, который выступает как тренажер для овладения умением производить алгоритмы. Кстати, некоторое время назад вообще использовали исполнителей, так как считалось, что это необходимо. Так вот, во времена больших машин, которые я еще застал, труд программистов был отделен от всего процесса создания программного продукта. Программист писал программу на бумаге, затем отдавал ее набивать на перфокарты (иногда и сам набивал), затем программы прогонялась (не им) и результат и листинг выдавался программисту. Многие при этом даже не бывали в машинном зале. Так вот эта идея идет оттуда и обусловлена технологией создания программного продукта в то время. Так что нынешние преподаватели, как это ни странно звучит, являются носителями старой доктрины, не подозревая об этом. А пытаются оправдать ее "новыми" идеями. Это Фрейд в чистом виде. 2. Почему собственно Паскаль? Он возник как раз как учебный язык идеально отражая, господствовавшую в то время доктрину структурного программирования. Но вот стала набирать популярность ООП и Borland подсуетившись внес эту технологию в Паскаль. Органично это или нет - здесь я обсуждать не буду. В результате Паскаль сохранил свою позицию в учебном процессе. Более того, появился Дельфи, многим он понравился (об этом я еще скажу слово на форуме) - и преподавателям тоже. В результате для некоторых (к моему ужасу) Паскаль это введение в Дельфи. А Дельфи получается некоторая абсолютная цель. А отсюда и оправдание Паскаля. Чувствуете, куда ветер дует? 3. В наших учебных программах, а главное в умах не сформировалось понятие программирование. Я тебе, Дима, не зря приводил пример студента, который не знал, что такое исполняемый модуль, как он получается и с чем его едят. Ты что думаешь таких единицы? А давай эксперимент проведем с пятым курсом? Я тебе скажу, что процентов 50 точно не понимает, зачем они программировали. То есть конечной цели не знают. А это означает, что попусту они учились. Вот у меня сейчас пятый курс. И вот точно, что я говорю - так оно и есть. Самое удивительное то, что не понимание конечной цели есть даже у хороших студентов. А знаешь, чем это пахнет - отсутствием положительной мотивации в обучении программированию. Для большинства студентов программирование абсолютно немотивированная деятельность. Пока это все. В ближайшее время постараюсь сформулировать принципы обучения программированию. |
1. Я не застал времена "бумажного" программирования и для меня программирование всегда ассоциируется с набивкой программы, компиляцией, интерпретацией, отладкой и возвращением на круги своя, пока не получится готовый продукт. Когда все этапы объединены в одной среде программирования, для меня это, в большинстве случаев, удобно. Однако могу пользоваться и совершенно левым текстовым редактором, строковым компилятором, обходится ВООБЩЕ без отладчика. И считаю это необходимым навыком любого программиста. А вот когда все указанные этапы объединяются в единой среде программирования без возможности их расчленения - это попытка авторов такой системы закабалить программистов, заставить их заниматься разработкой только в этой интегрированной среде и нигде более. Возникает встречный вопрос: за что ратует vladislav? За единую среду разработки всего и всея под все? За полное непонимание программистом механизмов прохождения программы от исходного кода к исполняемому файлу? За невозможность сменить язык программирования (если он не устраивает по каким-то параметрам) только потому, что для него не придумано среды разработки? Или все-таки за что-то другое? Хочу разьяснений.
2. Почему Паскаль? А причем здесь паскаль? Алгоритмы сортировки, например, не зависят от языка их реализации. Давайте делать это все на ассемблере или на Си. Если задача обучить реализации основных алгоритмов, то на каком языке это делается - решать преподавателю. Почему лично мне нравится паскаль, я озвучивал уже не раз, поэтому повторяться, думаю, смысла особого нет. В крайнем случае, заведем раздел "Религия" и будем там спорить о достоинствах тернарной операции Си в противовес поддержке множеств паскалем. Теперь о Дельфи. Непонимаю, почему вызывает ужас требование к знанию языка программирования при обучении среде программирования, которая не только позволяет разрабатывать на этом языке программы, но и сама на нем написана. Ведь это совершенно органично и только так можно преодолеть наносную шелуху в виде тысяч компонентов, позволяющих делать все и вся. Юная личность, не зная языка программирования, мгновенно очаровывается возможностью поставить красивую, затейливую кнопку на столь-же затейливую форму. И считает ЭТО программированием! Но как только возникает конкретная рабочая задача - все встает на свои места. Вообщем, вся эта ситуация имеет место быть вне зависимости от языка программирования. 3. Понятие "программирование" сформировалось в наших учебных планах. Лично я тоже его себе сформировал и много раз модифицировал в процессе накопления опыта. Программирование, по моему мнению, - это умение решить поставленную задачу (разработать программу) по заданным условиям наиболее оптимальным способом. И если программист требует для решения задачи только ЭТУ среду программирования для ЭТОЙ операционной системы, по дороге изменяя условие задачи, мотивируя тем, что ЭТА система так делать еще не умеет, то заказчику программы следует хорошо задуматься: а программист ли перед ним? И если студент не знает, что такое исполняемый файл, "изучив" дельфи, то я на все сто уверен, что он будет знать столько-же, изучив Visual Studio NET. На самом деле, такие студенты должны быть отчислены еще курсе на втором-третьем. У них немотивирована программистская деятельность, потому-что мотивировать нечего - они никогда этой деятельность не занимались. В этом, кстати, отчасти виноваты преподаватели, ставящие свои оценки, закрыв глаза на реальные знания студента. Как вообще стимулирует к изучению программирования оценка 4 у махрового двоешника? Бесполезно жалеть студента, который даже не пытается ничего учить, зная, что "этот добрый, все равно поставит". Безполезно при таком подходе искать дополнительные мотивации к учению, они все равно не сработают. |
xdsl писал(а): Теперь о Дельфи. .... Юная личность, не зная языка программирования, мгновенно очаровывается возможностью поставить красивую, затейливую кнопку на столь-же затейливую форму. И считает ЭТО программированием! |
Даеш АСМ в школы ![]() Я сам как бывший преп информатики считаю огомнейшею глупостью преподавание ПРГРАМИРОВАНИЯ! Для простых смертных оно не нужно, преподают его крайне плохо и не лоично. Хоть ив школе\вузе мне его преподавали - сам выучил только тогда его, когда приперло ![]() Вот |
1. "За единую среду разработки всего и всея под все? За полное непонимание программистом механизмов прохождения программы от исходного кода к исполняемому файлу? За невозможность сменить язык программирования (если он не устраивает по каким-то параметрам) только потому, что для него не придумано среды разработки?" - вот как раз это сейчас и процветает. Так кто за что выступает?
2. "Вообщем, вся эта ситуация имеет место быть вне зависимости от языка программирования." - согласен, но есть одна тонкость. Дельфи не побуждает к развитию программистких способностей. Это должен делать преподаватель, а это не правильно, т.к. преподаватели бывают разными и программа обучения должна быть построена так, чтобы минимизировать пристрастия и главное, возможно, некоторый непрофессионализм. Я то знаю твои возможности и способности, но я также знаю, что это скорее исключение. 3. С третьим положением согласен. Из него в частности вытекает явная необходимость пересмотреть учебные планы. |
1. Уже (по крайней мере у меня) не процветает. Посвящать в той-же Delphi лекции, например, полному разбору палитры компонентов смысла, считаю, не имеет. Обзор среды, скелет иерархии классов с хребтом tobject->tpersistent->tcomponent->tcontrol, минимальный обзор свойств. До всего остального студент дойдет сам при решении конкретной проблемы. Или не дойдет вообще вне зависимости от усилий преподавателя. Очень кстати, интересный вариант получается с использованием проектора. Первую лекцию по изучению delphi, например, посвятил разбору минимального набора файлов проекта, проанализировали механизмы выполнения программы (application.initialize, createform, run), показал работу консольного приложения, использование консольного компилятора (по дороге разобрали, например, почему запускается dcc32 от delphi7, а не от delphi5 и как это изменить), показал 32-х битную альтернативу delphi - freepascal, сравнили компиляцию одной и то-же паскалевской программы под тремя компиляторами (tpc, dcc32, fpc), показал, как программируются dll и т.д. Получилось так, что самому понравилось. Тут-же пишешь программу, тут-же ее компилируешь и объясняешь - что к чему. Солянка, конечно, и все по верхам - эдакая пропедевтика, но зато теперь можно спокойно рассказывать обо всем остальном в надежде, что будет понятно и доступно.
2. К развитию программистских способностей delphi, по моему мнению, отношения не имеет. Как не имеет и любая другая среда или язык программирования в чистом виде. Готов поспорить предметно, если есть уверенность в обратном. |
andy ice писал(а): Создать новый проект можно и без использования форм. Например консольный. Ведь преподаватель ставит задания. Студиозы занимаются и дополнительно, у себя дома без преподавательского надзора. В результате путают эффектность и эффективность и потом из них эти убеждения (программирование===дизайн программы) устаешь выбивать. |
Это вообще интереснейший вопрос о том, как влияет инструмент программирования на программиста. Здесь несомненно должен быть отдельный анализ. Но вот что говорит программисткий фольклер о Дельфи. Это ведь не я придумал. Программист на Дельфи начинает поиск решения с поиска компонент в интернете. Я этот вопрос еще на наших семинарах поднимал и говорил о том, что некоторые инструменты попуждают программиста развиваться, а некоторые нет. Я ведь знаю как ты преподаешь. Дай бог каждому иметь такого преподавателя хоть по одному предмету. Но если даже лучшие твои студенты (слава богу не все) не заражаются от тебя твоим рвением, то это вина инструмента, я в этом уверен. И опять я о том же. В начале мертвый паскаль, а потом Дельфи, который живее всех живых. |
Vladislav, мы говорим не об языке программирования, а о программировании вообще. Думаете сибилдер, визуалси или (свят-свят-свят!) студионет лучше в плане восприятия, чем дельфи?
Да я лучше на досовском BCPP3.1 буду год студентов мурыжить, пока не разберутся в языке и основных методах программирования, прежде чем тот-же билдер дам попробовать! |
гхм... ничего если я вмешаюсь? Поведаю так сказать о личном опыте обучения у обоих преподавателей.
Вот чему учил меня xdsl (экзамены сдавал ему же)- Pascal, Delphi, С++ Оценки в дипломе - Pascal - 3, Delphi - 5, С++ - 5 Реально умел программировать на Паскале и Дельфи, Си вообще вспоминаю, как непонятный набор символов ![]() vladislav учил меня программить в Visual Fox, экзамен сдал на 4. Даже когда сдавал толком ничего не знал. |
С++ - жуткое дело ![]() |
Fakir писал(а): Си вообще вспоминаю, как непонятный набор символов ![]() ![]() |
Очень просто. В то время я сам C++ не знал ![]() |
Slin писал(а): Как же ты его на 5 сдал? ![]() Помню было это так - дрожжа и уже думая о предстоящей пересдаче захожу на экзамен к xdsl. Зимняя сессия. xdsl заявляет - "Теперь новогодний подарок тем, у кого выполнены все практические задания - им отлично!" Таких было 2 человека - Ваш покорный слуга и некий spirit. (всё всегда делали вместе) Практические задания выполнял так - алгоритмы и общие принципы были уже готовы, но в Delhi, оставалось пользуясь лекциями "перевести" с Delphi в C++ Builder. Ничего сложного Кстати, аналогично char'у предпочитал самоподготовку - лекции в прямом всмысле слова покупал у "зубрилок", которые в бессилли что-то понять, набирали их в ворде )) |
Sels писал(а): С++ - жуткое дело :(не согласен |
Пока данные принципы всего лишь наброски, но готов обсуждать.
Принципы преподавания программирования. Основное определение. Среда исполнения: операционная система. Исполняемый модуль: программа, исполняемая в какой-либо среде исполнения. Среда программирования: набор инструментов, позволяющих создавать исполняемые модули. Технология разработки программного обеспечения: набор технологических правил для проведения полного цикла создания исполняемого модуля, а также его модификации, сопровождения и документирования. 1.Цель преподавания программирования (далее ПП) – научить создавать исполняемые программные модули для различных сред исполнения, реально используемых в настоящее время. Комментарий: Студент с самого начала должен почувствовать себя программистом, создающим, пусть очень маленькие, простые, неказистые, но реальные исполняемые модули. На мой взгляд, это важнейший фактор, работающий на мотивацию обучения. 2.В технологии программирования следует выделить пять компонент: алгоритм, язык программирования, среда программирования, технология разработки программного обеспечения, среда выполнения. 3.Учебные курсы, которые мы относим к ПП, должны охватывать все пять перечисленных в пункте 2 компонент, но не обязаны иметь с ними взаимнооднозначного соответствия. Комментарий: Другими словами количество дисциплин в преподавании программирования может и больше и меньше пяти, но пять представленных в п2 компонент должны там присутствовать обязательно. 4.Любой из учебных курсов, которые мы относим к ПП, предполагает создание студентами полноценных исполняемых модулей, в полном соответствии с п.1. Комментарий: На любом курсе по программированию студенты должны создавать реально работающие исполняемые модули в реальной среде исполнения. Другими словами не должно быть каких-то искусственных сред создания и исполнения и при решении даже очень простой задачи студент должен создать реальную с точки зрения использования программу. 5.Выбор сред, инструментов, технологий и языков осуществляется в первую очередь на основе реально существующего положения вещей на рынке ПО и в среде разработчиков ПО. Комментарий: Последнее, на мой взгляд, очевидно: странно обучать программированию в Windows и не затрагивать основной инструмент (Visual Studio) и основную технологию программирования (.NET). Нет смысла также использовать в качестве исполняемой среды какую-нибудь экзотическую ОС, с которой будущий специалист вряд ли встретится на практике. |
2владислав: это конечно хорошо, однако, как уже сказали, необходимо научить человека НЕ программировать, а научить ОБУЧАТЬ программированию ;) |
Гы... факультет информатики, если мне память не изменяет, основан в 1999 году, принципы преподавания в 2005 году, в ввиде набросков выложены на форуме ![]() Интересная летопись событий... |
vladislav писал(а): 5.Выбор сред, инструментов, технологий и языков осуществляется в первую очередь на основе реально существующего положения вещей на рынке ПО и в среде разработчиков ПО.
Комментарий: Последнее, на мой взгляд, очевидно: странно обучать программированию в Windows и не затрагивать основной инструмент (Visual Studio) и основную технологию программирования (.NET). пример: == helloworld.cs == class myApp { public static void Main() { MessageBox.Show("Hello, World! "); } } === компилим csc /t:winexe helloworld.cs и запускаем helloworld.exe Есть всё для изучения ООП ![]() |
Нужна программа Microsoft Visual C++ 7 |
Всего то 110$. Покупай. _________________ Скажи мне чей Крым, и я скажу кто ты. |
Хочу бесплатно |
переходи на C#, он бесплатен _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Сёдня купили всю студию 2003 за 65 рублей ![]() _________________ Скажи мне чей Крым, и я скажу кто ты. |
Дайте лёгкую программу написанную на Visual C++ для примера |
ну так можь все-таки положит кто-нибудь эту студию, c# и другие языки на какой-нибудь ftp? ![]() |
Да и ещё программу для примера самую простую |
villain писал(а): Да и ещё программу для примера самую простую_________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
Ты её выложи сюда |
чё мля. 10 рублей жалко что ли потратить на себя? _________________ Ин дер гросен фамилие нихт клювен клац-клац ![]() |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы |