Текст книги "Чистота кода. Программирование – философия и практика"
Автор книги: Владимир Хохлов
Жанр: Компьютеры: прочее, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 1 (всего у книги 2 страниц) [доступный отрывок для чтения: 1 страниц]
Чистота кода
Программирование – философия и практика
Владимир Хохлов
© Владимир Хохлов, 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 байтов на одной картонке… Эти колоды карт, набитые старательными девушками на специальных перфорирующих устройствах, приносили в машинный зал и загружали в устройство ввода.
ЭТАПЫ РАЗВИТИЯ ПРОЦЕССОРОВ И КОДАРост производительности компьютеров показывает эмпирический закон Мура, который оценил рост числа транзисторов на интегральной плате примерно с 1970 года и сформулировал: " число транзисторов на кристалле удваивается каждые 24 месяца.» По его анализу с 1970 по 2020 год плотность транзисторов выросла в 50 миллионов раз. А производительность процессоров, согласно прогнозу Давида Хауса, с учетом увеличения тактовых частот, удваивается каждые 18 месяцев. Этот рост по моему ощущению опережает скорость развития софта. Ведь многие благополучно пользуются операционными системами с возрастом 10 лет. Вспоминаю ПК на 286 процессоре, там резкое ускорение «мыши» по коврику приводило процессор в ступор, комп зависал и требовалась перезагрузка отключением из электрической розетки. Нынешние процессоры спокойно переносят и дёргание манипуляторов и прочие безобразия. Но процессоры для «лаптопов» – настольных и мобильных (планшетов и ноутбуков) отстают в скорости развития от процессоров для смартфонов. Да и софт для смартфонов обновляется быстрее.
Ну, это я отвлёкся… На «железо». А оно предназначено, чтобы переварить «софт» – воздух. Программу… А её еще надо создать.
ГЛАВА 2
ЯЗЫКИ ПРОГРАММИРОВАНИЯ И КОМПИЛЯТОРЫ
Язык программирования – это название компилятора или как раньше называли – транслятора, переводящего алгоритм (последовательность действий) описанный некими, понятными человеку-программисту знаками, – в набор кодов, понятный вычислительной машине или устройству.
Для первых вычислительных машин команды писались в «кодах» – или просто в двоичных, типа «1011100010001100» или в шестнадцатеричных, типа «8A57FE2C», которые легко переводились в двоичный код. Для этого алгоритм из блок-схемы надо было перевести в коды ЭВМ. В набор единиц и нулей. Потом научились группировать нули-единицы (биты) – по шестнадцать вариантов (от 0 до F), а 8-мибитовую комбинацию (от 00 до FF (от 0 до 255)) назвали – байт.
Поскольку программирование выросло из математических дисциплин, от арифметики и тригонометрии до теории рядов, разделов высшей алгебры и математической логики и применялось в первую очередь для вычислительных задач, то и языки и трансляторы были в основном сориентированы на алгоритмы вычислений. АЛГОЛ, ФОРТРАН, КОБОЛ были легко понятны для людей, изучавших в ВУЗе математические дисциплины. С расширением областей применения компьютеров – от контроля качества в реальном времени до управления в «умных устройствах», от обработки изображений до создания поисковых роботов, появились десятки новых специализированных и универсальных языков. Стоит набрать в строке поиска «популярные языки программирования» – выводятся списки названий, среди которых каждый найдёт не знакомое ему. И это понятно, потому что даже опытные действующие программисты работают с двумя-тремя языками для тех задач, которые им надо порешать. В энциклопедии языков мне попалось описание языка Brainfuck в котором всего 8 команд, каждая из которых записывается одним символом. Он вполне универсален, но программировать на нём очень утомительно. Словно тебе в смартфон установили вместо ОС Андроид – машину Тьюринга.
АДЕКВАТНОСТЬ КОДА ПРОГРАММПока программы для ЭВМ писались в кодах машины их адекватность алгоритму не подвергалась сомнению. И если программа воспринималась неправильно грешили скорее на «железо», ошибки в процессоре. Но когда Ляпунов в начале пятидесятых годов придумал операторный метод, появились специализированные языки программирования, трансляторы с языка в коды машины. Встал вопрос и об адекватности кода – верно ли программа-транслятор перевела исходный код в коды ЭВМ… То-есть с упрощением работы по программированию задачи для расчётов на ЭВМ, появились программисты – посредники, разработчики трансляторов. А с совершенствованием устройств ввода и вывода информации из процессора ЭВМ потребовались новые программы и новые специалисты.
И в результате появления такой многоступенчатости потребовалась систематизация знаний о последовательности и результатах процессов. И над ними выросла отдельная наука о программировании. Нынешние антивирусные программы – фактически плоды этой науки. В ту пору ещё не было понятия «компьютерный вирус». Программистов было довольно мало, да и залезть в чужую колоду из тысяч перфокарт или в пакет магнитных дисков хранимых в отдельной комнате вычислительного центра было бы затруднительно. Вот свои ошибки (баги (блохи) в английской транскрипции) программисты вылавливали порой неделями. Но ошибку в программу могли внести и ошибки в трансляторе и сбои процессора.
ОПЕРАТОРНЫЙ МЕТОДЕсли на настольном компьютере с традиционной операционной системой, просматривая сайт в программе просмотра интернета (браузере), щёлкнуть правой кнопкой мышки, выпадет список действий (меню), где можно увидеть строки – «просмотр кода» и «просмотреть код страницы». Стоит нажать на строку правой кнопкой мыши, и на экране монитора действительно появится набор многочисленных знаков, описывающих порядок действий браузера для демонстрации страницы сайта. Этот набор может испугать начинающего программиста своей огромностью и на первый взгляд – нечитаемостью. Типа – абракадабра… Неужели надо столько написать команд, изучив предварительно язык программирования, чтобы выдать на экран несложную страницу? Не совсем так. Исходный текст, написанный программистом, гораздо короче и компактнее. Но он применяет наборы команд, написанных другими программистами, именуемые «скриптами» или «макрокомандами» запаянными в блок и имеющими своё наименование. А в браузере мы видим код, где эти макрокоманды расшифрованы в свой исходный код.
ГЛАВА 3
ПРОГРАММИСТЫКак человек становится программистом? Казалось бы – окончи ВУЗ или колледж (техникум) или хоть компьютерные курсы онлайн и – вперёд. Ты – программист… Как в том меме – «#тыжпрограммист».
Но сколько и на каком языке ты написал программ? Ты сам придумал тему или тебе дали преподаватели. И что дальше? Искать работу, где возьмут без опыта и знания инструментария или сесть и написать суперпрограмму и попробовать её продать какому-нибудь предприятию или сервису? Это как в истории с художником-портретистом – тебе не закажут портрет, пока ты не написал ни одного портрета. Только после хотя бы одного портрета знакомые изображённого могут подтянуться, последовав его примеру. А до той поры можно утешиться автопортретом. Если Вы изучили-освоили программирование для себя, у Вас есть другая работа и заработок, то можно просто радоваться новому умению знанию. Помню два моих сына в возрасте начальных школьников написали на языке бэйсик две программы – старший изобразил дорожку в виде двух сходящихся вверх прерывистых отрезков, которые мерцали перемещаясь вниз экрана, а младший изобразил силуэт самолетика в проекции сверху. При этом это была статичная картинка. Потом они совместно запустили свои программки на этом компике, который использовал домашний телевизор как монитор и с удовольствием наблюдали как самолётик идёт на взлёт.
Проблема безработных программистов обострилась после распада социалистического лагеря. Во всех странах восточной Европы и бывших союзных республиках экономика была в упадке, торговлишка шла челночная и даже торговля компьютерами не требовала привлечения местных программистов. Поэтому многие в ту пору стали хакерствовать. Реализовывались в «автопортрет» – писали вирусные программы. Помнится больше всего таких хакеров появилось в Болгарии.
Потом постепенно продвинутых программистов стали находить и привлекать крупные компании из Европы и США. Тут кроме умения, способности к быстрому обучению, знания английского, надо было привыкнуть к ментальности и технологии разработок в конкретной компании. Так, например, моя родственница устроилась удалённо в Питерский центр разработки компании «Sun Microsystems». И первые года два она сидела за монитором «вторым номером», ассистентом или как в истребительной авиации – «ведомым». Ведущий писал код, она уточняла нюансы, давала подсказки. По сути они писали код «в четыре руки» и если первый номер выбывал (в отпуск, по болезни или увольнялся), то ассистент становился первым номером и продолжал работу с новым напарником. Это сильно отличалось от работы в советском вычислительном центре, где каждый разработчик самостоятельно доводил програму и в отлаженнном виде сдавал руководителю проекта с сопутствующей документацией.
Как же быть в наше время, что делать, чтобы стать программистом с работой и зарплатой – можете спросить Вы. Если в советское время после окончания учебного заведения молодой специалист направлялся по распределению на предприятие-организацию, где в первый год его пестовали, подготавливая к самостоятельной работе, наставляли и обучали-подсказывали, советовали какую документацию или книги проштудировать. При этом он получал уже зарплату-оклад и по ночам ему как в студенчестве не надо было разгружать вагоны или подрабатывать дворником или охранником.
В наше время вчерашний студент ищет работу, как правило, сам. Бывает – ещё на третьем-четвёртом курсе студент находит через своего руководителя курсовой или дипломной работы занятие, и дипломная работа ложится в его портфолио. Тот «первый портрет на продажу» у него есть. Полезно, обучаясь просматривать на сайтах трудоустройства вакансии, востребованные в регионе, где предполагается проживать. Ибо желательно – чтобы набраться опыта поработать офлайн, когда люди вокруг могут и подсказать и не дадут просто сидеть как у домашнего монитора, отвлекаясь на игрушку в компе или ролики в соцсетях. Это опытный программист, мотивированный интересной темой или повышенной зарплатой может работать и удалённо, иногда за тысячи километров от офиса его компании. В изучении вакансий иногда видишь длинный список требований к претенденту. Если к разработчику кода или базы данных требуют знания двух – трёх языков или платформ, то к системному администратору требуют знания десяти – двенадццати программных инструментов. Если Вам удалось в период убучения сносно овладеть, к примеру платформой JAVA и уже пользовались языком программирования JavaScript, то Вы можете искать работу в веб-разработке, попутно изучив языки разметки страниц HTML и CSS. Значит Вы готовы стать Фронтенд-разработчиком, т.е воплощать в образы элементы страниц сайтов видимых пользователю в браузере, взаимодействуя с дизайнером проекта. Возможно придётся познакомиться с программными инструментами используемыми разработчиками в принявшей Вас в проект или в штат компанией.
Если Вы новичок, т.е. вчерашний студент или курсант, то на Вас не висит груз знания терминологии из двух-трёх языков, с которыми работали в продолжитетельное время. А если Вы уже опытный практик и решили сменить компанию, скажем в связи с переездом в другой город или Ваша родная фирма получила новое задание или у вас на фирме появился новый босс, который решил всё перстроить на новых программных платформах, то надо быть готовым к тому, что я бы назвал «Квази-лексикой».
Если первые языки программирования разрабатывали в основном математики – термины-определения элементов языков были близки к математическим терминам, как «функция» и «операнды», «константы» и «переменные», «массив» и «число», «логическое» и «арифмитическое», «десятичное» и «натуральное». И так далее. Но со временем в разработку компиляторов и программных платформ стали включаться специалисты других профессий – от инженеров и лингвистов до биологов и гидрологов. Так Java была разработа инженерами той же компании SAN, которая в первую очередь разрабатывала и производила мощные рабочие станции для сложных задач. Так вот в JAVe все понятия-термины звучат по-иному. Например вместо «функция» принято использовать термин «метод», который работает с «объектом» в «классе». «Куча (heap)» – все объекты, созданные в вашем приложении. Принцип экономии, присущий инженерным разработкакам отражается в использовании 4х типов целых чисел и 4х типов переменных. Поэтому, прежде чем изучать толстый переводной учебник стоит пройтись по сайтам, где на пальцах объясняют, что такое «классы» и почему переменную надо писать со строчной буквы, а если имя состоит из нескольких слов, начиная со второго его надо писать с заглавной.
Возможно некоторые разработчики сайтов, уже создавшие на продажу не один лендиг, т.е. одностраничный сайт, могут резонно заметить, что стоит ли изучать язык, чтобы писать в кодах, когда есть готовые и доступные конструкторы сайтов. Недавно я сформулировал запрос в поиске «зачем изучать Java если есть Muse». И набрёл в коментах на интересную дискуссию. Автор поста ругал программу Adobe Muse за тяжёлый и «безобразный» код, сгенерированный конструктором, который ему довелось доработать для заказчика. И дальше развернулась дискуссия. Сторонники программирования в кодах поддержали автора поста в том, что программа написанная в кодах по структуре гораздо более стройная, занимает меньше памяти, а значит легче и быстрее загружается и быстрее работает. И зачастую в конструкторе не хватает нужных функций. Тут вот отсутствовало формирование таблиц. Тогда надо писать или искать дополнительнительные виджеты. И легче в нее вносить изменения. А «живой» сайт ведь всегда требует внесения изменений. А сторонники работы с программой-коструктором отвечали, что тут можно за неделю изучить программу и её возможности, набор «виджетов» – своего рода «скриптов» и – вперёд. Заказчику можно быстро соорудить интерактивный макет сайта, который реагирует на все «кнопки», а не просто предлагать скриншоты страниц. А объём, структура и скорость загрузки для лендингов и сайтов-визиток – для заказчика не критично. И изменять мол надо в той же программе, в которой он сконструирован, а не разбирать код, сгенерированный программой-конструтором. На что автор поста возразил, что ему недосуг изучать программу-конструктор, скачивать-устанавливать и ему неизвестна версия программы в которой сделан сайт, ибо в иной версии могут быть нестыковки. В общем обе стороны остались при своём мнении, но самовыразились и иногда получили одобрение с обеих сторон за здравую мысль.
Но сайты сайтам рознь. Google.com ведь тоже, вроде – сайт. Но за внешней оболочкой, видимой пользователю зашедшему на сайт не видно, что стоит в невидимой ему части. Видно только вершинку «айсберга». А скорость обработки функций и запросов обеспечивают многие терабайты программного обеспечения и многие сотни тысяч серверов на всех континентах. А серверы – тоже мощные рабочие станции с запаянным в них ПО.
Но и веб-программирование – это только небольшая часть того океана задач, где требуется разработка программ. Ведь то что зовут «цифровизация», от перевода современных книг и старинных манускриптов в электронные файлы различных форматов до тотальной замены аналогового оборудования, где главенствовали реле и тумблеры-кнопки в оборудование, управляемое программами – «запаянными» в постоянных запоминающих устройствах и в оперативной памяти процессорных устройств.
Думаю, уместно вспомнить как эпоха механических устройств – от ручных прядильных и ткацких станков и тележных колёс (а колесо воистину гениальная придумка) сменилась «веком пара» – от паровых мельниц до пароходов и паровозов. А вот эпохи бензиновых двигателей и электричества затеялись почти одновременно и сильно обогатили друг друга, взаимодействуя и конкурируя во многих видах деятельности людей.
А в эпоху «цифры» – всё меньше физических и мускульных действий. Информация более доступна, действия более точные. И если в паровозе были кочегар и машинист – один бросал уголь в топку печи, разогревая воду до состояния пара а второй управлял скоростью с помощью ручного рычага, то в электровозе машист и помощник управляют локомотивом с помощью электрических тумблеров. Сейчас скоростные поезда и на рельсах и на «магнитных подушках» управляются встроенными компьютерными системами и машинист только следит за параметрами безопасности на экране монитора.
Поэтому вывод простой – будет требоваться всё больше программистов – хороших и разных. Поэтому, если есть у Вас склонность к программированию – то без работы, думаю не останетесь.
В последующих главах (уже второй книги) мы рассмотрим некоторые популярные языки программирования в применении к различным задачам. От расчёта давления в городском водопроводе до поисковых роботов и нейросетей.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?