На этот раз новость радующая, в отличие от предыдущей. 29 мая 2025 года Китай запустил «Тяньвэнь-2», задачей которого будет изучение астероидов. Сначала попытаются "облегчить" квазиспутник земли - астероид 469219) Камоалева на целый килограмм его грунта, а потом ещё и бахнут взрывом для определения если в нём вода. Потом он полетит к Земле, скинет на голову китайцам капсулу с забором пробы, воспользуется гравитационным манёвром и отправится к Марсу, где снова воспользуется его гравитацией, отправившись уже к другому астероиду (7968) Эльст — Писарро. Его уже "грабить" вроде не планируется, просто выйдет на орбиту астероида и, как планируется, будет изучать его в течении года, хотя не исключены бомбардировки оного, дабы изучть его состав.
Частичное селфи
На данный момент он находится более чем в 3 млн. километрах от нас и 6 июня 2025 года отчитался сфоткав космос и уже расправленную солнечную батарею. Это его первый снимок, присланный на Землю.
ISpace не прекращает попыток прилунить свои модули на Луну. Первая миссия стартовала в декабре 2022 года. Весной 2023 года посадочный модуль Hakuto-R вышел на орбиту Луны, а 25 апреля включил тормозные двигатели и начал спуск со стокилометровой окололунной орбиты, который занял час
и должен был кончиться прилунением внутри кратера Атлас
в северо-восточной части видимой стороны Луны. Однако связь с ним
в расчетное время посадки не удалось установить,
дальнейший анализ телеметрии показал, что на заключительном этапе
спуска на Луну уровень топлива оказался у нижней отметки, после чего
скорость спуска резко увеличилась. Это позволяет предположить, что
у посадочного модуля закончилось топливо и его двигатели заглохли, после
чего с модулем была потеряна связь.
Кадр прямой трансляции, через десять минут попыток установить связь трансляция была прервана. Связь установить не удалось.
И вот примерно такая же участь постигла и вторую миссию.
А вот сфоткать поверхность Луны перед посадкой он успел.
Resilience отправился в космос в январе этого года, а в начале мая вышел
на окололунную эллиптическую орбиту. В конце мая аппарат перешел на
круговую орбиту с высотой сто километров, а вечером 5 июня 2025 года
начал спуск с нее в Море Холода на видимой стороне Луны.
Однако телеметрия с модуля была потеряна за менее чем две минуты до
расчетного времени касания поверхности Луны, после чего несколько часов
инженеры пытались наладить с аппаратом связь и перезагрузить его. На
пресс-конференции, посвященной
итогам посадки, представители ISpace объявили о завершении миссии из-за
невозможности установить связь с модулем. Анализ имеющихся данных
показал, что модуль успешно вертикализовался и включил двигательную
установку на торможение на высоте 20 километров. Однако на финальном
этапе снижения возникла задержка в получении достоверных данных от лидарапо расстоянию до поверхности и модуль не успел эффективно
погасить скорость снижения, совершив жесткую посадку.
Опять же постараюсь в научпоп и как можно проще. Собственно, каким транспортом доставляются Вам данные этого ресурса?
Оказывается что всё уже давно разработано и просчитано.. Причём далеко не просто, а толсто и многослойно и стандартизировано.
Нус.с-с-с. .Начнём с самого дна.
1. Физический уровень. Как известно у информации должен быть "носитель", вроде это очевидно, а как иначе передать один бит инфы, если не запулить камнем в лобешник адрессату, ну или "дубинкой по кумполу"? Это самый древний, яркий и "искромётный" пример передачи информации, Так же можно вспомнить почтовые письма, голубей или сводки СовИнформБюро. Некоторые олды вспомнят инфракрасные порты на кнопочных телефонах, большинство поглядят в сотовый телефон или на стену увидев там уровень сигнала LTE или же оптоволокно. Продвинутые вспомнят про китайские эксперименты с 5G или их рекорды по квантовой линии связи. Всё что тут упомянуто - это физический уровень передачи информации (про многое я не упомянул).
2. Канальный уровень. Т.к. вомбатяне тусуются на одном ресурсе, скажем так, "локализованы", то они могут общаться друг с другом более простыми методами, напрямую. Тут уже появляется понятие адресации. Каждый брошенный "снежок" или "жук" летит напрямую в цель, а иногда и "дубинка" от модераторов прилетает прямо в "кумпол" цели. Задача тут стоит не только в адресации, но и как можно дальше уйти от физического уровня. Т.е. тут решается вопрос как избавится от разницы в WiFi, кабель (опять же RJ45 или вообще среда RS-485) или инфракрасный пульт от телека. Всё это вынуждено делатся аппаратными средствами (тот же "свисток" USB-WiFi выполняет енту функцию (на самом деле больше, но основная эта))
3. Сетевой уровень. А как общаться в чуваками, которые "снаружи"? Например незарегенная "печенька" или "капибара" хочет почитать что тут у нас происходит? Тут вступает в дело "международная почта". Т.е. эдакий логистический центр, как и куда доставить сообщение на любом конце Земли, Луны, Марса или Kepler-90h. Именно на этом уровне работают такие страшные слова как IP4/6, MTU (вспоминаем "добрым ласковым" словом провайдеров, которые рубят бабло при раздаче турнета с сотового телефона). Именно на ентом уровне мы можем общаться со всем миром, а не только друг с другом (моя работа не позволяет ПЛК и пр. девайсы выводить выше канального уровня - всё внутри технологической сети и никакого доступа извне). Как быстро дойдёт Ваш битик к адрессату на другом конце Земли очень сильно зависит от этого уровня - именно он определяет каким путём битик полетит.
4. Транспортный уровень. О.... Наконец-то я добрался до ивента вомбата. Задача транспортного уровня, не только найти адрессата, но и обеспечить между страждущими прочную и уверенную интимную связь. С этого момента, вомбатяне которые соединились друг с другом могут обмениваться информацией напрямую. При этом есть возможность полигамности, т.е. один вомбат может соединяться со многими (а так на самом деле и происходит, даже если Вы этого не хотите - стоит только запустить браузер). Когда два компа установили между собой интимную связь - это как раз оно, и не важно передаём мы файлик по FTP или у нас открыта консоль с SSH/
5. Сеансовый уровень. Боже как много наплодили сущностей, но все они важны. Собственно говоря на ентом уровне как раз и происходит то самое "соитие", что и на предыдущем. Но тут добавляются новые возможности. Зашивровать те битики, которыми мы обмениваемся (на самом деле это можно сделать даже на физическом уровне - главное придумать как). Так же тут мы кожем контроллировать кто с кем как долго и в каких позах. Грубо говоря сеанс связи начинается в тот момент, когда на телефонном переговорном пункте Вас пригласили в кабинку (ну и что с Вами будут делать в кабинке - все предыдущие уровни волновать не должно)
6. Уровень представления. Не очень будет приятно, если Вы два часа ждали международного звонка, зашли в кабинку, взяли телефонную трубку а с Вами базарят на китайском или японском языке. А ещё хуже если вообще на каком-нибудь КОИ-7. Т.е. приложуха, которая по сети общается должна уметь распознавать на каком языке с ней базарят. Если это текстовый ZIP-архив, то она должна уметь его распаковывать, если это UNICODE-текст, должна уметь отрисовывать все какашки и пр. эмодзи.
7. Прикладной уровень. Это то, с чем мы постоянно имеем дело. Читая этот пост в браузере Вы имеете дело как раз с прикладным уровнем. Устанавливая приложуху из RuStore так же имеете дело с прикладным уровнем. Отправляя селфи на фоне речки в гугло-фото - опять же прикладной уровень. Да, мы видим только прикладной уровень и пользуемся им, Но без предыдущих шести ничего бы не получилось. Фоточка на фоне шашлыков для своего друга/подружки по любому отправится через физический уровень, и пофиг, будет ли это бумажная фотография, привязанная к лапке голубя или же спутниковая связ.
З.Ы. Старался как проще, надеюсь получилось. В комментах пинайте, если где ошибся - я терпеливый, не обижусь.
Уже около месяца журнашлюхи педалируют тему: "Мы нашли признаки жизни на экзопланете".
Кратко, в созвездии Льва есть красный карлик K2-18. Эта звёздочка находится в 124 световых годах от нас, вроде и близко, но всё-же далеко (Вояджеры улетели от Земли примерно на световые сутки). Красные карлики намного слабее и тусклее нашего Солнца, зона златовласки у них очень узкая и расположена очень близко к звезде.
Транзитным методом (это когда планета проплывает между нами-наблюдателями и родительской звездой) была открыта телескопом "Кеплер" в 2015м году. Относится к классу супер-земель (масса около 9 масс Земли), крутится близко к своему карлику (год там равен примерно 33 нашим дням) и очень вероятно является планетой-океаном.
Тут, помимо K2-18C (неподтверждена) самого карлика и нашей страдалицы нарисована зона обитаемости.
Во время прохода планеты между нами и звездой удалось изучить спектр атмосферы этой супер-земли. По данным телескопа "Джейм Уэбб" получалось, что там присутствует диметилсульфид и диметилдисульфид. Фишка этих двух веществ в том, что на Земле он вырабатывается в основном водорослями и фитопланктоном. Получение в промышленных масштабах - требуется катализатор. Т.е. эти вещества сами по себе в космосе образоваться не могут, в отличие от некоторых углеводородов (того же метана в космосе полно).
Вот на этом и погорели все, кто пытается раздуть сенсацию из ничего.
Учитывая, что условия для жизни на K2-18b не очень для зарождения жизни даже в примитивной форме, данные начали исследовать повторно и перепроверять. Оказалось, для того, что бы "Джеймс Уэбб" сумел зафиксировать следы этих веществ, их концентрация в атмосфере планеты должна быть раз 20 больше земной, что нереально получить так как водоросли и фитопланктон, даже если будут напряжённо пукать не смогут обеспечить. Но что самое интересное, с помощью моделирования исследователи показали, что введение в данные
достаточного количества метана делает их неотличимыми от тех наблюдений,
по которым обнаружили диметилсульфид.
Причина в том, что полосы поглощения излучения у метана и
диметилсульфида частично пересекаются. Если от источника приходит много
излучения, то можно отличить одно соединение от другого. Но K2-18 —
очень тусклая звезда, от которой до нас доходит немного электромагнитных
волн. (Источник разоблачения)
Мы снова видим, что ради громких заголовков журналисты опять изнасиловали учёных.
В ответ на пост. Естественно есть. Только это не совсем звёзды, как и гипотетические чёрные карлики.
Только вот как раз коричневые и есть, причём обнаружены и доказаны. А что это такое?
Нарисовал неизвестный художник, спёрто с nplus1.ru - ссылка в посте есть.
Да всё просто, представьте наш Юпитер, только раз в десять-двадцать жирнее. Да, гигант газовый, состоит в основном из водорода и гелия, но только "бессердечной суки" - гравитации ему не хватает, что бы сжать водород до начала термоядерной реакции. Потому оно вроде и не звезда. Но, в отличие от чёрного карлика внутри хватает "бурления" за счёт трения, что бы такой субзвёздный объект разогреть до температур от 300 К до 3000 К (э-э-э- К - это Кельвины, для Цельсия надо в уме прибавить 273). Т.е. они современными методами вполне себе обнаруживаются, имеют что-то вроде планет, но 3000 градусов с поверхности - маловато будет для обогрева спутник/планеты что бы там хоть что-то зародилось.
Что с ними делать - да ничего, просто изучать. Жизни такая система не даст, да и вообще толку никакого. Белый карлик хотя бы имеет достаточно накопленной энергии, что бы обогревать к-либо рядом, при условии, что становясь карликом он не выжег всё вокруг, будучи красным гигантом.
Хотел написать про работу системы управления памятью, но понял, что для полноценной статьи у меня не хватает практических знаний. Поэтому кратко
Куча
Баян
Помимо стека, о котором было рассказано в прошлой статье и который содержит локальные переменные, в "потребительской" программе в среднестатистической ОС еще бывают глобальные переменные и динамическая память. Глобальные переменные описываются внутри сегментов .bss и .data, резервируясь в памяти сразу после загрузки образа программы (по-правильному это называется процессом).
Динамическая память иначе называется кучей, так как представляет из себя кучу динамических данных, который могут появляться и исчезать во время работы.
Для работы с динамической памятью в C существует malloc(size_t), запрашивающий (выделяющий, аллоцирующий) у ОС кусок памяти указанного размера и возвращающий указатель на первый байт, и free(void *), принимающий этот указатель и возвращающий (освобождающий) кусок назад в ОС.
В C++ есть операторы new и delete, они устроены гораздо сложнее и я не буду их рассматривать, ибо не пишу на нем. Помимо запроса памяти у ОС они занимаются ее инициализацией.
Если по какой-то причине стандартной библиотеки языка в наличии не имеется, то в Windows за память отвечает HeapAlloc и устаревшие GlobalAlloc и LocalAlloc из времен Windows 3.11 (malloc к ним и обращается внутри. Еще есть парные HeapFree, GlobalFree и LocalFree). Они предоставляют больше контроля над результатом, но проприетарны для Windows. А полный список функций для работы с памятью в WinAPI есть здесь, их сотни на любой случай жизни. Можно даже внутри контекста чужого процесса выделить или освободить кусок памяти (обычно такое используется вирусами и прочей нечистью).
Утечки
А что будет, если постоянно выделять, но не освобождать? А еще лучше: выделять, но терять адреса выделенной памяти. ОС достаточно быстро подскажет правильный ответ.
В теории есть несколько возможных выходов, можно даже обработать подобный случай и, к примеру, экстренно освободить всё выделенное (только если не терять указатели) или попытаться спасти нужные данные из разваливающейся программы, но если никаких действий не предпринять, то ОС заставит процесс экстренно прекратить свою деятельность и существование.
Случай с потерей указателей на выделенную память называется утечкой памяти и ее последствия необратимы. Но как только ОС завершает выполнение процесса, то вся его память, даже утекшая, становится снова свободной.
Ленивые программисты и мусоросборка
Отслеживание правильности выделения и освобождения памяти является достаточно сложной и опасной задачей, особенно если требуется обеспечивать стабильность и безопасность (лучше даже не думать, что будет, если рукожопый программист забьет на MISRA и устроит утечку памяти в подсистеме тормозов в Тесле), и практически невыполнимой в некоторых парадигмах (особенно в функциональном программировании). Поэтому еще с древнейших времен (с 1959 года) существуют языки со сборкой мусора:
Особенности
Первое: в таких языках указателей или нет вообще, или они очень ограничены в пользовании (C#).
Второе: для работы с динамической памятью вместо указателей применяются ссылки. Ссылка по факту представляет из себя тот же указатель, только очень сильно ограниченный. Над ссылками запрещены все операции, кроме присваивания значения другой ссылки и разыменования, в то время как указатели имеют права и возможности обычных целых чисел.
Третье: Каждый выделенный кусок памяти всегда занят каким-то объектом.
Четвертое: такие языки всегда тянут за собой подсистему сборки мусора, которая самостоятельно учитывает каждый объект и выделенный под него кусок памяти, а еще подсчитывает количество активных ссылок на каждый подчиненный объект. Это называется подсчетом ссылок.
Пятое: как только процент использованной памяти переходит через порог, то запускается сборщик мусора, который сканирует все объекты и количество существующих на них ссылок. Если ссылок на объект нет (то есть он "утек"), то его память освобождается.
Минусы и проблемы
Дорого. При злоупотреблении сборщик мусора может запускаться слишком часто, а каждый его запуск вносит заметный лаг. Особенно критично это в играх.
Он не устраняет все возможные способы вызвать утечку памяти, к примеру просто выделяя бессмысленные данные, но сохраняя на них ссылки. Или если объект, который управляется сборщиком мусора будет содержать в себе то, что сборщиком мусора не управляется (открытые файлы или нативная память вне его подчинения).
А еще он изредка может удалять то, что удалять не нужно, поэтому появляются костыли уровня GC.KeepAlive() (а-ля самый маленький метод в C#).
Но несмотря не это, практически все современные языки используют сборку мусора, кроме C++ и Rust. C++ по большей части перешел на умные указатели, которые тоже считают количество активных ссылок, но делают это без сборщика мусора. А Rust использует свой уникальный Borrow Checker, который понимают только растофилы.
Собсвтенно говоря, начиная с первого класса и заканчивая шестым курсом института, мне казалось, что я неплохо понимаю в математике, все таки меньше пятерки у меня за все эти годы не было ни разу.
Я бы даже больше сказал: школу я закончил в 1975 году, а в институт поступил только в 1981 - просто не хотелось до этого, да и тогда не то что слишком уж захотелось - скорее, стало скучно...
И к экзаменам не готовился, и на математике мне попалась теорема не то синусов, не то косинусов, которую я не помнил совсем - помню, что что-то в треугольнике со сторонами и углами.
В результате пришлось ее сначала вывести по воспоминаниям, а потом - доказать. Экзаменатор, он же тогда - замдекана кафедры вышки, кажется, долго рассматривал мое доказательство, но придраться было не к чему.
Так я получил первую пятерку по математике в институте...
Но это я немного отвлекся.
Читаю всякую хрень, к математике отношения не имеющую, и вдруг там ГГ попадает на школьную олимпиаду по математике.
Стоит заметить, что я в олимпиадах не участвовал, их у нас в принципе не было, и я о них даже не слышал.
И были там приведены две задачки, для школьников, блин, и тут я понял, что не все у меня хорошо было с математикой...
Нет, вторая задачка была простая: имеется циферблат, как положено - стрелок две: часовая и минутная, но вот беда - они одинаковые.
Только ходят по "часовым" правилам.
И вопрос: сколько существует положений стрелок на обычном, двенадцатичасовом циферблате, что нельзя однозначно определить время.
Ну, тут достаточно все просто, и, хоть там ответа не было, найти его - дело трех минут. Ну, старый уже, мозги плесневелые, в школьные времена быстрее бы нашел.
А вот первая задачка - я даже не уверен, что и в школьные времена решил бы, но хорошо, что там и решение было, хоть и намеками.
Короче: имеем сферу, 12% поверхности сферы закрашено черным цветом, требуется доказать, что существует такой, вписанный в данную сферу, прямоугольный параллелепипед, все вершины которого попадают на незакрашенную часть поверхности.
И вот эту задачку, если бы не подсказка - хрен бы я решил, мозги не те.
Да и в школьные годы, скорее всего, не решил бы - уж слишком непривычный метод, хотя и не выходящий за пределы знаний средней школы...
Сразу же найдутся люди, которые скажут что это "+∞",т.е. "плюс бесконечность".
А вот нифига подобного. Бесконечность в математике это понятие, концепция, а не какое-то конкретное число. С ней можно работать с точки зрения математического формализма, но невозможно определить точное значение (помните, назови целое число и прибавь к нему единичку - повторяй пока жив/существует_вселенная - так и познаешь что такое бесконечность).
Ну что же, будем разбираться с конкретными значениями больших чисел. Для начала возмём общепризнанную шкалу названий десятичных множителей (ну привыкли мы к десяти пальцам на руках, потому и система счисления десятичная):
Честно спёрто с википедИи
Ну и естественно тоже самое, но только 1 делённая на какое-то "квекто"
Эти приставки стандартизированы по СИ, но мы-то понимаем, что числа могут быть намного боельше.
Естественно эти приставки не в полной мере удовлетворяют наши потребности. Та же физика (наука наблюдательная) запросто оперирует величинами, вроде 6,626 070 15⋅10^-34 кг·м2·с−1 (Дж·с) (постоянная Планка).
Конечно народ напридумывал другие величины, вроде:
100*10^78 - сто квинвигинтиллионов (не в системе СИ) — предполагаемое количество атомов в наблюдаемой Вселенной.
Гуголплекс (от англ.googolplex) — число, равное 10^googol (десяти в степени googol), то есть 10^10^100
Ну да ладно. Пока я был в стадии сперматозоида (и то не факт) во всю работал выдающийся математик и программист Дональд Эрвин Кнут. (как же я гонялся за его трёхтомником "Исскуство программирования", но даже первый том был мне, студенту, не по карману). Он подумал, а действительно, как записывать о-о-о-чень большие числа. Числа, у которых показатель степени той же десятки не влезает в тетрадь. И придумал "стрелку Кнута":
"Возведение в степень. Если мы пишем 3^4, то имеем в виду, что число 3 мы умножаем на себя 4 раза. Получаем 81.Здесь в дело вступают стрелки Кнута. В этой нотации 3↑4 — это то же самое, что и 3^4. Самое интересное начинается, когда мы добавляем несколько стрелок подряд."
И далее
"Тетрация. Если мы пишем 3↑↑4, то имеем в виду, что число 3 мы возводим в степень себя же 4 − 1 раза. Для этого мы сначала возводим 3 в степень 3, получаем 27. Затем возводим 3 в степень 27, получаем 7 625 597 484 987. И наконец возводим 3 в степень 7 625 597 484 987 — получаем настолько большое число, что записать его привычным способом просто невозможно. Представьте, что мы заполнили всю наблюдаемую Вселенную песком и каждую секунду заменяем все эти песчинки новыми. Если мы будем заниматься этим в течение 10 миллионов лет, то общее количество песчинок, побывавших в нашей Вселенной-песочнице, и на одну миллионную не приблизится к числу 3↑↑4. Но и это не всё."
Т.е. мы можем описать таким образом реально гигантские числа в короткой записи.
В 1977 году американский математик-любитель Мартин Гарднер выпустил статью, в которой описал число Грэма. Что самое интересное, это число возникло не с потолка, а в результате решений в области теории Рамсея (жуть жуткая и мне непостижимая). Что самое интересное, это самое большое число, которое использовалось в к-либо научных работах вообще. Через стрелочки Кнута оно выражается так:
Охренеть, не правда ли?
Не буду упоминать число Райо, т.к. суть этой формулировки я понять не в состоянии и тем более не смогу описать доступным языком, но определение формально чистое.
Автор про свободу движений задал вопрос: А в какой степени свободны Вы?
Мой ответ - В 156, и в 289.
Вопрос: Какой ответ верный?
Если сравнивать строение опорно-двигательного аппарата человека с различными системами механизмов, то можно выделить как отдельные крупные "узлы", например, локтевой сустав состоит из 3 частей- сам шарнир и 2 прикрепленных к нему кости, которые могут вращаться в суставной сумке (впадине).
Будем рассматривать механические системы, состоящие из твёрдых, нерастяжимых и негнущихся звеньев, соединённых шарнирами. Шарниры для начала рассмотрим двух типов: цилиндрические и шаровые.
Цилиндрический шарнир: с двумя свободными звеньями и с одним закреплённым звеном — опорой.
Где мы можем найти такое соединение в человеческом теле? Это, например, локтевой сустав. Межфаланговые суставы пальцев. Коленный сустав, в первом приближении, тоже подходит, хотя с ним всё несколько сложнее: тут реальная биомеханика сильно отходит от абстрактного механизма.
Цилиндрический шарнир, или шарнирная петля, это соединение двух звеньев, которое позволяет им вращаться вокруг общей оси. Или, если мы считаем одно звено неподвижно закреплённым — неподвижной опорой, — то этот шарнир позволяет второму звену вращаться вокруг оси шарнира.
Возьмём цилиндрический шарнир с одним закреплённым звеном. На рисунке закреплённое звено изображено просто как неподвижная опора. Свободное звено может двигаться только одним образом: поворачиваться вокруг оси шарнира, оставаясь при этом в одной плоскости. Его незакреплённый конец двигается при этом только по одной линии — дуге окружности с центром на оси шарнира.
Если мы зафиксируем плечевую кость, то наш шарнир будет закреплен и неподвижен.
Второй тип шарнира — это шаровой шарнир, где звенья вращаются вокруг общей точки. Опять же, можно считать одно звено неподвижной опорой, тогда второе звено может вращаться вокруг некоторой точки этого шарнира. Точки, а не оси.
Какие суставы в нашем теле подходят под эту модель? Плечевой и тазобедренный.
Шаровой шарнир допускает уже гораздо больше различных движений. Свободное звено может качаться в нём во все стороны. К тому же оно может поворачиваться вокруг собственной продольной оси, оставаясь на месте. Всё то же самое умеет делать и наше плечо. Незакреплённый конец свободного звена двигается при этом уже не по линии, а по участку сферы с центром в шарнире.
Для того, чтобы однозначно задать положение звена, нам потребуются три угла. Два из них задают наклон звена в пространстве, а третий — поворот звена вокруг собственной оси. Получаем три координаты и три степени свободы для шарового шарнира и плечевого сустава.
Человеческие суставы вообще устроены гораздо сложнее, чем простые шарниры. Приведём ещё пару примеров суставов, не подходящих под простейшие механические схемы.
Кажется, что коленный сустав вполне подходит под схему цилиндрического шарнира. Если мы зафиксируем бедро — например, сядем на стол, свесив ноги, — то колено будет качаться, рисуя дугу, так же, как свободное звено шарнира. Но, на самом деле, при согнутом колене голень может ещё и немного поворачиваться вокруг своей продольной оси, добавляя коленному суставу ещё одну степень свободы. Когда мы сгибаем колено, ослабляется натяжение некоторых связок коленного сустава, крепление голени становится более свободным и появляется возможность поворота, которой нет, когда колено выпрямлено. Получается, что коленный сустав имеет одну степень свободы при почти выпрямленном колене и две при согнутом.
Локтевой сустав мы тоже приводили как пример цилиндрического шарнира. И он действительно подходит под эту схему, если мы будем рассматривать крепление только локтевой кости. Но, говоря о лучезапястном суставе, мы заметили, что предплечье может поворачиваться, обеспечивая движение пронации/супинации кисти.
Это возможно из-за сложного устройства локтевого сустава, состоящего фактически из трёх отдельных суставов. В нём сходятся три кости — плечевая, локтевая и лучевая — и каждая пара костей соединяется своим суставом.
Локтевая кость крепится к плечевой суставом с одной степенью свободы, образуя цилиндрический шарнир. А вот лучевая соединяется с плечевой уже шаровидным суставом — аналогом шарового шарнира, с тремя степенями свободы. Подвижность лучевой кости относительно локтевой ограничивается двумя суставами, которыми они скреплены: в локте и в запястье.
Всё это сложное устройство приводит к тому, что лучевая кость может неким своеобразным образом проворачиваться вокруг локтевой. Кисть крепится именно к лучевой кости лучезапястным суставом и поэтому может воспользоваться её подвижностью. При этом локтевая кость остается неподвижной. Т. е. к одной степени свободы, которую имеет локтевой сустав, на протяжении предплечья добавляется ещё одна.
Заметим, что, хотя голень тоже состоит из двух костей — большеберцовой и малоберцовой, — но в ней отсутствует механизм, подобный предплечью, и обе эти кости двигаются как одна.
Соединим теперь три звена. Первое будет, как обычно, неподвижной опорой. Второе присоединим к нему цилиндрическим шарниром. А к свободному концу второго звена прикрепим ещё одно звено. Тоже цилиндрическим шарниром. Наш механизм для простоты сделаем плоским: пусть оси обоих шарниров будут параллельны, тогда все звенья будут двигаться в одной плоскости.
Сколько координат нам понадобится, чтобы задать положение всего механизма? Первое звено неподвижно, его положение известно. Второе звено мы можем повернуть в шарнире на какой-то угол. Не любой: угол поворота как-то ограничен неподвижным звеном, но нам это не важно. Одного этого угла нам достаточно, чтобы задать положение второго звена. Зададим этот угол.
При этом дальний конец первого звена окажется во вполне определённой точке. Мы можем рассчитать положение этой точки по заданному углу и длине этого звена. (Длину звена мы не считаем координатой, поскольку она постоянна.) В этой точке находится шарнир, которым крепится третье звено. Значит, чтобы задать положение и этого звена, нам достаточно задать угол его поворота (например, относительно второго звена) — точно так же, как для второго звена.
Получается, что задав две координаты — два угла — мы задаём положение всего нашего механизма. Значит, у него две степени свободы.
Заметьте, что соединив звенья двумя шарнирами, каждый из которых даёт одну степень свободы, мы получили две степени свободы. Т. е. степени свободы просто складываются.
В теле подобный механизм можно найти в пальцах руки: это два последовательных фаланговых сустава.
Теперь в нашем механизме из трёх звеньев заменим первый шарнир на шаровой, а второй так и оставим цилиндрическим.
Аналогией в нашем теле будет соединение предплечья и плеча с туловищем. При этом мы не учитываем способность предплечья поворачивать кисть.
Если вы помните, шаровой шарнир имеет три степени свободы. Прибавляя к ним одну степень свободы второго шарнира, цилиндрического, получаем четыре степени свободы. И действительно: положение второго звена (первое — неподвижное) мы задаём тремя углами. При этом положение второго шарнира и направление его оси вычисляется. Поэтому для задания положения третьего звена нам нужен ещё только один угол его поворота в цилиндрическом шарнире. Значит, чтобы задать точное положение всего механизма, нужны четыре угловые координаты. И наш механизм действительно имеет четыре степени свободы.
Выше мы писали, что если тело двигается по какой-либо поверхности, то у него две степени свободы. Три — если мы хотим учитывать также и поворот тела в этой плоскости. Будем двигать ладонью по столу. Вот тело, которое двигается по поверхности. Значит, у ладони три степени свободы. А где же семь?
Но мы также писали, что подсчёт степеней свободы зависит от модели, от задачи. Если нам важно только положение ладони на столе и неважно, что там дальше к ней крепится и что с ним происходит, то степени свободы три. Если же мы хотим знать и положение всей руки, то семь.
Действительность ещё сложнее. Если мы, сидя за столом, потянулись за хлебом, то мы включаем дополнительно сложную механику пальцев, а также, возможно, наклон и поворот туловища. Если мы будем рассматривать такую, более сложную, модель, то и количество степеней свободы у всей системы будет гораздо больше. Как наш мозг управляется с расчётом такой кучи координат — опять-таки тема, требующая отдельной статьи.
Количество степеней свободы опорно-двигательного аппарата (ОДА) человека зависит от типа суставов:
Одноосные суставыобладают одной степенью свободы, движения в них происходят только вокруг одной оси. В организме человека таких суставов насчитывается85. 2
Двуосные суставыимеют две степени свободы, движения в них происходят вокруг двух осей. В организме человека33двуосных сустава. 2
Многоосные суставыобладают тремя степенями свободы, движения в них происходят вокруг трёх осей. В организме человека таких суставов29. 2
Общее число возможных движений в суставах (так называемых степеней свободы) превосходит250.5
По подсчёту О. Фишера, учитывая возможные перемещения между корпусом, головой и конечностями, в теле человека не менее 107 степеней свободы1. Это не считая движений лица и внутри корпуса
В биомеханике человека число степеней свободы может быть значительным. Например:
Кисть относительно лопаткиимеет7 степеней свободы. Это значит, что кисть по отношению к лопатке ведёт себя как свободное, не закреплённое в пространстве тело. 3
Головаперемещается в сагиттальной и во фронтальной плоскостях и совершает вращательные движения, поэтому имеет3 степени свободы. 3
Верхняя конечностьимеет7 степеней свободы, то есть для обеих рук —14 степеней свободы. 3
Нижняя конечность(без суставов стопы) имеет6 степеней свободы, то есть обе ноги имеют вместе12 степеней свободы. 3
Движения в пястнофаланговых и межфаланговых суставах дают для каждой кисти и стопы19 степеней свободы. Таким образом, человеческое тело, не считая движений туловища, имеет105 степеней свободы. 3
Речь идёт не о социальных свободах, а более формализуемых - механических. Да-да, опять эта физика. Надеюсь хоть в этот раз смогу рассказать как можно попроще.
В теоретической механике есть понятие "число степеней свободы". Грубо говоря - это то число независимых перемещений механической системы. Слово независимый тут является ключевым, но вернёмся обратно. Пример: Столб вкопанный в землю имее степень свободы 0 - он вообще не может двигаться. Поршень в насосе или двигателе - степень свободы 1 - двигается только в одном направлении -вверх-вниз, крутиться поршню не даёт шатун. Ннежелательные перекладывания и люфты не учитываем - мы же играем в теорию, а не практику. 😉
Сейчас, для простоты, будем говорить исключительно о нашем, привычном евклибовом пространстве. Так вот свободная, не связанная с к-либо механической системой, геометрическая точка (ну со школы же должны помнить, что точка не имеет размера) имеет три степени свободы - вверх-вниз, влево-вправо и вперёд-назад. Движение под углом - это просто совокупность этих трёх движений, если мы должным образом повернём систему координат - всё встанет на свои места.
А вот любое, свободное трёхмерное тело, оказывается ещё может дополнительно и вращаться по трём осям:
Три вращения + три прямолинейных движения
Для твёрдого тела 6 - это максимальное кол-во степеней свободы.
Тут вроде всё понятно и доступно. Но механика исследует механизмы, зачастую сложные.
GIF
Этот механизм Чебышёва
имеет только одну степень свободы, так как его положение полностью
определяется углом поворота одного (любого) из трёх подвижных звеньев —
L2, L3 или L4.
Казалось бы должно быть много больше, но мы видим, что все звенья взаимосвязаны, и какую бы точку в каком бы звене мы не выбрали - она будет двигаться только по одному криволинейному пути. Это как поезд на рельсех - вперёд или назад, и пофиг как извивается Ж/Д дорога - путь будет только один.
Расчёт шарнирных систем и кол-во степеней свободы - это уже нехилая такая математика, потому не буду вам и себе пудрить мозг. Скажу только что у человеческой руки (без учёта пальцев кисти) семь степеней свободы, а жётско закреплённую роботизированную руку сделали с восемью степенями свободы (и тут железные ящики переплюнули кожанных мешков).
Вообще кол-во степеней свободы механизмов во многом зависит от количества звеньев - чем больше тем лучше. На практике же роборука должна обладать сервоприводами, поворотными механизмами + учитываются ещё и допустимые нагрузки - это уже достаточно сложная инженерная задача.
А теперь представьте, что шарниров море и каждый может не только изменять угол, но и вращаться на 360 (только вот в большинстве случаев это нах не нужно)
В довесок задачач со звёздочкой: какое кол-во степеней свободы у резинового мячика (ответ в спойлере)?
Ответ: бесконечное, потому как надо рассматривать деформацию мяча, т.е. каждая точка, каждая молекула мяча имеет свои степени свободы
Не рекомендуется принимать данную статью близко к сердцу или как истину в последней инстанции. Скорее как научпоп-грелку для мозгов. Тут довольно много упрощений, упущений или просто странно написанных моментов. Если что-то объяснено совсем криво, то добро пожаловать в комментарии.
Все сказанное далее применимо везде, но детали описаны для защищенного режима x86 (только я опустил префиксEдля регистров) и языков семейства C (в основном C и C++, местами C#). Для понимания рекомендуется знать про указатели и базово представлять, что происходит в процессоре.
Приятного чтения.
Думаю все помнят, что такое функция в математике
Начнем со сложного
Глоссарий
Чувствую, что большинство не имеет ни малейшего представления об указателях
В части про x86 я упоминал о том, что процессор представляет из себя бешенный самоуправляемый калькулятор, которому указом может быть разве что хранилище кода, аппаратный сброс и немаскируемое прерывание. И что у него есть системная шина, состоящая из шины адреса, шины данных и шины управления, к которой подключена память, хранящая данные и код.
А память это огромная одномерная полоска, в которой каждая ячейка имеет свой порядковый номер от 0 до 2^(разрядность шины адреса)-1. И указатель представляет из себя самую обычную численную переменную, хранящую номер (адрес) любой ячейки.
Я не понимаю, почему для многих это настолько сложная тема, а существенное количество новичков забрасывают изучение C после встречи с ними. Они в своей сути максимально элементарны (до тех пор, пока не нужно исправлять уязвимости и ошибки, которые появились в результате злоупотребления или неполного понимания нюансов).
Также существуют ссылки, так или иначе представляющие из себя подвид указателей, но обычно с запретом на арифметику с ними (основная сложность и опасность указателей) и/или подсчетом количества активных ссылок для сборки мусора.
Все языки или имеют указатели (Pascal, C, C++, блоки unsafe в C# и Rust), или являются ссылочными (Java, C#, Python, JS, т.д. (почти все современные языки)). С++ тоже имеет ссылки, но как синтаксический сахар над указателями, призванный упростить их передачу в функции и избавиться от проблемы нулевых указателей.
Ассемблер - если вы даже примерно не знаете, что это такое, то первую часть статьи вероятно можно пролистать и перейти на обсуждение парадигм.
Регистр - именованная численная переменная внутри процессора. Может иметь особое предназначение, а может просто использоваться для хранения любых чисел и арифметики. Их немного.
Инструкция - одиночная команда, представляет из себя последовательность из нескольких байт со специальным значением. Любая программа представляет из себя последовательность инструкций внутри памяти. Указатель на инструкцию, которая будет выполнена следующей, содержится в регистре IP, который сам увеличивается после выполнения каждой инструкции. По-хорошему стоило нарисовать пошаговую наглядную анимацию с демонстрацией всех регистров и куском ассемблерного кода, но мне лень, а в гугле я ничего толкового не нашел.
Метка - константа, содержащая адрес чего-либо. К примеру процедуры или глобальной переменной. Примерно как метка для goto в высокоуровневых языках, но универсальнее. Применяются при написании на ассемблере, в процессоре как таковые не существуют и разрушаются до обычных чисел при ассемблировании и линковке.
Разыменование - операция над указателем, когда тот превращается в переменную с адресом, который был записан в указателе (своеобразный пульт Д/У для переменной).
Парадигма - "стиль" написания и постройки архитектуры программы, частично определяется языком. Технически на том же C можно писать в практически любой парадигме (через костыли можно писать в стиле ООП, через макросы реализовать метапрограммирование, а через нестандартные расширения вообще ядерный бред), но родная для него - процедурная. А Go, к примеру, хоть и имеет недоклассы и методы, но лишен практически всех благ ООП и не сильно далеко ушел от C.
Синтаксический сахар - необязательная возможность, которая сокращает количество кода, повышает его читаемость или удобство поддержки
Стек
Большинство процессоров Фон-Неймановской архитектуры в своей конструкции предлагают механизмы стека. Кто играл в покер должны вспомнить стеки фишек. То есть некие значения, сложенные друг на друга (обычно это переменные, в частности адреса в памяти). При этом основными операциями являются добавление фишки на вершину (инструкция PUSH) и ее снятие (инструкция POP). Еще можно косвенно читать и заменять (перезаписывать) фишки относительно вершины (на вершину указывает регистр SP, неявно обновляется через POP и PUSH) или основания (указывает регистр BP) вглубь.
Стеки можно переключать (но не в MOS6502), это нужно для многозадачности
Помимо хранения локальных переменных стек позволяет делать довольно интересную вещь: мы можем положить на стек все необходимые аргументы (x в математике, но их может быть несколько), адрес следующей инструкции (взяв из указателя инструкции IP, это будет адрес возврата), после чего совершить прыжок на какой-нибудь другой адрес (сохранение адреса и прыжок делаются инструкцией CALL).
А на этом адресе может быть функция. Сначала она кладет текущий BP на стек, после чего приравнивает основание к вершине (BP к SP), тем самым создав для себя "новый стек" сразу после предыдущего (это еще называется стековым кадром), в котором якобы лежит только значение старого основания стека (BP), чтобы можно было восстановить его перед возвратом.
Серое это стековый кадр от предыдущей функции
После чего функция может прочитать переданные ей аргументы относительно основания своего стека вниз (технически это будет выход за границы текущего стека), выполнить с этим какие-либо действия (записать в файл, вывести в консоль, просто перемножить) и сохранить результат (обычно результат сохраняется не на стек, а в регистр AX).
После чего функция восстанавливает старое значение BP, сняв его со стека, и выполняет команду RET, которая снимает со стека адрес возврата и совершает переход на него, тем самым переключившись на инструкцию сразу после CALL.
И эта система так или иначе перекочевала в большинство высокоуровневых языков начиная с FORTRAN. К примеру в C CALL превратился в круглые скобки, RET в return, а адреса и метки в имена (при этом без скобок они все еще являются указателями, то есть адресами).
Пример кода (к сожалению, штатного форматирования не предусмотрено):
#include <stdio.h> int pow2(int x) { return x * x; } int main() { int y = pow2(16); // Вызов функции. В y будет сохранено число 256 printf("%p", pow2); // Без скобок вместо вызова просто выведет адрес функции return 0; // Возврат нуля из главной функции означает отсутствие ошибок. }
Такой стиль программирования называется процедурным (выделение кода в блоки называется структурным). А вот называть процедурный язык функциональным совершенно неправильно, ибо функциональное программирование ≠ процедурное, они даже в разных категориях (императивное и декларативное).
А теперь скомпилируем этот код и разберем ассемблерный листинг
Важно понимать, что стек в большинстве архитектур традиционно растет от больших адресов к меньшим (и в x86). То есть для того, чтобы отодвинуть его вершину вверх, от регистра SP нужно отнимать значения, а вот для ужимания и съедания ненужных значений к указателю на вершину значения прибавляют. И для доступа к значениям относительно основания или вершины это тоже важно учитывать. Это может звучать запутанно, но через время привыкаешь и всё становится очевидным.
Надеюсь это возможно будет разобрать. Код скомпилирован MSVC v19.28 для x86 со стандартными настройками в Godbolt
Post scriptum
Это всё довольно упрощенно. Как минимум, в защищенном режиме используется больше 5 разных соглашений о вызове, которые отличаются деталями реализации. Это было описание для cdecl, обычно используемого в C. Еще часто используются соглашения pascal, fastcall, thiscall, winapi и другие. Fastcall, к примеру, избегает хранения аргументов на стеке, если их возможно передать через регистры, что улучшает производительность. А winapi отличается от cdecl тем, что функция сама очищает стек от аргументов для себя при возврате. А еще я упустил, к примеру, сохранение регистров, которые функция может перезаписать и испортить, а потому обязана предварительно сохранить и перед возвратом восстановить, передачу переменного количества аргументов (как в printf) и возврат значений шире 32 бит (которые не влезут в EAX).
Плюс сейчас мало кто компилирует ПО под защищенный 32-битный режим, а в длинном режиме (AMD64) используется пара других соглашений, основанных на fastcall и имеющих несколько отличий друг от друга.
Так процедура или функция? Или подпрограмма?
Процедурное программирование предлагает делить код на подпрограммы, которые принято называть функциями и процедурами (функция обычно является наиболее понятным, частым и обобщенным названием, поэтому я его использую).
Процедура от функции отличается только тем, что функция возвращает какое-то значение (как в математике), а вот процедура этого не делает. Не во всех языках явно есть процедуры (в Pascal есть, но не в C). В таком случае их заменяют функции, возвращающие ничего (void, Unit, undefined, None).
Хотя и тут есть свои особенности. К примеру функция, возвращающая void в C и Java является прямым аналогом процедур, как-либо использовать возвращенное значение из такой функции невозможно, ибо его нет физически. А вот Unit в Kotlin это синглтон (а-ля единственная и уникальная константа уникального типа), ссылку на который можно присвоить в переменную, но в этом особого смысла нет. Undefined в JS и None в Python тоже уникальные константы специальных типов.
Но не тут-то было
Вроде бы процедура никогда не может ничего вернуть...
Только она этого никогда не делает напрямую. При она этом может записать результат в глобальную переменную, а еще часто принимает в себя указатели или ссылки, по которым может записать результат. Это еще удобно тем, что можно "вернуть" несколько значений. Пример:
void procedure(int x1, int *x2, int *x3) { // Функция ничего не возвращает, то есть это процедура *x2 = x1 * x1; // Разыменовываем указатель и записываем по его адресу результат. *x3 = x1 * x1 * x1; // Разыменовываем другой указатель и записываем по его адресу результат. } int y1, y2; procedure(16, &y1, &y2); // В y1 оказался результат, аналогичный прошлому примеру. А в y2 куб числа.
PS: оператор звездочка при указании типа превращает его в тип-указатель, а при применении на переменную-указатель разыменовывает ее до изначальной переменной. Амперсанд превращает переменную в указатель на нее (иногда еще называется оператором получения адреса).
То есть мы вернули сразу 2 разных значения из процедуры, которая якобы ничего не возвращает. Чудеса. Подобные чудеса есть в том числе в Pascal с явным делением на процедуры и функции (плюс там это сделано немного удобнее). Хотя механизм тут отличается от того, который используется в возврате значения из функции и совпадает с механизмом передачи обычных аргументов, поэтому никакой магии.
Еще про связь с математикой
Главное отличие функций в программировании от функций в математике в том, что они могут делать что-то на стороне и не обязаны возвращать одинаковый результат при одинаковых аргументах.
К примеру функция получения случайного числа по определению не может существовать в математике, если она не принимает в себя предыдущее случайное число или зерно для его видоизменения. Или функция записи в файл, возвращающая 0 в случае успеха и другое число при провале. Ко всему прочему, такая функция имеет побочный нематематический эффект, то есть запись в файл, что тоже недопустимо традиционной математикой без высоких абстракций.
Поэтому придумали чистые функции. По сути это ограничитель, которые делают функцию полным отражением таковой в математике. Им запрещено возвращать разные значения при одинаковых аргументах (точнее запрещено всё, что может такое позволить сделать), запрещено обращаться к нечистым функциям, запрещено обращаться к тому, что не является аргументом или локальной переменной, запрещены вообще любые действия, которые могут сделать что-то на стороне (даже функция sin() в C не всегда является чистой, ибо может зависеть от состояния FPU).
Чистые функции через ключевое слово pure явно есть в D и FORTRAN (проверка на чистоту во время компиляции), а также являются основой функционального программирования.
Чистая процедура тоже имеет право на жизнь, используя механизм со ссылками (на счет указателей не уверен из-за возможности арифметики над ними).
Функциональное программирование
Это очень сложная категория, которую постоянно путают с процедурным программированием. А еще это де-факто противоположный стиль: декларативный. Традиционное императивное программирование детально описывает процесс получения результата, а декларативное сам результат, без деталей реализации (хотя разделение обычно довольно нечеткое). При этом второй типичен для языков разметки типа HTML и CSS. То есть, условно, как одна и та же операция могла бы выглядеть в императивном и декларативном стиле:
document.tags.A.color = "blue" /* Императивный (JSSS). Сделать ссылки синими */
a { color: blue } /* Декларативный (CSS). Ссылки должны быть синими */
Почувствуйте разницу.
И функциональное программирование я никогда не изучал и слишком мало о нем знаю. Так что готовьтесь к ошибкам и не воспринимайте всё за чистую монету.
Внутри чистого функционального программирования
Основано полностью на математике, все функции обязаны быть чистыми. Операция присваивания запрещена (разрешены константы), переменных в привычном виде нет. Прикольно? Очень!
Во многих процедурных языках функции и процедуры являются объектами второго класса (не путать с классами из ООП), что не позволяет их свободно присваивать в переменные, передавать как аргументы в другие функции или возвращать из них (только через указатели). Функциональные языки расценивают функцию как объект первого класса, то есть их можно, а часто нужно передавать в другие функции напрямую.
Это дает некоторые преимущества, особенно в плане безопасности и при работе с многопоточностью (по причине неизменяемости данных и отсутствия глобального состояния), но вся концепция имеет один фатальный недостаток: вы мало чего полезного можете сделать, ибо что ввод, что вывод являются математически нечистыми, а потому запрещены. Вот такое вот гениальное изобретение безумных математиков.
Функциональное и процедурное программирование. Холст, масло
Каждый чисто функциональный язык выкручивается из этого по-своему, к примеру через монады. Это позволяет им существовать вне шуток и даже использоваться на практике.
Это не все особенности функциональных языков, но одни из самых важных. Самый известный такой язык: Haskell. Функциональные F#, Lisp, ML и многие другие не являются 100% чистыми.
Смешанное функциональное программирование
Последнее время часто используются смешанные языки, к примеру вместе с процедурным или объектно-ориентированным программированием, что избавляет от ограничений математики, но дает гибкость в том, что функциями можно оперировать как с любыми другими типами данных, а еще дает много очень удобного сахара вроде замыканий и лямбд. Это C#, Python, JS, частично Java и C++ (в них нужны костыли в виде интерфейсов из одного метода или оберток над указателями).
Особенности
Функции как объект первого класса. К примеру в C# это реализовано через систему делегатов, которые представляют из себя тип-обертку для функций:
Action<string> printer = Console.WriteLine; // Action<string> - тип-делегат. Неявно создаем его объект и присваиваем туда функцию printer("Hello, World!"); // Вызываем функцию через делегат
Локальные функции: как обычные, только вложенные в другую функцию (объявленные внутри нее)
void Func1() { // Глобальная функция void Func2() { // Локальная функция Console.WriteLine("В локальной функции"); } Func2(); }
Лямбды: возможность объявить безымянную функцию посреди кода (часто удобнее локальных)
var pow2AsLambda = x => x * x; // => - оператор лямбда-выражения pow2AsLambda(5); // Вернет 25
Замыкания (можно использовать вместе с лямбдами и локальными функциями):
int someValue = 42; var pow2AsLambda = x => x * x + someValue; // someValue будет захвачено замыканием, хотя напрямую не передано pow2AsLambda(5); // Вернет 67
Особенность замыканий в том, что они могут захватить локальную переменную родительской функции внутрь себя, продлевая ей время жизни за пределы блока с кодом. После чего такую лямбду можно передать в другую функцию, которая просто так не имеет доступа к someValue (в обычных условиях someValue вообще уже будет уничтожен), а вот переданная лямбда сможет ее прочитать или записать всегда и откуда угодно. И самое интересное то, что значение этой переменной будет сохранятся между вызовами к замыканию. То есть она становится глобальной, но видимой только из функции-замыкания.
ООП
Посмотрим на индекс TIOBE по популярности языков. Фиолетовым я пометил чистые функциональные языки. Языки, имеющие возможности, присущие функциональным языкам (смешанные) - синим, процедурным - красным, а объектно-ориентированным (ООП) - зеленым. Языки, в которых нельзя объявить функцию, принадлежащую самой себе или модулю, процедурными считать не совсем корректно (Java).
Не претендую на 100% точность
Видите фиолетовые точки? И я не вижу. А вот синих 12. В то же время красных и зеленых по 16. При этом реально применяемый чисто процедурный язык всего 1: С. Остальные имеют какую-либо встроенную поддержку других парадигм.
И сейчас практически всё большое ПО пишут в ООП. Ибо позволяет хоть как-то сдерживать структурированность кода после перехода с десятков тысяч строк к сотням (и миллионам).
Внутри
ООП является развитием идеи процедурного программирования. Проблема была в том, что помимо кода в программе существуют еще и данные, которые было бы неплохо связать с соответствующим им кодом. И через некоторое время после появления процедур появились структуры (они же записи в Pascal, не путать со структурным программированием).
Структуры были удобным способом объединить несколько переменных в единое целое. Пример:
typedef struct user_struct { char *username; int userid; int reputation; } user_t; user_t someuser = { "IvanKr08", 17002, 253 }; // Инициализируем значениями someuser.reputation += 10; // Обращаемся к полю
(Вместе с этим объявляем структуру новым типом через typedef, что не делается по умолчанию в C, в отличии от C++. Один из ярких примеров несовместимости C и C++):
После чего user_t превращается в новый тип, как int или char. Можно создать полноценную переменную типа user_t (или массив такого типа), а потом обратиться к какой-нибудь ее части (полю) через оператор точки (.). Можно сделать функцию, которая будет принимать или возвращать переменную типа user_t (к примеру someuser). Можно сделать указатель на user_t, тогда для обращение к полю используется оператор стрелки (->). Или можно встроить переменную типа одной структуры в другую, это тоже не запрещено. Внутри структурная переменная представляет из себя последовательно слепленные поля в одно целое.
Если поля разного размера, то часто добавляют пустоты между полей в целях выравнивания по размеру наибольшего поля и улучшения производительности, но это сложная тема
Возвращаемся к ООП
Суть ООП в том, что помимо полей структуры могут содержать процедуры и функции. Такая структура называется классом, переменная класса - объект, а процедура класса - метод.
Метод принципиально ничем не отличается от любой процедуры или функции, кроме того, что неявно принимает в себя специальный аргумент this (в Python это делается явно, в некоторых языках вместо this может быть self). Он содержит в себе ссылку/указатель на объект класса, от которого был вызван. Пример:
class User { public: char *username; int userid; int reputation;
void print() { printf("Пользователь \"%s\" (%i). Репутация: %i\n", this->username, this->userid, this->reputation); // Постоянно писать this-> не обязательно. Если локальной переменной с таким именем нет, то будет произведен доступ к полю } }; User someuser = { "IvanKr08", 17002, 253 }; // Инициализируем значениями someuser.print(); // Вызвали метод, print() неявно получил в себя указатель this, который указывает на someuser someuser.reputation += 10;// Обращаемся к полю someuser.print(); // Теперь вывод поменяется
Да, никто не мешает объявить обычную функцию, которая будет явно принимать в себя указатель на User и ничего не поменяется, и так повсеместно делают в C (тот же WinAPI на этом построен целиком и полностью), но ООП на самом деле крайне сложная, большая и холиварная тема, которая развивалась на протяжении 60 лет в разных направлениях и которую поднимать тут глупо. Только опишу еще несколько разновидностей методов:
Статичный метод - как обычный метод, только не получает в себя this и вызывается от имени класса, а не объекта (не someuser.method(), а User::method()). Зачем это нужно и в чем отличие от просто функции? Статичный метод можно спрятать за инкапсуляцией, плюс он привязан к классу, а не болтается в глобальном пространстве имен.
Конструктор - автоматически вызывается при создании нового объекта. Может иметь аргументы, тогда обязан явно вызываться как функция с именем класса, т.е. User("IvanKr08", 17002, 253)
Деструктор - есть в C++. В C# называется финализатором и имеет несколько важных отличий. Автоматически вызывается перед уничтожением объекта (к примеру выход из области видимости, явное удаление оператором delete или удаление сборщиком мусора в C#). Не может иметь аргументов.
Свойство - есть в Delphi и C#, куда перешел от первого. С точки зрения синтаксиса это поле, которое можно читать и записывать, только вместо прямого обращения в память вызываются соответствующие методы (set и get). Пример: ... int SomeProperty{ get =>42; set => Console.WriteLine("Set"); } ... test.SomeProperty = 10; // Значение никуда не сохранится, будет выведено "Set" в консоль Console.WriteLine(test.SomeProperty); // Всегда будет 42
Перегрузка оператора - специальный метод, который позволяет переопределить стандартные операции для типа. К примеру нельзя сложить два объекта User или User и число, но если перегрузить оператор +, то можно будет определить свою логику для этого (не обязательно, чтобы оно что-то реально складывало. Это может быть любое действие).
Индексатор - синоним перегрузки оператора квадратных скобок. Объект начинает вести себя как массив.
Функтор - перегрузка оператора круглых скобок (иначе называется перегрузкой оператора вызова функции). Позволяет "вызывать" объект так же, как и функцию. Звучит запутанно, но можно погуглить. Есть в C++. Также бывает функтор в функциональном программировании, но он не имеет ничего общего с функтором в C++.
Виртуальная функция (метод) - самый интересный и сложный тип, составляет основу полиморфизма. Вкратце объяснить его невозможно, но одним из ключевых принципов ООП является наследование, то есть один класс (наследник) копирует в себя все поля и методы другого класса (родитель), и может добавить новые. И суть в том, что указатель (ссылка) на объект класса-наследника может быть присвоен в переменную-указатель родительского типа. А самое интересное то, что любые обращения (к примеру вызовы методов), сделанные через родительский указатель, будут вести себя аналогично обращениям, сделанным напрямую через указатель с типом наследника. Это называется полиформизмом. Но это было бы не слишком полезным, если бы не возможность объявить метод в родительском классе виртуальным, а в наследнике полностью переопределить его код.
И то, что я забыл
Послесловие
Если вы осилили эти 3000 слов и даже смогли что-то понять, то найдите и распечатайте себе утешительную грамоту. А я устал и пойду искать смысл жизни...
UPD: исправлены косяки форматирования, очепятки, добавлено еще пару пунктов про разновидности методов и функциональное программирование.
Все хим. элементы являются отходами жизнедеятельности звёзд. Но только до железа. А вот более тяжёлые элементы - результат космических катастроф, как-то слияние белых карликов, нейтронных звёзд и пр. о-о-чень ярких событий.
Хим. элементов тяжелее железа очень мало, но они есть и мы добываем их в промышленных масштабах (сотые доли процента от массы нашей планеты, но всё же есть). И, по сравнению с массой нашей планетки теоретически могут накопиться весьма критические массы вибраниума, ураниума.
Уран, точнее Uranium, бывает во многих видах, но самые распространённые это злой и добрый Уран. Добрый уран, как и полагаяется всем добрым скуфам имеет повышенную массу с атомным числом в 238, а вот его злой брательник худой - "весит" всего 235, оттого и злой - "нетрония" не хватает стабилизировать ядро.
Появлялись эти элементы примерно в равных количествах, но "злые", то бишь радиактивные ядра, элементы, изотопы долго не живут. Вот потому и "злых" хим. элементов становится всё меньше и меньше.
Так, кажись меня опять "понесло", Пост о чём? Правильно, о ядрЁных реакциях в природе. При некоторой концентрации урановой руды с большим кол-ом 235го урана теоретически возможен не только ядрёный взрыв (а они вполне могли быть на заре формирования планеты), но и долгоиграющие атомные реакторы.
За счёт цепного деления порода разогревается, потом к-либо методом происходит выброс энергии и порода начинает "тлеть".
Теория это хорошо и увлекательно, только об этом сценарии никто и не думал, пока не открыли месторождение урания в Окло, в Габоне, посреди Африки. (СССР и после РФ являются крупнейшими в мире поставщиками обогащённого урана, но это не означает что у нас его дохрена - просто мы умеем его очень дёшево и много обогащать, потому как "на игле сидим").
Вот схема ентого реактора:
Геологический разрез естественного ядерного реактора Окло
1. Зоны деления
2. Песчаник
3. Слой урановой руды
4. Гранит
По расчётам реактор пахал около 1.8 миллиардов лет назад.
Реактор возник в результате затопления пористых богатых ураном пород
грунтовыми водами, которые выступили в качестве замедлителей нейтронов.
Тепло, выделявшееся в результате реакции, вызывало кипение и испарение
воды, что замедляло или останавливало цепную реакцию. После того, как
порода охлаждалась и распадались короткоживущие продукты распада,
поглощающие нейтроны и вызывающие отравление реактора,
реактор разотравлялся, вода конденсировалась, и реакция возобновлялась.
Этот циклический процесс продолжался несколько сотен тысяч лет.
Промышленная революция
стала поворотным моментом в истории человечества, изменив не только способы
производства, но и социальные, экономические и культурные структуры общества.
Начавшись в Великобритании в конце XVIII века, она распространилась по всему
миру, трансформируя аграрные общества в индустриальные. Основой этой революции
стали инновации, такие как паровой двигатель, механический ткацкий станок и
железные дороги, которые значительно повысили производительность труда и
ускорили процессы перемещения товаров и людей. Эти технологические прорывы не
только изменили производственные методы, но и создали основу для новых форм социального
взаимодействия.
Рост фабричного
производства и урбанизации привел к масштабному перемещению населения из
сельских районов в города, что вызвало серьезные изменения в социальной
структуре. На смену традиционным сельским общинам пришли промышленные города,
где формировался новый класс наемных рабочих. Эти изменения сопровождались
тяжелыми условиями труда, низкой оплатой и отсутствием социальных гарантий,
что, в свою очередь, способствовало появлению первых движений за права рабочих
и профсоюзов. Рабочий класс стал важной социальной силой, настаивавшей на
введении ограничений на рабочее время, улучшении условий труда и создании
систем социальной защиты.
Инновации, возникшие в
этот период, не только изменили производственные процессы, но и повлияли на
формирование новых экономических моделей. Переход от ручного труда к машинному
производству сопровождался концентрацией капитала и появлением крупных
промышленных предприятий. Это привело к усилению роли предпринимателей и
инвесторов, что стало основой для капиталистической экономической системы.
Однако концентрация богатства в руках узкой элиты породила глубокие социальные
неравенства, которые стали основой для дальнейших экономических и политических
изменений.
Rлючевые аспекты взаимодействия инноваций и социальных преобразований в рамках промышленной революции
Промышленная революция
также дала начало глобальной экономической интеграции, так как развитие транспорта
и коммуникаций способствовало росту международной торговли. Одновременно с этим
она вызвала серьезные экологические проблемы, такие как загрязнение воздуха и
воды, что стало вызовом для будущих поколений. Взаимодействие инноваций и
социальных преобразований, возникших в этот период, стало фундаментом для
модернизации общества, но также показало необходимость учета социальных и
экологических последствий технологического прогресса. Как показала промышленная
революция, изменение технических цепочек и повышение уровня автоматизации влияют
на общественные страты.
В XXI веке, когда
нейросети способны обрабатывать миллиарды транзакций, поведенческих паттернов и
логистических цепочек в динамике, экономика находится на пороге появления
кибернетического мета-координирующего слоя, способного заменять рыночные
сигналы на более точные и мягкие формы регулирования.
Сопоставление фаз автоматизации и социальных трансформаций
Во-первых, автоматизация
размывает границы между производителем и потребителем. Платформенные решения
делают возможной занятость без принадлежности к классу наемных работников в
привычном смысле - фрилансеры, курьеры, водители агрегаторов, авторы цифрового
контента становятся микро-предпринимателями, но без доступа к капиталу.
Возникает новая прекаризация - форма зависимости без прямой эксплуатации, но с
тотальным алгоритмическим контролем.
Во-вторых,
производственные цепочки укрупняются и централизуются, но при этом логистика и
кастомизация становятся гиперлокальными благодаря on-demand производству. Это
приводит к возникновению новой страты - технических медиаторов, тех, кто
настраивает цепочки, связывает потребности и мощности. Они заменяют
классических инженеров или финансистов и формируют инфраструктурный слой будущей
плановой экономики.
В-третьих, цифровой мета-координирующий
слой - это не «большой брат», а распределённый агент, встроенный в каждую
ячейку производства и потребления: от кофемашины до системы управления городом.
Такие системы уже сегодня меняют расстановку сил: доступ к данным становится
важнее, чем владение заводом. Класс капиталистов уже трансформируется в класс
операторов алгоритмов, а класс рабочих - в класс пользователей и управляемых
систем.
Шаги изменений социальных страт под воздействием автоматизации
И наконец, в условиях сверхавтоматизированных цепочек растёт важность
эмоционального, смыслового, гуманитарного труда - креативная индустрия, воспитание,
культура, уход, терапия. Это продолжает радикально изменять иерархию социальной
ценности профессий: труд блоггера (автора цифрового контента), например, уже
стал более значимым, чем труд оператора колл-центра, которого давно заменил ИИ.
Продолжение: Цифровая трансформация: от локальных изменений к глобальным мутациям
Этот пост входит в Часть 8. Влияние мутаций: инновации и кризисы
Роль технологических, социальных и финансовых кризисов в преобразовании экономических систем. Анализ примеров внезапных изменений, таких как Великая депрессия, промышленная революция и цифровая трансформация.
СерияПроисхождение экономических систем путём естественного отбора
Кто интересуется развитием общественно-экономических формаций, подписывайтесь!
В прошлом моём посте я понял, что не все вомбатяне имеют высшее техническое образование. Это не укор, просто гениальному хирургу или учителю начальных классов, да даже водителю или сварщику такие знания не нужны. Потому попытаюсь писать посты как можно проще.
И так, возникла проблема в понимании самой сути некоторых физ. понятий. Люди спутали заряд и энергию, хотя при этом получились правильные цифры.
И так. Школьный ликбез говорит, что есть мера измерения электрического заряда. Ещё древние греки заметили, что если ебонитовую палочку потереть об древнеегипетскую кошку, то к палочке начинает прилипать пыль, кусочки бумаги, клопы и пр. мелочь. Озадачились, а что же это за сила, которая ставит волосы дыбом после того как потереть башкой об воздушный шарик? Например Фалес (ну и имя, прости меня господи) Милетский считал что таким образом янтарь, в отличие от магнетита может стать магнитным. Т.е. сила притягивания имела такую же природу как и у магнитов. И это было за шесть веков до нашей эры. Он уже тогда предпологал, а может и знал, но не мог никому объяснить (теория попаданцев) уравнения Максвелла.
Ага. Масло в изношенном двигле тоже умеет магнитится 🤪
После этого ещё итальянец Гальвани (зоошизы на него не хватает) и над лягушками поиздевался, точнее над их частями - лапками. Эх вот не ездил бы Пётр-I в европу, может и в Петербурге расчленёнки небыло...
Так и появилось понятие электромагнетизма. Пора уже и к википедИи обратиться: "Электри́ческий заря́д (коли́чество электри́чества) — физическая скалярная (т.е. не имеет направления, как, к примеру, сила, которая направлена куда-то в пространстве) величина, показывающая способность тел быть источником электромагнитных полей и принимать участие в электромагнитном взаимодействии."
А из чего состоит-то та самая липездрическая сила, которая при контакте с фазным проводом заставляет нас дёргаться как те самые легушачьи конечности (надеюсь тег "Жесть"тут не нужен) у Гальвани?
Было ещё пару чуваков, которые изучали это самое электричество. Это естественно Кулон и его величество Ампер (мне по работе очень часто приходится иметь дело с тысячными долями ентого чувака, в основном от 0 до 20 милиАмперчиков). Что характерно, оба они французы, т.е. "лягушатники" (а мы ещё корейцев за собак ругаем...) Так мало того, что бедные лягушки (во Франции вообще среду стоит объявить выходным днём, по-типу "лягушачья" сиеста ), так Кулон ещё и Ампера протащил по узкому проводнику
А кто такой Ампер?
Ампер — сила неизменяющегося тока, который при прохождении по двум
параллельным прямолинейным проводникам бесконечной длины и ничтожно
малой площади кругового поперечного сечения, расположенным в вакууме на
расстоянии 1 метр один от другого, вызвал бы на каждом участке проводника длиной 1 метр силу взаимодействия, равную 2⋅10−7 ньютона.
Я тоже перечитал пару раз, что бы понять суть. Вот такая она "вики"
Грубо говоря, Ампер вычислил силу эл. тока проходящую по условным рельсам и вырази её в силе. Ну а Кулон пропустил Ампера через "проводник"... Вот такие они франецузы - извращенцы ещё те.
Тут появляется ещё один француз - Шарль Франсуа Дюфе, который заметил, что не все "эбонитовые палочки" и не все "коты" ведут себя одинаково. Некоторые притягиваются, а некоторые отталкиваются...
Ну ладно воду в ступе толочь. Пора уже и в "кванты" опускаться. Немец (ну а кто же ещё) Иоган Вильгельм Гитторф заметил свечение люминофора при приложении напряжения между люминофором и разогретым катодом. Подтянулась целая толпа немцев с англичанами и поняли - что-то летит от катода в сторону мишени.
Затем, всё это экспериментаторство вылилось в модель атома от господина Резерфорда (о - знакомая фамилия). В модели атома Резерворда как раз и появился электрон.
Естественно за енту тему впряглись все, кто мог хоть что-то, в том числе и Эйнштейн.
Да, тот самый язык. "Это он его показывает председателю нобель-коммитета, ждал то нобелевку за "относительность"" (шутка, просто пытался обломать паппараци, а вышло наоборот)
Он объяснил фотоэффект, это когда светом вышибаются электроны из из атома - на ентом принципе построены как светодиоды, так и фотоприёмники (когда жмакаете пимпачку на ИК-пульте телека - вспоминайте Эйнштена), за что получил нобелевку с присказкой "и другие заслуги", которые подразумевали теорию относительности (ну не мог коммитет признать такую революционную теорию).
Ну что же - электрон открыт, разогнан, потом его и изучат. Причём с офигительной точностью. Именно электрон виноват в "ебонитовой палочке в кошечку". К тому же, на данном этапе развития науки, электрон является реально неделимой частицей, в отличие от протона или нейтрона... Вот таки дела малята.
Неделимый? Да сколько его не долбали в экспериментах - всегда фотон получается, а фотон - ну так себе частица - оно массы не имеет. Вроде как есть(пока движется), а вроде как и нет (замедлить в среде можно, а вот остановить нет).
Вот и получилось, что есть массовая частица с электрозарядом. Меньше этого электрозаряда нет, есть только математические трюки про кварки (по одиночке они не существуют, а в паре, тройке или пентакварке - всегда получается заряд чётный электронному). Т.е. этот заряд является фундоментальным, и пока опровергнуть даже в теориях не получается.
Естественно этот заряд сначала рассчитали, а потом и подтвердили экспериментально.
Ввиду лёгкодоступности "липиздричества" измерить его удалось о-о-очень точно.
Масса: 9,109*10^−31 килограмм
Электрический заряд: −1,602176634*10^−19 Кулон
Спин: 1/2 (нет, это не вращение, это просто очередное квантовое число - означает свойства частицы, но ничего не объясняет, как и вся квантовая физика)
Ну и так как эта хрень, электрон (ну и позитрон конечно) является наименьшей неделимой частицей с зарядом, то по этому используют единицу измерения энергии, которая равна действию для перетаскивания этого электрона в электростатическом поле (конденсатор) с разностью потенциалов в 1 Вольт. И ентот эВ.равен заряду электрона в Кулонах, умноженный на разность потенциалов для переноса. Т.е. eV = qU, где q = 1,602 176 634*10^-19 (элементарный заряд) на U = 1 Вольт. Вот так и получается, что электронвольт кратен кулону
Вроде невозможность достижения скорости света в вакууме для объектов, обладающих массой покоя никого уже не удивляет. Я тут решил поинтересоваться, а до каких скоростей человечеству уже удалось достичь? Именно в вакууме т.к. в среде неинтересно - про свечение Вавилова-Черенкова и почему это имеет место быть мне ещё в школе рассказали.
То самое от Вавилова-Черенкова. Спёрто с википедии.
Естественно взор падает на элементарные частицы. В первую очередь начал смотреть на электроны (чем легче частица - тем легче её разогнать) и... обломался. Электрончики в ускорителях разгоняют слабо, всего до 91% от скорости света.
Ладно, глянем на самый-самый БАК:
Именно в этой трубе с бешенной скоростью летят протоны
Фишкой БАКа является то, что он заточен на ускорении протонов. Протоны разгоняются в двух встречных пучках и сталкиваются в области детекторов частиц:
Детектор CMS в ЦЕРН – один из двух наиболее мощных детекторов из когда-либо созданных. В среднем каждые 25 наносекунд в его центре сталкиваются новые группы частиц.
БАК способен разогнать протоны до энергии в 7 ТэВ (при этом масса протона увеличивается почти в 7000 раз) и скорости 299 792 455 м/с, всего 3 м/с не дотягивая до скорости света. А это 99,9999991% от скорости света. Впечатляет. И это у каждого пучка.
Ладно, а на что способна природа? Есть детектор “Fly’s Eye” который смотрит в небо и фиксирует взаимодействие космических частиц с атмосферой Земли. 15 октября 1991 года американские ученые зафиксировали очень быстрые протоны. Даже назвали их OMG-particles ("О Боже Мой" - частицы). Скорость этих частиц 99,99999999999999999999951% от световой с энергией порядка (3.2±0.9)×10^20 Эв (320 ЭэВ (экза-электронвольт))
.
Да... Нам до таких энергий и скоростей ещё расти и расти.
Пространство-время– это математическая модель, которая объединяет три измерения пространства (длина, ширина, высота) с одним измерением времени в единый четырехмерный континуум. Вместо того, чтобы рассматривать пространство и время как отдельные и независимые сущности, мы рассматриваем их как взаимосвязанные и взаимозависимые аспекты единого целого. Это связанное состояние является чем-то типа сцены, на которой творится вся физика и вся наша жизнь. Но откуда оно взялось и как сформировалось?
Ну и да, я буду рад, если вы посмотрите мой ролик на YouTube по этой теме. Там всё разложено по полочкам и много чего интересного. Каждый просмотр важен.
Вопрос о происхождении пространства и времени– один из самых фундаментальных и завораживающих в физике. Это не просто вопрос “когда” и “где”, это вопрос о самой ткани реальности, о тех нитях, из которых сплетен наш мир. Ответить на него полностью мы пока не можем, но существующие теории и модели дают нам некоторое представление о проблеме. И проблема эта точно не самая простая.
Вообще теорий существует просто невероятное количество. Вот только если говорить именно про научные, да ещё и на сугубо физические подходы, то я насчитал их всего три. Давайте их и разберём.
Для начала отмечу, что особняком стоит взаимоотношение пространства и времени с информацией. Будет ли информация являться частью пространства-времени или это разные сущности? Правильного ответа нет, как нет и полного описания понятия "информация". Но в одном случае уместно полагать, что информация описывает ещё и пространство-время и становится его основой, а в другом - что информация появляется внутри пространства-времени. Вдумайтесь в этот момент.
Некоторые физики полагают, что пространство-время формируетсяв пределах масштабов Планка, то есть на масштабах, близких к одной триллионной доли метра. Другие сводят всё к взаимодействию кварков. Сложность лишь в том, что ни те, не другие не могут точно сказать, что именно происходит.
Не было никакого “ДО”
Одна из самых "хитрых" теорий построена на том, что пространство и время существуют вечно. Сама идея “до” теряет смысл, ведь “до” предполагает наличие времени, а его, как такового, вероятно и нет. Можно представить это как вопрос о том, что находится севернее Северного полюса. Понятие просто не имеет никакого смысла в данной системе координат.
Если сюда добавить разные подходы, связанные с зацикливанием поведения Вселенной и её физического состояния, то сам вопрос о формировании пространства-времени теряет всякий смысл.
Квантовые флуктуации
Эта теория построена на том, что в физике не может существовать пустоты. До формирования Вселенной (всё равно по какой причине) не было пустоты. Был набор квантовых флуктуаций. Они каким-то образом (опять-таки не важно каким) получили энергию и стали раскручиваться. Этот процесс позволил говорить о формировании не просто материи, а пространства и времени вместе с ней. Очень грубая аналогия - это как театр приехал на гастроли и привёз с собой всё необходимое. Сцену, актёров, декорации.
Но тут сама квантовая теория тонет в изобилии гипотез. Среди них можно выделить самые известные:
Теория струн:Представляет собой радикальный подход, заменяющий точечные частицы одномерными струнами, вибрирующими в многомерном пространстве. Пространство и время, в этом случае, возникают как эмерджентные свойства этих струн.
Петлевая квантовая гравитация:Подход, который квантует само пространство-время, представляя его в виде дискретной сети “спиновых сетей” и “спиновых пен”. В этой модели, пространство и время не являются непрерывными, а состоят из фундаментальных, квантованных “атомов”, а они появились после Большого взрыва.
Теория причинно-следственных множеств:Предполагает, что пространство-время состоит из дискретных элементов, связанных причинно-следственными связями. Время, в этом случае, является фундаментальным аспектом реальности, определяющим порядок этих связей. Они тоже сформировались когда-то при Большом взрыве.
Пространство-время как эмерджентное явление
В некоторых моделях, пространство и время не являются фундаментальными, а возникают какэмерджентныесвойства более фундаментальных объектов или состояний. Это подобно тому, как температура возникает как усредненное значение кинетической энергии молекул, хотя сами отдельные молекулы не имеют “температуры”.
Этот взгляд часто обыгрывал Эйнштейн. Когда он рассуждал на тему искривления пространства-времени для формирования гравитации, часто звучала мысль, что ни в коем случае нельзя рассматривать пространство и время как что-то уже существующее и искажающееся как простынь. Он склонялся к мысли, что массивные тела формируют вокруг себя некоторое окружение пространством, которое на фоне других точек является искаженным.
Одной из интересных идей является то, что пространство-время может быть связано сквантовой запутанностью. Квантовая запутанность – это явление, когда две частицы оказываются неразрывно связаны, независимо от расстояния между ними. Некоторые теории предполагают, что пространство-время “сшивается” благодаря запутанности между фундаментальными элементами реальности.
Ну и свежая не-физическая теория
Есть теория, которая сейчас довольно активно обсуждается в сети. Я бы не стал относить её именно к физической теории. А потому в заголовке упомянуты только три теории, а не четыре. Но просто считаю нужным про неё упомянуть. Это теориякосмического генома. Она чем-то похожа на теорию симуляции и превалирование космического программного кода.
Представьте себе, что Вселенная – это не хаотичный взрыв, а тщательно запрограммированный организм, управляемыйкосмическим геномом. Это не просто набор чисел, а фундаментальная информационная матрица, существующая вне пространства и времени, содержащая “Кодоны Вселенной” (KVU).
KVU – это квантовые состояния, как инструкции, определяющие свойства и отношения. Пространство рождается какэмерджентноесвойство, когда KVU взаимодействуют, сплетаясь в сети. Близость в пространстве – это степень их информационной связанности. Время – это последовательность активации KVU, создающая причинно-следственные связи. Квантовая запутанность - это нелокальная связь KVU, имеющих общего “родителя” - родительский KVU, связь вне пространства и времени.
Эволюция Космического Генома, мутации, ведут к изменению физических законов, создавая разнообразие вселенных в мультивселенной. Теория предлагает рассматривать Вселенную как колоссальный информационный процесс, где информация первична, а пространство и время – лишь её голографические проекции. Проверяемость пока сложна, но идея открывает двери для нового понимания фундаментальной природы реальности.
Вместо заключения
Происхождение пространства и времени всё равно остается открытым вопросом. Развитие теории квантовой гравитации и дальнейшие исследования в области космологии и теоретической физики, возможно, приблизят нас к пониманию этого фундаментального аспекта нашего существования. Какая ситуация в физике сейчас? Всё просто, никто в полной мере не понимает, откуда взялось пространство-время.
Великая депрессия остается одним из самых масштабных экономических потрясений в истории, продемонстрировавшим уязвимость нерегулируемых рынков и необходимость глубоких структурных реформ. Начавшись с обвала фондового рынка США в октябре 1929 года, депрессия быстро переросла в глобальный кризис, охвативший почти все аспекты экономики: производство, торговлю, финансы и занятость. Последствия были разрушительными, с массовой безработицей, банкротствами предприятий и стремительным снижением уровня жизни. Однако Великая депрессия также стала моментом, когда правительства и экономисты начали искать новые подходы для смягчения кризиса и предотвращения подобных событий в будущем, что привело к ряду системных реформ и инноваций.
Одним из наиболее ярких примеров адаптации стала политика «Нового курса» Франклина Делано Рузвельта. Этот комплекс мер включал широкомасштабные государственные инвестиции в инфраструктурные проекты, создание социальных программ, таких как система социального страхования, и усиление государственного регулирования финансовой системы. Ключевым нововведением стало учреждение Федеральной корпорации страхования вкладов (FDIC), которая восстановила доверие к банковской системе, гарантируя сохранность вкладов. Эти меры не только стабилизировали экономику, но и заложили основу для современной модели государственного участия в экономике.
Международная реакция на Великую депрессию также выявила необходимость координации усилий между странами. Например, переход многих государств от золотого стандарта позволил центральным банкам более эффективно управлять денежной массой, что стало важным шагом в развитии современной монетарной политики. Тем не менее, некоторые страны избрали протекционистский путь, как это было с принятием закона Смута-Хоули о тарифе в США (очень похожего на современные тарифные войны Трампа), который привел к росту торговых барьеров и усугубил глобальный экономический спад.
Основные уроки Великой депрессии и их последствия
Одним из самых значимых уроков Великой депрессии стало понимание, что экономические кризисы могут быть не просто преодолены, но и использованы как возможность для укрепления институтов и обновления подходов к управлению. Именно в этот период заложились основы современного кейнсианства, где государство берет на себя роль стабилизатора, компенсируя циклические спады экономики через активную фискальную политику. Великая депрессия, несмотря на свои разрушительные последствия, стала важным этапом в эволюции экономической мысли и практики, показав, что кризис может быть не только угрозой, но и возможностью для прогресса.
Продолжение: Промышленная революция: взаимодействие инноваций и социальных преобразований
Этот пост входит в Часть 8. Влияние мутаций: инновации и кризисы
Роль технологических, социальных и финансовых кризисов в преобразовании экономических систем. Анализ примеров внезапных изменений, таких как Великая депрессия, промышленная революция и цифровая трансформация.
СерияПроисхождение экономических систем путём естественного отбора
Кто интересуется развитием общественно-экономических формаций, подписывайтесь!
Финансовые катастрофы выступают мощными катализаторами экономических изменений, радикально трансформируя существующие модели управления и подходы к регулированию. Такие события, как Великая депрессия 1929 года, глобальный финансовый кризис 2008 года и долговой кризис еврозоны, выявляют уязвимости в экономических системах и заставляют государства, корпорации и финансовые институты пересматривать свои стратегии. Эти катастрофы не только подталкивают к немедленным действиям по стабилизации, но и закладывают основы для долгосрочных изменений, формируя новые правила и механизмы, чтобы предотвратить повторение подобных кризисов.
Примеры финансовых катастроф и их последствия
Великая депрессия показала слабости нерегулируемого капитализма, что привело к созданию множества новых инструментов государственного вмешательства. В США «Новый курс» Рузвельта ознаменовал переход к активной роли государства в экономике через программы социальной защиты, инфраструктурные проекты и финансовые реформы, такие как создание Федеральной корпорации страхования вкладов [1]. Эти изменения стали основой для формирования современной системы социальной экономики.
Финансовая катастрофа 1970-х годов, вызванная нефтяными шоками [2] и последующей стагфляцией, стала мощным катализатором экономических изменений. Рост цен на нефть в 1973 и 1979 годах резко увеличил производственные издержки, привёл к инфляции и экономическому спаду одновременно - явлению, которое классическая кейнсианская модель не могла объяснить. Это подорвало доверие к государственному вмешательству в экономику и стимулировало переход к неолиберальным подходам: дерегуляции, приватизации, сдерживанию инфляции через монетарную политику и снижению роли государства. В результате произошёл сдвиг от послевоенной модели госкапитализма к рыночному фундаментализму 1980-х годов.
Стагфляция (словослияние стагнация + инфляция) - одновременный экономический спад и рост цен
Глобальный финансовый кризис 2008 года, в свою очередь, обнажил системные риски, связанные с избыточной дерегуляцией банковской сферы и сложностью современных финансовых инструментов. В ответ были введены такие меры, как более жесткие требования к капиталу банков, стресс-тестирование финансовых организаций и программы количественного смягчения, направленные на поддержку ликвидности.
Финансовые катастрофы также ускоряют развитие инновационных подходов и технологий. Например, кризис 2008 года стимулировал развитие финтех-отрасли и технологий блокчейна, что привело к появлению криптовалют (биткоина) и альтернативных форм финансирования. Эти изменения знаменуют собой не только реакцию на кризис, но и фундаментальные сдвиги в экономической архитектуре. Однако такие инновации, как видно на примере криптовалют, нередко становятся объектами последующего контроля со стороны крупных корпораций и государств.
Биткоин был создан в 2008 году анонимным разработчиком под псевдонимом Сатоши Накамото. Введение биткоина часто рассматривается как реакция на глобальный финансовый кризис 2008 года, который выявил значительные недостатки традиционной финансовой системы. В своём программном документе «Bitcoin: A Peer-to-Peer Electronic Cash System» [3] Накамото подчеркнул необходимость создания системы электронных платежей, не зависящей от доверия к финансовым посредникам, что отражает стремление избежать проблем, проявившихся в ходе кризиса.
Долговой кризис еврозоны, разразившийся в 2010 году, стал результатом чрезмерной задолженности ряда стран (особенно Греции, Италии, Испании и Португалии) на фоне глобального финансового кризиса 2008 года. Он выявил структурные проблемы внутри Евросоюза: отсутствие фискального союза при наличии общей валюты, а также зависимость слабых экономик от внешнего кредитования. Кризис стал катализатором значительных экономических изменений: ужесточения бюджетной политики (введение политики жёсткой экономии), создания антикризисных фондов ЕС, усиления надзора за госфинансами стран-членов, а также привёл к росту евроскептицизма и переоценке модели неолиберального управления. В долгосрочной перспективе он ускорил дискуссию о необходимости реформировать европейскую экономическую архитектуру, в том числе усилив интерес к альтернативным денежным системам и цифровым валютам.
Каждая финансовая катастрофа неизбежно порождает дебаты о балансе между свободным рынком и государственным вмешательством. С одной стороны, кризисы требуют немедленных действий, чтобы смягчить их последствия, с другой - открывают окно возможностей для фундаментальных реформ. Эти изменения, однако, не всегда гарантируют устойчивость. Как показывает история, решения одного кризиса часто становятся основой для возникновения нового.
Литература
[1]Мальков В.Л.Великий Рузвельт. «Лис в львиной шкуре» : [рус.]. — М. : Эксмо, 2018. — 560 с. — (Величайшие менеджеры в истории). — ISBN 978-5-04-090372-6.
Продолжение: Великая депрессия: уроки адаптации и структурных реформ
Этот пост входит в Часть 8. Влияние мутаций: инновации и кризисы
Роль технологических, социальных и финансовых кризисов в преобразовании экономических систем. Анализ примеров внезапных изменений, таких как Великая депрессия, промышленная революция и цифровая трансформация.
СерияПроисхождение экономических систем путём естественного отбора
Кто интересуется развитием общественно-экономических формаций, подписывайтесь!