1965 (germanych) wrote,
1965
germanych

Как я научился программировать. Часть 3



Раньше к Москве подлетать было интереснее, чем сейчас. Торжественнее как-то. Летишь, и вдруг торжественный голос по внутренней связи объявляет: «Товарищи, наш самолёт подлетает к столице нашей Родины городу-герою Москва…» и далее следует небольшой рассказ про количество жителей, наличие фабрик и заводов и что-то ещё такое. Точнее я уже не помню. Особенно пробивало, когда не был в Москве 2 года и летишь из-за тридевяти земель, из самой Читы.

На ближних подступах к столице нашей Родины городу-герою Москва я заблаговременно смотался в туалет, где пришил на пэшуху новую подшиву – её я заготовил ещё в части для такого торжественного случая. Вообще-то солдатам было положено увольняться в парадке. Но я считал парадку не достаточно красивой для того, чтобы возвращаться домой. А вот п/ш, да ещё с новенькой подшивой с кембриком – самое то. Поэтому никто меня не осудит за то, что я убыл домой в пэшухе. И, кстати, прибыл в ней же.

И вот значит самолёт касается бетонных плит ВПП, подруливает куда положено, подают трап и все двигаются гуськом к выходу. А на улице уже темень. И я выкатываюсь из дверей и вижу огромные светящиеся буквы «МОСКВА – ДОМОДЕДОВО» и чуть не падаю с трапа. Расчувствовался, понимаешь. А на улице 7 ноября. Всенародный праздник. А я как во сне. Столько ждал этого дня, что никак не могу поверить, что это не галлюцинация и не сон. Выдвигаюсь на площадь, следую к стоянкам такси и осведомляюсь о возможности убыть со всей возможной скоростью в сторону города Москва. Таксисты лыбятся и называют несуразные цены. Один сжалился и объявил 30 рублей. Поскольку в данный момент деньги для меня ещё не имеют никакой ценности, я соглашаюсь и мы мчимся по полупустой трассе – в те времена дорога из Домодедово в Москву была ещё легко проходимой для автотранспорта.

Поскольку я не присылал телеграмму о том, что дембельнулся, то матушка в этот день на работе и мы катим на всех парах в сторону Калининского проспекта. Такой у меня был план – свалиться как снег на голову. И я смотрю в окно на праздничную Москву и всё ещё никак не могу поверить, что я дома. И вот мы на Калининском. Таксист берёт с меня четвертак вместо тридцатки и ещё дарит на прощание какую-то импортную зажигалку. И вот я посреди Калининского проспекта. Весь из себя такой в шинели, в наглаженной шапке, в сапогах и с дипломатом в руке. Ну в общем дурак-дураком. Для начала просто иду по проспекту и тупо зырю на гуляющую публику. Публика почти сплошь одна молодёжь. Одеты как-то совсем непривычно. В 1984-м, когда я уходил, как-то не так одевались. Все весёлые. Я подхожу к телефону-автомату и набираю с детства зазубренный дом материной работы. Мать подходит к телефону и я выдаю в эфир заранее приготовленную фразу: «Я вернулся, мама». И иду ко входу в кафе «Бирюса». Ну и там конечно душераздирающая сцена, и слёзы (материнские), и обнимания. А очередь – сплошь из молодёжи – с интересом это всё наблюдает. И дальше мы идём в кафе и со мной начинает пить весь личный состав – начиная от поваров и кончая официантами. Последнее что я помню, чей-то весёлый комментарий «ну дембель уже готов». И отключаюсь.

Включаюсь я уже на следующее утро в своей кровати, в своей комнате, в которой не был ровно два года. Комната кажется мне на удивление маленькой, даже малюсенькой. Некоторое время я лежу и разглядываю окружающее пространство. Потом одеваюсь, созваниваюсь с друзьями и к вечеру я снова готов. И на следующий день, и на другой, и на пятый и чуть ли не на десятый. В итоге в родной институт сдаваться я пошёл только к кону ноября.


