Офтоп
Виктор Степанов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Статья #Quora #лучшие_обсуждения_на_Quora #лучшее_на_Quora #как_работает_компьютер #электричество