[{"data":1,"prerenderedAt":149},["ShallowReactive",2],{"$fT9bgxdMLTn0sO2_aNubQNCEA2TYjWS1552STPptXZqk":3},{"article":4,"similarArticles":15,"tagCounts":147},{"slug":5,"content":6,"notes":7,"groupedNotes":8,"title":9,"date":10,"description":11,"tags":12,"author":14},"spolsky-joel-the-law-of-leaky-abstractions-2002","\u003Cp>В этой статье Джоэл Спольски формулирует один из важнейших принципов разработки программного обеспечения, который он назвал \u003Cstrong>Законом дырявых абстракций\u003C\u002Fstrong>. Ниже представлен подробный пересказ основных идей статьи.\u003C\u002Fp>\n\u003Ch4 id=\"суть-абстракции-на-примере-tcpip\">Суть абстракции на примере TCP\u002FIP\u003C\u002Fh4>\n\u003Cp>Автор начинает с примера работы интернета. Протокол \u003Cstrong>TCP\u003C\u002Fstrong> позволяет передавать данные надежно: сообщение гарантированно дойдет в целости и в правильном порядке. Однако TCP построен поверх протокола \u003Cstrong>IP\u003C\u002Fstrong>, который по своей природе ненадежен — пакеты могут теряться, приходить в неверном порядке или заменяться мусором.\u003C\u002Fp>\n\u003Cp>TCP создает \u003Cstrong>абстракцию\u003C\u002Fstrong> — упрощенную модель сложной реальности. Он «притворяется» надежным каналом, скрывая под капотом сложную механику исправления ошибок и повторной отправки данных.\u003C\u002Fp>\n\u003Ch4 id=\"закон-дырявых-абстракций\">Закон дырявых абстракций\u003C\u002Fh4>\n\u003Cp>Несмотря на удобство, любая абстракция иногда дает сбой. Если сетевой кабель перерезан или хаб перегружен, «надежность» TCP исчезает: передача данных либо прекращается, либо становится очень медленной. В этот момент реальность «просачивается» сквозь упрощенную модель. Спольски формулирует свой закон так:\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>«Все нетривиальные абстракции в той или иной степени текут»\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch4 id=\"примеры-протечек-в-программировании\">Примеры «протечек» в программировании\u003C\u002Fh4>\n\u003Cp>Автор приводит несколько ярких примеров того, как абстракции подводят разработчиков:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Двумерные массивы:\u003C\u002Fstrong> Итерация по большому массиву может быть в тысячи раз медленнее, если обходить его вертикально, а не горизонтально. Это происходит из-за «протечки» абстракции виртуальной памяти, вызывающей ошибки страниц (page faults).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SQL:\u003C\u002Fstrong> Язык запросов должен скрывать процедурные шаги, позволяя лишь описывать результат. Но на практике некоторые эквивалентные запросы работают в разы быстрее других, заставляя программиста изучать план выполнения запроса и внутренности базы данных.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Сетевые файловые системы (NFS):\u003C\u002Fstrong> Они позволяют работать с удаленными файлами так, будто они локальные. Но как только сеть падает, эта иллюзия рушится, и программа, не рассчитанная на сетевые задержки, ломается.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Строки в C++:\u003C\u002Fstrong> Попытка сложить два строковых литерала (\u003Ccode>\"foo\" + \"bar\"\u003C\u002Fcode>) не сработает, так как абстракция «строки как базового типа данных» дает течь, обнажая лежащие в основе указатели \u003Ccode>char*\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ASP.NET:\u003C\u002Fstrong> Эта технология пытается скрыть разницу между нажатием на кнопку и ссылкой, используя JavaScript. Если у пользователя отключен JavaScript, абстракция «течет», и приложение перестает работать правильно.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"главный-парадокс-почему-учиться-становится-сложнее\">Главный парадокс: почему учиться становится сложнее\u003C\u002Fh4>\n\u003Cp>Самый важный вывод Спольски заключается в том, что \u003Cstrong>абстракции экономят наше время в работе, но не экономят время на обучение\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>Когда появляется новый инструмент для генерации кода или высокоуровневый фреймворк, он упрощает выполнение типичных задач. Но как только абстракция дает течь (а она обязательно даст), программист обязан знать, как все устроено на уровнях ниже, чтобы исправить проблему.\u003C\u002Fp>\n\u003Cp>Это ведет к парадоксу: хотя инструменты становятся всё более высокоуровневыми, \u003Cstrong>стать профессиональным программистом становится всё труднее\u003C\u002Fstrong>. Сегодня разработчику недостаточно знать Visual Basic или современный фреймворк; он по-прежнему должен понимать указатели, работу памяти, протоколы и другие низкоуровневые концепции, иначе он окажется в тупике при первой же серьезной ошибке.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Вывод:\u003C\u002Fstrong> Абстракции позволяют нам справляться с огромной сложностью современных систем, но они не избавляют нас от необходимости понимать основы программирования.\u003C\u002Fp>",[],{},"The Law of Leaky Abstractions (2002)","2026-07-22","Закон дырявых абстракций — почему любое упрощение в программировании рано или поздно просачивается и не освобождает от изучения основ.",[13],"Программирование","Spolsky, Joel",[16,24,30,37,44,50,55,62,68,78,83,88,94,99,107,113,120,127,133,141],{"slug":17,"title":18,"date":19,"author":20,"tags":21,"searchText":23},"notashelf-taste-is-all-that-s-left-2026","Taste Is All That's Left (2026)","2026-08-10","notashelf",[22,13],"AI","taste is all that's left (2026) когда генеративный ии обнуляет стоимость воплощения, вкус остаётся единственным дефицитом — трение ученичества, кураторство и отказ от «slop». notashelf ai программирование",{"slug":25,"title":26,"date":10,"author":27,"tags":28,"searchText":29},"brooks-frederick-p-jr-the-mythical-man-month-essays-on","The Mythical Man-Month: Essays on Software Engineering (1995)","Brooks, Frederick P., Jr.",[13],"the mythical man-month: essays on software engineering (1995) классика управления разработкой — мифический человеко-месяц, хирургические бригады, концептуальная целостность и отсутствие серебряной пули. brooks, frederick p., jr. программирование",{"slug":31,"title":32,"date":10,"author":33,"tags":34,"searchText":36},"mdn-contributors-css-performance-optimization-2025","CSS performance optimization (2025)","MDN Contributors",[35,13],"Frontend","css performance optimization (2025) оптимизация css для быстрого рендера — блокировка отрисовки, reflow, анимации на gpu, шрифты и css containment. mdn contributors frontend программирование",{"slug":38,"title":39,"date":10,"author":40,"tags":41,"searchText":43},"simpson-kyle-you-don-t-know-js-async-performance-2015","You Don't Know JS: Async &#x26; Performance (2015)","Simpson, Kyle",[42,35,13],"Javascript","you don't know js: async & performance (2015) асинхронность и производительность в javascript — событийный цикл, промисы, генераторы, web workers и практики бенчмаркинга. simpson, kyle javascript frontend программирование",{"slug":45,"title":46,"date":10,"author":47,"tags":48,"searchText":49},"stemmler-khalil-client-side-architecture-basics-i","Client-Side Architecture Basics: I. Architecture (2020)","Stemmler, Khalil",[35,13],"client-side architecture basics: i. architecture (2020) проблемы mvc и mvp во фронтенде и путь к клиентской архитектуре — разделение домена, приложения и инфраструктуры. stemmler, khalil frontend программирование",{"slug":51,"title":52,"date":10,"author":47,"tags":53,"searchText":54},"stemmler-khalil-client-side-architecture-basics-ii","Client-Side Architecture Basics: II. Principles (2020)",[35,13],"client-side architecture basics: ii. principles (2020) принципы cqs и разделения ответственности для фронтенда — чтение и запись, вертикальные срезы и выбор инструментов. stemmler, khalil frontend программирование",{"slug":56,"title":57,"date":58,"author":59,"tags":60,"searchText":61},"kholmatova-alla-design-systems-a-practical-guide-to","Design Systems: A practical guide to creating design languages for digital products","2026-07-16","Kholmatova, Alla",[13],"design systems: a practical guide to creating design languages for digital products практическое руководство по созданию и поддержке дизайн-систем для цифровых продуктов — от теоретических основ к процессам. kholmatova, alla программирование",{"slug":63,"title":64,"date":58,"author":65,"tags":66,"searchText":67},"martin-robert-c-clean-code-a-handbook-of-agile-software","Clean Code: A Handbook of Agile Software Craftsmanship (2025)","Martin, Robert C.",[13],"clean code: a handbook of agile software craftsmanship (2025) практическое руководство по ремеслу разработки: читаемый код, рефакторинг и дисциплины тестирования в agile-среде. martin, robert c. программирование",{"slug":69,"title":70,"date":71,"author":72,"tags":73,"searchText":77},"frothingham-a-l-kniga-ierofeya-stefana-bar-sudaili-i","Оригенизм и «Книга Иерофея» Стефана бар Судаили и оригенизм (из Frothingham, 1886)","2026-09-27","Frothingham, A. L.",[74,75,76],"Ориген","Сирия","Ареопагит","оригенизм и «книга иерофея» стефана бар судаили и оригенизм (из frothingham, 1886) связь «книги иерофея» с оригенистским возрождением vi века: параллели в доктрине апокатастасиса и сирийском мистическом пантеизме. frothingham, a. l. ориген сирия ареопагит",{"slug":79,"title":80,"date":71,"author":72,"tags":81,"searchText":82},"frothingham-a-l-kniga-svyatogo-ierofeya-o-sokrovennykh","Книга святого Иерофея о сокровенных тайнах Божества (конспект из Frothingham, 1886)",[75,74,76],"книга святого иерофея о сокровенных тайнах божества (конспект из frothingham, 1886) конспект сирийского трактата стефана бар судаили: происхождение мира, восхождение ума, отождествление со христом и апокатастический финал. frothingham, a. l. сирия ориген ареопагит",{"slug":84,"title":85,"date":71,"author":72,"tags":86,"searchText":87},"frothingham-a-l-stephen-bar-sudaili-the-syrian-mystic-and","Stephen bar Sudaili the Syrian Mystic, and the Book of Hierotheos (1886)",[75,76,74],"stephen bar sudaili the syrian mystic, and the book of hierotheos (1886) филологическое и богословское исследование «книги иерофея» как псевдоэпиграфа стефана бар судаили и проблемы корпуса псевдо-дионисия. frothingham, a. l. сирия ареопагит ориген",{"slug":89,"title":90,"date":71,"author":91,"tags":92,"searchText":93},"guillaumont-antoine-bogoslovsko-kosmologicheskaya-sistema","Богословско-космологическая система «Képhalaia gnostica» в контексте оригенизма IV века (из Guillaumont, 1962)","Guillaumont, Antoine",[74,75],"богословско-космологическая система «képhalaia gnostica» в контексте оригенизма iv века (из guillaumont, 1962) протология и космология «гностических глав» евагрия: хенада разумных духов, «первое движение» и место трактата в оригенизме iv века. guillaumont, antoine ориген сирия",{"slug":95,"title":96,"date":71,"author":91,"tags":97,"searchText":98},"guillaumont-antoine-les-kephalaia-gnostica-d-evagre-le","Les «Képhalaia gnostica» d’Évagre le Pontique et l’histoire de l’origénisme chez les Grecs et chez les Syriens (1962)",[74,75],"les «képhalaia gnostica» d’évagre le pontique et l’histoire de l’origénisme chez les grecs et chez les syriens (1962) монография о «гностических главах» евагрия и оригенистских спорах iv–vi веков; открытие нецензурированной сирийской версии s2. guillaumont, antoine ориген сирия",{"slug":100,"title":101,"date":71,"author":102,"tags":103,"searchText":106},"levy-oscar-prefatory-letter-to-the-world-significance-of","Prefatory Letter to The World Significance of the Russian Revolution (1920)","Levy, Oscar",[104,105],"Политика","История","prefatory letter to the world significance of the russian revolution (1920) философско-исторический разбор победы большевизма: еврейский идеализм, либеральная демократия и мессианские ожидания в контексте революции 1917 года. levy, oscar политика история",{"slug":108,"title":109,"date":71,"author":102,"tags":110,"searchText":112},"levy-oscar-the-idiocy-of-idealism-1940","The Idiocy of Idealism (1940)",[111,104],"Ницше","the idiocy of idealism (1940) памфлет леви о кризисе европы: ницшеанская критика идеализма и попытка объяснить нацизм и большевизм через моральные и религиозные идеи. levy, oscar ницше политика",{"slug":114,"title":115,"date":71,"author":116,"tags":117,"searchText":119},"limonov-eduard-distsiplinarnyi-sanatorii-1993","«Дисциплинарный санаторий» (1993)","Лимonov, Эдуард",[118],"Литература","«дисциплинарный санаторий» (1993) социально-философское эссе о «санатории» постиндустриального общества: смена прямого насилия мягким контролем, медиакратия и инфантилизация масс. лимonov, эдуард литература",{"slug":121,"title":122,"date":71,"author":123,"tags":124,"searchText":126},"louth-andrew-the-reception-of-dionysius-up-to-maximus-the","The Reception of Dionysius up to Maximus the Confessor (2008)","Louth, Andrew",[76,125],"Христианство","the reception of dionysius up to maximus the confessor (2008) ранний приём псевдо-дионисиевского корпуса в византийской традиции до максима исповедника: переводы, комментарии и богословские адаптации. louth, andrew ареопагит христианство",{"slug":128,"title":129,"date":71,"author":130,"tags":131,"searchText":132},"malone-alice-elisabeth-s-nietzsche-2024","Elisabeth’s Nietzsche (2024)","Malone, Alice",[111],"elisabeth’s nietzsche (2024) критика мифа «заговора элизабет»: сравнение её правок с прижизненными текстами и переоценка ответственности самого ницше за расистскую рецепцию. malone, alice ницше",{"slug":134,"title":135,"date":71,"author":136,"tags":137,"searchText":140},"obraz-boga-v-gimne-kleanfa","Образ Бога в гимне Клеанфа","Claude",[138,139],"Теология","Стоицизм","образ бога в гимне клеанфа богословский разбор гимна клеанфа: зевс как κοινὸς λόγος, имманентная царственность, провидение и этика участия в общем νόμος. claude теология стоицизм",{"slug":142,"title":143,"date":71,"author":144,"tags":145,"searchText":146},"ramelli-ilaria-the-christian-doctrine-of-apokatastasis-a","The Christian Doctrine of Apokatastasis. A Critical Assessment from the New Testament to Eriugena (2013)","Ramelli, Ilaria",[74,125,76],"the christian doctrine of apokatastasis. a critical assessment from the new testament to eriugena (2013) систематическая реконструкция христианского учения об апокатастасисе от новозаветных текстов до иоанна скота эриугены. ramelli, ilaria ориген христианство ареопагит",{"Программирование":148},9,1790540349729]