В деканате с интересом изучили мои документы и задали вопрос – «А почему вы только сейчас пришли восстанавливаться? Мы ведь запрос в вашу часть ещё в сентябре послали». Я мотивированно объясняю, что раньше чем меня отпустили я прибыть не мог. «Ну а почему вы не пришли на следующий день после праздников, ведь вы уже в Москве были?» Я отвечаю что-то не очень членораздельное. В общем меня восстанавливают, но выражают сомнения в том, что я смогу сдать сессию, которая состоится уже через месяц с небольшим. В ответ я обдаю всех волной оптимизма и верой в собственные силы, с чем и убываю.

На следующий день я сижу на лекции по программированию и рассказываю друзьям про свои армейские похождения. Мы уссываемся до полного изнеможения, ни на кого не обращая внимания. В итоге лектор предлагает мне покинуть лекционный зал. Я с лёгким сердцем подчиняюсь. Мне ещё непривычна эта система наказаний. Потом начинается семинар по программированию, который ведёт не лектор, а какой-то аспирант в очках. Всё повторяется с самого начала. Аспирант с протокольной физиономией сообщает мне: «я думаю Вы не сдадите экзамен». После некоторых размышлений я прихожу к выводу, что армейский способ решения таких недоразумений в данном случае не прокатит и после занятий иду на кафедру и жду лектора. После этого рассыпаюсь перед ним в извинениях и прошу снабдить меня списком литературы, который мне необходимо изучить для того, чтобы сдать экзамен. Лектор очень радуется моему душевному порыву и перечисляет мне ряд учебников. Я отвечаю «йаволь» и сразу же забываю все названия. Да и, говоря откровенно, у меня и в мыслях не было читать эти учебники. Просто, как это говорили у нас в части, надо было «рвануть жопу на британский флаг» перед начальством.

Начинается сессия. Об уровне моих знаний по программированию в ту пору говорит, например, такой факт. Перед самым экзаменом, возле кабинета, я бесконечно уточнял у своих однокурсниц, какой из операторов READ и WRITE предназначен для чтения данных, а какой для записи. И тут же забывал, и снова уточнял. Армия меня снабдила многими полезными знаниями и навыками, но вот что касается программирования, то даже те крупицы, которые у меня были до призыва, за два года улетучились бесследно. Ну то есть абсолютно. Тем не менее каким-то невероятным чудом сессию я сдал. Причём даже без двоек.

За моё отсутствие в институте немало чего изменилось. Во-первых, юношей в группах стало больше, чем в ту пору, когда я учился на первом курсе. Во-вторых, комитет комсомола института стал проводить больше всяких развлекательных мероприятий. В-третьих, теперь лабораторные по программированию надо было самому набивать в специальном классе терминалов, а не записывать их на специальных бланках. Для меня это, признаюсь, было даже хуже. Потому что если записать программу (пусть и с ошибками) на бланке и потом сдать в окошко я мог, то работать с терминалом я не умел категорически. После занятий все умные мальчики и девочки просиживали в этом зале, что-то там такое набивали, а я только мешался под ногами, что называется.

Кстати, в то стародавнее время набить текст программы на терминале было не такой уж простой задачей, как сейчас. Потому что конечно никаких текстовых редакторов не было. Программа вводилась построчно. Вводишь одну строку, называешь ENTER. Она попадает в память. Потом следующую, пятую, десятую. Если заметил ошибку в какой-то строке, то не можешь подвести туда курсор и исправить. Надо было ввести команду с номером исправляемой строки. После чего снова сохранить её в памяти. В общем, ещё та радость. В общем такая работа у меня не вызывала никаких приятных чувств. И когда я уже стал серьёзно задумываться, а не промахнулся ли я с выбором института, я вдруг увидел чудо. Вернее даже так – Чудо!

