Design pattern

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

Использование шаблонов дизайна

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

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

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

Шаблоны творческого проектирования

Все эти шаблоны проектирования касаются создания экземпляров классов. Этот шаблон можно далее разделить на шаблоны создания классов и шаблоны создания объектов. В то время как шаблоны создания классов эффективно используют наследование в процессе создания экземпляров, шаблоны создания объектов эффективно используют делегирование для выполнения работы.

 
  • Абстрактная фабрика
    Создает экземпляр нескольких семейств классов
  • Builder
    Отделяет построение объекта от его представления
  • Заводской метод
    Создает экземпляр нескольких производных классов
  • Пул объектов
    Избегайте дорогостоящего приобретения и высвобождения ресурсов за счет утилизации объектов, которые больше не используются
  • Прототип
    Полностью инициализированный экземпляр для копирования или клонирования.
  • Синглтон
    Класс, из которого может существовать только один экземпляр

Структурные шаблоны проектирования

Эти шаблоны проектирования связаны с составом классов и объектов. Структурные шаблоны создания классов используют наследование для создания интерфейсов. Структурные шаблоны объектов определяют способы компоновки объектов для получения новых функциональных возможностей.

  • Адаптер
    Match интерфейсов разных классов
  • Мост
    отделяет интерфейс объекта от его реализации
  • Составной
    Древовидная структура простых и составных объектов.
  • Декоратор
    Динамическое добавление обязанностей к объектам
  • Фасад
    Единый класс, представляющий всю подсистему
  • Легковес
    Мелкозернистый экземпляр, используемый для эффективного обмена
  • Данные частного класса
    ограничивают доступ к средствам доступа / мутаторам
  • Прокси
    Объект, представляющий другой объект

Поведенческие шаблоны проектирования

Все эти шаблоны проектирования связаны с взаимодействием объектов Class. Поведенческие паттерны – это те паттерны, которые наиболее конкретно связаны с общением между объектами.

  • Цепочка ответственности
    Способ передачи запроса между цепочкой объектов
  • Команда
    Инкапсулирует запрос команды как объект
  • Интерпретатор
    Способ включения языковых элементов в программу
  • Итератор
    Последовательный доступ к элементам коллекции
  • Посредник
    Определяет упрощенное взаимодействие между классами
  • Memento
    Захват и восстановление внутреннего состояния объекта
  • Нулевой объект
    Предназначен для использования в качестве значения объекта по умолчанию
  • Наблюдатель
    Способ уведомления об изменении ряда классов
  • Состояние
    Изменение поведения объекта при изменении его состояния
  • Стратегия
    инкапсулирует алгоритм внутри класса
  • Шаблонный метод
    Отложите точные шаги алгоритма на подкласс
  • Посетитель
    Определяет новую операцию для класса без изменений

Критика

Концепция шаблонов проектирования подвергалась критике со стороны некоторых специалистов в области информатики.

Нацелен на неправильную проблему

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

Питер Норвиг приводит аналогичный аргумент. Он демонстрирует, что 16 из 23 шаблонов в книге Design Patterns (которая в основном ориентирована на C ++) упрощены или устранены (посредством прямой языковой поддержки) в Lisp или Dylan.

Отсутствие формальных основ

Изучение шаблонов проектирования было чрезмерно спонтанным, и некоторые утверждали, что эту концепцию срочно необходимо поставить на более формальную основу. На OOPSLA 1999 «Банда четырех» (при их полном сотрудничестве) предстала перед показательным судом, в ходе которого они были «обвинены» в многочисленных преступлениях против информатики. Они были «осуждены» ⅔ из «присяжных», присутствовавших на суде.

Приводит к неэффективным решениям

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

Существенно не отличается от других абстракций

Некоторые авторы утверждают, что шаблоны проектирования существенно не отличаются от других форм абстракции и что использование новой терминологии (заимствованной из архитектурного сообщества) для описания существующих явлений в области программирования не требуется. Парадигма модель-представление-контроллер рекламируется как пример «шаблона», который на несколько лет предшествует концепции «шаблонов проектирования». Некоторые также утверждают, что основным вкладом сообщества шаблонов проектирования (и книги «Банда четырех») было использование языка шаблонов Александра в качестве формы документации; практика, которая часто игнорируется в литературе.

