Обучение программированию: Блокли и все-все-все

Тема в разделе "Университет", создана пользователем MS, 27 окт 2013.

  1. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Появился повод создать тему по обучению программированию (школьников)

    В 80-десятые, когда "компьютеры были большие", стали появляться и маленькие, персы.
    Хотя первые персы были слабенькие совсем, скоро стало понятно, что ситуация быстро меняется.
    Энтузиазм был большой, возникли лозунги "Программирование - вторая грамотнсть", "Компьютерный класс - в каждую школу", "Информатику - в школьную программу". На Мехмате создавали софт для обучения... Я в этой волне тоже колыхался, даже два или три года преподавал в школе за какую-то часть ставки. Девяностые многое и надолго разметали, но программу революции нельзя считать проваленой: информатика в школьной программе есть, компьютерные классы: какие-то плоды отрицать нельзя. А мечта однажды зайти в класс у меня, как оказалось, "не умерла, затаилась на время". Езжу на работу на электричке, а сам всё курсы для нынешнего времени продумаю, конспекты лекций, программы набрасываю. Недавно решил передохнуть, газетку в дороге почитать. Открываю (американскую) газету - мать честная: "Программирование - грамотность 21-ого века", "Подготовить учителя программирования в каждой школе", "Программирование - в школьную программу" - аж помолодел лет на 25!
    Софтверные гиганты озаботились, короче, недостатком национальных кадров и бьют в там-тамы. И не только бьют, но и шевелятся.

    Перехожу к сухому остатку - среди плодов шевеления обнаружилась перспективная, на мой взгляд, штучка для обучения: графический программный редактор Blockly (Блокли). Идеи графического програмного редактора не оригинальны, но есть некоторые обстоятельства, которые сразу ставят Блокли в особое положение:

    1) открытые исходники
    2) поддержка Гугла
    3) изначально ориентирован на интернационализацию
    4) базируется в сети, т.е. можно поиграться с тонким клиентом.

    На запасных путях есть и пятая суперфишка - Гугл грозиться сделать на этой же базе профессиональную платформу. Вилами по воде, конечно - с профессиональное платформой всё не так просто, но Гугл исходит из того, что системы без клавы плодятся, и требуются, соответственно, другие подходы. Они уже встроили в Блокли перевод программ из графических картинок в Питон и ДжаваСкрипт.

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

    Короче, вчера отмечал день рождения руссифицированной версии

    Блокли
    Goranflo нравится это.
  2. Scaramuccia Старожил

    • Участник
    • Старожил
    Рег.:
    13.01.2012
    Сообщения:
    3.173
    Симпатии:
    2.085
    Репутация:
    61
    Оффлайн
    У американцев, кстати, наши проблемы - тот кто умеет программировать идет в индустрию, а не в школы учить. По поводу руссификации учебных программ у меня двоякое чувство - с одной стороны это безусловно хорошо, с другой стороны программист без знания технического английского - это очень слабый программист, а то что все инструменты на английском способствует изучению языка.
    Goranflo нравится это.
  3. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Этот тезис верен для уровня студентов ВУЗа (хотя и тут я бы кое в чём поспорил), но для школьников, только начинающих знакомство с алгоритмикой, английский усложнит задачу до полной невозможности.
  4. XAJIK 22

    • Участник
    Рег.:
    05.05.2010
    Сообщения:
    1.308
    Симпатии:
    415
    Репутация:
    34
    Оффлайн
    Напомнило Scratch (programming language)-http://scratch.mit.edu/
  5. Scaramuccia Старожил

    • Участник
    • Старожил
    Рег.:
    13.01.2012
    Сообщения:
    3.173
    Симпатии:
    2.085
    Репутация:
    61
    Оффлайн
    Какой класс? В старшей школе они уже должны более или менее знать английский язык если школа нормальная. Я же не предлагаю использование английских учебников. У меня, конечно, специфический опыт, но людей которые не могли освоить в школе turbo pascal на уровне - открой, собери я особо не встречал.
    Goranflo нравится это.
  6. Goranflo Заслуженный

    • Заслуженный
    • Ветеран
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    27.906
    Симпатии:
    30.164
    Репутация:
    673
    Оффлайн
    Ой, да ладно!
    Почему то проблем с неруссифицированными играми у них не возникает - за 5-10 минут разбираются где что...
    :D
  7. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Турбо-Паскаль в школе не нужен. Это - профессиональный инструмент двадцатилетней давности.
    То, что он имеет солидный возраст, не превращает его в удобную среду для школьников.
    В автошколах не обучают вождению на грузовиках 50-х годов, которые надо было заводить ручкой.

    Для обучения основам алгоритмов - организации памяти, идее программы, управляющим конструкциям, и т.п. - нужно что-то вроде языка программируемого калькулятора или ассемблера им. Д.Кнута.
    Для понимания высокоуровневой организации современного софта - тоже совсем другие инструменты. Тот же Питон. Или Схема.

    Конечно, надо ещё определить - а чему мы хотим научить школьников в этом курсе? Учитывая, что в индустрию программирования пойдёт от силы 10%.
    Лично мне бы хотелось воспитать таких людей, которые понимают основы работы компьютера (в идеале - от физического уровня), не путают процессор с системным блоком, уважают труд знакомых программистов и не пристают к ним с идиотскими вопросами.
    Корыстная позиция, да :)
    Goranflo и дикий муцио нравится это.
  8. Scaramuccia Старожил

    • Участник
    • Старожил
    Рег.:
    13.01.2012
    Сообщения:
    3.173
    Симпатии:
    2.085
    Репутация:
    61
    Оффлайн
    Алгоритмы на кнутовом ассемблере в массовой школе? Вы серъезно? То есть кнутовый ассемблер освоить это нормально, но вот надписи на английском это тяжело?

    Алгоритмы и структуры данных как раз на питоне/схеме давать надо. Можно чистый С, но это обычно чуть сложнее. Вы же не будете красно-черные деревья на ассемблере писать.

    Но вопрос чего мы хотим от школьников действительно самый важный.

    И да, я не понимаю почему вы считаете турбо-паскаль профессиональным инструментом. Как раз в свое время это был отличный учебный инструмент. Сейчас он, конечно, устарел.
  9. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Алгоритмы вообще можно на языке Ершова давать. Потому что это - фундаментальные знания, которые должны быть где-то на уровне первого закона Ньютона или теоремы Пифагора.
    И важно не путать обучение алгоритмическому мышлению: а) с обучением промышленному программированию б) с обучением пользователя офисных пакетов и фотошопа.

    Упрощая, я бы предпочёл иметь дело с не-программистами, которые помнят из школы, что такое машина Тьюринга, чем с не-программистами же, которых заставляли зачем-то запоминать F5 и Ctrl-F9 в Турбо-Паскале, но которые совершенно забыли, зачем всё это надо.

    А вообще - даёшь возвращение классической логики в школьную программу!
    Это гораздо важнее даже основ программирования.
  10. Фримен Учаcтник

    • Участник
    Рег.:
    11.05.2010
    Сообщения:
    488
    Симпатии:
    122
    Репутация:
    7
    Оффлайн
    Видимо абсолютно правильно с точки зрения подготовки специалистов. Вам, спецам виднее конечно.
    Но совершенно не верно в более широком плане. Русский язык перестал быть полноценным.
    Зачем мы ообучаем детей неполноценному языку? Проще сразу обучать их английскому вместо русского. Время которое у них уходит на изучение двух языков можно потратить более эффективно.
    А если по другому. Для чего нужен английский язык программисту? Для чтения документации по конкретному ЯП? Для чтения литературы? Нет. Для этого есть технический перевод.
    Мне кажется только для двух вещей: Понимание логики наименований команд в конкретном ЯП для граммотности, Интернациональная разработка.
    Так вот у меня вопрос к спецам. Насколько сложно написать русский язык программирования? Допустим для простоты мы используем логику того же Питона.
    Вместо "if" пишем "если" и тд.
    MS и WinPooh нравится это.
  11. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    http://habrahabr.ru/post/41561/

    Код:
    использовати площадь какобычно аминь1
     
    наместе двояко провѣрятичегоглаголют молчаливо
    кагбе
        ѣжѣли получалка.сломалася молчаливо тогдауж
        кагбе
          молвити "Не лепо молвишь, барин!" аминь1
          возвѣрнути нуль спасихоспади1
        ага
        возвѣрнути один аминь1
    ага
    Вообще говоря, препроцессор Си способен творить чудеса. Мне встречались и гораздо менее цензурные варианты подобных программ :)
    дикий муцио, Goranflo и Фримен нравится это.
  12. Фримен Учаcтник

    • Участник
    Рег.:
    11.05.2010
    Сообщения:
    488
    Симпатии:
    122
    Репутация:
    7
    Оффлайн
    Ой. Это же препроцесорная деректива #define из Си. Очень давно якобы изучал программирование (больше баловался). Но он русский не принимал.
    Кстати блестящая идея в плане обучения и не только. :clap:
  13. Scaramuccia Старожил

    • Участник
    • Старожил
    Рег.:
    13.01.2012
    Сообщения:
    3.173
    Симпатии:
    2.085
    Репутация:
    61
    Оффлайн
    C# принимает юникод. Так что можно хоть тюркский использовать. Еще есть старая шутка язык РАЯ(русский алгоритмический язык) против языка Ada.

    Проблема языка в разработке гораздо глубже чем if vs если - все новое в программирование англоязычно. Есть области в которых можно жить не зная английского(а зная, например, немецкий - привет SAP:) но все новые инструменты, идеи, статьи, совместные проекты и т.д. делаются на английском. То есть вы очень ограничиваете себя не уча английский.
  14. Mustitz Заслуженный

    • Заслуженный
    • Участник
    • Старожил
    Рег.:
    30.09.2006
    Сообщения:
    3.546
    Симпатии:
    1.265
    Репутация:
    36
    Адрес:
    Киев
    Оффлайн
    Не знаю, Turbo Pascal с легкостью можно заменить на FreePascal. Нужна графика - подключаем OpenGL и работаем с ней. C равным успехом можно взять С, по крайней мере мой путь был такой: МК-52, BASIX (MSX), Turbo C 1.5, Assembler, Tubo Pascal 5.5, Delphi, ...

    Английский язык не есть самая большая проблема. Во всяком случае при изучении BASIC когда-то в 8-м классе по книжкам, большей проблемой было отсутствие компьютера, чем английский язык.

    Python не знаю, не уверен. У меня нет данных о тех, кто начал изучать программирование с Python. Боюсь, что после этой песочницы для многих концепция указателя будет встречать проблемы (Спольски, Назад к основам).

    Вообще, имхо, неплохо было бы обучение начинать с UNIX-подобного чего-нить.
  15. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    В части курса, приближённой к железу - Си самый естественный выбор. Полностью согласен.
  16. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    Ещё раз позволю обратить внимание: речь шла о начальной подготовке школьников, которые, вообще говоря, программистами не будут.
    То есть: совместные проекты, статьи, новые инструменты - это не для них. Это важно, крайне важно - но только для тех, кто пойдёт в софтверную индустрию.

    А для них - общая грамотность: понимать, что такое память, процессор, программа, функция, цикл, условие, чем исполняемый файл отличается от библиотеки, почему вирусом нельзя заразиться из текстового файла, и т.д.
    И всё это прекрасно можно преподать на родном языке.
    дикий муцио нравится это.
  17. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
    А мой - такой:
    Б3-34 -> МК-61 -> FORTRAN (PDP-11) -> C (IBM PC) -> C++ -> C++ -> C++ -> C++ -> C++ -> ...
    Включая кратковременные вылазки в Visual Basic, Lotus Notes, PL/SQL, Python, Java...
  18. Фримен Учаcтник

    • Участник
    Рег.:
    11.05.2010
    Сообщения:
    488
    Симпатии:
    122
    Репутация:
    7
    Оффлайн
    Получается и швец и жнец и на дуде игрец. По моему это не правильно. Совместные проекты это одно. Другое же область технического перевода. Которая в свою очередь относится к области периодики(различные журналы и интернет ресурсы).
    Расскажу как я "учился" программированию по английским источникам. Какие-то вводные, описания алгоритмов, философия упускались, метафоры не усваивались. Всё свелось тупо к изучению синтаксиса и копированию технических приёмов. Однажды потребовалось провести элементарное сравнение чисел в массиве. Мною реализовано это было вложенными циклами с рекурсией. Даже найти подходящую функцию в документации проблема.
    Общее впечатление моих потуг это сплошное мучение и тошнота от английского языка и программирования.
    Не может школьник знать технический английский настолько, что-бы грамотно учится такой сложной вещи. Зачем усложнять то что и так сложно.
  19. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Можно, конечно, и на ШАЯ. Только если будет живая система, поддержанная на современном уровне, да ещё и интернационализированная, то есть открывающая дорогу с обменом со всем миром, а не в сугобо национальных рамках... Тот же Гугл проводит конкурсы рисования Черепашкой на Блокли, например. Буду уточнять, но по идее они должны носить открытый характер, с участием программ, написанных на локализованных версиях.

    Не уверен, что именно логика так уж важна: несколько узковатый, мне кажется, предмет, но в программе точно не помешает. Наиболее критичны, на мой взгляд, для развития мышления, и более важны, чем основы программирования - комбинаторика и статистика. Не знаю, как сейчас с этим в школах обстоит.
  20. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Да, предлагаю небольшую разминку,
    Лабиринт на Блокли (Maze)


    это обучение азам кправляющих конструкций. 10 уровней, 9 для начинающих, а десятый - неплохая алгоритмическая головоломка.
  21. XAJIK 22

    • Участник
    Рег.:
    05.05.2010
    Сообщения:
    1.308
    Симпатии:
    415
    Репутация:
    34
    Оффлайн
    Хороших курсов специально для начинающих недостаточно (мало). Учитывающих их мотивацию и психологию. Университетские в этом смысле-слишком формальны, усложнены на начальном этапе для начинающих. Имхо.
    Лабиринт в Блокли (Maze)-простой, примерно это и нужно для начинающих для привлечения-даже я решил ). Уже на 9-м уровне можно сделать из 6 блоков алгоритм "держась за левую/правую стенку".
  22. Scaramuccia Старожил

    • Участник
    • Старожил
    Рег.:
    13.01.2012
    Сообщения:
    3.173
    Симпатии:
    2.085
    Репутация:
    61
    Оффлайн
    На edx'е (edx.org) есть два отличных курса - 6.00.1х для 'будущих программистов', он более формальный и cs50х для просто людей. Естественно, английский:(
  23. XAJIK 22

    • Участник
    Рег.:
    05.05.2010
    Сообщения:
    1.308
    Симпатии:
    415
    Репутация:
    34
    Оффлайн
    На Курсере, говорят, появляются иногда неплохие курсы для разных уровней. Найти подходяший курс можно, но нужно искать и ждать. Вообще, Курсера и сопутствующие (Ed X и другие) -делают революцию в современном обучении.
    Английский-в современном мире без него -никуда, хотя бы базовый уровень необходим.
    Еще графические платформы-Snap! http://snap.berkeley.edu/snapsource/snap.html (от Беркли-расширенный вариант Scratch ). А вот пример обучения для детей на Яваскрипте http://www.crunchzilla.com/code-monster
  24. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
  25. Brorn Гринь Николай

    • Участник
    Рег.:
    10.05.2007
    Сообщения:
    302
    Симпатии:
    32
    Репутация:
    -4
    Адрес:
    Луганск
    Оффлайн
    Попробую вставить и свои 5 копеек. Как программист и лицо некогда преподававшее в непрофильном вузе информатику.
    Ключевой момент, как уже упоминалось выше, чему и кого мы хотим научить? То есть какие цели мы преследуем? Так уж нам важно подголовное умение программировать? Что само по себе является ИМХО не только не достижимым но и не нужным. Или дать базовые принципы и понимание процессов. Сделать возможным и доступным освоние понятия алгоритм. В конце концов мы же не учим школьников спецразделам вышки. Задача средней школы заложить фундамент. Отсюда мое полное согласие с MS - никаких паскалей, си прочих _специализированных_ вещей. Поскольку следует различать подходы в подготовке будущего программиста ( тут у С|C++ конкурент только python) и человека далекого от программирования, но имеющего базовые представления о предмете. От себя добавлю - минимум усилий на освоение синтаксиса и прозрачность получаемых решений несомненно наиболее приоритетные задачи.
    WinPooh нравится это.
  26. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Добавлю на копейку. Средства типа Блокли - для общего развития. Но... Если высшая математика реально нужна ничтожно малому числу людей, программирование - одна из самых массовых профессий. Знакомство с азами - это ещё и ловля душ будущих программистов. И пора уже думать о новой революции, подобно той, что сейчас пробуют провести в Америке. Применительно к нашим условиям, это "доступность факультатива программирования на уровне введения в профессию для каждого старшеклассника". И о средних специальных учебных заведениях для кодировщиков можно озаботиться.
    В конце концов, с дефицитом кадров, которым озабочены в Штатах, у нас тоже "всё в порядке". И вообще - софтверная индустрия - весьма привлекательная ниша в международном разделении труда, и за неё нужно бороться всеми силами и средствами.
  27. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
  28. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
  29. Challenger Spy Технический специалист

    • Команда форума
    Рег.:
    29.01.2011
    Сообщения:
    5.280
    Симпатии:
    2.838
    Репутация:
    226
    Оффлайн
  30. TopicStarter Overlay

    MS Михаил Семионенков

    • Команда форума
    Рег.:
    11.02.2006
    Сообщения:
    6.542
    Симпатии:
    3.361
    Репутация:
    175
    Оффлайн
    Занят переводом буржуйского курса Введения в Информатику, на базе Блокли. Коллеги, нужны добровольцы в качестве "учеников". Регистрация на code.org/join. Группа EXCURK.
    (это моя группа). На курс, естественно, можно зарегится и без меня, но со мной есть преимущества: вы сделаете доброе дело, поскольку наличие "учеников" позволит мне увидеть (и, соответственно, перевести) учительскую панель с содержанием. Ну, и "ученикам", как я понимаю, можно не светить лишний раз адрес почты при регистрации.
    Перевод близится к завершению (93%), но редакторской работы ещё много, так что детям пока показывать не надо. За замечания, предложения, отзывы буду очень благодарен. Принимаю здесь, на сайте курса, вконтакте (группа Графическая среда программирования Blockly) и всё содержательное доведу до "администрации" (если своими силами не смогу реализовать)
  31. WinPooh В.М.

    • Команда форума
    Рег.:
    13.02.2006
    Сообщения:
    9.491
    Симпатии:
    3.118
    Репутация:
    95
    Адрес:
    Москва
    Оффлайн
  32. vvtitan Старожил

    • Участник
    • Старожил
    Рег.:
    11.11.2008
    Сообщения:
    1.797
    Симпатии:
    1.509
    Репутация:
    131
    Адрес:
    Минск
    Оффлайн
    На мой взгляд самый лучший для этого язык - Pascal. Не представляю что может быть стройнее и логичнее.
    Может потому что я сам много чего на нем написал, потом в Delphi...
    Одна моя программа распространилась по всему миру, среди проектировщиков...
  33. Ceylon Учаcтник

    • Участник
    Рег.:
    05.03.2010
    Сообщения:
    150
    Симпатии:
    20
    Репутация:
    1
    Оффлайн
    Oberon
  34. Challenger Spy Технический специалист

    • Команда форума
    Рег.:
    29.01.2011
    Сообщения:
    5.280
    Симпатии:
    2.838
    Репутация:
    226
    Оффлайн
    Самый лучший язык - русский, с помощью которого надо объяснить программистам, что их предмет (равно как и маркетинг, юриспруденция, генетика, ядерная физика и умение водить троллейбус) НЕ НУЖЕН массовому ученику. Лучше бы занялись тем, что есть, и сделали нормальный, приближенный к среднестатистическому обучаемому, курс информатики, готовящий крепких юзеров.
    WinPooh нравится это.
  35. vvtitan Старожил

    • Участник
    • Старожил
    Рег.:
    11.11.2008
    Сообщения:
    1.797
    Симпатии:
    1.509
    Репутация:
    131
    Адрес:
    Минск
    Оффлайн
    очень похож, да и автор один - Вирт...

Поделиться этой страницей