Как стать автором
Обновить
Сначала показывать

Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов

Блог компании Издательский дом «Питер» Программирование *Java *Проектирование и рефакторинг *ООП *
Перевод

В современном языке Java паттерн Посетитель (Visitor) уже не нужен. Он отлично компенсируется использованием запечатанных типов и переключателей, использующих сопоставление с шаблоном – в таком случае те же цели достигаются проще и меньшим объемом кода.

Всякий раз, оказываясь в ситуации, где мог бы применяться паттерн Посетитель, подумайте, не воспользоваться ли вместо него более современными возможностями языка   Java. Разумеется, эти возможности могут использоваться и в других обстоятельствах, но в этой статье мы обсудим сравнительно узкую тему: чем заменить паттерн Посетитель. Для этого я начну с максимально краткого введения и приведу пример, а затем объясню, как достичь тех же целей более простым (и кратким) кодом.

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 1.8K
Комментарии 3

Новости

Книга «Open Source. Разработка программ с открытым исходным кодом»

Блог компании Издательский дом «Питер» Open source *Профессиональная литература
image Привет, Хаброжители! Наши представления об открытом исходном коде сильно отличаются от того, что происходит на самом деле. Оптимистичная модель общественного сотрудничества давно ушла в прошлое, теперь — это царство одиночек. Еще совсем недавно информация была качественной, и работало правило — чем ее больше, тем лучше. Внезапно информации стало слишком много. Чем больше уведомлений на нас сыпется, тем меньше мы обращаем на них внимания. В мире программного обеспечения с открытым исходным кодом все происходит точно так же. Работа подразумевает коллективное взаимодействие, но пишущие и публикующие код разработчики настолько перегружены разнообразными запросами, что просто перестают на них реагировать. Open Source — это «дороги и мосты» цифрового мира. Старт работ всегда связан с большим вложением сил и средств, но каждый дополнительный пользователь обходится относительно дешево. Мы не замечаем их пока все нормально, воспринимаем как что-то должное, но большинство таких проектов создаются энтузиастами. Как современному творцу разработать стратегию, создать продукт, обеспечить поддержку и заработать? Надья Эгбал проанализировала платформу GitHub, чтобы рассказать нам что такое современные проекты с открытым исходным кодом, который пишут отдельные разработчики, а используют миллионы.
Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.3K
Комментарии 1

Go: идиомы и паттерны проектирования. Блоки, затенение переменных и управляющие конструкции

Блог компании Издательский дом «Питер»
image Привет, Хабр! Сдали в типографию новую книгу «Go: идиомы и паттерны проектирования».
Go быстро набирает популярность в качестве языка для создания веб-сервисов. Существует множество учебников по синтаксису Go, но знать его недостаточно.

Автор Джон Боднер описывает и объясняет паттерны проектирования, используемые опытными разработчиками. В книге собрана наиболее важная информация, необходимая для написания чистого и идиоматического Go-кода. Вы научитесь думать как Go-разработчик, вне зависимости от предыдущего опыта программирования.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.2K
Комментарии 1

Зачем нужен протокол языкового сервера (LSP)?

Блог компании Издательский дом «Питер» Программирование *API *ООП *Emacs *
Перевод

LSP (протокол языкового сервера) сегодня весьма популярен. Есть стандартное объяснение этого феномена. Возможно, ранее вам уже попадалась эта картинка, у нас также являющаяся заглавной.

Считаю, что такое стандартное объяснение популярности LSP – неверное. Ниже предложу вам альтернативную трактовку.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 1.9K
Комментарии 5

Идеальная работа. Программирование без прикрас. Стек

Блог компании Издательский дом «Питер»
image Привет, Хабр! Сдали в типографию новую книгу Роберта Мартина «Идеальная работа. Программирование без прикрас». Дядюшка Боб создал исчерпывающее руководство по хорошей работе для каждого программиста. Он объединяет дисциплины, стандарты и вопросы этики, необходимые для быстрой и продуктивной разработки надежного, эффективного кода, позволяющего испытывать гордость за программное обеспечение, которое вы создаете каждый день.

Автор начинает с прагматического руководства по пяти основополагающим дисциплинам создания программного обеспечения: разработка через тестирование, рефакторинг, простой дизайн, совместное программирование и тесты. Затем он переходит к стандартам — обрисовывая ожидания «мира» от разработчиков программного обеспечения, рассказывая, как часто различаются эти подходы, и помогает вам устранить несоответствия. Наконец, он обращается к этике программиста, давая десять фундаментальных постулатов, которым должны следовать все разработчики программного обеспечения.
Читать дальше →
Всего голосов 6: ↑4 и ↓2 +2
Просмотры 3.3K
Комментарии 4

Книга «Теоретический минимум по Computer Science. Сети, криптография и data science»