Дедолларизация и российский рубль.

американский доллар в мечтах идиотов

Дедолларизация — идущий в ряде стран с начала 2010-х годов процесс постепенного отказа от использования доллара США в качестве валюты международных расчётов и резервной валюты. Говоря более широко, речь идёт о значительном сокращении участия крупнейших государств мира в американской финансовой системе, завязанной на доллар. Место доллара постепенно занимают другие валюты, а также создаются альтернативы американским финансовым институтам.

Теперь, хотелось бы остановиться на недавней истории одной из них. Давайте проследим судьбу нашей национальной валюты, российского рубля, за последнее столетие.
Российский рубль встретил начало XX века в очень неплохой форме. После денежной реформы Витте 1895-1897 годов, которая закрепила последовательный золотой стандарт, и вплоть до самого начала Первой мировой войны бумажный рубль свободно менялся на золото по курсу 0,774234 грамм за рубль. Именно этот период истории можно по праву назвать золотым веком расцвета российской экономики — государство не препятствовало частной инициативе, модернизировалось законодательство, промышленность бурно развивалась, структура производства усложнялась, ВВП рос немыслимыми темпами, аккумулировался реальный капитал, который стал драйвером развития, строительства инфраструктуры, железных дорог по всей Российской Империи.

Огромный общий рынок Империи к 1913 году включал 170 млн. человек (для сравнения, население всей Европы тогда не превышало 300 млн. человек) и был без преувеличения крупнейшим в мире. Многие в тот период были убеждены, что именно Россия, а не какая-нибудь там Америка станет локомотивом экономического развития и технического прогресса в XX веке.

Российский рубль
Российский рубль в начале двадцатого века

Однако, все изменилось в 1914 году — с началом катастрофической для России Первой мировой войны. Вскоре после начала войны, свободный обмен бумажных рублей на золото был прекращен. Золотые монеты (николаевские червонцы) сразу же исчезли из обращения, а все возрастающие военные расходы стали финансироваться правительством (как и в других воюющих странах) при помощи необеспеченной денежной эмиссии. В результате, объем бумажных денег стал быстро увеличиваться. Если в начале 1914 года в обороте было 2.4 миллиарда рублей, то в 1916 по стране ходило уже 8 миллиардов. Вкупе с падением производства гражданских товаров это вызвало серьезную инфляцию и проблемы в экономике.

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

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

керенка
Знаменитая керенка

Победившая вскоре за тем пролетарская революция полностью переняла практику Временного правительства, продолжив активно накачивать денежную массу. С 1919 года, наряду с введением тотальной и всеохватывающей «продразверстки», Советским правительством начали печататься так называемые «совзнаки».
купюра Керенка 1000 р.
«Керенка» 1000 р.

Советским правительством начали печататься так называемые «совзнаки».
пролетарский расчетный знак
Истинно пролетарский рубль

Скорость печати совзнаков эпохи «военного коммунизма» была такая, что их пришлось деноминировать два раза — в 10 тысяч раз в 1922 г. и в 100 раз в 1923 г.
совзнак крупного номинала
Совзнак деноминированный

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

Обмен был произведен курсу 50000 старых «совзнаков» на 1 золотой рубль. Лишь к 1924 году инфляцию удалось более-менее погасить. Суммарная накопившаяся деноминация рубля составила к этому моменту 50 миллиардов (то есть, за 10 лет рубль обесценился в 50 миллиардов раз).

Главный советский пропагандист Маяковский по этому поводу написал:

Равны серебро и новый бумажный билет,
нынче меж ними разницы нет.
Бери, какая больше на вкус, —
теперь и бумажкам твердый курс.

три рубля нэпа
Советский рубль периода НЭП – а

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

В итоге, советский рубль быстро потерял конвертируемость, и уже к 1932 году перестал в реальности обмениваться на золото и котироваться за границей. Именно этот период описан у Булгакова в известном эпизоде «Сдавайте валюту, граждане!». На советских казначейских билетах 1938-го года, уже нет никакого упоминания о золотом содержании, вместо этого «билет обеспечивается всем достоянием Союза ССР». Эта формулировка сохранится на всех последующих выпусках советских купюр.

