Путь химика в программирование
От: Pavel Dvorkin Россия  
Дата: 09.02.05 09:23
Оценка: 165 (18) +1
#Имя: FAQ.Learningtofly.PavelDvorkin.part1
Передумал и решил написать сегодня.

Закончив школу, я, как и собирался, поступил на химический факультет Томского Университета. Пришлось для этого уехать из дома (в Омске тогда университета не было). Благополучно проучился 3 года, занимаясь переливанием из колб в пробирки и обратно и ни о каких компьютерах не помышляя. Все, что я о них знал — это то, что они существуют. Так и прожил я до своих 20 лет.
Впрочем, нет. С расчетами я все же столкнулся. На 3 курсе у нас была вычислительная математика. Что нам читали на лекциях — хоть убей, не помню, а вот когда мы на практику пришли, то сразу почувствовали, что это дело серьезное. В учебном классе стояли штук 15 машин. Если думаете, что ПЭВМ — глубоко ошибаетесь. Дело было в 1975 году, и никаких ПЭВМ тогда в природе не было. А назывались эти штуки (как сейчас помню) "Полноклавишные полуавтоматические вычислительные машины".
Представьте себе кассовый аппарат, но не нынешний, а советских времен. Представили ? Теперь увеличьте число клавиш в каждом ряду до 20-30, добавьте кнопки плюс, минус, умножить , разделить и равно и получите полное представление. Надо было на одном ряду этих кнопок набрать первое число, на другом — второе, нажать плюс, к примеру, и машина тут же начинала тарахтеть. Тарахтела она с полминуты (а их 15 штук, так что шум стоял приличный), после чего начинали вращаться колесики с цифрами и, довращавшись до нужного положения, показывали результат. Это в лучшем случае. В худшем тарахтение было бесконечным, и единственным способом ее успокоить было выдернуть шнур из розетки. Потом вызывался мастер, он что-то в ней чинил, и можно было тарахтеть дальше.
Тем не менее все же считать можно было. Выдали каждому по задаче, мне досталось — рассчитать коэффициент корреляции линейной зависимости растворимости какой-то соли от температуры. В общем, 5 сумм подсчитать нужно, а потом несложные формулы. Потарахтела моя машина, подсчитала эти суммы, умножил я и разделил что на что полагается и получился у меня коэффициент корреляции 1.001.
Поскольку что это такое, я понимал весьма смутно, то результат этот меня никак не смутил, и, недолго думая, я пошел преподавателю эту работу сдавать. Естественно, он у меня ее не принял, несмотря на мои заверения, что машина тарахтела как полагается. Как я ни пытался доказать ему, что я все считал правильно — он даже и слушать не хотел. В общем, я на него сильно обиделся, но делать нечего — пришлось тарахтеть заново. На этот раз коэффициент получился равным 0.999 , и в таком виде работа была принята. Получил я зачет и вышел из этого "компьютерного класса" в твердой уверенности, что мне никогда больше этим заниматься не придется. Вернулся к своим колбам и пробиркам. Так прошло еще полгода.

Когда я заканчивал 3 курс, химическому факультету пришла в голову мысль купить ЭВМ. Купили, называлась она Мир-2, киевского производства. Довольно своеобразная по тем временам машина. Ну память, ладно, 8 КБайт , хотя слова "байт" тогда у нас не было. Быстродействие не помню, небольшое, конечно. Но что интересно — не имела ассемблера вообще. Внутренний язык был изоморфен внешнему и интерпретировался. Причем язык (Аналитик) был достаточно высокого уровня, позволял не только то, что обычно позволяют языки арифметического типа, но и применение алгебраических преобразований к формулам — т.е. можно было применит к формуле некоторые преобразования, а потом по ней посчитать. Можно было даже неопределенные интегралы вычислять. Конечно, сейчас, когда есть MathCad, этим никого не удивишь, но ведь это было в 1975 году! Говорили, что даже американцы купили у нас один экземпляр этой машины, можете себе представить!

