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 > 0] предает массивам NumPy некоторое сходство с СУБД.</p>
58
<p>Если вам когда-нибудь приходилось работать с NumPy, то вы скорее всего знаете, что в индексатор массива можно передать не только индексы начала, конца, и шага. Потрясающая возможность получить срез массива по некоторому условию, в виде data[data > 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