Как стать автором
Обновить

Слой магии

Время на прочтение2 мин
Количество просмотров3.7K
Автор оригинала: Macha
Любая достаточно сложная технология неотличима от магии
Артур Кларк


Как программист и просто человек, увлекающийся компьютерами, я знаю о том, как они работают, больше, чем первый встречный. Мне всегда интересно наблюдать за тем, как пользуются компьютерами люди, которые знают о них меньше меня. Для многих из них процесс выглядит следующим образом: они нажимают на что-то, компьютер делает нечто загадочно-магическое, и результаты появляются на экране.

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

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

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

Наконец, когда разработчик разрушает и эти последние оплоты магии, он видит всю картину — насколько хватает программного обеспечения. Но это еще не конец истории! Магия изгнана из софта, но остается железо: как эти системные вызовы транслируются в данные, которые пишутся на диск? Откуда процессор знает, что делать по командам ассемблера? Поздравляем, ваша магия отступила на уровень аппаратного обеспечения.

От переводчика


Этот перевод — как бы оправдание моей предыдущей статьи, в которой я гордо называю магией несложные фокусы с низкоуровневым представлением строк и чисел в C++. Заметка кажется мне несколько незавершенной — у меня получилось как минимум два вывода из нее.

Вывод романтический: Мой собственный слой магии достаточно толст, и мне кажется, что это не так уж плохо — тем больше волшебных открытий впереди :-)

Вывод скептический: Борьбу с магией можно продолжать и дальше: физические принципы работы техники, природа электромагнитных явлений, строение материи… В фантастических романах встречается сюжет: когда развитая цивилизация наблюдает за развивающейся, и в последней появляется ученый-изобретатель-философ, который начинает мешать, ему просто дают доступ к информации обо всех достижениях цивилизации. Это больше, чем он может выучить за всю свою жизнь, поэтому он больше не опасен — ничего своего он больше не сделает. Так и в этом случае, программисту важно соблюсти грань между некомпетентностью и излишней увлеченностью разоблачением магии.
Теги:
Хабы:
Всего голосов 56: ↑36 и ↓20+16
Комментарии32

Публикации

Истории

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань