OberonCore
https://forum.oberoncore.ru/

К вопросу о воспитании правильных качеств программиста
https://forum.oberoncore.ru/viewtopic.php?f=7&t=6305
Страница 1 из 3

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 11:08 ]
Заголовок сообщения:  К вопросу о воспитании правильных качеств программиста

Нашел на сайте Дединского его презентацию об обучении школьников программированию:
http://storage.ded32.net.ru/Lib/Doc/Ana ... ch2010.pdf
И там он конкретно пишет, что надо ВОСПИТЫВАТЬ качества - слайды 15, 16, 17.
Без воспитания качеств - не поможет никакой инструмент.

Автор:  Info21 [ Четверг, 08 Ноябрь, 2018 11:55 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Это Вы опять защищаете С++?

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 12:07 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Нет. Я в результате 25-летнего опыта преподавания пришел к выводу,
что инструмент - вторичен.
Программисты по мере "взросления" сами приходят к необходимости жесточайшей самодисциплины.
Достаточно Боба Мартина почитать и Кента Бека с Мартином Фаулером.
Да и собственный опыт говорит о том же.

Поэтому при начальном обучении гораздо важнее ВОСПИТАНИЕ нужных качеств - о чем и говорит Дединский.
Инструмент может помогать в этом (немного) или нет.

Автор:  Rifat [ Четверг, 08 Ноябрь, 2018 12:57 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Валерий Лаптев писал(а):
Нет. Я в результате 25-летнего опыта преподавания пришел к выводу,
что инструмент - вторичен.
Программисты по мере "взросления" сами приходят к необходимости жесточайшей самодисциплины.
Достаточно Боба Мартина почитать и Кента Бека с Мартином Фаулером.
Да и собственный опыт говорит о том же.

Поэтому при начальном обучении гораздо важнее ВОСПИТАНИЕ нужных качеств - о чем и говорит Дединский.
Инструмент может помогать в этом (немного) или нет.

В описании графической библиотеки Amadeus-3 есть обсуждение языка C++. Вот некоторые цитаты:
Цитата:
There are no circular references in Oberon-2, contrary to Modula-2, where definition
modules make circular references possible, and most other languages, where such rules have never
even been considered; in C/C++, nothing could stop you from building a library with chaotic crossreferences.

Цитата:
Did you ever notice how difficult it is to proof-read a document in English? Imagine that every
punctuation was fundamentally important and that missing a single comma could change the
meaning of the entire text... Not so for C/C++. Single-character mistakes are
possible in many places and won't be detected by the compiler.

Цитата:
This is a really difficult problem, since we tend to like what we know. Most people don't think about
how to design a programming language, they just pick up a manual that says how it's done.
Therefore, few people will say "Oh I just love this or that style of programming", they will like
whatever they learned first, since that will save them a lot of intellectual effort - at least until they
are confronted with problems arising from that choice. If the first language learned was C/C++, as it
still is for a large majority of programmers, then the C-style syntax, the operators and the traps and
pitfalls of the language will seem perfectly natural
, just as the words "Procedure", "Begin" and
"End" will be natural to the Pascal programmer.

И основной минус С++ в том, что слишком много возможностей. Нельзя просто взять студентов и обучить только 10% языка и сказать, чтобы они использовали только эти возможности. Так как всегда найдутся студенты, которые захотят показать свою крутость и использовать крутые фишки языка. Пусть они будет знать 20%. Другие студенты тоже захотят подтянуть свои знания в этом вопросе и будут использовать другие 20% языка. При коллективной работе будет получаться, что в общем проекте используется 95% языка, при этом все студенты понимают ядро, состоящее из 10%, а оставшиеся части понимают с какой-то вероятностью, что-то понятно, а что-то не понятно. У Дединского в презентации как раз сказано про коллективную работу, в этом плане С++ не способствует коллективной работе.

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 15:16 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Rifat писал(а):
И основной минус С++ в том, что слишком много возможностей. Нельзя просто взять студентов и обучить только 10% языка и сказать, чтобы они использовали только эти возможности. Так как всегда найдутся студенты, которые захотят показать свою крутость и использовать крутые фишки языка. Пусть они будет знать 20%. Другие студенты тоже захотят подтянуть свои знания в этом вопросе и будут использовать другие 20% языка. При коллективной работе будет получаться, что в общем проекте используется 95% языка, при этом все студенты понимают ядро, состоящее из 10%, а оставшиеся части понимают с какой-то вероятностью, что-то понятно, а что-то не понятно. У Дединского в презентации как раз сказано про коллективную работу, в этом плане С++ не способствует коллективной работе.

1. Абсолютно согласен с тем, что "контуперные гении" захотят полезть в самые темные закоулки языка.
2. Речь идет не о С++, а о том, что в школьниках (в школьниках, а не студентах) надо ВОСПИТЫВАТЬ правильные качества.
3. Инструмент здесь помогает мало - проверено. :) Одна из наших преподавательниц, которая обучает народ на Семантике, часто сетует: только отвернешься - они превращаются обратно в балбесов... :) То есть вылезают ВСЕ ВРЕДНЫЕ привычки обратно... :)
Хотя более дружественный инструмент - поискать.

Автор:  LKom [ Четверг, 08 Ноябрь, 2018 16:13 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Все очень просто.

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

Тогда не будет в программировании вредных привычек и выработается хорошая привычка работать в полном соответствии с требованиями.

Для учащегося должны быть сформулированы четкие требования.

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 16:33 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

LKom писал(а):
Все очень просто.
Требуйте, чтобы учащиеся в своих работах использовали только преподанные средства.
Тогда не будет в программировании вредных привычек и выработается хорошая привычка работать в полном соответствии с требованиями.
Для учащегося должны быть сформулированы четкие требования.

1. ВУЗ - это не школа. Я вот со школьниками не могу работать - психологически трудно. Поэтому расписать все поурочно у меня просто не получится... :)
2. Вы плохо представляете уровень подготовки студентов в провинциальном городе... :)
После введения ЕГЭ выискиваешь хотя бы 2-3 соображающих... Если еще запрещать - лучше сразу уволиться... :)

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 16:37 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

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

Автор:  LKom [ Четверг, 08 Ноябрь, 2018 17:18 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Цитата:
1. ВУЗ - это не школа. ...
Предложите работать так, как на производстве.
Используйте технологию "Экстремального программирования".
Программируем в паре, один разрабатывает, диктует; другой подвергает сомнению и пишет. Все отвечают за результат. Разработка не остается заброшенной при уходе члена команды.

"Профессионально важными качествами" - это умение аргументировать, понимать, отвечать за общее решение и обеспечивать сопровождение всего жизненного цикла ПО.

Автор:  Rifat [ Четверг, 08 Ноябрь, 2018 17:21 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

1) На большинстве производств экстремальное программирование не используют.
2) Есть много доводов против экстремального программирования и парного программирования в частности. Можно посмотреть книжку: "Agile!: The Good, the Hype and the Ugly" Bertrand Meyer (Author).

Автор:  Илья Ермаков [ Четверг, 08 Ноябрь, 2018 17:35 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Материал в презентации разумен, траектория освоения хорошая.
С++ там просто как вариант, на Обероне на порядок легче и с песней будет.

С С++ всякая языковая хрень будет путаться под ногами, но она, в принципе, "изолируемая хрень", а в случае Явы-Шарпа будет путаться ещё и инструментально-экосистемная хрень, плюс какое-нибудь обязательное ООП и дин. память не изолируешь даже на начальном этапе ("всё есть класс и объект").
Ну а Питон вообще не позволит показать то, что нужно, в плане программирования компонентов на среднем уровне. Будет только клепание-склейка.
Конечно, абсолютно "неспрямляемой" для образования является includ-истая "модульность" Сей. Ну и некоторые пороки синтаксиса типа ==.

Автор:  LKom [ Четверг, 08 Ноябрь, 2018 17:37 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Rifat писал(а):
1) На большинстве производств экстремальное программирование не используют.
2) Есть много доводов против экстремального программирования и парного программирования в частности. Можно посмотреть книжку: "Agile!: The Good, the Hype and the Ugly" Bertrand Meyer (Author).

