Крымская наступательная операция, завершившаяся 12 мая 1944 года полным освобождением полуострова, стала одной из ключевых побед Красной Армии в Великой Отечественной войне. Её предыстория уходит в 1941 год, когда после 250-дневной героической обороны Севастополя Крым был оккупирован немецко-румынскими войсками. Нацисты планировали превратить регион в колонию «Готенланд», уничтожив или поработив местное население. За годы оккупации здесь были созданы десятки концлагерей, а жертвами террора стали более 219 тысяч человек . Осенью 1943 года советские войска в ходе Мелитопольской и Керченско-Эльтигенской операций прорвали оборону на Перекопском перешейке и захватили плацдармы у Сиваша и Керчи, но для полного освобождения Крыма сил тогда не хватило.
Начало операции
К весне 1944 года ситуация изменилась. Ставка Верховного Главнокомандования сосредоточила 470 тысяч солдат, около 6 тысяч орудий и 559 танков против 195 тысяч солдат 17-й немецкой армии, усиленной румынскими дивизиями. Операция началась 8 апреля после мощной артиллерийской подготовки. Ударные группировки 4-го Украинского фронта под командованием генерала Фёдора Толбухина атаковали с севера - от Перекопа и Сиваша, а Отдельная Приморская армия Андрея Ерёменко - с востока, с Керченского полуострова. Уже 11 апреля был освобождён Джанкой, что открыло путь к Симферополю, а к 13 апреля советские войска взяли под контроль Евпаторию, Феодосию и Симферополь. Немецкие части, пытаясь избежать окружения, отступали к Севастополю, но их преследовали авиация и партизаны, устраивавшие засады в горных районах.
Освобождение Крыма
Решающим этапом стал штурм Севастополя, который защищали укреплённые линии, включая Сапун-гору - ключевую высоту. После двух неудачных попыток в апреле 7 мая начался генеральный штурм. При поддержке авиации и артиллерии советские войска прорвали оборону, и 9 мая над городом взвилось красное знамя. К этому времени в Севастополе оставалось лишь 3 тысячи жителей из 109 тысяч довоенного населения, а сам город был почти полностью разрушен. Остатки 17-й армии, отступившие на мыс Херсонес, были окончательно разгромлены к 12 мая. В плен сдались 21 тысяча солдат и офицеров, а общие потери противника превысили 100 тысяч человек, включая 40 тысяч погибших при эвакуации морем.
Последствия
Последствия операции имели стратегическое значение. Освобождение Крыма ликвидировало угрозу тылам советских войск на Украине, вернуло Черноморскому флоту базу в Севастополе и открыло путь для наступления на Балканы. Это также подорвало позиции Германии в Румынии и Болгарии, которые начали задумываться о выходе из войны. Для СССР победа стала символом возмездия: 238 воинам присвоили звание Героя Советского Союза, а Севастополь позже получил статус города-героя.
Несмотря на тяжелые потери - 17,7 тысяч убитых и 67 тысяч раненых с советской стороны - операция вошла в историю как пример эффективного взаимодействия сухопутных сил, флота и авиации, а также высокой скорости наступления, завершившегося всего за 35 дней.
P.S Подписывайтесь, чтобы всегда быть в курсе интересных событий, произошедших в мировой истории за сегодняшний день. Ваша поддержка очень важна!
Вот объясните мне тупому. До появления мелкой коробки Умку вполне устраивала покрупнее. Пледик ей не мешает - он ей до лампочки. Вот какого хрена она пытается влезть (и ведь влазит) в мелкую?
А если ей дать коробку ещё на 30% меньше чем эта - так же впихнёт себя туда?
Это пока я начал шевелиться с телефоном - встрепенулась, а так вполне себе дремала
В доме номер семнадцать загорелись искусственные звёзды, которые осветили дату на календаре – 13 декабря 2091 года. Эта дата была особенной для одного человека…
«Стоп, а что такое искусственные звёзды?» – спросите вы.
А это такие маленькие светлячки, миниатюрные копии настоящих гигантов, что освещают небосвод. Мы ведь всегда хотели быть поближе к звёздам, настоящим звёздам...
Два года назад эта мечта стала реальностью. Именно тогда инженер и философ Иннокентий Борбунов сделал открытие в области науки и техники. Решив воплотить свой проект в жизнь ещё осенью, Борбунов отправился в космос и продолжал бороздить его около двух месяцев, тщательно изучая природу отдельных пород звёзд и собирая их звёздную пыль. Тончайшие нити серебра были помещены в специальные колбы с воздухом, которые затем, уже вернувшись домой на землю, Иннокентий Борбунов вырастил в миниатюрные копии звёзд, первые из которых появились 13 декабря 2089 года.
Затратив на свой опыт ещё около трёх недель, Иннокентий презентовал готовые звёзды в своей лаборатории, а затем уже и широкой публике.
И теперь по ночам в домах богатых людей зажигаются не светильники, а звёзды. Теперь в домах этих счастливчиков целая звёздная гавань. Маленькие дети лежат в своих кроватках и смотрят в звёздный потолок. Фантазёры составляют знаки зодиаков, а ленивые и лишённые воображения быстро засыпают, насмотревшись на звёзды. Ведь звёзды что это – символ мечты, исполнения желаний. И дети, которые с детства привыкли, что их желания исполняет кто-то, а не они сами, как я уже сказала, засыпают, надеясь, что во сне какая-нибудь звезда «упадёт» к ним в кроватку и, покопавшись в их головке, чудесным образом исполнит мечту.
Мечты, мечты… Это ведь именно они двигают цивилизацию вперёд. Но может ли искусственная звезда исполнить желание? И даже так – может ли вообще звезда исполнить желание? Настоящая звезда...
Конечно, может. Но, к сожалению люди всё реже смотрят в ночное небо, им нравится пялиться в свои потолки.
Однако это только богатые смотрят в свои звёздные потолки, а бедные продолжают любоваться бесплатным, звёздным небом. То, что на улице. То, что натурально.
И, что вполне закономерно, именно бедные держат сегодняшний мир в равновесии. «Всё в порядке». – думал Иннокентий Борбунов, который зорко следил за развитием своего проекта. Его сотрудники помогали изобретать искусственные звёзды, держа в строгом секрете данный процесс. Звёзд было не так много и продавались они очень дорого. Только малая часть людей могла себе позволить их приобрести.
В итоге все оставались довольны. Богатые довольствовались искусственными звёздами, изобретатели – деньгами, а бедняки своей свободой и чистым небом. И улицы по-прежнему были полны людьми, и дети играли в песочнице, и сам изобретатель был окружён почётом и вниманием.
Все в городе знали, что идея изобретения принадлежит ему. Люди видели в нём чуть ли не бога, который «спустил» звёзды на их грешную землю. Счастьем для простых людей было взглянуть хоть одним глазком на чудо-звёзды. Не смотря на свою тягу к свободе, завидовали люди богачам, которые имеют столько денег, что могут позволить себе купить даже звёзды, и часто они заглядывали в окна к богатым, чтобы полюбоваться не только пышностью их залов, но и столь популярными в высших кругах звёздами мастера. Однако всё время так продолжаться не могло…
В доме номер семнадцать загорелись искусственные звёзды… Этот дом, как, вероятно, догадались читатели, принадлежал изобретателю звёзд – Иннокентию Борбунову.
Сегодняшний вечер для Борбунова был символичным. Ровно два года кануло с того момента, как он изобрёл первую звезду. Впереди у Борбунова были ещё более масштабные планы. Пока что он имел только небольшую лабораторию, где трудился вместе со своими сотрудниками, верными товарищами.
Их дело становилось всё более прибыльным. К ним уже начали поступать заказы из-за границы. И Борбунов уже всерьёз подумывал о том, чтобы расширить свою лабораторию, превратить её в фабрику, фабрику по производству звёзд.
Увы, их планам не суждено было сбыться. Уже на следующий день в лабораторию поступил звонок-жалоба от клиента, который одним из первых ровно два года назад купил искусственную звезду.
– За что я заплатил такие бешеные деньги?! – проревел он в трубку. – Вы просто нагло обворовываете честных граждан!
– А что, простите, случилось? – спросил Борбунов.
– Два года назад вы продали мне искусственную звезду, за которую я выложил чуть ли не пол миллиона. Это, прошу заметить, немаленькие деньги!
– Верно, немаленькие. Но что же всё-таки случилось?
– А случилось то, что ваша звезда сломалась!
– Как сломалась? – ошарашенно спросил Борбунов.
– Как-как, взяла и сломалась. Перегорела.
– Вероятно, у вас там что-то замкнуло… – пробормотал Борбунов.
– Что у меня могло замкнуть, кретин, звезда работает не от электричества! Сам ведь пел мне давече, что ваши звёзды работают от тепловой энергии находящихся в квартире батарей!
– Верно… но я не понимаю…
– Так, или вы мне заменяете звезду или возвращаете деньги!
– Хорошо, я перезвоню вам. – сказал Борбунов и положил трубку.
– Что случилось? Ты сам не свой... – сказала вошедшая в кабинет ассистентка. – Видно, конец пришёл нашим изобретениям… – глухо произнёс Борбунов.
А в городе тем временем начало твориться что-то неладное. Проснувшиеся утром богачи все как один почувствовали лёгкое недомогание. Стук в висках, боли в животе, тошнота – всё это обрушилось на богатых людей странным образом.
Только бедняки, не имеющие денег на покупку звёзд, продолжали наслаждаться жизнью. Известный в городе бродяга Томас играл в лапту со своими маленькими приятелями в школьном дворе, уличные музыканты играли на пустынных площадях, а цирковые артисты делали сальто на ковровых дорожках возле фургона.
Борбунов, выглянувший на мгновение из окна и увидевший веселящийся простой народ, впервые в жизни им позавидовал.
Сегодня ему, в отличие от них, было не до веселья. За последние пол часа жалобные звонки раздавались, по меньшей мере, раз двадцать. И все они касались плохого самочувствия людей.
Узнав о заболевших, Борбунов совсем забыл о первом клиенте, подавшем жалобу. Только вот тот не забыл. И ко всему прочему, в довершение всех бед, свалившихся на лабораторию, приехал лично к Борбунову и, громко стуча каблуками, ворвался в его кабинет.
– Я жду вашего звонка, а вы тут значит прохлаждаетесь! Люди в панике, а ему хоть бы хны! Вы знаете, например, что моей соседке, которая не более чем месяц назад купила у вас звёзды, сегодня ночью привиделись вурдалаки? – спросил клиент, хищно взглянув на Борбунова.
Его косматые брови срослись на переносице, а крючковатый нос смешно дёрнулся. – Какие ещё вурдалаки? – устало спросил Борбунов.
– Те самые, молодой человек. А кроме них ещё и призраки, и ведьмочки всякие на мётлах.
– Что вы мне сказки рассказываете? – взбесился Борбунов.
– Это отнюдь не сказки, это суровая правда жизни. Ваши звёзды – вредители, они убивают наш город! Нужно их срочно уничтожать!
– Что вы такое говорите! – влетела в кабинет ассистентка Борбунова, молодая девушка лет 23-х. Взглянув на неё, клиент слегка кашлянул. Его лицо покрыли рубиновые пятна. Да, ассистентка Лена была чудо как хороша.
Пышные, каштановые волосы, лёгкий румянец, стройная фигура и васильковые глаза свели с ума не одного мужчину.
– Лена, наши звёзды наносят вред… – тихо сказал Борбунов.
– Я знаю, но нельзя их так просто уничтожать! – взволнованно воскликнула Лена. – Мы ведь не знаем, какая может быть реакция…
– Если мы их не уничтожим, может быть ещё хуже. Я думаю нам нужно известить всех людей по радио, чтобы те срочно сняли звёзды со своих стен и привезли их к нам в лабораторию.
– А деньги? – спросил настырный клиент.
– Деньги будут возвращены, как только мы соберём все звёзды.
*** К вечеру лаборатория была заполнена звёздами. Сложив звёзды в плотные мешки, Борбунов и его ассистенты вывезли их за город на большом грузовике.
– И что мы теперь будем с ними делать? – спросил один из ассистентов. – Зачем вообще было вывозить звёзды, могли бы оставить их в лаборатории… – Ты шутишь? Такое количество плохой энергетики нельзя хранить в одном месте. – сказала Лена. – Правда ведь, Иннокентий Валерьевич?
Борбунов ничего не ответил, он продолжал хмуро смотреть на мешки, наваленные друг на друга.
– Знаете, а поезжайте-ка вы домой. – сказал, наконец, Борбунов.
– В смысле поезжайте, а вы? – спросила Лена.
– А я пока останусь здесь. Со мной ничего не случится, не переживайте. – махнул рукой Борбунов.
– Он не в себе… – прошептал кто-то.
– Оставьте меня. – требовательно сказал Борбунов. И никто не посмел ему возразить. Как только грузовик уехал, Борбунов наклонился над звёздным мешком и, взяв в руки одну из звёзд, громко вскрикнул.
Звезда обожгла его ледяным огнём! Потухшая звезда, которая не могла гореть при дневном свете!
Днём звёзды всегда отдыхают. И, прикреплённые к потолкам домов магнитами, звёзды загорались только ночью. Таков был их механизм.
И сейчас это был всего лишь маленький, прозрачный камешек. Однако этот маленький, прозрачный камешек, нагретый неизвестно от чего, обжёг руку Борбунова. Взглянув на вздувшийся волдырь, Борбунов сердито бросил звезду на землю. «Ну как такое возможно?! Поблизости даже нет тепловых батарей, источника их энергии… Как же так… отчего они такие горячие?» – озадаченно подумал Борбунов. Оглядевшись по сторонам в поисках воды, Борбунов приметил небольшое озерцо идеально круглой формы.
С наслаждением опустив обожжённую руку в воду, Борбунов крепко задумался.
«Звёзды надо уничтожать… Уничтожать… И я, как их создатель, должен это сделать сам, без свидетелей. Я совершенно правильно сделал, попросив своих ассистентов уехать. Только вот как уничтожить звёзды?»
«Утопить!» – возникла мысль у Борбунова. «Это же гениально. Вода всё стерпит…» Подтащив мешок к берегу, Борбунов в последний раз взглянул на звёзды, превратившиеся теперь в ненужный хлам, после чего с размаху кинул мешок в воду… Зашипев, вода с явной неохотой приняла сей презент…
Как только мешок скрылся под водой, Борбунов повернулся и пошёл прочь от озера.
В ту же секунду раздался мощный взрыв. Обернувшись, Борбунов вскрикнул. Миллиарды ярких, ослепительных вспышек пронеслись перед его глазами. Это было похоже на масштабное, уникальное по своей природе, светопредставление, которое длилось всего лишь сотую долю секунды. Затем всё погрузилось во мрак.
ИДЕЯ И САУНД-ПРОДЮССИРОВАНИЕ - ZAKHAR PAROV ----------------- МУЗЫКА - ZAKHAR PAROV & SUNO AI ВОКАЛ - SUNO AI Создавайте свои песни вместе с SUNO! ----------------- ТЕКСТ ПЕСНИ - Виктор Баранов (1947 — 2020) ПРИПЕВ - ZAKHAR PAROV, Виктор Баранов ----------------- ℗ январь 2025г.
Текст песни: ------------ [Куплет 1] В Сиракузах, в Древней, стало быть, Греции, Все в округе Архимеда звали "ШИЗИКОМ". Ну, а он, то изобретёт что-нибудь себе, А то, откроет вдруг чего-нибудь, в физике. Всё ходил, бормотал слова странные, Всё записывал какие-то формулы. Вот однажды, погрузил тело в ванную, И спиною, вдруг, почуял - не-доброе!...
[Припев] И изложил в законе, Научные основы, Технических побед. Учёный Архимед! Тело, впёрнутое в воду, Выпирает на свободу, Весом выпертой воды, Тела, впёртого туды!
[Куплет 2] И воскликнул Архимед громко "ЭВРИКА"! И рванул он бегом туда, где публика. Не принявши адекватного облика, Не хитон он не накинул, ни тунику. Не прикрытый листом даже фИговым, По ступенькам поднимался он к форуму. Не взыскуя похвалы или выгоды, Шёл, и провозглашал свою формулу!
[Куплет 3] А в Древней Греции была ДЕМОКРАТИЯ! И толпа стащила с трибуны философа. Возмущённая такой порнографией, И со скалы в море бурное - бросила. Но смеялся Архимед над убогими, Потешался над невеждами местными! Не тонул он, а болтался, как в проруби... Потому что, есть ЗАКОН! И он действует!
[Куплет 4] Но проносятся века, тысячелетия... Изменяются восторги и бе-ды, Позабыты и жрецы, и правители. Но мы помним старика Архимеда! Все сдавали мы когда-нибудь физику, Аспиранты и студенты, и школьники, Академики и психи, и шизики, Наизусть знают закон его!
[Куплет 5] Жил в Греции далёкой, среди морей и гор, Ужасно одинокий, учёный Пифагор! Пришёл он как-то к морю, прополоскать штаны. И видит Пифагор: ну все стороны равны! Он измерял их метром, ну прям от сих до сих, Ведь был он геометром, а думали, что псих! Он складывал и множил, он в степень возводил. Потом всё под-итожил, и в учебник угодил!
[Припев] Чтоб не было нам скучно, В познании основ. Он изложил научно, Теорию штанов! Квадрат гипотенузы, Запомни навсегда! Квадратов сумме равен, Двух катетов, да-да!
[Куплет 6] Доцент, студент и школьник, все знают с этих пор, Какой большой учёный был этот Пифагор! И разум возмущённый, кипит в мозгах лихих, Он был большой учёный, а вовсе не был псих! Заветам Пифагора и Ленина верны! Мы распеваем гордо: "Да здравствуют штаны!" И только папуасы не ведают основ, Не знают Пифагора, и ходят без штанов!
[Припев] Чтоб не было нам скучно, В познании основ. Он изложил научно, Теорию штанов! Квадрат гипотенузы, Запомни навсегда! Квадратов сумме равен, Двух катетов, да-да!
[Инструментальное соло]
[Припев] И изложил в законе, Научные основы, Технических побед. Учёный Архимед! Тело, впёрнутое в воду, Выпирает на свободу, Весом выпертой воды, Тела, впёртого туды! ***
Я думал, что с развитием технологий, нарисовать плакат сейчас может любой школьник, и времена, когда плакаты рисовали бездарные художники уже в прошлом, а вот и нет.
Интеллектуальное управление инженерными сетями снижает потребление электроэнергии, газа и топлива благодаря оптимизации режимов работы оборудования. Это достигается путём анализа внешних условий (температура воздуха, влажность), поведения пользователей и интеграции с погодозависимыми датчиками.
2. Улучшение комфорта и качества среды обитания
Автоматизированные системы регулирования микроклимата обеспечивают оптимальный уровень температуры, влажности и воздухообмена в помещениях независимо от сезона и погодных условий. Особенно актуально это для общественных зданий, торговых центров, больниц и офисов.
3. Экономия затрат на обслуживание и ремонт
Постоянный мониторинг состояния оборудования помогает выявлять проблемы на ранних стадиях, предотвращая крупные поломки и дорогостоящие ремонты. Например, датчики протечек обнаружат проблему задолго до появления серьёзных последствий.
4. Уменьшение рисков чрезвычайных ситуаций
Автоматические системы мониторинга пожарной сигнализации, обнаружения протечек газа, электричества способны мгновенно реагировать на опасные ситуации, повышая безопасность обитателей и сотрудников здания.
Примеры конкретных решений:
a) Система управления освещением
Система автоматизации освещения регулирует интенсивность света в зависимости от уровня естественного освещения и присутствия людей в помещении. Датчики движения автоматически включают свет в нужных зонах и выключают его при отсутствии активности.
b) Управление отоплением и вентиляцией
Используя погодозависимые алгоритмы, система управляет температурой и влажностью внутри помещения, минимизируя потери тепловой энергии и поддерживая заданные температурные параметры. В результате снижаются расходы на обогрев и охлаждение пространства.
c) Водосбережение
Датчики потока и давления воды регулируют подачу жидкости таким образом, чтобы минимизировать расход воды при сохранении необходимого напора и производительности водоразборных точек.
Технологии и стандарты интеллектуализации зданий:
KNX: Открытый стандарт коммуникации между устройствами различных производителей, позволяющий интегрировать освещение, климат-контроль, сигнализацию и другие подсистемы в единую сеть. KNX поддерживает разные типы связи: проводную (шина EIB/KNX), беспроводную (радиочастоты) и IP-сети.
BACnet: Протокол обмена данными, разработанный специально для управления HVAC (отопление, вентиляция и кондиционирование). Позволяет объединять устройства разных брендов и типов в одну систему.
Modbus: Простой протокол передачи данных, используемый преимущественно в промышленности для сбора показаний приборов учета и удалённого управления оборудованием.
Эти технологии делают возможным создание гибких, надёжных и масштабируемых архитектур, позволяющих реализовать концепцию «интеллектуального дома» или «интеллектуального офиса».
Таким образом, внедрение интеллектуальных решений в управление инженерными коммуникациями становится необходимым условием современной инфраструктуры, способствующим снижению эксплуатационных расходов, улучшению экологической обстановки и обеспечению высокого уровня комфорта и безопасности.
Я долго не мог понять, почему одни люди, сталкиваясь с
тревогой, превращаются в парализованное существо, неспособное ни думать, ни
действовать, а другие — с тем же уровнем тревоги — делают вдох, смотрят в
потолок, морщатся… и продолжают делать своё. Не идеально. Не героически. Но
продолжают. И вот когда я начал всматриваться в этот механизм, я понял: вся
разница — в одной маленькой вещи. В мета-позиции.
Да, звучит как что-то вычитанное в учебнике по философии или
в пособии по психотерапии для студентов. Но на деле — это почти биологическая
необходимость. Если ты хочешь жить среди людей, в XXI веке, в реальности, где
тревога — это не исключение, а почти константа — тебе нужно учиться вставать в
эту самую мета-позицию. Иначе сожрёт. Или тревога, или твоё стремление её
заглушить.
Что такое мета-позиция? Объясню по-человечески. Это когда ты
перестаёшь быть участником тревожной сцены и становишься её наблюдателем. Как
будто изнутри себя делаешь шаг в сторону. Не чтобы сбежать. Не чтобы
отключиться. А чтобы увидеть. Чтобы поймать себя в моменте — в моменте, когда
автоматическая мысль уже сработала, тело отреагировало, а ты… вместо того,
чтобы поддаться, говоришь себе: «Стоп. Что сейчас происходит?»
И вот это «стоп» — оно меняет всё. Потому что именно в этом
моменте появляется выбор. Пока ты в тревоге — ты не выбираешь. Ты рефлекторно
реагируешь. Ты — заложник. Но как только ты смог наблюдать — ты уже можешь
думать. Спрашивать. Сомневаться. Анализировать. И, главное, — не верить на
слово всему, что говорит тебе твой испуганный мозг.
Мне не раз приходилось работать с клиентами, которые были
уверены: их тревога — это проклятие. Болезнь. Неустранимый дефект. А я им
говорил: нет. Тревога — это навык. Да, искажённый, да, болезненный, но это всё
ещё навык. И как любой навык — его можно корректировать. Улучшать. Осознавать.
Переобучать.
И вот мета-позиция — это главный рычаг в этом обучении.
Потому что нельзя изменить то, что ты не видишь. А пока ты в тревоге — ты
ничего не видишь. Ты — внутри тумана. Внутри ощущения, внутри паники. Внутри
катастрофического сценария. А выйти можно только одним способом — посмотреть со
стороны. И задать себе несколько простых, но жёстких вопросов.
Например:
— Что сейчас со мной происходит?
— Что я только что подумал?
— Откуда эта мысль?
— Это факт — или моя интерпретация?
— Что бы я сказал другому человеку, если бы он чувствовал то же?
И вот здесь начинается волшебство. Потому что как только ты
начинаешь мыслить из позиции наблюдателя — ты меняешь не только своё мышление,
но и физиологию. Тело откликается. Дыхание выравнивается. Сердце бьётся ровнее.
Потому что ты выходишь из режима «бей или беги» и входишь в режим «смотри и
думай».
Я иногда сравниваю это с кино. Когда ты смотришь триллер и
герой попадает в опасную ситуацию — ты можешь переживать, но ты понимаешь: ты —
зритель. А теперь представь, что ты вдруг оказался внутри фильма. Без сценария.
Без понимания, что это — фильм. Вот это и есть обычная тревожная жизнь. Когда
каждый сигнал мозга воспринимается как сигнал тревоги. Как угроза. Как
опасность.
А теперь — снова шаг в сторону. Ты берёшь на себя роль
режиссёра. Или хотя бы критика. Ты смотришь на происходящее: «Интересно, почему
я так отреагировал? Почему я решил, что меня отвергли? Почему я снова включил
катастрофизацию?»
Это не волшебная таблетка. Это работа. Иногда утомительная.
Иногда болезненная. Потому что ты вдруг начинаешь видеть, сколько мусора у тебя
в голове. Сколько автоматических мыслей. Сколько ложных интерпретаций. Сколько
сценариев ты таскаешь с собой с детства. Но только через эту работу появляется
зрелость. Настоящая. Не имитация спокойствия, не подавление эмоций, а честная,
взрослая способность сказать: «Да, мне тревожно. Но я могу быть с этим. Я вижу
это. Я не сливаюсь».
Кейс из практики. Ко мне пришла клиентка — молодая женщина,
внешне успешная, но измотанная тревожным мышлением. Её ежедневный цикл
начинался с мысли: «А вдруг сегодня произойдёт что-то ужасное?» — и
заканчивался тем же. У неё не было панических атак в классическом смысле, но
было постоянное напряжение, гиперконтроль, перманентная готовность ко всему
плохому. Мы начали работу с того, что я попросил её записывать мысли, которые
возникают в тревожные моменты. Сначала было сложно: она даже не замечала их. Тревога
возникала как лавина. Тогда я предложил ей ежедневно по 2–3 раза в день
останавливаться и задавать себе один вопрос: «Что я сейчас думаю?» И не просто
отвечать, а записывать. Сначала на автомате, потом с паузой.
Через две недели она приходит ко мне и говорит: «Вы знаете,
я поняла, что 90% моих мыслей — это прогнозирование катастроф. И я им верю. Я
не просто думаю — я в них живу». Мы начали разбирать: какие именно мысли? Что в
них общего? На чём они основаны? И вот здесь я аккуратно ввёл мета-позицию.
Сказал: «А давайте попробуем понаблюдать за этим. Как будто вы — не вы. Как
будто это вы читаете чужой сценарий. Что бы вы сказали автору?» И тут —
щёлкнуло. Она впервые засмеялась. «Я бы сказала: ты перегибаешь! Это же
сплошной апокалипсис!» И вот с этого момента началась настоящая работа. Она не
просто видела тревогу. Она начала замечать, как запускается тревожная мысль.
Как тело реагирует. Как внимание схлопывается. И — что она может делать
по-другому. Мы выстроили систему микро-пауз, меток и вопросов. Она начала вести
дневник наблюдателя. Через месяц она сказала: «Я впервые за полгода смогла
спокойно уснуть без фонового напряжения». Вот что делает мета-позиция.
Мне писали люди после консультаций: «Дмитрий, я начал
использовать мета-позицию, и вдруг понял — я не моя тревога. Я — тот, кто может
видеть тревогу». И в этом — ключевое отличие. Пока ты думаешь, что тревога —
это ты, ты в ловушке. Но как только ты начинаешь видеть — ты свободен. Не от
тревоги. От отождествления.
Я, кстати, тоже не святой. У меня бывают моменты, когда
что-то происходит — и внутри поднимается волна. Волнение. Паника. А потом —
пауза. «Так. Что это было? Какая мысль пролетела? Почему я так резко
среагировал?» И иногда мне достаточно одного этого внутреннего диалога, чтобы
вернуть контроль. Не контроль в смысле подавления. А контроль в смысле: я снова
на месте. Я снова в себе.
Иногда мета-позиция проявляется в самых простых вещах.
Например, ты замечаешь, что стал раздражителен. Всё бесит. Люди тупят. Задержки
бесят. А потом ты ловишь себя: «Погоди. Это же симптом. Значит, я в тревоге.
Значит, я устал. Значит, что-то внутри перегружено». И ты идёшь не разносить
всех, а пить воду, дышать, делать паузу. И это — акт зрелости. А не то, как ты
держишься на людях и не подаёшь вида.
Мета-позиция — это внутренний взрослый. Это ты, который
умеет не только чувствовать, но и думать о том, что ты чувствуешь. Это вторая
сигнальная система. Это твой персональный терапевт внутри головы. И если ты
научишься обращаться к нему — ты станешь крепче. Гибче. Свободнее.
Поэтому я и настаиваю: справиться со страхом можно. Но не
напрямую. Не лоб в лоб. А через шаг в сторону. Через понимание. Через
наблюдение. Через осознанность. Через честный взгляд на свои мысли.
И нет, это не значит, что вы станете роботами. Или будете
жить в вечной аналитике. Наоборот. Вы начнёте чувствовать чище. Глубже. Потому
что перестанете тонуть в эмоциях. Перестанете бояться страха. И начнёте жить. С
тревогой — но не под ней. С ней — но не внутри неё.
Вот такие дела, друзья. И если вы дочитали до конца —
значит, вы уже на пути. Осталось только продолжать. Ошибаться. Замечать.
Возвращаться. И снова вставать в эту мета-позицию. Каждый раз. Снова и снова.
Будьте счастливы друзья!
Мой телеграмм-канал: https://t.me/mir_kpt где я лично отвечаю на
ваши вопросы, провожу бесплатные консультации и делюсь своими мыслями.
Я об игре Phantasy Star II говорил уже несколько раз, так как это первая JRPG, в которую поиграл, и она навсегда в моём сердце. Даже имя одного из персонажей стало моим творческим псевдонимом. Но в этой заметке хотел бы рассказать вам пару интересных моментов из сюжета игры.
Многие игроки, когда поиграли в Final Fantasy VII, были в шоке от смерти Айрис в конце первого диска. Как так, чтобы одна из главных героинь, которая так полюбилась игрокам, умерла, и её нельзя воскресить? Но я не был так шокирован, так как похожий момент был в Phantasy Star II. Притом даже с ограниченными техническими возможностями драматизм ситуации передали не хуже, чем в Final Fantasy VII.
Второй момент, который заставляет задуматься, — это то, что системой планет в мире игры управляет так называемый Материнский мозг. И вроде благополучие у жителей, хотя какие-то странные монстры везде появляются и всё такое, но главные герои решают противостоять этой системе. В конце оказывается, что всеобъемлющий искусственный интеллект создали люди с далёкой планеты Земля. Это последние выжившие, и они решили управлять местными жителями. Чтобы все решения принимал суперкомпьютер. В конце игры главные герои вступают в битву с землянами — и… неизвестно, чем всё заканчивается. Либо побеждают главные герои, но уничтожают последнюю колонию землян, либо земляне, которые убивают главных героев и продолжают управлять местными жителями.
Если вам интересны мои текстовые или видеообзоры, то подписывайтесь на меня на Вомбате! Постараюсь и дальше радовать вас интересным контентом. Буду очень рад подписке на мой YouTube-канал: https://www.youtube.com/@ivan_lutz
Астрономы обнаружили в его строении особенности, которые позволяют предположить, что перед нами не просто звездное скопление, а сохранившееся ядро древней карликовой галактики, поглощенной Млечным Путем миллиарды лет назад.
Спектральный анализ звезд NGC 6717 показывает уникальный химический состав, отличающийся от типичных шаровых скоплений нашей Галактики. Особенно примечательно повышенное содержание тяжелых элементов и характерные закономерности в распределении звезд разных возрастов — черты, свойственные остаткам галактических ядер.
Когда словом недели выпало Процедура, то многие вздрогнули,
ибо перед внутренним взором встало, что-то подобное.
запах дезинфекции не забываем
Однако находчивые и креативные вомбатяне, что особенно
хочется отметить и новые участники ивента, доказали, что процедура это не
только запах больницы и сухие строчки кода, но и…
Лев 14 - новый папа выбранный на этой неделе и ребята из Евротура одобряют этот пост
Суровой методикой процедуры взлома шифров поделился lovefst,
методика проверенная 90-ми, к повторению не рекомендована, что только
добавляет шарма к посту
На этой неделе UrmasTormas напомнил, что песня это то, что
сильно помогало в процедуре изгнания фашисткой нечисти с территории Советского
Союза и Европы! История песни дорога на Берлин отличное тому подтверждение
Слово следующей недели такое, что грешно не отметиться постом!
слово недели на 12.05-18.05
Напоминаем правила ивента: 1.
Раз в неделю, по понедельникам случайно генерится слово. Это слово
будет основой для ваших постов. Неважно что вы сделаете, слепите,
нарисуете, напишите стих с этим словом, расскажете анекдот, свою историю
с этим словом, даже с помощью генератора мемов можно, абсолютно
неважно.
2. Ивент с данным словом длится до следующего понедельника, когда будет озвучено новое, случайно сгенерированное слово.
3.
Необязательно чтобы выпавшее слово было лейтмотивом. Ну например
выпадет слово кит - может быть картинка загадка о морских существах, на
которой изображен один кит, а найти надо дельфина. Или созданный
комикс/мем, в котором вообще речь о другом, но на пряжке у героя
изображен кит. Или может у вас завалялась история из жизни, где кит
просто был второстепенным объектом, или названием бара где все
происходило. Т.е. слово обязательно должно присутствовать в работе, но
может не являться ее заглавной темой. А может и являться.
4. Все посты публикуйте под тегом "Ивент Вомбата" и "Свобода".
@vombat просьба закрепить новое слово, пожаалуйста
Римский скорпион (лат. scorpio), использовавшийся легионами со II века до н. э., был легкой баллистой, ставшей символом инженерного мастерства римлян в осадных технологиях.
Эти небольшие метательные машины применялись для точечных ударов и поддержки пехоты в полевых сражениях.⠀Скорпион представлял собой деревянную конструкцию с двумя рычагами, натягиваемыми скрученными жгутами из сухожилий или конского волоса. Он стрелял короткими стрелами (дротиками) длиной около 70 сантиметров с железными наконечниками, пробивая доспехи на расстоянии до 100 метров. Один скорпион обслуживался двумя солдатами, а его скорострельность достигала 3–4 выстрелов в минуту.
Это оружие было идеально для подавления вражеских лучников или защиты укреплений: скорпионы могли вести прицельный огонь, прикрывая легионеров при наступлении или отступлении. Согласно Полибию, во время Второй Пунической войны (218–201 годы до н. э.) именно скорпионы помогли римлянам отбить атаки карфагенских войск при осаде Сиракуз.
Главным недостатком скорпиона была его уязвимость к влаге, которая ослабляла натяжение жгутов, снижая точность и дальность стрельбы. Кроме того, против крупных осадных машин или массированных атак пехоты он был малоэффективен, что вынуждало римлян комбинировать его с другими видами оружия.
Обучение работе со скорпионом требовало высокой точности и слаженности. Историк Вегеций отмечал, что римские артиллеристы тренировались на специальных полигонах, стреляя по мишеням с расстояния 50–70 метров, чтобы добиться максимальной меткости в бою.
Друзья, мне тут посчастливилось отдохнуть в больнице недельку. Хотел бы с вами поделиться своими впечатлениями о пребывании в этом заведении.
Обычно при слове "больница" в памяти всплывает что-то типа "Пролетая над гнездом кукушки" где в застиранных халатах по коридору медленно, как тени двигаются пациенты, носятсяаниматорыреаниматоры с капельницами наперевес: "доктор, мы его теряем!", скудная еда состоящая из перловки с водянистой котлетой, обшарпанные стены... Короче, "мама, забери меня домой!". Удивительно, но в моём случае всё было совсем по другому.
Огромное здание, современный интерьер, новое оборудование, картины на стенах, и кажется не какие-то репродукции. Но самое главное - это люди, а именно - персонал. Поразила доброта врачей и медсестёр. Не просто профессиональная этика, а именно доброта, как свойство личности. И ещё - чувство юмора. Вот несколько эпизодов из общения с медиками и пациентами, которые мне запомнились.
Слева: кадр из фильма "Пролетая над гнездом кукушки", справа: из сериала "Интерны".
Начну с того, что на ресепшене - в регистратуре, то есть - когда распределяли по палатам, врачи никак не могли вспомнить мою фамилию, я сказал, что если что - я помню. Задорный смех сестёр был для меня наградой и к тому же помог снять стресс.
Уж не знаю, в шутку ли, но меня положили в… гинекологическое отделение. Нет, нет - это не то, что вы подумали - я не собирался менять пол, по крайней мере, не сейчас. Просто в моём отделении не было свободных мест и меня положили в свободную палату. И нет, я лежал не с женщинами - единственными моими соседями были 2 неработающих холодильника. Почти 4 дня одиночества для физически и эмоционально истощённого человека - настоящий подарок.
Кормили 4 раза в день "на убой". Медсестре, которая раздавала еду, я сказал, что кормят так вкусно и много, что попрошу здесь политического убежища. Сестра замахала руками:
-Да что вы! Только не здесь!
Терапевт, осматривавшая меня при поступлении, удивилась - что я делаю здесь такой здоровый? Я признался, что лёг ради еды. Она отнеслась к этому с пониманием.
3,5 дня одиночества, чтения, тупого смотрения в окно – царский подарок клиническому интроверту - прошли незаметно. На 4-й день меня перевели в общую палату. Вроде бы всё - лафа закончилась. Но нет - это был не конец, а только начало. Начало знакомства и общения с интереснейшими людьми. Ещё одна награда свыше. Дело в том, что я ненавижу нецензурную лексику. Целыми днями я вынужден слышать её на работе, что приводит в конечном итоге к эмоциональной усталости. Хотелось хотя бы в больнице от этого отдохнуть, но я понимаю, что сюда кладут тех же людей, что меня окружают «в реальном мире».
Но, о чудо! Меня положили в палату где уже лежало 5 человек. Я шестой. Ну так вот. Из 6-ти человек высшего образования не было только у одного! Угадайте у кого? Правильно - у меня. Четверо закончили физико-математический факультет университета, один медицинский институт. Один из физиков - профессор. Он писал учебники для университетов. Остальные в разное время работали учителями физики. Медик работает на скорой помощи. Надо ли говорить, что за несколько дней, что я лежал с этими людьми, я не услышал ни одного матерного слова! Уважаемые читатели, как вы думаете - это просто случайность? Случайность, что в одной палате, в одно время собрались интеллектуалы? В купе с другими подобными событиями, которые постоянно происходят в моей жизни, я уверен, что нет.
Учёные мужи были под впечатлением от того, что простой работяга свободно рассуждает о 4-х фундаментальных взаимодействиях. В наших беседах я мягко подводил своих собеседников к вопросу - как так получилось, что эти взаимодействия вообще образовались и так сбалансированы иточно настроены?
Для информации.
4 фундаментальных взаимодействия - это сильное, слабое, электромагнитное и гравитационное. Они лежат в основе всех физических процессов во Вселенной и точно настроены относительно друг друга.
Они поняли к чему я клоню, и разговор плавно и бесшовно перешёл с чисто научной в мою любимую - научно-духовную плоскость. Кому-то эта тема показалась не интересной, с кем-то мы общались довольно долго. Так, у одного из физиков сын был православным верующим и ему (физику) хотелось разобраться в некоторых учениях Библии.
В любом случае, когда в одной палате собирается, хоть и по разному, но всё-таки мыслящие люди - это подарок для меня. Я уверен - подарок свыше.
Ещё небольшой эпизод. В нашей палате был душ и подумал, что должна быть и вытяжка. Нажал на какую-то кнопку, ничего не включилось. Ан, нет, включилось! Представляете – это была кнопка вызова дежурного врача на случай, если кому-то в ду́ше станет плохо! По сути – скорая помощь. Буквально через несколько минут примчалась медсестра (весьма не молодая, кстати) – «Кому плохо!?». Я извинился за ложный вызов. Вот это забота о людях!
Итак, операция!
Операция - это вообще стендап! Когда на каталке меня везли на операцию, я попросил медсестру не превышать скорость, особенно на поворотах. Сестра заверила меня, что всегда соблюдает скоростной режим. На одном из перекрёстков коридора, когда мы не могли разъехаться со встречной каталкой, сестра, как бывалый водитель маршрутки:
-Опа, пробка!
В лифте нас набилось человек 8. Одно сестра стала рассказывать про вкусные плюшки, которые продаются в буфете. Потом:
-Ой, а при молодом человеке, наверно, не сто́ит про еду говорить. (перед операцией нельзя ничего есть).
Я успокоил сестру, сказав, что еда - это последнее о чём я сейчас думаю.
-Еду голый в одном лифте с такими красивыми женщинами! (Все 50+).
-Да, вот едете и ничего не делаете... С шутливой укоризной сказала мне одна из женщин.
На всякий случай поясню, что я не стоял в таком виде в лифте и не нажимал на кнопки, а лежал на каталке под простынёй.
На операционном столе мы с врачами продолжили зажигать.
Когда меня привязывали к операционному столу ремнями, я поинтересовался:
-Это чтобы не убежал?
Сестра загадочно:
-Нуууу, знаете, тут всякое бывает...
Далее, в процессе подготовки к операции, сестричка спросила, не печёт ли затылок. Я ответил, что, вроде нет.
-Пациент, я доктора спросила.
Я чувствовал улыбку сестры сквозь медицинскую маску. Дело в том, что медсестра настроила освещение так, что лампа светила прямо на затылок хирурга.
-Они мне регулярно пытаются мозг зажарить - пожаловался доктор.
Очнулся я после наркоза на том же месте, и на том же столе. Первый вопрос:
-А когда операция начнётся?
-Она уже закончилась.
-Эх, опять всё самое интересное проспал!
Потом в течении дня и в следующие дни, доктор (молодой парень, кстати) по несколько раз в день приходил и интересовался моим самочувствием. Настоящий профессионал! А ещё он искренне удивлялся, что мне не требовалось обезболивание после операции. Похоже, он настолько качественно сделал свою работу, что у меня реально не было боли.
Хотел бы ещё отметить нашу молоденькую медсестричку Настю. Она так часто посещала нашу палату и интересовалась всё ли у нас хорошо, что нам приходилось чуть ли не выгонять её (шутка). Как-то я спросил, нравится ли ей её работа. Она ответила, что да, очень.
-Нагрузка большая. В день 11-15 человек госпитализируют только в нашем отделении. Небольшой спад поступлений бывает только во время посадок.
В палате повисла тягостная тишина. Увидев на наших лицах испуганный немой вопрос, Настя поспешила уточнить
-Во время огородных посадок, я имею ввиду.
Палата громко смеялась.
Надо отметить, что по части юмора, пациенты здорово уступали врачам. Как-то идя на перевязку, я поравнялся в коридоре с девушками, которые шли туда же.
-Девушки, вы тоже на ампутацию?
-Неееет, мы на перевязку - ответили они абсолютно серьёзно и даже как-то испуганно.
Хотя нет, вру. И среди пациентов были любопытные персонажи.
Стою в очереди на получение направления на госпитализацию, никого не трогаю, изо всех сил пытаюсь не шутить. Подходит пожилая женщина. 80+. Стандартные вопросы.
-Кто крайний?
-Я
-А вы за кем?
-За этой девушкой.
Далее бабуля начинает тихонечко напевать: "Ах, эта девушка меня с ума свела". Я ей подпеваю: "Разбила сердце мне, покой взяла".
-А вы знаете, молодой человек, когда мы были студентами, мы пели: "Набила морду мне, костюм сняла".
Я ей:
-А я слышал версию: "Набила морду мне, часы сняла".
-Э-э, костюм дороже.
-Ну, с этим не поспоришь.
Завязался живой разговор, двух совершенно разных людей, как будь-то мы 100 лет знакомы. Боковым зрением я видел, как очередь "грела уши".
И последнее.
К сожалению, в любую бочку мёда, всегда кто-нибудь добавит ложку дёгтя. В этом повествовании это не ложка, всего лишь капля. Я говорю о дежурных на входе в стационар. Мужчина и женщина с синдромом вахтёра в запущенной стадии.
Для информации.
Синдром вахтёра - это склонность человека, неделённого невысоким социальным статусом, демонстрировать свою значимость и власть.
"Дай человеку ключи от офисов - он возомнит себя генеральным директором" - глаголет народная мудрость.
И эти "вахтёры-директора" "демонстрировали свою значимость и власть" на полную - они постоянно орали на пациентов, оскорбляли их. Не стесняясь священных медицинских стен, матерились. На просьбы посетителей вести себя повежливей, они отвечали, что у них большая нагрузка и поэтому они на нервах. Предложения в таком случае поменять работу, вызывали у них лишь дополнительную порцию брани.
У медперсонала нагрузка не меньше, но ведут себя они очень достойно, в том числе, когда общаются с недовольными пациентами. Я видел такие сцены и восхищался этими людьми (врачами я имею ввиду).
А теперь, точно последнее.
Друзья, сейчас принято чуть ли не демонизировать медицину вообще и врачей в частности. Скорая долго едет, очереди в поликлиниках, конвейерная система приёмов, врачебные ошибки. А виноваты ли в этом только врачи? Может дело в системе, которая довольно не навязчиво заботится о нашем здоровье? Может дело и в нас? Как часто врачам приходится иметь дело с неадекватами! Мой друг – врач, зав. отделением - рассказывал о мужчине, который обивал пороги кабинетов их поликлиники с требованием определить на какие лекарства у него аллергия, а на какие нет. Попытки объяснить, что есть уйма препаратов, и определять возможную аллергию на них никто не будет, ни к чему не привели. Мужчина настаивал на своём. По словам друга, цель этого человека была просто всех достать. Вот на таких кадров врачи часто тратят время вместо того, чтобы помогать настоящим больным.
А ещё не будем забывать, что медработники такие же люди, как и мы - со своими достоинствами и недостатками. Да, среди них бывают и некомпетентные , и ленивые - одной моей знакомой, например, врач предложила лечиться узнахарки! - но мне такие не встречались.
Друзья, хотите профессионального и вежливого обращения к себе? Работающий совет был дан2 000 лет назад: «Во всёмпоступайте с людьми так, как хотите, чтобы они поступали с вами».
P.S. Здоровье автора в полном порядке. Чего и вам желаю.
Не рекомендуется принимать данную статью близко к сердцу или как истину в последней инстанции. Скорее как научпоп-грелку для мозгов. Тут довольно много упрощений, упущений или просто странно написанных моментов. Если что-то объяснено совсем криво, то добро пожаловать в комментарии.
Все сказанное далее применимо везде, но детали описаны для защищенного режима 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: исправлены косяки форматирования, очепятки, добавлено еще пару пунктов про разновидности методов и функциональное программирование.
Как я и говорил мы натянули потолки в ванной и туалете. Для них мы купили точечные светильники под светодиодные лампы GX53 от фирмы Navigator в цвете черный хром. Выглядят эти светильники довольно эффектно. В данные светильники мы планируем установить лампочки с цоколем GX53 от фирмы Гаус.