?

Log in

No account? Create an account
программирование для начинающих - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программирование для начинающих [авг. 30, 2016|01:23 am]
Anatoly Vorobey
[Tags|]

Мне понравился комментарий в дискуссии на Hacker News о предподавании программирования:

"I've been teaching kids to code for 19 years now, and I still make them do it the hard way.
Just two days ago this year's crop of 83 students wrote their first Java programs in Notepad and compiled and ran it from the command-line.
[...]
And my curriculum goes through the basics of Java very slowly. As I've said on HN before, I make my students code FizzBuzz, but they will have literally done 106 complete programming projects before it."

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

Автор также объясняет, почему Notepad: важно объяснить ученикам, что программа это просто текст, и в нем нет ничего особенного. Через несколько дней после начала, когда это усвоено, ученики переходят на Notepad++ с подсветкой синтаксиса итп.

Примеры заданий, которые дает автор, есть на этом его сайте: https://programmingbydoing.com/. Действительно, перед FizzBuzz есть пусть на 106, но 70 более простых заданий.
СсылкаОтветить

Comments:
[User Picture]From: gruimed
2016-09-01 05:05 pm

Ищу нечто похоже для 12ти летнего ребенка...

(Ответить) (Thread)
[User Picture]From: krech
2016-09-09 06:06 pm
Не очень понятно что имел в виду gruimed - что на что должно быть похоже.

Но безумный интерфейс Scratch'a не имеет никакого сходства с написанием кода в Notepad.

P.S.
Если говорить о том, что использовать для обучения 12-летнего ребенка программированию - то, по моему глубокому убеждению, это должен быть SmallBasic.

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

Практически отсутствующий порог входа, и достаточно плавная кривая обучения далее, на несколько месяцев-полгода-год.

Edited at 2016-09-09 18:15 (UTC)
(Ответить) (Parent) (Thread)
[User Picture]From: avva
2016-09-09 06:27 pm
Посмотрел на SmallBasic, спасибо (так, бегло, не запускал сам). Довольно интересная штука. Я сам недавно думал о преимуществах Бейсика как первого языка. Но мне кажется, что что-то вроде GW-BASIC'а еще лучше бы подошло (особенно с такой прекрасной средой). Почему:

- номера строк помогают четко понять, что происходит и сформировать внутреннее представление программы как последовательности строк кода
- отсутствие структурного программирования, т.е. GOSUB 900 и RETURN вместо Sub/EndSub, поощряют ребенка учиться "дебагировать в уме"
- нету всех этих TextWindow.Write, которые лишний уровень абстракции. Есть просто функции.

Как вы думаете? Это ностальгический бред с моей стороны или действительно неплохо было так попробовать?
(Ответить) (Parent) (Thread)
[User Picture]From: krech
2016-09-09 07:08 pm
Номера строк в SmallBasic'e тоже есть, но в современном стиле, т.е. просто IDE показывает номера строчек.

Старинные, обязательно указываемые номера строк на мой взгляд не нужны, равно как и Goto/Gosub c номеров указанием.

Я довольно много писал в этом (с номерами) стиле в своё время, шедевральные спагетти получались - но не считаю что навык их распутывания полезен в будущем, если конечно не стоит задача готовить ассемблериста. Опять же придеться объяснять почему нумеруем не подряд а 10-20-30 и зачем нужна команда ren.

Думаю что структурный подход куда более здоровый и естественный.

Насчёт "просто функций" - вполне можно было бы сделать и так.
С другой стороны всякие "Turtle.Move (100); Turtle.Speed=9" - дают как бы некоторый заход в объекты, а с учетом автодополнения писать их не проблема.
(хотя конечно очень много можно было бы изменить/улучшить)



Основное чем берёт SmallBasic - это даже не синтаксис, который мог бы быть и другим, совсем не бейсиковым.

Главное - это та наглядность, присущая старым бейсикам - когда написал что-то и сразу запустил. И после того как запустил - вполне ясно что именно написал.

Нет этих чудес типа
public class GoodFirstProgram
{ public static void main( String[] args )
{ System.out.println( "Hello World!");}}
...
Open a command prompt. (Start Menu | All Programs | Accessories | Command Prompt) Then type, in order, the commands below...

(с) programmingbydoing.com

когда ученикам по сути говорят - делайте то и это потому что так надо, напишите вот эти строчки, потом когда-нибудь узнаете зачем они.


Другой важный момент - это достаточно толковая интеграция Лого-черепашки с бейсиком, что делает обучение ещё более наглядным. И что немаловажно - более увлекательным. Нынешних детей со смартфонами и компьютерными играми трудно впечатлить вещами типа "print 2+3", а вот с Turtle.Move и т.д. можно вполне весело куролесить, как показывает практика.
И на перемещения черепашки отлично ложатся и циклы, и переменные, и подпрограммы...

Edited at 2016-09-11 17:40 (UTC)
(Ответить) (Parent) (Thread)