рубль бумахный
Первый необеспеченный советский рубль

В 1947 году была проведена конфискационная денежная реформа. Она отменила все виды обращавшихся ранее советских дензнаков, и серьезно пощипала сбережения населения. Все вклады советских граждан свыше 3 тысяч рублей были урезаны на треть, свыше 10 тысяч — на две трети, а наличные рубли — так и вовсе, обменивали один к десяти, то есть уменьшили в десять раз. Что интересно, приближенные к власти могли избежать конфискации — например, сам Берия приказал своему помощнику раскидать 40 тысяч рублей по разным сберкассам. Узнали мы об этом лишь потому, что «Берия, Берия вышел из доверия».
рубль после конфискации 47 - го года
Послевоенный рубль после конфискации

Денежная реформа 1961 года, проведённая с 1 января 1961 года, осуществлялась в форме деноминации с девальвацией. Денежные знаки образца 1947-го, обменивались на новые денежные знаки уменьшенного формата в соотношении 10 к 1. Дензнаки образца 1961-го года печатались в течении последующих 30 лет, и запомнились целому позднесоветскому поколению как классические советские деньги «с Лениным».
Ленин на деньгах
Классический советский рубль с лениным

Последней советской денежной реформой стала «Павловская», в 1991 году. Реформа преследовала цель избавиться от избыточной денежной массы, находившейся в наличном обращении, и хотя бы частично решить проблему дефицита на товарном рынке СССР. Поэтому, неудивительно, что реформа была конфискационной. Заменялись все 50 и 100-рублевые купюры, на обмен населению давалось всего три дня и лимит составлял всего 1000 рублей. Все остальные купюры крупного номинала «сгорали».
Об указе было сообщено в 21 час по телевидению, поэтому самые находчивые успели потратить или обменять свои купюры в тот же день, пока знание о реформе не распространилось среди населения.
рубль паавловской реформа
Павловский рубль

Начиная с 1992 года, за дело печати рублей берется уже российское правительство. Начало независимого существования нового российского рубля задалось не очень. Советская плановая экономика рухнула, интеграция с бывшими советскими республиками разваливалась, незнакомые с рынком директора бывших госпредприятий, которым вдруг сказали «выживайте как можете!» были в полной прострации.
Источников наполнения бюджета не было, и российское правительство в очередной раз прибегло к испытанному рецепту — печатному станку. Уже в первые годы существования независимой России денег было напечатано столько, что пост-советская инфляционная корректировка цен быстро перешла в гиперинфляцию.
российский рубль новый
Рубль в период гиперинфляции в России

В 1993 году произошла очередная конфискационная реформа. Купюры старого образца менялись на новые с лимитом в 35 тысяч рублей (около 35 долларов), поднятым до 100 тысяч через несколько дней. Именно по поводу этой реформы Черномырдин произнес свою ставшую крылатой фразу: «Хотели как лучше, а получилось как всегда».

российский рубль
Рубль в период гиперинфляции в России

Лишь к 1997 году, когда практически все россияне успели стать рублевыми миллионерами (что, впрочем, никому радости не доставляло, так как на миллион мало что можно было купить) гиперинфляцию наконец-то удалось остановить.
Рубль после деноминации  - 97
Рубль перед деноминацией – 97

Вскоре была проведена деноминация 1000 к 1, которая привела российский рубль к тому образцу, который нам знаком и дорог и по сей день.
рубль перед деноминацией
Рубль после деноминации – 97

Горстка компаний получает все большую долю прибыли

распределение прибыли

Неравенство фирм: горстка компаний получает все большую долю прибыли

Bloomberg Economics проанализировала прибыли американских фирм, зарегистрированных на бирже, за 22 года. Постепенное уплотнение правого хвоста распределения говорит о сильном перекосе прибылей в сторону ведущих компаний. Есть доказательства, что это не просто феномен США — аналогичная тенденция наблюдается и в Европе.