Будущее за разнообразием PDF Печать E-mail

(В оригинале - Heterogeneity Wins)

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

Мультиязыковое программирование — это не новая концепция. Один из известных примеров из прошлого — поддержка COM-объектами, написанными на С++, Visual Basic. Эта архитектура использовала плюсы обоих языков, наиболее популярных на тот момент.

Что же привело к возрождению интереса к мультиязыковому программированию?

Главное изменение — то, что стандарты вместе с ростом пропускной способности каналов и вычислительной мощности ресурсов сделали жизнеспособными текстовые протоколы. Дни, когда бинарные протоколы были единственной альтернативой для эффективных распределенных систем, прошли. Текстовые протоколы взаимодействия начинались с XML/SOAP web-сервисов и эволюционировали дальше в архитектурные стили RESTful и другие протоколы, такие как Atom и XMPP.

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

Архитектор теперь может комбинировать специализированные, мощные инструменты, что позволяет мыслить категориями «какую концепцию здесь лучше всего применить», вместо более раннего «какую концепцию позволит применить используемый язык программирования». Различные языки программирования поддерживают различные парадигмы: объектно-ориентированную, функциональную или парадигму распределенных и параллельных вычислений. Какие-то из этих парадигм идеально подходят для решения каких-то задач, а какие-то не подходят совсем. И сейчас стало возможным одновременно комбинировать различные, на первый взгляд, несочетающиеся инструменты в элегантные решения гораздо проще, чем это было в прошлом.

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

И хотя временами выбор — не самая хорошая вещь, это точно наименее плохая альтернатива в контексте современной архитектуры ПО. Индустрия стоит перед лицом серьезных проблем (грядущая эра многоядерности и многопроцессорности обещает стать самой большой проблемой ИТ сообщества), и нам понадобятся все возможные механизмы взаимодействия, какие мы сможем задействовать, особенно еще и потому, что существующие платформы плохо приспособлены для их решения (The Free Lunch is Over by Herb Sutter, http://www.gotw.ca/publications/concurrency-ddj.htm).

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

Автор оригинала - Edward Garson