Лучшее Quora: Как компьютер превращает электричество в выполнение программ

Еженедельный обзор лучших обсуждений на Quorа, временно переформатированный на прошлой неделе в дайджест «Ответов@Mail.ru», возвращается. Но как прежде всё уже не будет. От больших статей с разбором нескольких тредов мы переходим на новую концепцию «один материал — одна тема». Начнём с вопроса о том, как электричество в компьютерах преобразуется в выполнение программ.

 — редакция TJ тестирует кнопки UpToLike 5545690d3d4aa5fa812b.png Для подавляющего большинства пользователей то, как электрический ток из розетки превращается в компьютере или ноутбуке в реальные вычислетильные действия, остаётся большой загадкой. Конечно, для того, чтобы пользоваться той или иной техникой, совершенно не обязательно знать, как она устроена.

Но что если разобраться с чудесным преобразовании всё-таки хочется? Выпускник технологического института в Джорджии Субходжит Чаттопадай (Shubhojit Chattopadhyay), успевший поработать в Oracle, Intel и Qualcomm, попытался объяснить всё «на пальцах».

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

377ecdac4082bd8188c9.png Электроны являются носителями того, что называется электричеством. Чтобы использовать их, человечество научилось делать транзисторы, способные хранить или, наоборот, высвобождать электричество тогда, когда это необходимо.

Именно с их помощью «кодируются» базовые логические единицы 1 и 0. Например, у микроконтроллеров, предназначенных для управления электронными устройствами, логические уровни для единицы и нуля — пять и ноль вольт соответственно.

Соединив вместе восемь таких транзисторов и поставив первые шесть из них в положение нуля, а последние два в положение единицы, можно закодировать, к примеру, число 3 (в двоичной системе счисления оно запишется как 0000 0011). По числу задействованных транзисторов такая «запись» называется 8-битной.

Из 8 бит состоит одна ячейка памяти комьютера (хотя её длина может быть и 16, и 32, и 64 бита). Совокупность множества блоков, состоящих из ячеек памяти, в итоге образует процессор и оперативную память компьютера.

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

Так как язык ассемблера также довольно труден для восприятия человеком, для упрощения работы с ним были разработаны языки высокого яровня (С, C++ и другие). Любая программа, написанная на них, всё равно в итоге конвертируется в язык ассемблера, который в реальности и управляет переключением транзисторов в процессоре.

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

Как отмечает Субходжит Чаттопадай, описанная им система представляет собой очень сильно упрощённую модель, предназначенную в первую очередь для общего понимания.

Хочу заметить, что я «отупил» всё это до самого примитивного уровня. На самом деле я не коснулся в своём ответе и одного процента всех деталей. […] Но в целом всё так. Это именно то, что вы увидите, когда посмотрите на устройство компьютера со стороны.

Субходжит Чаттопадай, пользователь Quora

Сами компьютеры автор комментария называет настоящим чудом, на создание которого ушло больше 50 лет и силы миллионов умных людей.

— редакция TJ тестирует кнопки UpToLike

Нашли опечатку? Выделите фрагмент и отправьте нажатием Ctrl+Enter.

©  TJournal