Блог компании Издательский дом «Питер» Криптография *Профессиональная литература
image Привет, Хаброжители! Хватит тратить время на занудные учебники! Это краткое и простое руководство предназначено для читателей, не заботящихся об академических формальностях. Большинство технологических прорывов нашей эпохи происходят в цифровой среде, создаваемой программистами. Ученые-компьютерщики объединяют различные области исследований и расширяют возможности этого нового мира. Чтобы научиться плавать в океане информации, необходимо разбираться в основах сетевых технологий, криптографии и науке о данных. Вы узнаете как эффективно манипулировать данными, освоите машинное обучение и современные концепциии безопасности. Раскройте мощь Computer Science и станьте гуру цифровой эпохи!
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 5.9K
Комментарии 8

Как при помощи С++20 мы искоренили целый класс багов, возникавших во время выполнения

Блог компании Издательский дом «Питер» Программирование *C++ *Проектирование и рефакторинг *API *
Перевод

C++20 давно в ходу и поддерживается компилятором MSVC с версии 16.11, но в этой статье я расскажу не о том, как его использовать, а как с его помощью нам удалось устранить целый класс багов времени выполнения, подвесив специальную проверку во время компиляции. Давайте разберемся с этим подробнее!

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 5.2K
Комментарии 6

Книга «Изучаем Arduino. 65 проектов своими руками. 2-е издание»

Блог компании Издательский дом «Питер» Профессиональная литература Разработка под Arduino *
image Привет, Хаброжители! Что такое Arduino? За этим словом прячется легкое и простое устройство, которое способно превратить кучу проводов и плат в робота, управлять умным домом и многое другое. Разнообразие устройств ввода/вывода — датчиков, индикаторов, дисплеев и электромоторов — позволяет создавать самые невероятные проекты. Второе издание этой книги было полностью переработано, ведь технологии не стоят на месте. Познакомившись с основами Arduino, вы сможете экспериментировать с сенсорными экранами и жидкокристаллическими дисплеями, займетесь робототехникой, освоите работу с датчиками и беспроводной передачей данных и научитесь дистанционно управлять устройствами с помощью телефона. В мире продано уже более 35000 экземпляров этой книги.
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Просмотры 10K
Комментарии 0

Парадоксальный рост популярности Python в научных вычислениях

Блог компании Издательский дом «Питер» Python *Программирование *Алгоритмы *Fortran *
Перевод

Чтобы уверенно пересечь незнакомую местность, можно или двигаться быстрее, или подыскивать удобную дорожку. Другими словами, слишком пристальное внимание к скорости как таковой может вас притормозить. То же касается и разработки программного обеспечения.

Читать далее
Всего голосов 21: ↑19 и ↓2 +17
Просмотры 7.1K
Комментарии 5

Книга «Масштабируемый рефакторинг. Возвращаем контроль над кодом »

Блог компании Издательский дом «Питер» Проектирование и рефакторинг *Профессиональная литература
image Привет, Хаброжители! Поддерживать большие приложения сложно, а поддержка больших «неорганизованных» приложений превращается в непосильную задачу. Пришло время сделать паузу и задуматься о рефакторинге! Внесение значительных изменений в крупную и сложную кодовую базу — нетривиальная задача, которую практически невозможно успешно выполнить без рабочей команды, инструментов и планирования. Мод Лемер раскрывает все тайны рефакторинга на примере двух исследований. Вы научитесь эффективно вносить важные изменения в кодовую базу, узнаете, как деградирует код и почему иногда это неизбежно.

Рефакторингу посвящено уже много книг, но в большинстве из них рассматриваются детали улучшения небольших частей кода по строке за раз. Однако мне кажется, что самая сложная часть рефакторинга не в поиске точного способа улучшения кода, а скорее в происходящих вокруг него процессах. Можно пойти еще дальше и сказать, что для любого крупного программного проекта мелочи редко имеют значение. Самая большая проблема кроется в координации сложных изменений.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 3.7K
Комментарии 1

SOLID – это не правила, а гайдлайны

Блог компании Издательский дом «Питер» Программирование *Совершенный код *Проектирование и рефакторинг *ООП *
Перевод

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

Читать далее
Всего голосов 29: ↑25 и ↓4 +21
Просмотры 15K
Комментарии 21

Издательство Питер. Колонка редактора

Блог компании Издательский дом «Питер» Профессиональная литература
image

Привет, Хаброжители! Предлагаем ознакомиться с краткими обзорами сданных в типографию новинок.
Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Просмотры 4.5K
Комментарии 2

Знакомство со стековыми графами

Блог компании Издательский дом «Питер» Python *Программирование *Алгоритмы *GitHub
Перевод

