Обучение малышей программированию

Обсуждение вопросов, касающихся помощи детям с расстройствами аутистического спектра и их воспитания.
Аватара пользователя
Dig386
администратор
Сообщения: 6307
Зарегистрирован: 05 сен 2010, 21:30
Пол: Мужской
Статус: Аутичный
Откуда: Москва

Re: Обучение малышей программированию

Сообщение Dig386 » 25 авг 2014, 23:49

Я начал изучать программирование лет в 7 на IBM PC XT с 640Кб памяти и монитором EGA, язык - GW-BASIC (это было в 1992 году). При этом родители не планировали этого специально, во многом все основывалось на спонтанном интересе. С тех пор сохранилось пристрастие к файловым менеджерам типа Norton Commander и исходные тексты 1992-1994 годов. В 5-6 классах был Logo, но тогда для меня это было скорее развлечением. Классу к 7 уже освоил структурное программирование на QBASICе, в 9-11 классах были Visual Basic, Assembler и Pascal. В университете - C/C++. Далее сталкивался с самыми разными языками (MATLAB, Java, PHP, Ruby, Javascript).

Аватара пользователя
Dig386
администратор
Сообщения: 6307
Зарегистрирован: 05 сен 2010, 21:30
Пол: Мужской
Статус: Аутичный
Откуда: Москва

Re: Обучение малышей программированию

Сообщение Dig386 » 26 авг 2014, 00:36

hope писал(а):Уважаемые форумчане, интересно Ваше мнение.
Не работал с этими системами, но выглядит достаточно привлекательно. Про обучение программированию - следует иметь в виду, что многие современные промышленные средства разработки (Visual Studio) для начального обучения программированию подходят плохо. Из учебных сред слышал про следующие:
1) Различные вариации на тему языка Logo (Логомиры, Logowriter под DOS и т.п.) с управлением роботом-черепашкой на экране. С LogoWriter имел дело лет 15-20 назад и считаю "черепашью графику" очень наглядной вещью
2) Язык Microsoft SmallBasic (https://ru.wikipedia.org/wiki/Microsoft_Small_Basic). Ощутимо проще VB .NET, чем-то похож на старые Бейсики. Бесплатен.
3) Язык Oberon (похож на диалект Паскаля) и среда BlackBox (http://oberoncore.ru/). Лично для меня (работал с ней несколько лет назад) ряд вещей там показались весьма непривычными, но сообщается об успешном использовании для обучении в 5-6 классах школ. Бесплатен.
4) В некоторых школах до сих пор могут использовать архаичные Turbo Pascal и QBASIC (на современных операционных системах работают только в DosBox, работа с которым требует базовых знаний DOS).

Из языков, изначально не предназначенных для обучения, могут представлять интерес (ближе к старшей школе):
1) FreePascal
2) Ruby или Python (на Ruby даже есть попытка сделать учебную среду: http://hackety.com/)
3) PHP (для разработки веб-сайтов). В качестве первого языка программирования по некоторым причинам, ИМХО, нежелателен.
Все три варианта для работы требуют знаний на уровне продвинутого пользователя и начальных навыков работы с командной строкой.

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

motoprogger
аспи
Сообщения: 1129
Зарегистрирован: 12 дек 2013, 15:18
Пол: Мужской
Статус: Аутичный
Откуда: Омск

Re: Обучение малышей программированию

Сообщение motoprogger » 26 авг 2014, 04:26

В книгах по Java обязательно пишут, что многие студенты успешно начинают программировать именно с Java )))
Мне трудно оценить, насколько Java подойдёт школьнику, но с учебной точки зрения этот язык программирования лишён многих недостатков C.
"Всякий, кто любит одиночество, либо — дикий зверь, либо — Господь Бог" (Ф. Бэкон)

elseif
аспи
Сообщения: 295
Зарегистрирован: 12 июл 2014, 03:23
Пол: Мужской
Статус: Аутичный

Re: Обучение малышей программированию

Сообщение elseif » 26 авг 2014, 06:21

Ну, если с Си сравнивать, то много что выиграет :) А вообще джаву и си сравнивать нельзя, они для разных целей. Но для начального обучения программированию оба ужасны, каждый по-своему.

Java чем плоха? Java плоха своей сложностью. Там тысячи библиотек. Там полноценное ООП. Там классы и интерфейсы. Там одно слово может иметь три разных значения (final). Там сложные названия функций: не writeln, а System.out.println - что поначалу надо будет просто зазубрить. Студент всё это выучит, раз велели. Первоклашка сломает мозг.

Допустим, что не сломает. Тогда Java станет его специнтересом. Он полюбит этот необъятный язык, будет учить его годами, и станет специалистом именно по Java (аспи склонны к узким интересам). В то время как специнтересом должно стать программирование вообще, без привязки к языку, ведь через 10-20 лет будет что-то новое. И, если уж быть специалистом по одному языку, то С++ лучше!

Аватара пользователя
Dig386
администратор
Сообщения: 6307
Зарегистрирован: 05 сен 2010, 21:30
Пол: Мужской
Статус: Аутичный
Откуда: Москва

Re: Обучение малышей программированию

Сообщение Dig386 » 26 авг 2014, 10:06

elseif писал(а):Ну, если с Си сравнивать, то много что выиграет :)
Кстати, когда-то даже помогал внедрять обучение основам Си в одной из специализированных школ (с использованием Open Watcom как учебной среды). Многие проблемы на начальных этапах в принципе можно обойти, выучив некоторые вещи (вроде scanf, include) как готовые "фразы".
elseif писал(а):Java чем плоха? Java плоха своей сложностью. Там тысячи библиотек. Там полноценное ООП.
Плоха в первую очередь тем, что на даже самый примитивный Hello World нужно много чего написать в программе изначально, используя понятия этого самого ООП. И среды разработки там обычно очень навороченные. Даже Си в этом плане проще. И все эти детали будут заслонять суть на первых парах. Если уж учить полноценное ООП - то есть тот же Ruby. С другой стороны, Java позволяет писать под сотовый телефон, а это некоторых школьников может заинтересовать.

UPD: нашел ещё одну учебную среду для Ruby: kidsruby (http://kidsruby.com/). Недостаток - всё на английском языке.

elseif
аспи
Сообщения: 295
Зарегистрирован: 12 июл 2014, 03:23
Пол: Мужской
Статус: Аутичный

Re: Обучение малышей программированию

Сообщение elseif » 26 авг 2014, 18:00

Объяснить, что эти include означают, как раз не очень трудно, и мне лично проще понять с объяснениями, чем зазубрить. Главная проблема Си в том, что там нет передачи параметров по ссылке => надо мучиться с указателями, а часто и с указателями на указатели. И ошибки (всякие там Segmentation Fault) часто малоинформативны, поэтому дебажить код трудно. Представляю себе восьмилетку, который не может найти баг в своей программе и из-за этого плачет или впадает в мелтдаун.

Это даже не только у детей. Я устраивался в компанию с миллиардными (в долларах) бюджетами, где программируют на Си, и мне на одном из интервью рассказали, что значительную часть времени они тратят на борьбу с утечками памяти, с которыми, как я понял, окончательно справиться не могут. С такого языка начинать обучение нельзя (хотя знать его, возможно, надо).
С другой стороны, Java позволяет писать под сотовый телефон, а это некоторых школьников может заинтересовать.
На других перечисленных языках, похоже, тоже - набрав Pascal for iphone, Basic for iphone, Ruby for iphone, я получил вполне хорошие ссылки.

PS: А ещё есть Рапира.

Аватара пользователя
ghoststory
модератор
Сообщения: 15980
Зарегистрирован: 04 июн 2011, 03:26
Статус: Аутичный

Re: Обучение малышей программированию

Сообщение ghoststory » 29 авг 2014, 15:07

ПиктоМир: ребенок прошел первую серию игр, все задания выполнил успешно.

elseif
аспи
Сообщения: 295
Зарегистрирован: 12 июл 2014, 03:23
Пол: Мужской
Статус: Аутичный

Re: Обучение малышей программированию

Сообщение elseif » 29 авг 2014, 17:05

Если вы захотите перейти к Бэйсику, то вот хороший диалект:
http://basic256.org/index_en
(Специально создан для обучения детей программированию; с графикой; часть документации перевели на русский; есть версии и для Windows, и для Linux.)

elseif
аспи
Сообщения: 295
Зарегистрирован: 12 июл 2014, 03:23
Пол: Мужской
Статус: Аутичный

Re: Обучение малышей программированию

Сообщение elseif » 29 авг 2014, 17:37

Другой хороший диалект: http://smallbasic.com/ - Microsoft Small Basic.
Специально создан для обучения программированию; с графикой; всё описание занимает переведено на русский и занимает только 70 страниц; для Windows.

zlato

Re: Обучение малышей программированию

Сообщение zlato » 06 май 2017, 19:48

К сожалению, подключаюсь к обсуждению поздно.
Я давно пришел к выводу, изложенному elseif, — «учить надо программированию вообще, без привязки к языку, ведь через 10-20 лет будет что-то новое».

«Программирование вообще» — это значит, что нужно научить ученика следующему:
1) что такое алгоритм?
2) что такое программа?
3) из 1-го и 2-го вопроса всплывает 3-й — что такое транслятор? Какие виды есть;
4) простые линейные программы;
5) что делать, когда в программе возможны 2 варианта действий?
Именно так, а не что такое «полный условный оператор»? Но, выйдя на него, обсудить, как он работает, можно ли поменять местами варианты действий:
— например, вместо

