Здравствуйте, Alexey931, Вы писали:
A>Здравствуйте, Sheridan, Вы писали:
S>>И как объяснять ребенку блоки кода?
A>Так ведь не синтаксис блока есть проблема. Надо просечь область видимости, не говоря уж о связи семантики с реализацией. Несравнимо дольше синтаксиса. С отступами же редакторы современных IDE справляются сами; даже выделяют блоки вертикальными пунктирами, если очень хочется.
Не обучай ребенка "программированию на питоне вот в этой ИДЕ", не стоит ограничивать рамки. Обучать надо не конкретным инструментам, а программированию в целом.
Давай определимся: тебе надо обучить ребенка программированию или питону? Если программированию — то алгоритмы, рисование схем алгоритмов, понятие программы, линейность исполнения кода итд.
Если питону — вперед.
Но сдается мне, пойдешь ты всетаки по озвученному мной пути и столкнешся с озвученными мной проблемами.
Мне надоело доказывать вам что обучение надо начинать с азов.
Здравствуйте, Sheridan, Вы писали:
S>Мне надоело доказывать вам что обучение надо начинать с азов.
Если с азов, то C надо. Я, кстати, упомянул . Народ, однако, за мотивацию опасается, и справедливо. В Питоне же дорога до осязаемого результата может быть очень короткой. И если синтаксис блоков — единственная проблема — уж как-нибудь... По мне, так в Питоне есть куда более кислотные концепции, чем эти блоки. Их можно оставить на потом и привыкнуть не понимать, да.
Здравствуйте, qqqqq, Вы писали:
Q>Как вариант — платформа Arduino. Даже есть такие конструкторы как Arduino Starter Kit, где все необходимое: как само микропроцессорное устройство так и проводочки, платка, кнопочки, индикаторы а также подробные инструкции, как все соединить и программировать. После этого, он может и свои программы писать
Мне кажется вопрос про язык — вообще не вопрос для этого возраста. Вопрос — мотивация.
Если игрушки любит, то мб бота вместе написать. По-моему прикольное занятие и мотивация есть. Я в студенчестве писал — очень нравилось. Думаю, понравилось бы и в школьном.
Правда это занятие на двоих и при этом нельзя скатываться в то, чтобы самому делать.
Есть еще всякие пропедевтические программы, типа запрогай робота, чтобы он собрал яблочки по полю. Тоже лучше для школьника чем многое.
Homo Guglens
Re: Язык программирования для школьника 7-8 класса
Здравствуйте, Amethyst, Вы писали:
A>Нужно что-то лёгкое в изучении, дающее наглядный результат (UI, картинки, графики). Как раньше бейсик для ДВК
A>Что посоветуете? Да, если тема уже поднималась на rsdn, киньте ссылку пжл.
В ветке почему-то не прозвучал JavaScript.
Оно и наглядный результат и удобный инструментарий в наличии (Chrome Dev Tools, например, чтобы интерактивно), и вообще, веб — практичный, вездесущий и всё такое.
По поводу конкретного базового для учебы пособия подсказать сложно,
но если вдруг английский на бодром уровне — http://www.codecademy.com/tracks/javascript очень ок для старта, в т.ч., думаю, и в таком возрасте.
Здравствуйте, Alexey931, Вы писали:
A>Если с азов, то C надо. Я, кстати, упомянул . Народ, однако, за мотивацию опасается, и справедливо. В Питоне же дорога до осязаемого результата может быть очень короткой. И если синтаксис блоков — единственная проблема — уж как-нибудь... По мне, так в Питоне есть куда более кислотные концепции, чем эти блоки. Их можно оставить на потом и привыкнуть не понимать, да.
Я к тому всё это писал, что питон — не обучающий язык, не предназначен он для этого. Сначала алгоритмы, потом бэйсик, потом паскаль, потом всё остальное.
Matrix has you...
Re[2]: Язык программирования для школьника 7-8 класса
Здравствуйте, mtnl, Вы писали:
A>>Что посоветуете? Да, если тема уже поднималась на rsdn, киньте ссылку пжл. M>В ветке почему-то не прозвучал JavaScript. M>Оно и наглядный результат и удобный инструментарий в наличии (Chrome Dev Tools, например, чтобы интерактивно), и вообще, веб — практичный, вездесущий и всё такое.
я не решусь своему ребёнку такое предлагать. Вначале надо выработать привычки к нормальным языкам и хорошим принципам, и только после этого спихивать в помойную яму конкретной странной реальности.
Здравствуйте, Sheridan, Вы писали:
S>Я к тому всё это писал, что питон — не обучающий язык, не предназначен он для этого. Сначала алгоритмы, потом бэйсик, потом паскаль, потом всё остальное.
Здравствуйте, Sheridan, Вы писали:
S>В том то и дело, что они исключительно обязательны.
Что в отступах плохого-то?
S>Но можно и без отступов. Более того в паскале исключительно наглядное разделение блоков кода с begin/end, нагляднее даже чем в C++ с его {}
Писать — можно. Читать — нет. Без отступов нормально читается код на Фортране, записанный в фиксированном формате.
Re[9]: Язык программирования для школьника 7-8 класса
Здравствуйте, Sheridan, Вы писали:
B>>Паскаль, конечно, академичнее чем Питон. Может быть, будущего чистого программиста на нем и стоит учить. Но с прикладной/мотивационной/времязатратной точек зрения, Питон выгоднее. S>Питон разовьёт рвотный рефлекс у ребенка своими отступами,
Наблюдаю за своими детьми на практике. Никакого рвотного рефлекса, его ты высосал из пальца.
Ребёнку гораздо важнее консистентность и общая предсказуемость (хотя бы на уровне POLA) логики языка. На недавнем занятии на кружке программирования и робототехники был случай: ученица этого кружка (12 лет, как раз возраст из темы данного треда) упорно не понимала, что от неё хотят, в следующем варианте: она выбрала задачу — из потока чисел отобрать чётные. Проверку чётности ей предложили — разделить число на 2, умножить обратно и сравнить результат. Ответом было недоумение "так всегда будет то же самое!" Пришлось разъяснять, что есть две разных операции деления — нацело с частным, и с вещественным результатом — и в Си (а писали на нём) выбор операции зависит от типов операндов, и у неё за счёт того, что все целые, будет первая (нацело с отбрасыванием остатка). И заметь — из верхней майнстримовой группы языков все плюют на эту проблему, обозначая обе операции одинаково, так что ребёнку приходится запоминать дурные особенности реализации вместо сосредоточения на задаче. В случае Питона такой проблемы нет (в 3-м, где эти операции гарантированно обозначаются разными знаками). И множество других тонких особенностей в нём сделано так, чтобы дать решать собственно задачу, а не бороться с особенностями платформы.
S> Надо начинать с паскаля, если для бэйсика уже поздно.
И в Паскале те же грабли. А уж как школьники пишут на нём... у моей старшей вначале половина непонимания написанного ею же была вызвана кривыми отступами — она их вообще не делала. Я садился за комп, форматировал код до читаемого состояния и только после этого можно было начинать его разбирать по смыслу. А потом ещё и любимые грабельки Паскаля и Си от отсутствия обязательности {} (begin/end) и необходимости следить за этим программисту самостоятельно. В Питоне такой проблемы нет в принципе, как и в более новых языках паскалевской группы, вроде Modula.
Только, к сожалению, в production пошли эти мерзкие особенности ранних недоработок (и даже в рождённом много лет позже C# всё это лайно в полный рост!)
S>И вообще начинать надо с понятия алгоритмов. Рисовать схемы, циклы, условия квадратиками и прочими ромбиками.
Ребёнку надо всё пощупать руками и получить немедленный ответ. Начинать с ромбиков на доске можно только тогда, когда они рисуются на виртуальной доске, которая сама из этого делает код. (На упомянутом выше кружке есть среды для Lego'вского Robo-C с такими возможностями.) Даже несколько уроков, где вначале скучные ромбики на доске, отобьют охоту у 9 из 10 потенциальных интересующихся. И это у 12-летних. А в меньшем возрасте надо вообще начинать с готовых шаблонов решений, позволяя выбрать и затем расширить по вкусу.
S> Потом показать как это переводится в код, желательно на бэйсике — там есть нумерация строк, что наглядно и в фоне покажет ребенку линейное, последовательное выполнение кода машиной. Потом — паскаль с его наглядным объявлением переменных (тут уже можно обучать типам — int, float...) и наглядными блоками кода.
Такое впечатление, что ты просто повторяешь свой персональный путь развития, без анализа и корректировки.
The God is real, unless declared integer.
Re: Язык программирования для школьника 7-8 класса
Здравствуйте, Sheridan, Вы писали:
S>Вдогонку P>>И что там такого своеобразного. Ты, когда на С++ или С# пишешь, отступов не делаешь? А в Питоне их сделали обязательными к применению, всего-то и делов. S>И как объяснять ребенку блоки кода? "Вот смотри, тут два таба. И везде в следующих строчках где два таба это будет код в одном блоке. Да, вот тут три таба, но потом видишь — опять два таба, это вс еще лдин блок. Да и после четырех табов. Да, и тут после 20 строк в 3-5 табов возврат к двум табам...". Так? У ребенка мозг взорвется.
Правильно, объяснять надо иначе: "видишь, эти строки начинаются правее? значит, они под теми, которая ближайшая левее их". Всё. А так, как ты объясняешь — мозг взорвётся у всех вокруг, которые будут тебя слушать, а потом и у тебя — на генерации этого
S>Куда проще "Всё что между begin и end — блок кода, включая вложенные begin/end"
Повторю соседнее письмо — нет, ни капельки не проще. Потому что, чтобы увидеть, что же реально между begin и end, надо вначале правильно отформатировать весь код между ними и вокруг. А после этого разница между языками с явными begin/end и отступами практически уходит.
Зато твой подход ни капельки не объясняет проблему следующего варианта:
if x = 2 then
y = y + 1;
z = z + 1;
и вот объяснение того, что "надо понимать, что если после then не стоит явного begin, то надо понимать, что подразумевается, что begin и end как бы стоят вокруг единственного оператора" — точно взрывает мозг неподготовленному, и типичная реакция на это — начинать ставить begin-end вокруг любого, даже самого одиночного оператора. После чего приходим к вопросу, а какого лешего кривой синтаксис в основных современных языках.
И если ты считаешь себя разбирающимся в теме — проверь на практике, как адекватно объяснить ребёнку
1) что надо форматировать отступами всегда,
2) как логически следить в языках типа Си или Паскаля, как следить за тем, правильно используются или не используются begin-end,
причём как минимум один ребёнок должен быть не твой.
Результаты — в студию.
Здравствуйте, Algebroid, Вы писали:
A>а турбо паскалю учить не пробовали? A>начинать надо ведь с простого и потом переходить к сложному? A>борланд сделал турбо паскаль фривэр можно легально бесплатно скачать. A>http://edn.embarcadero.com/article/20803
И как это будет работать в графике под современными Windows?
Здравствуйте, Algebroid, Вы писали:
B>>Когда я обучал школьников на Питоне, первой программой они писали сетевой чат В принципе, там в полстраницы можно уложиться, на UDP по локалке. A>сетевой они без сервера не напишут.
Здравствуйте, Alexey931, Вы писали:
S>>Я к тому всё это писал, что питон — не обучающий язык, не предназначен он для этого. Сначала алгоритмы, потом бэйсик, потом паскаль, потом всё остальное.
A>Не, питон лучше васика
Как язык программирования — да. Как язык программирования для обучения — нет.
Здравствуйте, Privalov, Вы писали:
S>>В том то и дело, что они исключительно обязательны. P>Что в отступах плохого-то?
Неочевидное и сложное для понимания деление на блоки.
S>>Но можно и без отступов. Более того в паскале исключительно наглядное разделение блоков кода с begin/end, нагляднее даже чем в C++ с его {} P>Писать — можно. Читать — нет. Без отступов нормально читается код на Фортране, записанный в фиксированном формате.
Речь не столько про отступы, сколько про понимание деления кода на блоки в условиях, циклах, функциях итд.
Matrix has you...
Re[5]: Язык программирования для школьника 7-8 класса
Здравствуйте, netch80, Вы писали:
N>Зато твой подход ни капельки не объясняет проблему следующего варианта:
N>
N> if x = 2 then
N> y = y + 1;
N> z = z + 1;
N>
N>и вот объяснение того, что "надо понимать, что если после then не стоит явного begin, ...
Это и есть блок кода. Он должен быть вписан в чтото более понятное, не просто отделен табами. После питона ребенок так и продолжит отделять табами и в паскале и в сях — в питоне же работало.
Здравствуйте, Sheridan, Вы писали:
S>Худший из способов обучения. Нельзя объяснить таким способом ни алгоритм, ни блоки кода, ни линейность исполнения кода. S>Приемлем только для разъяснения каждого конкретного оператора — как он работает и что делает.
Здравствуйте, Sheridan, Вы писали:
S>Неочевидное и сложное для понимания деление на блоки.
Не понимаю, что там такого сложного.
S>Речь не столько про отступы, сколько про понимание деления кода на блоки в условиях, циклах, функциях итд.
А как ты собираешься демончтрировать ребенку деление кода на блоки, не оформляя эти блоки должным образом?
Раньше важность оформления кода студентам объясняли очень легко. Им просто давали почитать исходник на каком-нибудь PL/1, без всякого форматирования. На бумаге, разумеется. После чего у большинства студентов пропадали всякие сомнения. Даже, набивая код на перфокартах, не ленились делать отступы.