April 30th, 2013

moose, transparent

о жуликах и дураках

Пол Кругман встал на путь мета-блоггинга.

Если почитать мой блог, пишет он, то создается впечатление, что я всегда прав, а мои оппоненты - жулики и дураки. Поэтому мне часто пишут, мол, наверное вы искажаете позицию оппонентов или удобно для себя выбираете материал. Но что если это не так? Что если я действительно во всем прав, а среди моих оппонентов полно жуликов и дураков?

Очаровательные риторические вопросы.
moose, transparent

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

Расскажите, как вы научились программировать? В каком возрасте вы написали свою первую серьезную программу, на каком языке и компьютере, что она делала?

В 12 лет мне подарили программируемый калькулятор Электроника МК-52, и я загонял в него готовые программы из "Техники - молодежи" (который мы выписывали) и "Науки и жизни". Но сам писал только тривиальные примеры, и программированием это не считаю. Были умельцы; старший товарищ luarvique, например, написал в этом калькуляторе программу для решения кубика Рубика, если память не изменяет. Но мне не хватало для таких подвигов знаний и терпения.

В 13 лет - я начал ходить заниматься на настоящих компьютерах (!!!) в местном пединституте, где был компьютерный класс Yamaha MSX1 (по знакомству; там преподавал отец старшего товарища, и я ему безмерно благодарен). Молодое поколение не знает, наверное, что это было. 64KB памяти, восьмибитный микропроцессор Z80, зашитый в ROM интерпретатор Бейсика, который запускался по умолчанию, когда включали компьютер. Один центральный компьютер с цветным экраном (!!!) и дисководом, и дюжина периферийных, с монохромным зеленым монитором и приводом для чтения программ с магнитофонных кассет. Все компьютеры объединены в локальную сеть, и с центрального (который простым смертным не доверяли) можно было запускать программы на периферийных.

Моими первыми настоящими языками были Бейсик и ассемблер Z80. Первыми серьезными программами были простые игрушки, а также программа на Бейсике для вычисления числа пи, которой я гордился; она пользовалась, если не ошибаюсь, формулой Мэчина, про которую я сам нашел и прочитал в математической энциклопедии после того, как вначале попробовал более простую формулу, и убедился, что она очень медленно сходится. Когда я в 15 лет уехал в Израиль, то взял с собой трехдюймовую дискету, на которой было несколько любимых игрушек и исходники этой программы; эта дискета потом потерялась.

На MSX можно было делать довольно мощные игрушки на Бейсике благодаря аппаратной поддержке спрайтов (небольших битмапов, которые записывались отдельно в видеоконтроллер, и потом двигались по экрану атомарными операциями, заслоняя друг друга в определенном порядке). Перерисовывать весь экран несколько раз в секунду не получилось бы, Бейсик не успевал, но спрайты двигать было легко. Когда мне стало не хватать скорости, я начал добавлять куски на ассемблере, вставленные прямо из Бейсика (командой POKE). Потом я освоил операционные системы MSX-DOS (вариант MS-DOS 1.0) и CP/M, которые можно было загрузить из дискеты или кассеты вместо Бейсика. На ассемблере в них можно было писать целые отдельные программы. Довольно скоро в пединституте установили второй класс компьютеров помощнее, MSX2 (128KB памяти!!!). А еще через год, когда мне было 14, такой же класс установили даже в моей школе.

Постепенно я перешел на Турбо Паскаль, но не могу вспомнить, какие программы я на нем писал. А в 15 лет я уехал в Израиль, где про MSX никто ничего не знал. Через несколько месяцев мы купил свой собственный компьютер (!!!), он был на основе Intel 80486DX.

Расскажите о том, с чего вы начали программировать, и какие первые нетривиальные программы писали?

(P.S. у меня была похожая запись в прошлом, но там говорили почти исключительно о компьютерах, а в этой мне захотелось вспомнить именно программы, которые я писал)