HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Code smell: когда код плохо пахнет</a></li>
1 <ul><li><a>Code smell: когда код плохо пахнет</a></li>
2 <li><a>Принципы ООП в примерах для начинающих</a></li>
2 <li><a>Принципы ООП в примерах для начинающих</a></li>
3 <li><a>Аннотации и рефлексия в Java</a></li>
3 <li><a>Аннотации и рефлексия в Java</a></li>
4 <li><a>Шпаргалка по модели памяти С++11</a></li>
4 <li><a>Шпаргалка по модели памяти С++11</a></li>
5 <li><a>21 фича современного C++, которые вам обязательно пригодятся</a></li>
5 <li><a>21 фича современного C++, которые вам обязательно пригодятся</a></li>
6 <li><a>Три очень практичные фичи C++23</a></li>
6 <li><a>Три очень практичные фичи C++23</a></li>
7 <li><a>Что нам не нравится в C++</a></li>
7 <li><a>Что нам не нравится в C++</a></li>
8 <li><a>Основы C++: Указатели и Итераторы</a></li>
8 <li><a>Основы C++: Указатели и Итераторы</a></li>
9 <li><a>Модули C++20 и GCC11</a></li>
9 <li><a>Модули C++20 и GCC11</a></li>
10 <li><a>Маст-хэв PHP-инструменты</a></li>
10 <li><a>Маст-хэв PHP-инструменты</a></li>
11 <li><a>Малоизвестные возможности языка C</a></li>
11 <li><a>Малоизвестные возможности языка C</a></li>
12 <li><a>10 игр для изучения JavaScript</a></li>
12 <li><a>10 игр для изучения JavaScript</a></li>
13 <li><a>Python. Выражения в методах и индексаторах</a></li>
13 <li><a>Python. Выражения в методах и индексаторах</a></li>
14 </ul><h2>Code smell: когда код плохо пахнет</h2>
14 </ul><h2>Code smell: когда код плохо пахнет</h2>
15 <p>Программный код, будучи по факту виртуальной сущностью не может иметь запах в прямом смысле этого слова. Однако, термин "запах кода" (code smell) некоторое время назад был введен Кентом Беком и популяризирован книгой Мартина Фаулера о рефакторинге.</p>
15 <p>Программный код, будучи по факту виртуальной сущностью не может иметь запах в прямом смысле этого слова. Однако, термин "запах кода" (code smell) некоторое время назад был введен Кентом Беком и популяризирован книгой Мартина Фаулера о рефакторинге.</p>
16 <p>В русскоязычном переводе можно встретить "код с душком". Такой перевод явно говорит о том, что речь идет о чем-то не слишком хорошем и для того, чтобы понять, что же такое code smell, рассмотрим несколько примеров.</p>
16 <p>В русскоязычном переводе можно встретить "код с душком". Такой перевод явно говорит о том, что речь идет о чем-то не слишком хорошем и для того, чтобы понять, что же такое code smell, рассмотрим несколько примеров.</p>
17 <p><a>Читать далее</a></p>
17 <p><a>Читать далее</a></p>
18 <h2>Принципы ООП в примерах для начинающих</h2>
18 <h2>Принципы ООП в примерах для начинающих</h2>
19 <p>Как создатель и руководитель курсов по C# я вижу, что часто у людей, начинающих изучать этот язык, принципы Объектно-Ориентированного Программирования вызывают затруднения в понимании. А так как один из лучших способов что-то понять, это посмотреть применение на примерах, то я решил написать статью с примерами принципов. Рекомендую найти какую-нибудь статью или книгу, где прочитать основную теорию, а в этой статье уже посмотреть примеры применения этой теории, чтобы понять её лучше.</p>
19 <p>Как создатель и руководитель курсов по C# я вижу, что часто у людей, начинающих изучать этот язык, принципы Объектно-Ориентированного Программирования вызывают затруднения в понимании. А так как один из лучших способов что-то понять, это посмотреть применение на примерах, то я решил написать статью с примерами принципов. Рекомендую найти какую-нибудь статью или книгу, где прочитать основную теорию, а в этой статье уже посмотреть примеры применения этой теории, чтобы понять её лучше.</p>
20 <p><a>Перейти к статье</a></p>
20 <p><a>Перейти к статье</a></p>
21 <h2>Аннотации и рефлексия в Java</h2>
21 <h2>Аннотации и рефлексия в Java</h2>
22 <p>Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.</p>
22 <p>Аннотации и рефлексия являются ключевыми концепциями в Java, предоставляя разработчикам мощные инструменты для создания более гибких, адаптивных и понятных приложений. Аннотации предоставляют способ добавить метаданные к классам, методам и полям, что позволяет компилятору и другим инструментам анализировать код более глубоко. Рефлексия, с другой стороны, позволяет программам анализировать и модифицировать свой собственный состав и поведение во время выполнения.</p>
23 <p><a>Читать далее</a></p>
23 <p><a>Читать далее</a></p>
24 <h2>Шпаргалка по модели памяти С++11</h2>
24 <h2>Шпаргалка по модели памяти С++11</h2>
25 <p>Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory) [<a>1</a>]. Наиболее примитивной моделью является последовательная согласованность, где все инструкции из всех потоков образуют общий порядок, согласованный с порядком выполнения программы в каждом потоке [<a>2</a>].</p>
25 <p>Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory) [<a>1</a>]. Наиболее примитивной моделью является последовательная согласованность, где все инструкции из всех потоков образуют общий порядок, согласованный с порядком выполнения программы в каждом потоке [<a>2</a>].</p>
26 <p>Одной из наиболее важных фич C++11 является модель памяти, поддерживающая параллелизм, которая позволяет писать многопоточные программы, не полагаясь на различные расширения для конкретных целевых платформ.</p>
26 <p>Одной из наиболее важных фич C++11 является модель памяти, поддерживающая параллелизм, которая позволяет писать многопоточные программы, не полагаясь на различные расширения для конкретных целевых платформ.</p>
27 <p><a>Читать полностью</a></p>
27 <p><a>Читать полностью</a></p>
28 <h2>21 фича современного C++, которые вам обязательно пригодятся</h2>
28 <h2>21 фича современного C++, которые вам обязательно пригодятся</h2>
29 <p>Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.</p>
29 <p>Итак, судьба снова свела вас с C++, и вы поражены его возможностями с точки зрения производительности, удобства и выразительности кода. Но вот незадача: вы теряетесь в этом многообразии замечательных новых фич и, как следствие, затрудняетесь сходу определить, что из этого всего вам действительно стоило бы взять на вооружение в своей повседневной работе по написанию кода. Не стоит расстраиваться, в этой статье вашему вниманию будут представлены 21 новая фича современного C++, которые помогут сделать ваш проект лучше, а работу над ним легче.</p>
30 <p><a>Перейти к статье</a></p>
30 <p><a>Перейти к статье</a></p>
31 <h2>Три очень практичные фичи C++23</h2>
31 <h2>Три очень практичные фичи C++23</h2>
32 <p>C++23 - это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотреть текущий статус и поддержку компиляторами новых фич <a>здесь</a>. Многие из этих нововведений представляют из себя небольшие улучшения и вещи, которыми вы, вероятно, не будете пользоваться на регулярной основе. В этой статье рассмотрим три новые фичи C++23, которые выделяются на фоне остальных именно тем, насколько часто они будут встречаться в коде.</p>
32 <p>C++23 - это текущая рабочая версия стандарта C++. На момент написания статьи туда пока не было включено ни одной крупной фичи, но ряд небольших нововведений, а также множество отчетов о дефектах уже утверждены в стандарте. Вы можете посмотреть текущий статус и поддержку компиляторами новых фич <a>здесь</a>. Многие из этих нововведений представляют из себя небольшие улучшения и вещи, которыми вы, вероятно, не будете пользоваться на регулярной основе. В этой статье рассмотрим три новые фичи C++23, которые выделяются на фоне остальных именно тем, насколько часто они будут встречаться в коде.</p>
33 <p><a>Читать далее</a></p>
33 <p><a>Читать далее</a></p>
34 <h2>Что нам не нравится в C++</h2>
34 <h2>Что нам не нравится в C++</h2>
35 <p>Результаты ежегодного опроса Annual C++ Developer Survey "Lite" за 2023 год наконец <a>опубликованы</a>, и мы можем почерпнуть из них ценную информацию об опыте C++ разработчиков. Одной из самых интересных целей этого опроса является выявление ряда болевых точек, с которыми приходится иметь дело C++ разработчикам.</p>
35 <p>Результаты ежегодного опроса Annual C++ Developer Survey "Lite" за 2023 год наконец <a>опубликованы</a>, и мы можем почерпнуть из них ценную информацию об опыте C++ разработчиков. Одной из самых интересных целей этого опроса является выявление ряда болевых точек, с которыми приходится иметь дело C++ разработчикам.</p>
36 <p>В этой статье мы рассмотрим несколько узких мест в разработке на C++, на которые больше всего жаловались опрошенные разработчики.</p>
36 <p>В этой статье мы рассмотрим несколько узких мест в разработке на C++, на которые больше всего жаловались опрошенные разработчики.</p>
37 <p><a>Читать далее</a></p>
37 <p><a>Читать далее</a></p>
38 <h2>Основы C++: Указатели и Итераторы</h2>
38 <h2>Основы C++: Указатели и Итераторы</h2>
39 <p>Знакома ли вам ситуация, когда вы внезапно оказываетесь совершенно не в состоянии объяснить какой-нибудь базовый элемент языка, с которым работаете? Вам задают простой вопрос, а вы только и можете, что сказать <em>"ээээээээ, ну я точно не помню, мне нужно освежить знания, извините</em>".</p>
39 <p>Знакома ли вам ситуация, когда вы внезапно оказываетесь совершенно не в состоянии объяснить какой-нибудь базовый элемент языка, с которым работаете? Вам задают простой вопрос, а вы только и можете, что сказать <em>"ээээээээ, ну я точно не помню, мне нужно освежить знания, извините</em>".</p>
40 <p>Не вешайте нос! Мы очень часто воспринимаем такие вещи как должное, и пока менее опытный коллега не спросит нас о них, мы о таком даже не задумываемся. Поэтому иногда нам все-таки стоит возвращаться к основам, чтобы освежить или даже углубить свои знания.</p>
40 <p>Не вешайте нос! Мы очень часто воспринимаем такие вещи как должное, и пока менее опытный коллега не спросит нас о них, мы о таком даже не задумываемся. Поэтому иногда нам все-таки стоит возвращаться к основам, чтобы освежить или даже углубить свои знания.</p>
41 <p>В этой статье обсудим указатели и итераторы.</p>
41 <p>В этой статье обсудим указатели и итераторы.</p>
42 <p><a>Читать далее</a></p>
42 <p><a>Читать далее</a></p>
43 <h2>Модули C++20 и GCC11</h2>
43 <h2>Модули C++20 и GCC11</h2>
44 <p>Одним из главных нововведений стандарта C++20 является добавление модулей. Модули призваны радикально изменить структуру кодовых баз C++ и, возможно, сигнализируют о грядущей кончине заголовков. Они также потенциально открывают дорогу для внедрения унифицированной системы сборки и менеджера пакетов, наподобие Rust Cargo; хотя я не сомневаюсь, что стандартизация унифицированной системы сборки будет тем еще кровавым побоищем.</p>
44 <p>Одним из главных нововведений стандарта C++20 является добавление модулей. Модули призваны радикально изменить структуру кодовых баз C++ и, возможно, сигнализируют о грядущей кончине заголовков. Они также потенциально открывают дорогу для внедрения унифицированной системы сборки и менеджера пакетов, наподобие Rust Cargo; хотя я не сомневаюсь, что стандартизация унифицированной системы сборки будет тем еще кровавым побоищем.</p>
45 <p><a>Перейти к статье</a></p>
45 <p><a>Перейти к статье</a></p>
46 <h2>Маст-хэв PHP-инструменты</h2>
46 <h2>Маст-хэв PHP-инструменты</h2>
47 <p>В последние годы PHP динамично развивался с появлением новых версий языка, содержащих ряд новых фич, депрекаций и более строгий синтаксис. Кроме того, библиотеки и фреймворки, такие как Symfony, постоянно претерпевают изменения: каждые полгода появляются новые минорные релизы, а каждые два года - мажорные, наиболее существенные. Для нас в Westwing очень важно регулярно обновлять имеющуюся кодовую базу, чтобы она оставалась работоспособной, безопасной и актуальной. К счастью, в сообществе PHP появилось множество инструментов, способствующих улучшению кодовой базы.</p>
47 <p>В последние годы PHP динамично развивался с появлением новых версий языка, содержащих ряд новых фич, депрекаций и более строгий синтаксис. Кроме того, библиотеки и фреймворки, такие как Symfony, постоянно претерпевают изменения: каждые полгода появляются новые минорные релизы, а каждые два года - мажорные, наиболее существенные. Для нас в Westwing очень важно регулярно обновлять имеющуюся кодовую базу, чтобы она оставалась работоспособной, безопасной и актуальной. К счастью, в сообществе PHP появилось множество инструментов, способствующих улучшению кодовой базы.</p>
48 <p><a>Читать далее</a></p>
48 <p><a>Читать далее</a></p>
49 <h2>Малоизвестные возможности языка C</h2>
49 <h2>Малоизвестные возможности языка C</h2>
50 <p>Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java.</p>
50 <p>Если у вас несколько лет опыта программирования на языке C, то, вероятно, вы гораздо более уверены в своих знаниях этого языка, чем если бы вы провели столько же времени, работая с C++ или Java.</p>
51 <p>И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.</p>
51 <p>И язык C, и его стандартная библиотека довольно близки к к минимально возможному размеру.</p>
52 <p>Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть свои темные уголки).</p>
52 <p>Текущая наиболее часто используемая версия языка, c99, принесла много новых возможностей, многие из которых совершенно неизвестны большинству программистов на C (в более старых спецификациях, очевидно, тоже есть свои темные уголки).</p>
53 <p><a>Читать далее</a></p>
53 <p><a>Читать далее</a></p>
54 <h2>10 игр для изучения JavaScript</h2>
54 <h2>10 игр для изучения JavaScript</h2>
55 <p>Без лишних слов, вот десять фантастических игр, с помощью которых вы можете изучать JavaScript.</p>
55 <p>Без лишних слов, вот десять фантастических игр, с помощью которых вы можете изучать JavaScript.</p>
56 <p><a>Перейти к подборке</a></p>
56 <p><a>Перейти к подборке</a></p>
57 <h2>Python. Выражения в методах и индексаторах</h2>
57 <h2>Python. Выражения в методах и индексаторах</h2>
58 <p>Если вам когда-нибудь приходилось работать с NumPy, то вы скорее всего знаете, что в индексатор массива можно передать не только индексы начала, конца, и шага. Потрясающая возможность получить срез массива по некоторому условию, в виде data[data &gt; 0] предает массивам NumPy некоторое сходство с СУБД.</p>
58 <p>Если вам когда-нибудь приходилось работать с NumPy, то вы скорее всего знаете, что в индексатор массива можно передать не только индексы начала, конца, и шага. Потрясающая возможность получить срез массива по некоторому условию, в виде data[data &gt; 0] предает массивам NumPy некоторое сходство с СУБД.</p>
59 <p>Тут же можно вспомнить про SqlAlchemy и возможность передать в функцию filter некоторое условие для отбора записей session.query(MyModel).filter(MyModel.field == 10).</p>
59 <p>Тут же можно вспомнить про SqlAlchemy и возможность передать в функцию filter некоторое условие для отбора записей session.query(MyModel).filter(MyModel.field == 10).</p>
60 <p>Отличные, в общем-то возможности, не так ли? Не возникало ли у вас вопроса как они работают внутри?</p>
60 <p>Отличные, в общем-то возможности, не так ли? Не возникало ли у вас вопроса как они работают внутри?</p>
61 <p><a>Читать далее</a></p>
61 <p><a>Читать далее</a></p>
62  
62