ITC.UA предлагает вашему вниманию перевод статьи журналиста и программиста Пола Форда“What is Code?”, опубликованной на сайте Bloomberg Businessweek. Этот материал содержит больше 200 тысяч знаков увлекательного текста о том, что такое код, каким он бывает, кем и как разрабатывается. Но самое главное, что Полу Форду удалось сделать живой текст о, казалось бы, уж очень «сухой» теме. Он однозначно пригодится тем, кто не связан с программированием, но в последнее время часто сталкивается с кодом и кодерами, а также тем, кто еще раздумывает, стоит ли учиться программировать. Несмотря на больше, чем 200 тыс знаков с пробелами, мы не стали разбивать статью на несколько частей, так будет проще, если понадобиться к ней возвращаться или сохранить в сервисе для отложенного чтения.
Послание Джоша Тирангиеля
Программное обеспечение было известно еще в 1940-х годах. Это означает, что люди на протяжении нескольких поколений выставляют себя большими специалистами в вопросах программного обеспечения (ПО) и кода, который используется для написания. В настоящее время, когда ПО живет в наших карманах, управляет нашими автомобилями и домами, а также доминирует в нашей бодрствующей жизни, игнорировать подобные факты не допустимо. Мир принадлежит людям, которые пишут компьютерные программы. Те, кто не понимает этого, окажутся за бортом.
Данная статья включает в себя отдельную историю, посвященную развенчанию мифов о кодах, а также культуре людей, которые занимаются этим. Здесь присутствует техническая лексика наряду с базовыми математическими концепциями, а также дурацкие шутки и постоянные озарения. Чтение статьи займет много времени, однако это небольшая цена за то, чтобы продлить карьеру на десятилетия.
Джош Тирангиел (Josh Tyrangiel), журналист, редактор Bloomberg Businessweek.
1. Человек в темно-сером пиджаке
Вы образованный успешный человек, который способен мыслить абстрактно. Вице-президент, выполняющий работу первого вице-президента. Ваш офис обставлен приличной мебелью, освещается натуральным светом, проникающим через вертикальные шторы, и соизмерим с положением хозяина, который отдал почти двадцать лет своей жизни профессии управляющего.
Медные наградные таблички на стене подтверждают ваши разнообразные способности лидера как внутри компании, так и за ее пределами. Одна из них «Награда за внедрение инноваций – 2011 год» от коллектива отдела продаж за вашу поддержку выполнения полуторагодичной программы уменьшения цикличности в продажах. Благодаря успеху объем чистых продаж увеличился на 6,5%. Другая – «Городской светофор 2008» – за осуществление контроля над группой волонтеров, которые полностью перекрасили здание муниципальной школы.
Среди сотрудников своей организации вы известны, как человек, у которого осторожность граничит со скупостью. Вы полагаете, что нет смысла платить за то, что нельзя объяснить. Вы хотите, чтобы ваши сотрудники излагали свои мысли простым языком. Такой подход выручал вас в разных ситуациях, но он не сработал, когда нужно было контролировать процесс написания программного обеспечения.
За все время вашей работы некоторые интернет-задачи появлялись раз в два года, и все было прекрасно, как вдруг внезапно возникает ситуация, когда сотни тысяч (миллионы) долларов необходимо вкладывать в аморфные проекты с меняющимися сроками сдачи. Проекты управления контентом, проекты интеграции в управлении взаимоотношениями с клиентами, приложения для мобильных устройств, организация безбумажной работы офиса, – несмотря на все предпринимаемые вами усилия с целью сократить финансовые расходы, программное обеспечение всегда найдет способ заставить вас раскошелиться.
И опять все сначала. У противоположной стороны вашего рабочего стола, на котором все предметы расположены в идеальном порядке, сидит этот парень в возрасте около 35 лет с компьютером на коленях. На нем пиджак темно-серого цвета, и он пришел обсудить вопрос, как потратить крупную сумму денег с целью создания неосязаемой абстракции для «проекта по созданию новой архитектуры веб-сайта». Ему нужны деньги, поддержка его коллектива, новые сотрудники и внешние ресурсы. Уже предопределено, что вы его обеспечите всем, что он просит, поскольку Генеральный исполнительный директор уже поставил подпись на соответствующем предложении, и, если все пойдет наперекосяк, вы будете нести ответственность. Кодировщики, занимающиеся написанием и отладкой текстов программ, безумно дорогие, и все проекты, которые начинаются с вызывающих чувство дискомфорта крупных бюджетов, обладают безобразной тенденцией увеличивать затраты. Вам нужно понять, сколько еще ждать.
Он заявляет: «По сути мы в пределах возможностей WordPress» (система управления содержимым сайта с открытым исходным кодом, распространяемая под GNU GPL)
Кто носит пиджак темно-серого цвета?
Главный технический директор был уволен полгода назад. У него трое детей учатся в колледже, и он носит усы. Это было плохое окончание карьеры. Человек в пиджаке темно-серого цвета работает у нового главного технического директора. Она пришла с Adobe, у нее короткая стрижка и нет усов.
Вот, что вам сказали: Всю систему команд, которые поддерживают веб-сайт в рабочем состоянии, необходимо заменить. Одно время она была очень дорогостоящей и, благодаря ей компания работала успешно, однако новый Главный технический директор считает, что это мусор. Она говорит вам, что старый код – это просто лапша, поэтому ваши системы перегружены и деформированы. Услуги третьих лиц, которыми вы пользуетесь, и которые вы оплачиваете, устарели, и вы только тратите впустую деньги. У вашего конкурента на сайте есть анимированная корзина, которая перемещается с верхней части дисплея. Она запоминает все товары, которые приобрели покупатели. Кроме того, по требованию она генерирует счет-фактуру. У вашей корзины памяти нет.
Менеджеры по продажам топчутся вокруг вашего офиса, вздыхая, как студенты театральных вузов, и говорят вам, как трудно им работать с этим сайтом. При использовании мобильных устройств возникают проблемы. Половина заказов аннулируется. Люди выходят из системы без предупреждения. Нужно что-то делать.
Вот почему здесь присутствует человек в темно-сером пиджаке
Да кто он такой? Вебмастер? Айтишник? Нет, он – «Скрам Мастер» (Scrum Master – специалист в вопросах Scrum-cовещаний, одной из гибких методологий разработки ПО. Впервые была использована в 1993 с целью улучшить продуктивность команды разработчиков, сделав упор не на качественно определенный, а на качественно контролируемый процесс разработки. Важной частью этой методологии являются Scrum-совещания)
«По этому поводу у моих людей разные точки зрения», продолжает он. «Некоторые хотят использовать систему Drupal 7 и применить его с Magento, которая также написана на языке РНР». Он хмурит брови. «Второй вариант – просто создать СУБД на программной платформе Node.js с библиотекой Backbone для пользователей во front-end.
Вы сдвигаете брови. Он смотрит на вас с симпатией в глазах и объясняет: «С подобной опцией это все будет в JavaScript. Front-end и back-end».
Вы уже слышали эти термины. Вы читали страницы в «Википедии», а также справочник по оценке стоимости проекта программного обеспечения. И все, казалось, было понятным.
Вы задаете универсальный запланированный вопрос: «Вы подсчитали стоимость этих вариантов?»
Он подает вам цифру и дату сдачи проекта. В душе вы уже знаете, что эта цифра составляет половину того, что должно быть на самом деле, и что проект продлится еще год после его официального окончания. Он обещает вам долгосрочные результаты. Уже не нужно будет платить $85 000 за лицензии Oracle; все техническая часть будет располагаться в бесплатной базе данных с открытым исходным кодом. «Нам следовало сделать это раньше, когда мы занимались системой Magento» говорит ваш собеседник. Подразумевая, естественно, что его предшественник, возможно, решил этот вопрос.
Вы смотрите в электронную таблицу и напоминаете ему, что контракт с Oracle был обновлен несколько месяцев назад. Поэтому нет, по крайней мере, не на сегодняшний день. Глубокий вздох.
Этот человек зарабатывает на треть меньше, чем вы, у него степень бакалавра одного крупного уважаемого университета. Но у него есть 500+ контактов на LinkedIn. Этот значок «плюс» после 500 вызывает у вас беспокойство. Насколько это пятьсот? Пять? Пять тысяч?
Каким-то непостижимым образом он превосходит вас. Не в смысле, как сотрудник компании, не умением заказать столик в ресторане, нет. И все же. Он поглаживает свою короткую бороду, у него загорелые руки, он занимается туризмом, и на его носках вышита фигурка маленького ниндзя.
«И не забудьте», напоминает он, «нам нужно предусмотреть бюджет на приложения».
Вот это я понимаю. Скрам Мастер в носках с ниндзя пришел к вам в офис и говорит «Нам нужно предусмотреть бюджет на приложения». Даже если все полетит в тартарары, с его карьерой ничего не случится.
Вы работаете на перспективу с мыслями о бочках наличности. Недавно вы узнали, что сухотарная бочка вмещает в себя порядка $100,000. В следующем году вы одну бочку опорожните на Oracle. Одна бочка – это еще неплохо. Но вы не знаете во сколько бочек вам обойдется этот проект – 5, 10? Или больше? Еще рано делать выводы. Но вы уже чувствуете запах денег…
На этом этапе встречи вам нравится смотреть в глаза просителя. Вы спрашиваете «Окей, вы назвали срок сдачи объекта и сумму затрат. Но когда он будет выполнен? Реально. По-настоящему. Ну признайтесь, облегчите свою душу!»
В этот раз вы останавливаетесь. Вы не хотите, чтобы ваши вопросы натолкнулись на снисходительный вздох нетерпения, или другое объяснение сроков доставки. Гибкие циклы и постоянная подача. Сейчас лучше спрятать свое невежество. Когда будет выполнен проект? Вы учитесь принимать, как должное, что ответом для проекта по созданию программного обеспечения будет слово никогда.
1.1 Почему мы здесь?
Мы здесь потому, что редактор журнала попросил меня: «Ты можешь объяснить, что такое код?»
Я ответил: «Нет, не могу. Прежде всего, потому, что я не силен в математике. Да, я программист, но я программист Восточного побережья, а не один из серьезных мужиков-специалистов по созданию платформ из залива Сан-Франциско». (Намек на различия в условиях оплаты работы программистов. В Сан-Франциско она обычно выше – примечание переводчика).
Я начал заниматься программированием почти 20 лет назад, изучив язык oraperl, специальную версию Perl, модифицированную под базу данных Oracle. Через месяц активной работы я повредил аккаунты 30 000 баскетболистов. Они направили мне полные гнева электронные письма, после чего я решил стать лучше.
Не хочу сказать, что я какой-то особенный. Да, я люблю компьютеры, но они никогда не имели для меня большого значения. Однако, через двадцать лет настойчивых попыток впихнуть нужную информацию в «кодонепроницаемые» мозги, я накопил достаточно знаний, которые мне открыл компьютер, но его очарование и волшебство со временем исчезло. Сейчас я могу говорить с любым собеседником, который пользуется Amazon.com или Microsoft на работе без страха сгореть со стыда. Кроме того, я готов свободно общаться с собеседниками на темы Google и Apple, однако эти лица редко посещают круг моих знакомых.
Лучше всего я знаю «всемирную паутину» World Wide Web (я занимался системой кодирования при программировании языков Java, JavaScript, Python, Perl, PHP, Clojure, и XSLT). Но «паутина» представляет собой только маленькую часть огромного мира создания программного обеспечения. Согласно результатам исследования IDC, в мире насчитывается 11 миллионов профессиональных разработчиков программного обеспечения. Кроме них, еще 7 миллионов – это те, для кого написание ПО служит увлечением. Количество сопоставимо с населением большого Лос-Анджелеса. Представьте себе, все жители города занимаются программированием. Район Ист – Голливуд населен айтишниками для Mac, Западный район Лос-Анджелеса разрабатывает приложения для мобильных устройств, Беверли – Хиллз заполнен программистами, которые пишут программы для финансовых учреждений, а округ Ориндж – работает на «Уиндоуз».
Кроме того, есть еще и много других соседей. Есть специалисты, которые пишут коды для встроенных компьютеров размером меньше, чем большой палец. Есть люди, которые создают коды для управления телевизором. Есть некоторые программисты, которые умеют все. Они представляют разные культуры, различные клановые предания, используемые ими для организации своей трудовой карьеры.
Хочу сказать вот что. Я – один из этих 18 миллионов чудаков. Моя точка зрения относительно написания программного обеспечения является чисто индивидуальной среди миллионов. Система создания кодов является моей жизнью так же, как и вашей. Пришло время понять, как эта система работает.
Каждый месяц становится все проще делать вещи, которые раньше до нас никто не делал, создавать новый вид хаоса и открывать новый класс порядка. Даже несмотря на то, что мои познания в математике не будут уже никогда использованы, я люблю эту работу. Каждый месяц код меняет мир некоторым интересным, прекрасным или беспокойным образом.
2. Давайте начинать
Компьютер – это своеобразные часы со многими выгодами. Работают они одинаково, выполняя задачи по математике для второго класса: ставим отметку, берем номерок и кладем его в клеточку №1. Ставим отметку, берем следующий номерок и кладем его в клеточку №2. Ставим отметку,операция (это может быть сложение или вычитание) этих двух цифр, а затем кладем полученную сумму в клеточку №1. Делаем отметку, проверяем. Если результат равен нулю, берем другую клеточку и выполняем новый набор инструкций.
С помощью ручки и бумаги вы сможете делать то же самое, что и компьютер. Единственное, чего вы не сможете, так это выполнить аналогичные функции со скоростью несколько миллиардов раз в секунду. И эти миллиарды крошечных операций суммируются. Они могут стать поводом для телефонного звонка, поднять лифт, изменить траекторию полета ракеты. Эта техническая скорость позволяет добиться успеха с помощью ловкости многочисленных рук. Возьмите пучки импульсов света, отраженного от оптического диска, примените некоторые математические операции для того, чтобы распаковать их, скопируйте полученный набор расширенных импульсов в определенные ячейки памяти, а затем снимите показания с этих ячеек, чтобы написать лучом на экране. Миллионы импульсов, 60 раз в секунду.
Фирма Apple всегда производила компьютеры, а компания Microsoft создавала исключительно программное обеспечение и такие аксессуары, как мыши и клавиатуры. Однако в последнее время и она начала заниматься аппаратным обеспечением, благодаря конструированию игровых консолей Xbox, планшетов Surface и телефонов Lumia. Фирма Facebook занимается сборкой собственных компьютеров для своих дата-центров.
Вычислительные устройства установлены во многих вещах, и количество последних будет только увеличиваться. Это будут часы, камеры, кондиционеры, кассовые аппараты, туалеты, игрушки, авиалайнеры, кинопроекторы. Фирма Samsung производит компьютеры, которые похожи на телевизоры, а Tesla создает вычислительные устройства с колесиками и двигателями. Некоторые вещи, которые пока еще нельзя назвать компьютерами, как, например, электрический фонарь или фотовспышка в конечном итоге также будут компьютеризированы.
Когда вы обрабатываете в пакетном режиме тысячи изображений в «Фотошопе», или суммируете цифры в «Экселе», вы занимаетесь программированием, пусть в малых объемах. Когда вы слишком часто используете компьютер – в обычных объемах – тогда он начинает изменять вас. Мне снится «Фотошоп», Microsoft Visio, электронные таблицы и браузер. Мечты в виде фантастических пейзажей можно сортировать и реструктурировать. Меня даже посещают сны о программировании, где я перемещаю текст вокруг экрана.
Вы можете заставить компьютер создавать изумительные вещи, однако должны понимать пределы его возможностей. Он не всемогущий и не здравомыслящий. Он быстрый, однако некоторые комплектующие, как, например, процессор, или оперативная память работают быстрее, чем другие микросхемы, например, жесткий диск, или система подключения к Сети. Чтобы «снабдить» их бесконечными возможностями, необходимо максимум усилий со стороны программистов и специалистов по продвижению и продаже компьютеров.
Известный в конце прошлого века британский художник Уильям Моррис как-то сказал: «Нельзя создавать искусство без сопротивления материалов». Компьютер и его внешнее оборудование – это материалы, а код – это искусство.
2.1 Как вы печатаете букву “A”?
Давайте представим, что происходит, когда вы нажимаете на клавиатуре клавишу. Скажем, строчную «а». Клавиатура ждет, когда вы нажмете клавишу, или отпустите ее. Она постоянно сканирует процесс, чтобы увидеть, какие клавиши нажаты. Ударяя по клавише, вы посылаете ее идентификационный скан-код.
Также как клавиатура ждет нажатия клавиши, компьютер ожидает сигнала от клавиатуры. Когда он появляется, компьютер интерпретирует его и передает дальше во внутренний сегмент. Клавиатура получила некую информацию, и вы можете обрабатывать ее по собственному усмотрению.
Просто, не правда ли? Компьютер «обращается» к таблице, определяет, что сигнал соответствует букве «а» и выводит ее на дисплей. Однако, это не так. Слишком просто. Компьютеры – это устройства, которые не знают, что такое дисплей, или прописная буква «а». Чтобы вывести «а» на дисплей, ваш компьютер должен извлечь образ буквы «а» из своей памяти, как часть шрифта, поскольку буква выполнена в виде линий и кругов. Он должен взять эти круги и линии, а затем преобразовать их в маленькую клетку пикселей в той части памяти, которая управляет дисплеем. Пока у нас есть минимум три изображения одной буквы: поступивший с клавиатуры сигнал, версия в памяти и эскиз в виде кругов и линий на мониторе. Мы еще даже не рассмотрели, каким образом его можно хранить, или что случится с буквами, расположенными с левой и правой сторон, когда вы вставите «а» посредине предложения. Или что означают круги и линии, когда они сокращаются до двоичных данных. Существует много вариантов для изображения простой буквы «а», и что самое удивительное, любой из них прекрасно выполняет свою функцию.
Нужно обладать особенным темпераментом, чтобы пролистать и изучить документы по стандартам, руководства пользователя, а также прочитать такие фразы, как, например, «поля данных передаются таким образом, что наименее значимый бит информации посылается в первую очередь». Это делается для того, чтобы понять, почему, когда вы ожидали букву «ü», вместо нее постоянно получаете «♦».
2.2 От аппаратного до программного обеспечения
Аппаратное обеспечение – это тонкое дело. На протяжении десятилетий работа, связанная с интегрированием, сборкой и поставкой компьютеров обеспечивала возможность заработать состояние. Однако со временем сферы деятельности постепенно сужались. Обратите внимание на Dell, сейчас это частная компания, или Gateway, которую выкупила Acer. Бренды Dell и Gateway – два конкурента мирового класса не участвовали в разработках программного обеспечения, а занимались сборкой персональных компьютеров с предварительно инсталлированной Microsoft Windows, а также созданием сервисов по подписке для увеличения прибыли. А это приводит к отрицательной реакции индивидуальных пользователей, которые заплатили за компьютер около 1000 долларов и сейчас пытаются понять, как избавиться от дополнительных расходов на антивирусное программное обеспечение.
Несколько лет назад, когда Microsoft была на троне, Стив Балмер, Генеральный исполнительный директор, в промокшей от пота голубой рубашке прыгал перед аудиторией на стадионе и скандировал: «Раз-ра-бот-чи-ки!», «Раз-ра-бот-чи-ки!», «Раз-ра-бот-чи-ки!».
Он так вопил, пока не охрип: «Я люблю эту компанию!» Конечно, он любил. Если вы торгуете программным обеспечением, вы продаете бесконечно повторяемое ничто с заоблачной маржой. Но это все до поры, пока кто-то другой не начнет продавать ничто еще дешевле, или просто раздавать. Что в конечном итоге и происходит. Системы с бесплатным программным обеспечением, как например, Linux, начали постепенно «откусывать», а затем поглощать рынок серверов, а бесплатные для пользователей сетевые приложения (Google) стали предлагать свои услуги в качестве эффективных заменителей программного обеспечения для десктопов.
Со временем ожидания по поводу ПО претерпевали изменений. Фирма IBM в 1960-х годах установила отдельную цену на программное и аппаратное обеспечение, и таким образом повысила стоимость компьютеров. Компания Microsoft начала устанавливать Internet Explorer вместе с Windows в 1998 году, и против нее было возбуждено уголовное дело. Руководство Apple вначале отказалось от услуг третьих лиц в написании программного обеспечения для iPhone в 2007 году, а затем открыло App Store, который захватил огромную коммерческую сферу, и вскоре мир получил «рассерженных птичек» Angry Birds. На сегодняшний момент большое количество аппаратного обеспечения поставляется вместе с программным – ПК, например, с операционными системами, которые включают в себя сотни подпрограмм, начиная с почтовых приложений и заканчивая играми с одним участником (солитер). А дальше вы загружаете или покупаете больше.
Естественно, существует бессчетное количество попыток упростить процесс написания программного обеспечения, с надеждой, что в процессе будет использован общедоступный английский язык, или набор понятных иконок, или перечень доступных правил, благодаря которым с этой задачей сможет справиться обычный ребенок или старший управляющий. Десятилетия усилий ушли на то, чтобы помочь простым смертным создавать код так же просто, как использовать калькулятор или писать электронные письма. Но никакие попытки так и не позволили избавиться отразработчиков, разработчиков, разработчиков.
Таким образом, появилась профессия и соответствующие специалисты. Процесс начался еще в 1950-х годах, однако всерьез заговорили о них в 1980-х, когда относительно небольшая группа людей стала экспертами в изобретении способов удовлетворить базовые человеческие желания (узнать время, запланировать полет, убить зомби) путем контролирования работы устройства. Кодировщики, начиная с концепции «сигналы с клавиатуры» и «цифры в памяти», создали бесконечно воссоздаваемые цифровые функциональные модули, которые мы называем программным обеспечением, с надеждой удовлетворить потребности рынка. Черт возьми, и это им удалось! Созданные ими системы используются для управления глобальными экономическими инфраструктурами. Если программисты и не управляют миром, то они управляют вещами, которые управляют миром.
2.3 Каким образом Код превращается в Программное Обеспечение?
Нам известно, что компьютер – это своеобразные часы со многими выгодами, а программное обеспечение начинается с кода. Но каким образом?
Нам известно, что некто каким-то образом вводит программу в компьютер, а программа написана на основе кодов. В старые добрые времена это означало набивать отверстия в перфокартах. Затем вы помещали эти карты в коробку и передавали оператору, который загружал их, после чего компьютер просматривал карты, идентифицировал место нахождения отверстий и вносил изменения в блоки своей памяти. Затем… Ладно, не будем вдаваться так далеко в историю, лучше поговорим о современном коде, который загружается в клавиатуру. Он может выглядеть следующим образом:
Это на языке, который называется просто «К», и знаменит своей краткостью. Данный код проверит запись на наличие палиндрома (кодовой последовательности, совпадающей сама с собой при чтении в обратном порядке). Если вы напечатаете ispal “able was i ere i saw elba” («а роза упала на лапу азора»), «К» выдаст подтверждение: «Да, это – палиндром».
Мир кодов наполнен акронимами (словами, составленными из начальных элементов словосочетания). «К» смоделирован на другом языке, который называется APL, что означает AProgramming Language (язык программирования). Программисты – очень веселые люди. Они поддерживают стандарты самообращения и обратных акронимов на самом высоком уровне. Еще один пример «классики» – GNU GNU’s Not Unix (операционная система GNU, проект GNU (GNU – это рекурсивная аббревиатура для “GNU is Not UNIX” – “GNU – не UNIX”; произносится как гу-ну); Unix-совместимая ОС, разрабатываемая FSF. Проект был начат в 1983 г. Ричардом Столлманом (Richard Stallman) в MTI с целью создать свободно распространяемую замену UNIX. В рамках проекта разрабатываются также компиляторы и другое ПО). Шутки программистов могут вызвать смех и одновременно заставят вздыхать. Или просто вздыхать.
Как еще может выглядеть код? Может быть, как таблица в Excel (со всеми формулами, скрытыми под цифрами, которые они генерируют):
Однако таблицы Excel довольно коварны, поскольку они способны прятать все виды данных под своими цифрами. Подобная непроницаемость служит причиной рисков. Один научный работник Университета штата Гавайи в своем исследовании обнаружил, что 88% электронных таблицсодержат в себе ошибки.
Программирование может также выглядеть, как язык для детей Scratch:
И это настоящее программирование – компьютер ждет нажатия, ввода сигнала, аналогично, как печатания буквы «а», а затем выполняет некую периодически повторяемую операцию, в результате чего появляются веселые животные.
Или может быть:
Это на языке Fortran. Причина, почему он не работает в том, что вы забыли поставить кавычки в конце первой строки. Попробуйте чуть интенсивнее. Спасибо.
Все эти моменты, так или иначе, являются примером кодирования, особенно последний, который большинство программистов легко идентифицируют как код. Последовательность обозначений (с использованием стандартных символов, вводимых с клавиатуры и сохраненных в некоем файле), которые пользователь ввел, скопировал или вставил с другого текста. Это не означает, что другие виды кодирования не действительны, или не помогут вам достичь цели. Кодирование представляет собой широкий спектр деятельности человека, как спорт или писательское мастерство. Когда разработчики программного обеспечения думают о кодировании, большинство из них представляют его в виде строк программы в файле. Они сталкиваются с проблемой, изучают ее, пишут код, который поможет решить ее, а затем предполагают, что компьютер превратит слово в действие.
Код является инертным и неактивным. Каким образом его «оживить»? Вы активируете программное обеспечение, которое трансформирует его в машинный язык программирования. Само слово «язык» в данном случае покажется немного претенциозным, учитывая тот факт, что вы можете создать вычислительное устройство из дерева или мрамора. Ваша цель состоит в том, чтобы превратить ваш код в ясный, точный и детальный перечень инструкций, которые будут выполняться сопряженными логическими элементами и таким образом преобразовать ваш код в что-то, что можно оформить и создать – программное обеспечение.
Компилятор представляет собой программное обеспечение, которое переносит напечатанные вами символы в файл и преобразует их в инструкции нижнего уровня. Представьте себе условный язык программирования под названием Business Operating Language United System, или Bolus. Это страшный язык, который должен быть достаточным для некоторых сложных абзацев. У него есть одна настоящая команда PRINT (печатать). Мы хотим вывести на монитор HELLO NERDS (ПРИВЕТ ЗАУЧКИ). С этой целью мы написали строку программы в текстовом файле, где сказано:
И мы сохранили ее, как nerds.bol. Теперь мы запускаем воображаемую компилирующую программу gnubolus nerds.bol. Как это делается? Единственный способ – это с помощью пошагового лексического анализа каждого знака, начиная с «р», группируя буквы в символы и сохраняя их в наших одномерных «посадочных ящиках».