если остаток от деления числа на 2 равен 0
то
вывод нс, «Это число четное»
иначе
вывод нс, «Это число нечетное»
все

записать
если
то
вывод нс, «Это число нечетное»
иначе
вывод нс, «Это число четное»
все

В обеих «ветвях» могут быть не 1 действие, а несколько.

6) что делать, когда в программе какие-то действия выполняются не всегда, а только при определенном условии?
Именно так, а не что такое «неполный условный оператор». Выйдя на него, обсудить, как он работает.

7) что делать, когда в программе возможны три варианта действий.
Можно применить три неполных условных оператора, а можно вложенный (выйдя на него в рассуждениях). А вот попытка объединить два из трех:

если …
то
1-й вариант действий
все
если …
то
вывод нс, 2-й вариант действий
иначе
вывод нс, 3-й вариант действий
все
в ряде случаев может дать неправильный результат

8) множественный выбор — выход на оператора варианта. В чем особенность работы

9) повторение действий.
Варианты:
— какие-то действия повторяются и при этом некоторая величина (параметр цикла) меняется с постоянным шагом. Выход на оператор цикла с параметром. Как оформляется, как работает. Тело цикла.
— как меняется параметр при повторениях — не известно (неизвестно число повторений). Но известно условие, при котором надо продолжать повторение, или условие, при котором надо прекратить повторение. 2 варианта оператора цикла, особенности. Когда зацикливание? Может ли тело цикла с условием не выполниться ни разу?

10) массивы, что это, в чем преимущества? Хотя бы одномерные.
Типовые задачи и методы их решения (сумма всех, сумма по условию, количество по условию, максимум, индекс максимума и др.).

11) строки, типовые задачи и методы их решения;

12) если часов много, то дойти до процедур и функций (собственных). В чем преимущество их использования, в чем особенности. Процедуры с параметрами. Локальные и глобальные переменные, время жизни и область видимости.

Эти общие вопросы можно изучать, используя любой язык. Но мне кажется, что лучше всего – школьный алгоритмический язык (система КуМир). Русский синтаксис, сразу всплывают некоторые ошибки и т.п. В 5-6-х классах можно использовать Робота (там наглядно – если справа стена, то…, цикл пока справа свободно…).

Еще в 2007 вышла моя книга «Программирование: типовые задачи, алгоритмы, методы». Там все с использованием КуМира. Я 13 лет вел раздел для учащихся в журнале «Информатика» и тоже использовал этот язык при разборе методов решения задач. Зная, как решить задачу, человек решит её на любом языке, в том числе на том, который когда-нибудь появится…

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость