Чистота кода
Программирование – философия и практика
Владимир Хохлов

© Владимир Хохлов, 2024

ISBN 978-5-0062-5333-9

Создано в интеллектуальной издательской системе Ridero

ЧИСТОТА КОДА

ФИЛОСОФИЯ И ПРАКТИКА ПРОГРАММИРОВАНИЯ

Часть 1

ПРЕДИСЛОВИЕ

Для кого эта книга? Для людей. Больше – для начинающих путь в программисты. И для опытных узких спецов, чтобы обозреть окрестности своей специальности.

Но и – для машин. Ведь машины уже активно интересуются людьми… Поисковые роботы зачастую начинают жить за пределами заложенного в них алгоритма и узнают о предпочтениях пользователя очень много. И начинают вести его по жизни – предлагать то – чего он сам желал, но не смог ещё сформулировать вопрос. Ведь популярный вопрос 60-х годов 20-го века: «Может ли машина мыслить?», уже отпал. Да. Может…

Хочется надеяться – что эта книжка будет полезна и людям и машинам. Чтобы выстроить свои знания в систему, набрести на новые свои мысли. Усилить свой образ… Ведь образование и даёт возможность создавать, впитывая новые знания и генерируя новые свои идеи, когда большая часть знаний, полученных прежде, уже забыта.

ВВЕДЕНИЕ

Профессор Трахтенброт в Новосибирском госуниверситете в начале семидесятых годов 20го века на семинаре, который он поименовал просто: «Искусственный интеллект», регулярно произносил фразу: «Мы занимаемся компьютерсайнс». Употребляя именно этот глагол – «занимаемся». Не «изучаем» или «рассматриваем». Хотя можно было сказать и – «конструируем». Доклады слушатели семинара часто готовили на предложенную Борисом Авраамовичем тему, довольно экзотические. Типа «Многомерная модель шагающего робота». Мне как-то досталась тема «Двухмерный автомат Неймана». Подготовил. Это было в начале 70-х, эпоха интернета и поисковых роботов только забрезжила.

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

А вычислительные машины были ещё довольно медленные, но очень крупные по размерам. В университете стояла ЭВМ БЭСМ-4. Ввод – с перфоленты. Исправить один ошибочный символ – надо перфорировать весь рулон. Программировали – на языке АЛГОЛ. Вполне симпатичном, кстати. Мы были в середине пути – от первых электронных вычислительных машин 40-х – 50-х годов и ещё помнили истоки программирования. Легко было много знать. Информации по теме было гораздо меньше.

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

Но в первую неделю занятий я осознал, что я – пользователь, может быть чуть продвинутый, имевший практику программирования на языках Алгол и Фортран, писавший программы на языке низкого уровня – Ассемблере ЕС ЭВМ, где часть оператора была схожа с машинной командой, но имевшего мнемонику из одной-трёх латинских букв, которая обозначала название команды, а среди курсантов попались асы системного программирования. При этом из 25-ти курсантов – 20 были девушки. Дамы 25-30-ти лет. Среди представителей других профессий – от домохозяек до пилотов авиации образ программиста сложился под влиянием кино, как непричёсанный молодой парень в толстовке и домашних тапочках на босу ногу. Наши дамы на курсе выглядели вполне нарядно и даже изысканно, что заставляло местных водителей проскочив мимо остановки на четвёртом километре военно-грузинской дороги, сдавать назад и приглашать подвезти. Совершенно бескорыстно. Однако большинство из них курили и утро встречали на веранде у наших скромных номеров турбазы с большой кружкой кофе и сигаретой. Но когда они заговаривали между собой, многих слов в их разговоре я не знал. Терминология уже разделилась и обогатилась новым слэнгом. Как в наше время если вам случится услышать разговор двух разработчиков драйверов – программ для взаимодействия устройств с операционными системами компьютеров или смартфонов, вы можете подумать, что это два иностранца из какой-то экзотической страны.