Как-то преподаватель по программированию (это уже был другой препод), решил принять у меня повторный зачёт в кабинете, на котором висела табличка «Лаборатория персональной техники». Вообще-то к тому времени мы уже начали осваивать персональные компьютеры. Это были ГДРовские машины Robotron-1715. Не машина, а зверь была: оперативная память 64 Кбайт, экран исключительно зелёно-текстовый (никакой там вам пиксельной графики), жёсткого диска нет, а есть два дисковода на 5-дюймовые дискеты. Манипулятора типа мышь тоже не было. Впрочем, в ту пору мы про такой манипулятор и понятия не имели. А равным образом и про пиксельную графику. Впрочем, поскольку в кодовой таблице были символы псевдографики, то некоторые умельцы писали игрушки с использованием псевдографики. Но это уже несколько позже. Дискет, кстати, тоже ни у кого не было. Шутите что ли? Какие дискеты? Дискеты были только у лаборанта в сейфе и он выдавал их для выполнения работы. Зато к Robotron-1715 были подключены матричные принтеры, которые могли печатать в том числе графические изображения. После ЕСовских АЦПУ мне эти матричные принтеры казались чудом техники. Как, впрочем, и Роботроны.

Но в целом машина была конечно довольно невзрачная. И вот прихожу я на пересдачу, открываю дверь и буквально столбенею. В кабинете стоит две чудо-машины IBM. И одна из них включена и какой-то чувак на ней рубится изо всех сил в sopwith. Что это такое? Вот этот сайт даст наглядное представление: www.sopwith.org. Я тогда конечно не знал ни что это за компьютеры, ни что это за игрушка. И вообще ничего не знал. Я просто видел чудо из чудес. Ну и конечно я не столько сдавал зачёт, сколько вертелся, оборачиваясь чтобы наблюдать чудо. Да и препод тоже не очень мною интересовался. Там несколько преподавателей было и они стали оживлённо обсуждать, как алгоритмически сделан какой-то визуальный эффект. И вот тут мне по настоящему захотелось работать на таких удивительных устройствах.

Я думаю, что любому (или почти любому) молодому человеку, который изучает одновременно матстатистику и программированию, однажды приходит в голову Идея. Идея очень простоя – взять и написать программу, которая будет предсказывать тиражи Спортлото. Ну а что? Если рассчитать вероятность как будто не представляется очень сложным, если на руках большое количество предыдущих опытов (то бишь результатов тиражей), то весь вопрос собственности лишь в трудоёмкости подсчётов. Но трудоёмкость мало чего стоит, если все данные введены в память компьютера и есть программа, которая их – рррраз – и просчитает. Всё очень просто. Во всяком случае именно такие мысли посетили меня, когда в новом семестре у нас началась статистика и я стал по учебнику Вентцель (великая Елена Сергеевна!) штудировать всё, что связано с нахождением вероятности случайного события.

Я внутренне ликовал, читая подробные разборы примерно таких примеров: «Некто выбирает наугад 6 клеток Спортлото (6 из 49). Найти вероятность того, что он правильно угадает из числа выигравших 6 номеров: а) ровно три, б) ровно четыре, в) ровно пять, г) ровно шесть. Решение. … применяя формулу (1.2.3), полагая в ней К=49, М=6, а m – последовательно равным 3, 4, 5 и 6 получим…» и т.д.

«Блин! – Думал я. – Ну как же это до меня никто не додумался взять это всё и запрограммировать!». Хаха. Никто. Это я потом узнал, сколько таких же любителей лёгкой наживы думали именно об этом же самом и с этим же самым учебником.

Конечно для предсказывания результата было мало найти вероятность появлений той или иной последовательности. Чтобы пояснить что называется «на пальцах» совсем упрощённо, приведу пример бросания монетки. Перед любым броском вероятность появления орал или решки равна ровно 0,5 – ведь вариантов всего два. Однако, если один человек бросает монетку три раза подряд и три раза подряд выпал, скажем, орёл, то отгадывающий на четвёртом броска какой вариант выберет – орла или решку? Скорее всего решку, потому что любой интуитивно понимает, что если уже трижды выпадал орёл, то почти невероятно, чтобы орёл выпал и в четвёртый раз подряд. А если имеется очень большое количество опытов, в виде такой, например, последовательности (О – орёл, Р – решка): О-О-Р-О-Р-О-Р-Р-Р-О-Р-Р-О-О-Р-О-Р-Р-Р-О-О-О-О-Р-Р-О-Р-О-Р-Р-О, то возможно ли сделать математически обоснованное предположение, что выпадет при следующем броске? В принципе, рассуждал я, возможно. А если речь идёт не о двух, а о 49 вариантах? А если речь идёт о шестичисельной комбинации, выбираемой из 49 чисел? Алгоритмически это весьма интересная задача. И в общем можно с достаточной степенью вероятности предсказать появление числа, скажем, в 3-5 ближайших опытах. Но штука-то в том, что надо предсказать появление этого числа в одном конкретном опыта (т.е. ближайшем тираже), а вернее даже не одного числа, а хотя бы четырёх чисел. И если бы я немного раскинул мозгами, то пришёл бы к выводу, что если бы эту задачу можно было решить, то лотереи типа «Спортлото» давно разорились бы. Однако они живут и здравствуют. Несмотря ни на какие, даже самые мощные компьютеры.

Но меня уже захватил водоворот скорой наживы. Я вгрызался в такие понятия, как медиана, дисперсии смещённые и несмещённые, коэффициент вариации, среднее отклонение от среднего и от медианы, начальные и центральные моменты n-го порядка и много какие ещё. Я был уверен, что если привлечь все эти показатели и правильно проанализировать результат обобщения достаточно большого количества тиражей, то дело будет в шляпе.

Но было две проблемы.

Решение первой проблемы я нашёл достаточно быстро. Хотя не скажу, что это было простое решение. Результаты тиражей. Дело в том, что для более или менее вменяемых результатов данных по двум-трём тиражам было совершенно недостаточно. Надо было иметь результаты десятков, ещё лучше сотен тиражей. К счастью, все результаты тиражей «Спортлото» публиковались в газетах. Кажется это была «Московская правда» или «Вечерняя Москва» или что-то в этом роде. Я пошёл в ближайший читальный зал и взял подшивку этой газеты за несколько предыдущих лет. После чего кропотливо стал переписывать результаты тиражей (по моему тиражи проводились раз в неделю). Сейчас, оглядываясь назад на свой титанический труд, и вспоминая скептический взгляд библиотекарши, который она время от времени бросала на меня, догадываюсь, что наверное я был далеко не первым наивным идиотом, который проделывает подобные манипуляции. Тем не менее я мужественно переписал всё, что смог добыть. Правда меня огорчило, что нескольких газет в подшивками не хватало, то есть исходные данные становились неполными, что должно было отразиться на погрешности расчётов. Но всё же, успокаивал я себя, что такое два-три отсутствующих тиража, когда я выписал такой ворох результатов.

Вторая проблема была куда сложнее. Чтобы приступить к программированию задачи, надо было – да-да, надо было уметь программировать. А я не умел. Ну то есть к этому времени не то, чтобы я был совсем полный ноль – я мог в листинге с горем пополам объяснить какой оператор что делает – но так чтобы взять и самостоятельно написать программу от начала и до конца – это извините.

Обо всём прочем, пожалуй, как-нибудь в другой раз. А то время позднее.
Tags: По волнам моей памяти
Subscribe
promo germanych август 22, 01:07 146
Buy for 100 tokens
На фото: кадр из фильма «Что такое Совок?» Итак, свершилось. Наконец я домонтировал его. И приглашаю в кинозал на просмотр фильма-размышления « Что такое Совок?» Это мой первый опыт такого масштабного видеопроекта. Так это и первый опыт использования…
  • 62 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
  • 62 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →

Comments for this post were locked by the author