morfizm (morfizm) wrote,
morfizm
morfizm

Программистское: первая программа

Ответил на пост от avva: "Расскажите, как вы научились программировать? В каком возрасте вы написали свою первую серьезную программу, на каком языке и компьютере, что она делала?" (http://avva.livejournal.com/2616323.html)

Меня смущает слово "нетривиальная"/"серьёзная" программа.
Дайте чёткое определение.

Если под тривиальным понимать программу в одну строку, то первую нетривиальную программу я, как и, наверное, все остальные, написал в тот же день, что и первую тривиальную. Хотя нет... первая тривиальная, наверное, была годом раньше, это было LOAD " чтобы загружать игрушки с кассеты на ZX Spectrum 48k.

На бейсике начал программировать примерно после 6-12 месяцев безвылазных игрушек, когда стало скучно. Мне было около 10 лет (от 9 до 11, точно не помню). Папа показал программу вроде такой (*):
10 FOR I = 1 TO 10
20 PRINT I, I*I
30 NEXT I

Печатающая в столбик числа и их квадраты. Я офигенно протащился с этого и пошло-поехало. ZX Spectrum можно осваивать без мануала, т.к. там на кнопочках написаны разные команды, получающиеся из комбинации shift-ов, и редактор бейсика построен таким образом, что невалидный синтаксис ввести просто нельзя. Курсор превращается в "?" и символ не вводится. Таким образом, можно было методом тыка explore'ить грамматику языка, и экспериментами проверять, что каждая команда делает. Я, может, папу только пару раз что-то спросил, но, наверное, весь год сам до всего доходил экспериментально. Не подозревал о существовании мануалов, книг и пр. Думал, что программирование так и передаётся - от отца к сыну, и экспериментально :)

Одной из первых запомнившихся программ была "Bottle" - написанная, вероятно, в течение первых пары дней после life turning point (*), я включил "OVER 1" - режим, при котором вывод пикселя там, где уже был пиксель, стирал его, выбрал какие-то центральные координаты, и дальше в цикле рисовал окружности одинакового радиуса (20), сдвигая обе координаты на +1, а потом отдельно ещё один цикл радиуса 10, чтобы нарисовать горлышко. Получалась самая настоящая бутылка, по диагонали расположенная.

Из более сложного, но тоже very early, писал эмулятор спортлото. Наверное, несколько сотен строк кода, чтобы красивенько рисовать, что выпало, говорить, сколько ты выиграл, и говорить, какая была вероятность выигрыша. Формулы для вероятности мне дал папа, т.к. я ещё не знал комбинаторику на таком уровне, и спросил у него.

Ещё - программа для учёта очков для игры в настольный хоккей. Она спрашивала, как зовут каждого игрока, потом можно было нажимать кнопки для каждой шайбы, обновлялись очки и было звуковое сопровождение. Я не понимал, почему взрослые воспринимали пользование этой программой во время игры как непонятное усложнение. Для меня, наоборот, всё выглядело как офигенный value added. Конечно же, надо было загружать эту программу каждый раз перед игрой, вводить имена, и жать кнопки, когда забиваешь. Но ведь зато всё по-честному учитывалось, и с красивым сопровождением!!!

Fun :)
Tags: 1, bio, software development
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 11 comments