12+
Чистота кода

Бесплатный фрагмент - Чистота кода

Программирование — философия и практика

Объем: 36 бумажных стр.

Формат: epub, fb2, pdfRead, mobi

Подробнее

ЧИСТОТА КОДА

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

Часть 1

ПРЕДИСЛОВИЕ

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

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

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

ВВЕДЕНИЕ

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

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

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

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

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

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

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

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

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

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

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

ГЛАВА 1

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

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

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

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

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

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

Бесплатный фрагмент закончился.

Купите книгу, чтобы продолжить чтение.