May 17th, 2020

moose, transparent

бейсик

Я не помню, писал ли об этом уже, но без иронии полагаю Бейсик хорошим первым языком программирования. Причем не любой Бейсик, а такой олдскульный, с номерами строк (не QBasic). Например, GW-BASIC, на котором я когда-то сам учился программировать (если не считать язык Лого с "черепашьей графикой", про который было в какой-то книге - предлагаю не считать). Это было на компьютерах Yamaha, которые в большом количестве установили в классах и институтах СССР во второй половине 80-х, и язык формально говоря назывался MSX-BASIC, но почти не отличался от более известного GW-BASIC.

Почему я так считаю? Ну скорее всего потому что сам на нем учился, и поэтому он окрашен для меня в теплый ламповый свет ностальгии. Нет, на самом деле у меня есть Аргумент, но вы не обязаны с ним соглашаться, можете считать, что все дело в теплом ламповом. Аргумент такой. Один из главных навыков, которым надо научиться, когда учишься программировать с нуля - возможно, самый главный навык - это следить за исполнением программы в уме, понимать, как исполнение проходит по потоку команд, и что при этом находится в разных переменных (включая сюда понимание того, что такое переменная вообще). Те, кому когда-то это далось легко (или тяжело, но они забыли), часто не понимают, как это - не втыкать в эту идею потока исполнения, плывущего по тексту программы.
Можно начать программировать и как-то продвигаться, так и не поняв это, но далеко не дойдешь.

Бейсик с номерами строк, без блоков, ограниченных скобочками, без подпрограмм с названиями, словно создан для того, чтобы направить внимание ученика в эту сторону (а почему "словно создан", собственно? Наверное, специально именно так и создан для этого, его же придумали, как язык для обучения). Чтобы сделать что-то нетривиальное, ученик обязян отслеживать глазами ход работы программы, а номера строк дают ему конкретные "зацепки", облегчающие это дело поначалу. Есть и еще преимущества. Сознательно бедный язык, никакой тебе богатой стандартной библиотеке, никаких "импортов" как в Питоне, но вместе с тем включает все нужное для простой работы с числами, строками и графикой (чтобы дети могли рисовать и игры придумывать). Но главное преимущество - отказ от структурного подхода, номера строк. Если бы не это, я бы предпочел для первоначального обучения использовать Питон или Джаваскрипт. А так - можно начать с Бейсика, и через какое-то время перейти к более серьезным языкам.

(Да, я знаю, есть Scratch, и есть игры типа CodeMonkey для совсем маленьких, и я в общем-то не против, я только за, но это как язык Лого с черепашками в моем детстве. Не совсем то же самое. Не вполне то, что надо. Так мне кажется. Если вам идеально подходит, я только рад)

Не убедил вас? Наверное, не убедил, но если вдруг заинтересовались, то современная среда GW-BASIC, почти полностью совместимая с оригиналом, называется PC-BASIC; или можно взять настоящий GW-BASIC (легко находится, где скачать) и запустить внутри DOSBOX, тоже вполне работает.

А написал я это все потому, что опять занялся этим делом с ребенком (уже пробовал два года назад, но туго пошло, не время еще было), и вот она написала первую свою программу на Бейсике, не без моей помощи. И жаждет двигаться дальше.



Кто помнит, какие простые программы/игры можно с ребенком сварганить на Бейсике? Мы только-только начали. Игру "отгадай число от 1 до 100" тоже уже написали. Завтра буду циклы объяснять, может, на примере проверки, простое число или нет. А дальше я уж и забыл, чего надо. Может, простая графика и прямая дорога оттуда к рисованию движущихся точек/линий на экране. А может, остаться еще в тексте и разбираться дальше с числами/строками, если найду интересные идеи для программ.