Рубрика «обратная совместимость»

Не прошло и пяти лет, как в Java 18 докатилось небольшое, но очень ожидаемое и обсуждаемое изменение: теперь во всех стандартных API используется UTF-8 кодировка по умолчанию. Это изменение, которое сделает выражение «Write once, run anywhere» действительно правдой, так как теперь поведение приложения будет еще меньше зависеть от системы, где оно запущено. 

На конференции Joker я рассказал, как развивались события в работе над JEP-400Читать полностью »

Как портят софт ради обратной совместимости - 1


«Ожирение софта» — известная беда современной разработки. Повышение производительности железа зачастую воспринимается менеджерами как возможность игнорировать рефакторинг, всё равно никто не заметит тормозов. Проще докупить железа, чем тратить время на оптимизацию.

Но есть ещё одна серьёзная причина, по которой ожирение софта и тормоза увеличиваются с каждой версией — это легаси. Накопление старого балласта ради сохранения обратной совместимости. Хуже того, иногда происходят поистине вопиющие случаи, когда баги умышленно вводят в кодовую базу, чтобы сохранить совместимость со старыми программами.
Читать полностью »

Чёрт возьми, Google, я не хотел снова писать в блог. У меня так много дел. Ведение блога требует времени, энергии и креатива, которые я мог бы использовать с пользой: мои книги, музыка, моя игра и так далее. Но ты меня достаточно разозлил, и придётся это написать.

Так что давай покончим с этим.

Начну с небольшой, но поучительной истории из тех времён, когда я только начал работать в Google. Знаю, что в последнее время я наговорил много плохого о Google, но меня расстраивает, когда родная компания регулярно принимает некомпетентные бизнес-решения. При этом нужно отдать должное: внутренняя инфраструктура Google действительно экстраординарная, можно смело утверждать, что сегодня нет ничего лучше. Основатели Google были гораздо лучшими инженерами, чем я когда-либо стану, и эта история только подтверждает данный факт.
Читать полностью »

История реализации обратной совместимости с PS1 на Sony Playstation 2 - 1

4 марта мы отметили юбилейную дату — прошло 20 лет после выпуска PlayStation 2 в Японии, за которым в том же 2000 году последовали продажи в Европе и Северной Америке. Без сомнения, всевозможные игровые медиа будут публиковать списки и ретроспективы в память одной из самых успешных и значимых с точки зрения культуры консолей. Скорее всего, в основном внимание будет сосредоточено на множестве уникальных и разнообразных игр, поспособствовавших превращению консоли в такую мощную силу, но не стоит забывать и об одном из фундаментальных столпов системы: обратной совместимости с подавляющим большинством игр из библиотеки первой PlayStation.

Эта особенность, которая ранее в основном была присуща только портативным консолям Nintendo и некоторым старым системам Sega, позволила создать ощущение связи поколений оборудования, которое до этого не часто возникало в мире консолей. Она дала PS2 фору, которой конкуренты могли только завидовать. Это стало наследием, в разной степени сохранявшимся во всех последующих системах Sony до PlayStation 4, когда Джим Райан в интервью Time произнёс знаменитую фразу: «Да кто будет в это играть?», отказавшись удовлетворять запрос потребителей в такой технологии.

Как же быстро поменялась ситуация в этом отношении.

Излишне говорить, что благодаря обеспечению компанией Microsoft обратной совместимости с Xbox и Xbox 360, ставшей важным аргументом к покупке Xbox One, отношение Sony к этой потребности изменилось: теперь обе компании стремятся в той или иной форме реализовать в своих следующих консолях обратную совместимость. Разумеется, все эти усилия должны были с чего-то начаться, и для Sony начало было положено бывшим инженером компании, о котором вы, скорее всего, никогда не слышали: Тэцуи Ииды (Tetsua Iida).Читать полностью »

Привет!

Я подумал о том чего мне не хватает в Python, и что мне не нравится.

Дисклеймер: это мое субъективное мнение, оно может не совпадать с Вашим.

Я с удовольствием программирую на Python, но у любой технологии (языка программирования в частности) есть свои недостатки, хотя возможно Вы не согласитесь со мной.
Читать полностью »

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

Для замены аналитических функций часто используют запросы с самосоединением, сложные подзапросы и прочее. Большинство таких решений оказываются неэффективными с точки зрения производительности.

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

Одним из этих средств является уникальный, нехарактерный для прочих СУБД механизм работы с переменными внутри запроса SQL. Мы можем объявить переменную внутри запроса, менять ей значение и подставлять в SELECT для вывода. Причем порядок обработки строк в запросе и, как следствие, порядок присвоения значений переменным можно задать в пользовательской сортировке!

Предупреждение. В статье подразумевается, что обработка выражений в предложении SELECT осуществляется слева направо, однако официального подтверждения такого порядка обработки в документации MySQL нет. Это необходимо иметь в виду при смене версии сервера. Для гарантии последовательности вычисления можно использовать фиктивный оператор CASE или IF.

Аналог рекурсии

Рассмотрим простой пример, который генерирует последовательность Фибоначчи (в последовательности Фибоначчи каждый член равен сумме двух предыдущих, а первые 2 равны единице):
Читать полностью »

Бесконечность проблемы обратной совместимости - 1
(с)

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

Обратную совместимость легче выполнять, если предыдущие версии системы были разработаны с поддержкой встроенных функций, таких как хуки, плагины или API, которые позволяют добавлять новые возможности вашему софту, однако все из области backward compatibility (c упором на back) может стать головной болью для разработчиков.

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

Разработчик каждый раз принимает трудное решение: должен ли продукт быть обратно совместимым. «Объективно правильного» решения здесь просто нет — в мире достаточно примеров успешной обратной совместимости и отказов от нее. Возможно, чей-то опыт поможет сделать вам правильный выбор прямо сейчас.

Читать полностью »

Запрещенные изменения в коде или продолжение истории ремонта одного крана - 1

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

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

Откладывание рефакторинга на потом ведет к увеличению технического долга и созданию задач (user story) на рефакторинг, которые не имеют business value для product owner-a, а соответственно такие задачи не будут попадать в топ продуктового беклога.
Читать полностью »

image
*Поломанный кран в офисе Magento и быстрое решение воплощенное в жизнь одним из инженеров — типичный Backward Compatible фикс.
Читать полностью »

Про обратную совместимость прикладных программ и выкапывание стюардесс - 1

Давно ли тут не было холиваров Windows vs Linux? «Будут!» (с) Федя

Каждый раз, когда я переезжаю на новый ноут или переставляю ось, я повторяю один и тот же ритуал — выкапывание стюардессы. Точнее, нескольких стюардесс. У меня их около десятка, но есть TOP5.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js