Вы неправильно понимаете производство.
При разработке на любом документе должны быть:
подпись: разработал,
подпись: проверил,
подпись: утвердил.

Так должно быть и при разработке ПО.

Автор:  Rifat [ Четверг, 08 Ноябрь, 2018 18:07 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Илья Ермаков писал(а):
а в случае Явы-Шарпа будет путаться ещё и инструментально-экосистемная хрень

Сегодня только меня Шарп (на производстве) неприятно удивил. Ругнулся на мой код варнингом. Написал код следующего вида:
Код:
if ((100 <= x) && (x <= 200))

(все имена и константы вымышленные, а любые совпадения случайны)
Так вот, варнинг был по поводу того, что 100 <= x не очень читабельно, что лучше писать x >= 100. Понятно, что это противоречит математической традиции, где написали бы 100 <= x <= 200. Пришлось пойти на поводу у Шарпа и переписать код (не для того, чтобы код стал читабельнее, а чтобы у других разработчиков при компиляции проекта не возникал этот варнинг):
Код:
if ((x >= 100) && (x <= 200))

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 18:17 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

LKom писал(а):
Цитата:
1. ВУЗ - это не школа. ...
Предложите работать так, как на производстве.
Используйте технологию "Экстремального программирования".
Программируем в паре, один разрабатывает, диктует; другой подвергает сомнению и пишет. Все отвечают за результат. Разработка не остается заброшенной при уходе члена команды.

"Профессионально важными качествами" - это умение аргументировать, понимать, отвечать за общее решение и обеспечивать сопровождение всего жизненного цикла ПО.

1. По вашим, на мой взгляд, абсолютно наивным предложениям хочется сделать вывод, что вы в образовании не работали.
2. Со студентами мы и работаем "как на производстве".
2.1. Каждый семестр - 2 курсовых. По каждой курсовой: программа, документ Пояснительная записка (где и написано "разработал, проверил, утвердил"), презентация доклада и доклад. Читаем мы ВСЕ и не по 1 разу.
Проверяем тоже все - и тоже не по одному разу.
2.2. ТРИ учебных практики, которые аналогичны курсовым, только не за семестр, а за 2-4 неели.
2.3. Коллективный проект. Ведет наш выпускник, технический директор одной Астраханской конторы. По совместительству сертифицированный спец Микрософта, кандидат наук, официальный тестер Windows.
Там именно командная работа под его непосредственным руководством и при постоянном общении с заказчиком.
3. Профессионально важные качества - это не умения, и не знания.
Это психологические характеристики, которые и позволяют научиться "аргументировать, понимать, отвечать за общее решение и обеспечивать сопровождение всего жизненного цикла ПО".

Автор:  Пётр Кушнир [ Четверг, 08 Ноябрь, 2018 18:56 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

И сколько времени вся эта бюрократия занимает от всего времени "производства"?

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 19:11 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Это - не бюрократия, а обучение.
Как учить, если не проверять, и не указывать, что надо переделать.

Автор:  Пётр Кушнир [ Четверг, 08 Ноябрь, 2018 20:58 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Презентация, доклад, записка. Это надо запрограммировать или просто в "ворде" посидеть полдня?

Автор:  Info21 [ Четверг, 08 Ноябрь, 2018 21:14 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Вправлять мозги приходится уже старшим школьникам.
Начинать воспитывать нужно с 5-го класса.

В школе -- предъявление идеальных образцов.

Вы просто, похоже, понятия не имеете о средних классах. И вообще о школе в целом.

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 21:49 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Пётр Кушнир писал(а):
Презентация, доклад, записка. Это надо запрограммировать или просто в "ворде" посидеть полдня?

Петр, "ты, конечно, программист авторитетный... Но зачем ты так? ":)

Автор:  Валерий Лаптев [ Четверг, 08 Ноябрь, 2018 21:53 ]
Заголовок сообщения:  Re: К вопросу о воспитании правильных качеств программиста

Info21 писал(а):
Вправлять мозги приходится уже старшим школьникам.
Начинать воспитывать нужно с 5-го класса.

В школе -- предъявление идеальных образцов.

Вы просто, похоже, понятия не имеете о средних классах. И вообще о школе в целом.

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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/