Когда-нибудь задумывались над тем, чем, в сущности, является программирование?

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

Дисклеймер

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

И да, я знаю что электроны по проводам никуда не бегут, а едва ползут (миллиметры в минуту). Про отличия переменного и постоянного тока тоже понимаю, осознанно их опустив.

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

По пути им, правда, придется совершить еще несколько действий - например уже самим создать магнитное поле в трансформаторе, быстро-быстро бегая по кольцам обмотки. Это магнитное поле "запускает" электроны уже во второй обмотке и им тоже предстоит немалый путь и полезная работа - скорее всего в следующем трансформаторе. Пройдя цепочку трансформаторов и, возможно, ЛЭП, оставшаяся часть энергии в лице движения очередного электрона наконец поступает в розетку и, например, оседает в аккумуляторе моей дуговой зажигалки. Каким образом?

Запуская обратимую химическую реакцию которая приводит к обмену молекулами между пластинами и электролитом. При использовании аккумулятора этот обмен совершается "в другую сторону", выделяя тот самый кусочек энергии (с очередными потерями, конечно, налог физики на КПД неумолим и не обходится). Так что химический процесс соединения углерода и кислорода в топке ТЭЦ превращается, в данном случае, в другой химический процесс в батарее.

Фух. И это мы добрались только до аккумуляторов.

Точно так же заряжается и аккумулятор моего ноутбука. Что же происходит когда я его запускаю?

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

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

В памяти (да и в SSD диске) эти электроны оседают в конденсаторах или транзисторах с плавающими затворами (опять химические связи?), чтобы потом очередной электрон их освободил (или проверил наличие), считав таким образом ранее запомненную самим фактом оседания информацию.

Ну и, конечно, процессор. Вернее один из множества микроконтроллеров в типичном компьютере, каждый из которых имеет свою внутреннюю память, I/O и арифметико-логическое устройство с набором инструкций. Но выполняемая электронами работа от этого принципиально не меняется - они попадают на транзистор, либо проходя сквозь него, либо нет (этим уже управляют другие электроны, которые попадут или не попадут на базу этого транзистора).

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

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

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

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

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

Получается, программисты - маги молний в конкретной узкой специализации :)

Завершить хотелось бы цитатой Фредерика Брукса из "Мифического человека-месяца":

Почему программирование приносит радость? Какие удовольствия
в качестве награды ждут его практика?

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

Комментарии (9)


  1. Dr_Dash
    03.01.2024 13:00
    +3

    ???? тема молний не раскрыта.


  1. sterr
    03.01.2024 13:00

    Насколько я помню электроны никуда не бегут, бегут поля. Они же и совершают работу. При чем, если следовать вашей логике при переменном токе электроны бегут на месте с частотой 50 гц. Допустим они все-таки бегут. На месте. Но скорость электронов не равна скорости света, как утверждает школьный курс. Интересно, с какой скоростью болтаются электроны при 50гц? Или не успевают сдвигаться?

    Нет, даже не так. На какое максимальное расстояние они успевают сдвигаться?

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

    Теоретически немного продвинулись торсионщики, но они до сих пор внятно не могут обосновать свои наработки.


    1. Amareis Автор
      03.01.2024 13:00
      +1

      Про это я прямо написал в дисклеймере - бежит фронт волны от столкновений электронов, а при переменном токе они действительно дергаются туда-обратно.

      А про "не научились ничему другому" - так здесь и нечему учиться, потому что природа ничего другого нам и не предлагает, так что играем с теми картами, что имеем.


    1. arheops
      03.01.2024 13:00
      +1

      Скорость электрона зависит от концентрации свободных электронов, площади сечения провода, величины тока.

      И с точки зрения электрона 50гц это очень медленно, тоесть он вполне себе ощутимо двигается.

      Формула вот https://electricalschool.info/uploads/posts/2017-08/1504080824_3.png

      Для электрона в типичном медном проводнике 2.5мм2 и 10А тока она порядка сантиметра в секунду(тоесть 1/50 см при переменном). Десятые доли миллиметра. Но на фоне размера электрона и атома это МНОГО.


    1. nronnie
      03.01.2024 13:00

      Никаких новых способов прямого преобразования энергий.

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


    1. mpa4b
      03.01.2024 13:00

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

      А ну и да, несмотря на то, что поля распространяются со скоростями, сравнимыми со скоростью света, тем не менее в современных микросхемах скорость распространения сигналов по проводам ограничивается в основном распределённой ёмкостью и сопротивлением провода, т.е. на порядки медленее скорости света.


  1. duke_alba
    03.01.2024 13:00
    +1

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


    1. Amareis Автор
      03.01.2024 13:00

      Да, подумал об этом написать, но не стал :)


  1. MetromDouble
    03.01.2024 13:00
    +3

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

    Так что в каком-то смысле компьютер - это программируемая жидкость, в которой миллиарды вихрей и потоков много раз в секунду моделируют аспекты реального мира в компактном и энергетически дешёвом формате.