В общем, поскольку факультет купил эту машину, возник вопрос, кто на ней считать будет. Решено было сделать отдельную группу студентов (а у нас как раз после 3 курса происходило перераспределение по специализациям) из 5 человек, куда пригласили и меня. Я, недолго думая, согласился, не понимая, что тем самым я определил весь свой жизненный путь

С отдельной группой все же не вышло, поэтому оставили нас на своих кафедрах (я попал на органику) и изменили нам учебные планы, убрав ряд курсов и добавив другие (программирование, выч. математика и кое-что еще). Потом ряд из этих добавленных курсов не состоялся, но и на свои мы тоже, конечно, не пошли. В общем, прожили мы 4 курс чудесно — на занятия ходили, если хотели, и зачеты тоже сдавали, если хотели. Один зачет, помню, все намеревались сдавать (надо было преподавателя найти, он был из другого института), но так и не собрались — никто и не вспомнил.
Все же прочитали нам Алгол-60, Фортран, этот самый Аналитик, выч. математику, пустили на Мир-2 и на ВЦ Томского ГУ, где тогда стояли 2 машины — М-220 и БЭСМ-4. На Мир-2 сразу же возник конфуз. Запустил я свою программу, должна была она считаться минуту или 2. Сижу, жду. 5 минут проходит, 10 минут проходит, все никак не заканчивается. Надоело мне это. Нажал я на пульте "Останов" (да, именно так это слово выглядело, почему-то в мужском роде), а потом "Вывод значений". После этого на пишущую машинку начали выводиться переменные. Не как-нибудь, а с именами, типа x = 1234, y[1] = 5678 и т.д. Я же говорил, что у системы не было ассемблера, а внутренний язык был высокого уровня. Посмотрел я на эти переменные — глаза на лоб полезли. Печатались они в формате с фиксированной запятой и знаков до этой запятой было примерно несколько сотен
Дело в том, что у машины не только внутренний язык был высокого уровня. У нее еще и не было фиксированного размера ячейки памяти. Иными словами (в современных терминах) число занимало 4 байта, пока ему этого хватало, а когда не хватало, то вместо нормального overflow числу давали 8 байт, потом 16 и т.д, пока оно всю память не займет. Итерационный процесс у меня разошелся, контроль я не поставил, ну вот и начали числа увеличиваться. Долго я еще мог ждать
Освоились мы понемногу с этой Мир-2 и решили выходить на большую дорогу. На М-220 и БЭСМ-4 то есть. У них как-никак было памяти побольше, 4096 45-битных ячеек (почему именно 45 бит — никто не знал), и даже еще 4096 таких же ячеек (это называлось КУБ 2, в отличие от КУБа 1), но с этим вторым кубом компилятор работать не умел (т.е. откомпилированные программы его не могли использовать), и я с этим КУБом 1 так и не научился работать.

Писали мы на Алголе, потом на Фортране-2. К машинному залу нас близко не подпускали, колоды перфокарт клались в ящик, а утром в ячейке шкафа можно было ее забрать вместе с распечаткой. После этого исправлялись синтаксические и прочие ошибки, колода клалась в ящик, и до следующего утра. Между прочим, в этом был и свой плюс — надо было как следует продумать, что собираешься делать, иначе день терялся из-за пустяков.

К этому времени вся затея с нашей группой химиков-программистов как-то начала разваливаться. Проще говоря, нас по инерции чему-то доучивали, но реальное руководство со стороны преподавателей практически прекратилось. Какие-то нелады, я даже не в курсе, что там было.
Между тем, я все же студент кафедры органической химии, и пора делать курсовую работу. Прихожу я к своему научному руководителю, а он в курсе, что я специализируюсь по ЭВМ , ну вот и дает мне некую распечатку программы для БЭСМ-6, которую надо заставить работать здесь на этой М-220. Сам он программирование не знает.

Продолжение следует

With best regards
Pavel Dvorkin
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.