Комментарии 85
Но почему-то он не упомянул старый добрый Паскаль, который для англоязычных можно назвать как естественный язык. Для начального текстового он тоже очень не плох.
По поводу синтаксиса не согласен, надо с самого начала научить прежде чем запустить программу её проверить, тем более в том же Паскале он минимум.
Так же текстовый язык помогает делать структуру программы более понятной.
Все же визуальный язык это комиксы, а текстовый это нормальное книжное чтение.
Так же желательно все же ознакомить еще с графическим обозначением алгоритмов (блок-схемы). Тогда можно быстрее запомнить основные алгоритмические конструкции.
Ну а потом можно если не Java то Processing, очень хороший для графических вещей.
К примеру python, простой синтаксис и хорошая стандартная библиотека (и множество других хороших библиотек), с помощью которых можно достаточно быстро сделать что-то интересное.
Надо использовать тот язык, который является актуальным
понятие актуальность очень и очень зыбкое, сейчас да, а через несколько лет уже нет ;)
Детям которым сейчас 12-14 лет самое главное это понять что и как, и по возможности быстро увидеть результат, вот кстати чем хорош Processing даже мобильные приложения под Андроид можно быстро сделать. Профессионально они столкнутся с актуальными средами, лет через 6-8, а какая на тот момент времени будет актуальность мало кто знает :)
НО при обучении любому искусству (а программирование это искусство) начинают всегда с азов, художники с карандашных рисунков, музыканты с гамм, танцоры со «станка». Вот и у нас тоже, с блок-схем, Паскаль (некоторые кому программирование не нужно (только на экзамены) на этом останавливаются ), Processing, Java :)
«он хочет не просто что то создавать, а видеть плод своих трудов :)»
Не факт. «Просто создавать» — это процесс — и результат (на котором сосредоточено) внимание появляется каждую секунду. Видеть плод своих трудов — это уже несколько опосредованно. Возникают проблемы тактика/стратегия, сильная/слабая воля.
«НО при обучении любому искусству (а программирование это искусство) начинают всегда с азов, художники с карандашных рисунков, музыканты с гамм, танцоры со «станка».»
Нет. Музыканты начинают с простых, но вполне музыкальных произведений. Гаммы идут когда учитель и ученик понимают, что ученику не хватает техники пассажей и тот с радостью бросается играть гаммы.
Впрочем есть хорошие учителя/преподаватели, а есть не очень. И методики у всех разные, и нюансы — важны.
Гаммы идут когда учитель и ученик понимают, что ученику не хватает техники пассажей и тот с радостью бросается играть гаммы.
Гаммы начинаются с самого начала и они не от того, что ученику чего-то не хватает.
Гаммы для наработки навыков:
1. Равной громкости звукоизвлечения всеми пальцами (это я про фортепиано говорю). Т.е. громкость звука каждым пальцем должна быть одинакова. Пальцы ведь изначально имеют разную силу.
2. Ритмичности звукоизвлечения. Т.е. звуки должны извлекаться равномерно: пам-пам-пам-пам..., а не пам-пам… пампам-пам…
3. Синхронности работы рук. Звук извлекаемый обеими руками должен сливаться в один. А не «блям-блям».
4. Аппликатуры. Этим нарабатывается постановка пальцев при игре в стандартных ситуациях.
5. Ключевых знаков. Мозг привыкает к тому в какой тональности какие клавиши — чёрные (грубо говоря).
И «с радостью» гаммы вряд ли кто-то бросается играть :)
В школьном образовании первая задача — научить детей составлять алгоритмы, и лишь вторая — ввести эти алгоритмы в компьютер с помощью какого-либо языка программирования. А начинать сразу с питона и библиотек — это все равно, что в 5 классе давать интегралы.
Впрочем, это не означает, что детям нельзя давать питон. Наоборот, я считаю, что 9-10-летние дети способны осваивать программирование не хуже взрослых, и я не вижу смысла в создании обучающей среды, ориентированной только на детей.
Картины, например, Репина — тоже комиксы? Там тоже визуальный язык — язык визуальных образов.
Сценарий «Дом 2» — тоже нормальное книжное чтение? Тоже на текстовом языке.
Какой «он» в Паскале минимум? Несколько кривоватая фраза. А, видимо, синтаксис. Тогда уж Оберон.
Картины, например, Репина — тоже комиксы? Там тоже визуальный язык — язык визуальных образов.
Это вы батенька загнули ;) изобразительное искусство конечно язык образов, но мы то с вами обсуждаем языки программирования ;)
Могу даже больше сказать, есть комиксы уровень не ниже известных классических художников :)
На счет сценария ;) думаю польза будет, хоть читать научатся :)
Про Оберон сказать не могу, мало с ним знаком ;) но в Паскале действительно синтаксис более логичен и минимален. :)
Пусть этот год будет для вас лучше предыдущего!
Счастья, здоровья и всего всего чедо душа пожелает :)
Во вторых
Надо забыть про паскаль,
Мне такие призывы напоминают революционные лозунги ;)
питон на порядок проще и яснее синтаксис
возьмем несколько примеров:
Python
def f(x):
return (x — 16)*(x + 25)
a = -100
b = 100
n = 0
for t in range(a, b + 1):
if f(t) <= 0:
n = n + 1
print(n)
Си
#include<stdio.h>
int F(int x) {
return (x — 16)*(x + 25);
}
void main() {
int a, b, N, t;
a = -100; b = 100;
N = 0;
for (t = a; t <= b; t++) {
if (F(t) <= 0) {
N++;
}
}
printf("%d", N);
}
и всеми не «любимый» Паскаль :)
var a, b, N, t: integer;
Function F(x: integer):integer;
begin
F := (x — 16)*(x + 25)
end;
begin
a := -100; b := 100;
N := 0;
for t := a to b
do
begin
if (F(t) <= 0) then N := N + 1;
end;
write(N);
end.
Вы меня конечно простите НО я не вижу что бы в Python был проще и яснее синтаксис.
Любой человек который знает английский в рамках 4-5 класса школы сможет понять что делает программа на Паскале без объяснений, с Си сложнее НО логика тоже хорошо видна, а Python простите увы НЕТ или у меня интеллект ниже шимпанзе :)
Даже наличии «программных скобок» begin… end и {...} уже дают ясность.
Могу как учитель сказать что дети даже при их наличии с трудом осознают структуру программы особенно если не делают отступы, в Python где они не видимы и все зависит от отступов вообще кошмар.
Ваш покорный слуга пробовал сразу после блок-схем давать Python НО это плохо кончилось.
Да есть дети которые алгоритмические структуры схватывают моментом, но увы, таких один из сотни.
С ними работают отдельно.
И обязательность отступов это отлично — учиться нужно сразу правильным подходам.
Вы лучше возьмите немного другой пример, питон ведь более высокоуровневый язык, сделайте аналоги конструкций
if variable is None:
или
if variable in list:
всего и не упомнишь, но я многократно сталкивался с тем, что в питоне можно коротко и ясно выразить суть, максимально близко к английскому языку.
Ну и стандартная библиотека питон сразу предлагает хорошие практики — logging, configparser и т.п., конечно в качестве учебных задач можно написать их аналоги, но нужно знать, что эта работа уже хорошо сделана до нас.
Приятно иметь дело с умным человеком :)
Вы все правильно говорите
НО
Вы лучше возьмите немного другой пример, питон ведь более высокоуровневый язык, сделайте аналоги конструкций
if variable is None:
или
if variable in list:
всего и не упомнишь, но я многократно сталкивался с тем, что в питоне можно коротко и ясно выразить суть, максимально близко к английскому языку.
Дело в том что и английский язык тоже многоуровневый, я специально обозначил возрастную категорию (4-5 класс) и уровень школьников в иностранном языке обычной школы не велик.
К 6-7 классу (в этом возрасте попадают ко мне ;) ) они знают лишь небольшой запас слов и конструкций, поэтому слова «begin», «end», «for», «if», «then»,«and», «or» и др. для них не представляют трудностей в понимании.
Все что вы приводите это удел старших возрастов (старшие классы, студенты) которые уже нормально осознают логические цепочки (хотя и там бывают проколы :) ).
И обязательность отступов это отлично — учиться нужно сразу правильным подходам.
именно так и делаем, через слезы, ругань, конфеты :)
Ну и стандартная библиотека питон сразу предлагает хорошие практики — logging, configparser и т.п.,
Я с вами полностью согласен! :) НО все ЭТО нужно потом, когда они осознают что такое программирование.
Вы же не предлагаете вместо Азбуки сразу читать Диккенса что бы учится читать? ;)
нет, я такого не предлагал
говоря что сразу надо начинать с тех вещей которые сейчас в «ходу» :)
Паскаль — это одна из Азбук (Букварь) :)
Обучать Си\С++ можно с 7 класса (а по моим «оценкам» — с 5 класса.
Методика была описана тут
https://habrahabr.ru/post/179307/
Паскаль как раз и стал языком для обучения потому что си это уродливый и низкоуровневый язык, но паскаль это мёртвый язык, неудивительно, что сегодня есть лучшие альтернативы.
ВОПРОС:
— Какому языку можно обучать грудничков?
Предлагаю Вам извиниться перед сообществом и больше не писать в подобных темах то того, как хоть не много изучите тему…
Мы уже поняли, что вам нравится Паскаль, это не повод переходить на личности.
Кроме прочего необходима мотивация. Паскаль мертв, Он не нужен в будущем, а Питон — нет. Не надо заставлять детей зря тратить время на ненужные вещи из-за собственных стереотипов про Паскаль.
Мне вот, как человеку, который не знает ни питон ни паскаль как раз питон более читабельный.
И нет, Вы понимаете кол на паскале не потому что он похож на английский, а потому что вы знаете паскаль. Он не ближе к английскому, чем любой другой высокоуровневый.
Если говорить о ЯП для обучения — посмотрите мой пост в самом конце:
— визуальное программирование (Скрэтч — урбанизирован под девочеч, которые увлекаются куклами — девочки бывают разными, например, Алиса Шевченко
— она же Esage — http://www.forbes.ru/tekhnologii/internet-i-svyaz/275355-kontrakt-na-ugrozu-kak-khaker-stroit-biznes-na-zashchite-bankov
Так вот Скрэтч — жалкое подобие GameMaker 8.1
Паскаль создан для изучения программирования, но после создания методики обучения Си\С++ (см. мой пост в конце...) — нахожусь в твердом убеждении, что с визуального GameMaker 8.1 следует переходить на Си\С++ — особенно, если переписать GameMaker 8.1 под GNU\open source…
А Питон — пусть развивается...)))
И неважно как они знают английский, главное что код более близок к естественному языку
а это и есть естественный язык
If (если) условие then (тогда)
for ( для) имя переменной :=(присвоить) начальное значение to (до) конечное значение
do ( выполнить)
не говоря уже о
begin и end ;)
Я с вами полностью согласен! :) НО все ЭТО нужно потом, когда они осознают что такое программирование.
К сожалению это нужно сразу — потому как отсутствие какого-нибудь findall(r'(\d+)',txt) ведёт к невозможности написать выдающую результат программу.
Без сопутствующего фреймворка любой язык способен разве что вывести «привет, мир» — а это интересно детям только один раз
Ну и стандартная библиотека питон сразу предлагает хорошие практики — logging, configparser и т.п., конечно в качестве учебных задач можно написать их аналоги, но нужно знать, что эта работа уже хорошо сделана до нас.
Какой логгинг, какой конфиг? Дети ещё не особо понимают, что такое файл, про слово «процесс» вообще не слышали, а вы их грузите какой-то технической ерундой. Это профдеформация.
Задача школьного обучения: научить понимать и писать алгоритмы, а не научить писать код.
Ученики должны писать велосипеды, а не пользоваться сразу готовым кодом. Это и есть непосредственная часть обучения.
Задача школьного обучения: научить понимать и писать алгоритмы, а не научить писать код.
Ученики должны писать велосипеды, а не пользоваться сразу готовым кодом. Это и есть непосредственная часть обучения.
Приятно сознавать что есть разумные люди :)
Как там у классиков «мы с тобой одной крови...» :)
Странно, ни слова про LabView — ярчайший пример визуального программирования для взрослых. Собственно, я только с ним и научился эффективно программировать, несмотря на все попытки отца-программиста меня чему-то научить. Кто не в курсе, LabView — среда для программирования научного эксперимента.
Скретч — это просто «руками не набирать», а по сути — тот же «текстовый» язык.
Когда дядя уже всё сделает, а им останется выбрать комбинацию из красивых пиктограмм.
Ну в принципе Matlab Simulink по сути набор пиктограмм. А еще есть специализированные Real-Time Digital Simulatior, там тоже набор пиктограмм, аналогично Simulink.
Тут стает вопрос, что важнее — за три-четыре года работы над докторской использовать готовые решения и все же заняться основной задачей или заново написать программу. Программирование, оно ведь не вещь в себе, а всего лишь один из компонентов существующей экономики.
Любое утверждение можно довести до абсурда неуместными сравнениями.
Вы же написали, что Когда дядя уже всё сделает, а им останется выбрать комбинацию из красивых пиктограмм. , а в случае Матлаба это именно тот самый случай, когда не нужно разбираться в деталях и сосредоточится на главном. Что же касается:
Причем тут разработка математических моделей?
Язык программирования это не вещь в себе. Она по сути должна взять исходные данные и выдать результат после математических расчетов. Просто с помощью Симулинка они визуализированы, чтобы не выискивать, если надо быстро набросать алгоритм для проверки. Или вы хоть раз написали не программу-математическую модель?
Я говорю конкретно про то, что написано в сабже — обучение детей с помощью визуальных языков программирования.
Так вроде вполне последовательный переход от схем на бумаге к схемам на компьютере. Главное понять идею и увидеть ее в действии, что гораздо проще на таком материале, чем отрабатывать на бумаге. Как минимум проще исправить, если надо еще один цикл внести или проверку. Нормальный процесс во всех отраслях науки и техники.
Тут есть такие?
Затем паскаль с 8 класса — стало ещё интереснее, потому что с помощью паскаля можно было написать абсолютно что угодно. А преимуществом Паскаля перед C было значительное меньшее количество способов выстрела в ногу. Напомню, что тогда были времена DOS, и основными языками программирования были C, Pascal и ASM, никаких хаскель-питонов и в помине не было.
После 8 класса изучение программирования стало полностью самостоятельным: школа и университет уже ничего нового не могли предложить. Ну были C, C++, но мне они не очень нравились.
Слез с паскаля я в итоге только на 3 курсе: перешёл с Delphi на MSVS C#, когда вышел .NET 2.0.
Интерес к C++ проснулся уже позже, с выходом С++11 и необходимостью в написании высокоэффективных по скорости приложений (обработка изображений: параллелизм, векторные инструкции).
Встряну со своим опытом.
- Искусственный язык с русскоязычными операторами без компьютера.
Дало общее понимание процесса программирования от построения модели до реализации в коде. - Fortran. Повезло. Практика на "живой" ЕС-1025 с перфораторами, перфокартами и печатной машинкой в качестве терминала. Это было применение полученных знаний на практике.
- ЯМБ. Это был УПК. По итогам имею диплом оператора ЭБМ.
Это было скучное "обучение языку", когда давали только операторы и стандартные приемы решения стандартных задач.
Основное школа таки дала — общее понимание того, что такое программирование, и что это в общем-то интересно.
Остальное — исключительно самообразование (даже простой программируемый калькулятор МК-61 дал немало) и внешкольная система образования (что-то вроде кружка по программированию при институте).
После уже стало однозначно понятно, куда я буду поступать и чем буду заниматься после.
жаже работу с дебаггером изучали
А почему «даже»? Если рассматривать Turbo Pascal, то там IDE — неотъемливая часть процесса программирования. И в голову бы не пришло писать отладочный вывод и ломать голову вместо использования отладчика.
Неподготовленные люди смогли бы создавать нужные им приложения, без изучения огромного количества информации, а сложные программы остались бы за специально подготовленными программистами.
С тех пор я разрабатываю среду, в которой на первом месте скорейшая обратная связь в виде воплощения замысла человека, а технические детали/подробности скрыты или отложены на потом или вообще для специалистов.
Надеюсь, это сильно повлияет на мир, когда любой человек любого возраста и пола станет полноправным хозяином своих компьютеров/смартфонов =)
Я долго искал предел наглядности и пока дальше этого продвинуться не могу:
Т.е. только примитивы и анимация. Среда должна визуализировать внутренности программы, алгоритмы.
И оказалось, что такое становится понятным уже любому человеку, не только программисту.
Надеюсь в будущем написать статью про это на Хабре.
Когда запускал, на консоли появилось:
Executing: /usr/lib/squeak/4.10.2-2614/squeakvm -encoding UTF-8 -vm-display-x11 -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.10.2-2614/ -vm-sound-pulse /usr/share/scratch/Scratch.image
squeak — виртуальная машина SmallTalk.
На самом деле, когда я глянул что оно умеет — у меня была одна фраза «ВЕРНИТЕ МНЕ МОЁ ДЕТСТВО». Потому что деревянный синклер, прибитый ассемблером к магнитофону — это вся романтика, которая у нас была.
Не всё «графическое» одинаково вредно\полезно, ИМХО скрэтч хорош именно тем, что концептуально близок к написанию кода, в отличии от лабвью вообще и леговского в частности, где решение задач отличающихся от тупой коммутации датчиков-исполнителей, превращается в адский адъ!
За написание кода я ратую лишь потому, что Монтессорщик и дети у меня маленькие, так-что клавиатура им проще, чем таскание даже скрэтчивых блоков.
Если интересно посмотреть, как это всё выглядит — просто вбейте в гугл-картнках «TIBCO BusinessWorks». Очень мощная штука.
Племянника (7 лет) все думаю посадить на Scratch. До сегодняшнего дня был уверен, что там все по-английски, так что ему будет сложновато. Ан нет, русский имеется.
Система команд не сильно интуитивна (например, поворот не поворачивает фигурку), как удалить действие из середины стека не удалив все под ним — я тоже не нашёл.
По нажатию F11 просто показывает белый экран и назад не восстанавливается (по повторному нажатию).
В Scratch 2/0 https://scratch.mit.edu/projects/editor/
можно импортировать векторные изображения, и это выглядит гораздо лучше чем 1.4
— Поворот поворачивает фигурку, если включить соответствующий стиль вращения
— чтобы удалить блок из середины, надо отцепить все что ниже, затем удалить блок, затем вернуть все что ниже.
— F11 не понял вопроса. Зачем его вообще нажимать?
И вопрос к любителям паскаля, сколько строк на паскале чтоб написать вот такую игру типа пинпонга?
https://scratch.mit.edu/projects/10128515/
На Скретч всего 25 блоков
1. Перевод статьи — как будто создан для споров, А НЕ ДЛЯ ПОИСКА ИСТИНЫ…
В переводе не указаны возраста детей — результат: можно спорить до посинения…
— один — про 5-6-7 летних
— другой — про 4-5 класс (10-11 лет)
— третий — про 9-10 классников…
и каждый будет прав — по своему — так как все три указанных возраста — абсолютно разные…
Про визуальное программирование?
— Начинать программировать можно с 5-6-7 лет — и это должно быть визуальное программирование…
Желающие поспорить для начала должны аргументированно опровергнуть пословицу:
«Лучше один раз увидеть, чем сто раз услышать»
Начинать оптимально с программирования роботов типа MindStorm 2.0 (3.0 не видел — возможно так же подойдет)
Мой личный опыт (в том, числе — по работе с детьми с нарушениями в аффективной сфере...) — с 6-ти MindStorm 2.0 (правда, крайне желательно обучение родителями — например умножению — крайне легко для 5-ти летних, но нужны ежедневные занятия — это «под силу» только родителям — крайне легко: идем в садик, в магазин и т.д. — Давай посчитаем до 10 (1,2,..,9,10) — а теперь в обратную сторону (10,9,8,...,2,1,0 — дальше для усиления положительного подкрепления — кстати, это еще один минус перевода\статьи — ни слова не сказано о положительном подкреплении… — А теперь давай посчитаем до 20 (1,2,3,...,19,20) — а теперь в обратную сторону — А давай посчитаем побыстрее — через два (2,4,6,...,16,18,20) — а теперь в обратную сторону (20,18,16,..,4,2,0 — ПУСК (пляшем, поем и т.д. — делаем, то, что нравиться ребенку — и он будет сам просить «посчитать»...))) — Давай посчитаем до 30...- полагаю большенству уже понятно…
Но я отвлекся — с 8 GameMaker 8.1 — в 11 лет дети (с подтвержденной задержкой в развитии) сами просили научить их программированию на языке (в GameMaker 8.1 — внутренний язык очень похож на Си)
Методика обучения на Си\С++ описана тут
https://habrahabr.ru/post/179307/
На сайте методиста
http://ded32.net.ru/ (в правой колонке)
К визуальному программированию
«Как известно, все развивается по спирали...»
Обратите внимание на методики типа
— Rational Unified Process https://ru.wikipedia.org/wiki/Rational_Software
— Power Designer
и Вы увидите «развитие» визуального программирования «на новом витке»…
Следующие «пол оборота» — Александр Сергеевич Подколзин http://intsys.msu.ru/staff/podkolzin/
…
и так далее… вечная борьба «щита» и «меча»…
Много ли школьников станут грамотными после школы — Немного…
И Вы гордитесь подобной позицией?
Вот только ориентированных не детей сред, поддерживающих декларативное программирование, я не видел.
А вот управление механизмом без императивного никак. И там даже не просто императивное, а реакция на события.
???...8()…
Наиболее близкое по слыслу — «зеленеет розовый желток»…
— «Вот только ориентированных не детей сред, поддерживающих декларативное программирование, я не видел.»
Это потому-что Вам нужно вернуться из страны «Зазеркалье» (Алиса в стране чудес) и не ставить «телегу впереди лошади»… Вы о каком возрасте (для какого возраста хотели бы увидеть среду декларативного программирования):
— грудничковый
— оральный возраст (это когда предмет исследования тут же оказывается во рту исследователя)
— ональный (почитайте научную психологию — идет следом за оральным)
— кризис трех лет («Я сам!»)
— 5 лет
— первый класс
— 4 класс (последний в младшей школе)
— 7 класс
— 11 класс
Вы для какого возраста хотите увидеть среду декларативного программирования?
Императивная только мешает
Мешает чему? Вообще компьютеры работают именно императивно, а фп — всего-лишь обертка.
Выбор между визуальным и текстовым программированием для детей