В декабре 2021 года Github объявил, что открывает общий доступ к точной навигации по коду для всех публичных и приватных репозиториев с Python на сайте GitHub.com. Точную навигацию в коде обеспечивают стековые графы, новый фреймвввооорк с открытым исходным кодом, созданный в Github и позволяющий устанавливать правила привязки имен для языка программирования при помощи декларативного предметно-ориентированного языка (DSL). Стековые графы позволяют генерировать данные о навигации по стеку для конкретного репозитория, не требуя при этом какого-либо участия в конфигурировании со стороны владельца репозитория и не вмешиваясь в процесс сборки или другие задания, связанные с непрерывной интеграцией. В этом посте будет подробно рассказано, как работают стековые графы, и как с их помощью достигаются такие результаты.

(Этот пост написан на основе доклада, прочитанного автором на конференции Strange Loop в октябре 2021 года. Есть видео с этим докладом, там рассказано гораздо больше!)

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 2.6K
Комментарии 0

Предложение о синтаксисе типов в JavaScript

Блог компании Издательский дом «Питер» JavaScript *Программирование *
Перевод

Мы с воодушевлением сообщаем, что приступаем к работе над предложением в стадии 0, призванным добавить синтаксис опциональных и стираемых типов в JavaScript. Поскольку этот новый синтаксис не повлияет на то, как выполняется окружающий код, он, фактически, сыграет роль комментариев. Считаем, что потенциально эта инициатива может упростить TypeScript и ускорить разработку на нем в приложениях любого масштаба. Хотели бы пояснить, почему дали ход этой инициативе, и как она работает в высокоуровневом приближении.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.8K
Комментарии 13

Что такое отравление данных при помощи машинного обучения?

Блог компании Издательский дом «Питер» Информационная безопасность *Алгоритмы *Машинное обучение *Искусственный интеллект
Перевод

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Просмотры 8.9K
Комментарии 15

Книга «Танец с кубитами. Как на самом деле работают квантовые вычисления»

Блог компании Издательский дом «Питер» Профессиональная литература Квантовые технологии
image Привет, Хаброжители! От создателя IBM Q. Квантовые вычисления заставляют нас изменить отношение к компьютерам. Кубиты способны решать задачи, которые еще совсем недавно казались неразрешимыми. Вы узнаете о принципиальных различиях между квантовыми и классическими вычислениями, вспомните матанализ, чтобы разобраться с такими понятиями, как суперпозиция, запутанность и интерференция, от алгоритмов и схем перейдете к физическим и техническим идеям, лежащим в основе создания железа для квантовых вычислений. Загляните в будущее и узнайте, как развитие технологий повлияет на нашу жизнь!

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

Лучший способ усвоить что-то — начать с базовых принципов, а затем двигаться по восходящей. Это позволит вам самостоятельно рассуждать об осваиваемой теме, не полагаясь на механическое запоминание или ошибочные аналогии.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 7.3K
Комментарии 8

Cling – не просто интерпретатор C++

Блог компании Издательский дом «Питер» Python *Программирование *C++ *API *
Перевод

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

Читать далее
Всего голосов 11: ↑7 и ↓4 +3
Просмотры 4.3K
Комментарии 1

Книга «Head First. Изучаем C#. 4-е изд.»

Блог компании Издательский дом «Питер» C# *Профессиональная литература
image Привет, Хаброжители! Стиль Head First позволяет сразу приступить к созданию собственного кода на C#, даже если у вас нет никакого опыта программирования. Не нужно тратить время на изучение скучных спецификаций и примеров! Вы освоите необходимый минимум инструментов, и сразу приступите к забавным и интересным программным проектам: от разработки 3D-игры до создания серьезного приложения и работы с данными. Четвертое издание книги было полностью обновлено и переработано, чтобы рассказать о возможностях современных C#, Visual Studio и .NET, оно будет интересно всем, кто изучает язык программирования С#. Особенностью данного издания является уникальный способ подачи материала, выделяющий серию «Head First» издательства O'Reilly в ряду множества скучных книг, посвященных программированию.
Читать дальше →
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 7K
Комментарии 14

Сокрытие и затенение переменных в Java

Блог компании Издательский дом «Питер» Программирование *Java *Проектирование и рефакторинг *ООП *
Перевод

В Java можно объявлять переменные в классе, методе, блоке или конструкторе. В зависимости от варианта объявления, у переменной могут быть разные области видимости в программе, а сама переменная может относиться к статическому или нестатическому типу в зависимости от того, где она объявлена.

Основываясь на этих критериях, можно разделить все переменные в Java на следующие типы: локальные переменные, переменные экземпляра и переменные класса. Затемнение и сокрытие переменных происходит, когда оказываются одноименными  две переменные в разных областях видимости (в локальной и глобальной области видимости, в родительских и дочерних классах). При таком сценарии используется значение той переменной, которая находится во внутренней области видимости, так как она затемняет/скрывает значение той переменной, что находится во внешней области видимости.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 4.6K
Комментарии 7

Информация

Дата основания
Местоположение
Россия
Сайт
piter.com
Численность
201–500 человек
Дата регистрации