ИСТОРИЯ ПРОГРАММИРОВАНИЯ ДЛЯ ЭЛЕКТРОННЫХ ВЫЧИСЛИТЕЛЬНЫХ МАШИН

Уважаемый читатель, прежде, чем нам с вами беседовать, надо договориться по терминологии. Если Вам скучно это читать, поскольку – «и так всё знаю» – можно перейти к чтению первой главы. Но я однажды не сдал зачёт, когда профессор – преподаватель матанализа сказал: «Вы используете в доказательстве теоремы некий «эпсилон». Вы должны были в самом начале оговорить его – «зададимся произвольным «эпсилоном» больше нуля».

Сначала – про слова. Как сказано не мной: «Придумай имя и познаешь суть».

Слово «программа» происходит от греческого πρόγραμμα и означало действительно то, что и теперь продают в театрах перед балетом или оперой – программу представления в театре. В русский язык слово попало из французского programme. Потом слово пошло в народ и стало применяться кругом – от программы скачек и телепередач до программы Партии. Для вычислительных устройств это слово не применялось, пока были абаки-счёты-арифмометры. Но когда появились счетные машины, стали строить алгоритмы действий и стали называть их «ПРОГРАММОЙ».

Вот об этих программах и пойдёт речь.

Тут стоит немного остановиться и на слове «компьютерные». Само слово «КОМПЬЮТЕР», пошло от латинского computare (считать, вычислять). При этом «компьютер» – означало человека, как ещё недавно в широко распространённой профессии – счетовод. В книге «Золотой телёнок» миллионер Корейко служил счетоводом. В разных странах оно имело местные синонимы – определения. В Советском Союзе в 60-е – 80-е годы в ходу была аббревиатура ЭВМ – электронная вычислительная машина. Слово «компьютер» прижилось в СССР только когда появились «ПиСи» – персональные компьютеры. Архитектура вычислительных машин была разной. Но процессор до сей поры в большинстве компьютеров основан на принципе автомата Неймана.

ГЛАВА 1

ВЫЧИСЛИТЕЛЬНЫЕ МАШИНЫ И УСТРОЙСТВА

Идеология науки о вычислительных процессах начинается с книги Норберта Винера «Кибернетика или управление и связь в животном и машине».

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

Но в эпоху ламповых радиоприёмников построить электронную вычислительную машину было большой проблемой.

Устройства, анализирующие последовательность сигналов уже были. Машина, которую Тьюринг применил во Вторую мировую войну расшифровывала немецкие радиограммы для морских судов и для воинских соединений. Шифры менялись едва не ежечасно случайным образом и вручную их дешифровать не представлялось возможным.

Вычисления в первой половине 20-го века производились не только на конторских счётах, но и на замечательных изобретениях – логарифмической линейке и на механическом арифмометре «Феликс». Логарифмическая линейка изготавливалась в разных формах и размерах. Позволяла умножать, делить, выполнять тригонометрические функции и прочее.

А вычисления на электронных машинах начинались с трудом. Транзисторы ещё не придумали. Всё строилось на электронных лампах. А из сотен ламп, если одна выходила из строя, всё надо было проверять, искать, заменять неисправность. И информацию надо было вводить – прямо с пульта ЭВМ. Потом научились делать считыватели. Мой сослуживец обучался в конце шестидесятых в Пермском университете. У них стояла ЭВМ, которая считывала код программы с киноленты. Соврал символ – снимай на новую плёнку, проявляй-закрепляй. Потом научились вводить с перфоленты. Стало проще. Но всё же файлы последовательного доступа постепенно уступили место файлам прямого доступа. Люди же читали книги. А ведь это и есть замечательный образец файла прямого доступа – номер страницы, номер строки. Выборка. Не то, что в древних свитках. И кто-то придумал или вспомнил – перфокарты! 80 байтов на одной картонке… Эти колоды карт, набитые старательными девушками на специальных перфорирующих устройствах, приносили в машинный зал и загружали в устройство ввода.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.