Содержание сайта
Главная Новичку Цитаты Реализации Статьи Документация
Компании Программы Ссылки Обсуждение Обсуждение 2 Гостевая

Smalltalk?!

Первая Часть.

Наверняка, многие слышали про язык программирования Smalltalk, так как он часто упоминается в книгам по объектно-ориентированному программированию и проектированию. Но в этой статье не будет рассказано чем, собственно, является язык. Рассказ будет о том, что Smalltalk дал миру программирования.

Открытие множества новых направлений в программировании связано с именами двух людей - Kent Beck и Ward Cunningham. Они занимались программированием на Smalltalk еще с середины восьмидесятых, и все, что они изобрели, являлось непосредственным отображением их практического опыта.

Кент Бек как-то заметил, что он всего лишь описывал тот способ работы, который Вард использовал каждый день. Вард также является автором идеи Wiki Wiki сервера, который служит для обмена идеями и их документирования в среде разработчиков. Его сервер c2.com до сих пор является основным местом обсуждения новых идей в гибких методологиях, программировании и проектировании.


Паттерны проектирования

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

Вдохновленный таким успехом, Кент выступил на конференции OOPSLA'87 с описанием первых паттернов, но слушатели встретили его доклад прохладно. В то время еще мало кто видел потенциал этого нововведения без демонстрации убедительных примеров.

В 1991 году вопросом паттернов занялся Erich Gamma, и спустя три года вышла классическая книга Банды Четырех - "Паттерны проектирования". Большинство примеров было дано на языке C++, но Smalltalk также присутствовал, где его использование давало дополнительный выигрыш.

Лучшей книгой о паттернах в Smalltalk является книга самого Кент Бека "Smalltalk Best Practice Patterns". Ее прочитали многие разработчики, не знающие этого языка, но которые в то же время отметили, что это одна из лучших книг по объектно-ориентированному программированию. Стиль написания программ в среде Smalltalk является наиболее естественным для объектного подхода, поэтому его изучение может положительно сказаться на качестве разработки в целом.


Экстремальное Программирование

Практики Экстремального Программирования (по-крайней мере те, которые непосредственно касаются разработки) являются логичным обобщением всего того, что разработчики на Smalltalk применяли уже долгое время.

Сам Кент Бек однозначно высказывается, что Smalltalk явился той питательной средой, в которой выросло XP.

Парадокс заключается в том, что XP по своей популярности намного превзошло своего прародителя. Экстремальное Программирование выполнило свою определенную роль - популяризовало среди широкого круга разработчиков способ разработки, который характерен именно Smalltalk.

Рассмотрим некоторые практики Экстремального Программирования:

  • Simple Design. Сам язык чрезвычайно просто, в нем только пять ключевых слов, одна базовая конструкция и несколько вспомогательных. Все базируется на объектах и посылке сообщений между ними.
  • Refactoring. Smalltalk является очень открытой к изменениям системой. Не нужно тратить время на паузы компиляции, любую идею можно тут же испробовать прямо по ходу работы приложения. Все это способствует быстрой опробации множества идей. Выгоднее не сразу закладывать универсальный дизайн, а начать с простого и дальше продвигаться небольшими шагами расширяя систему по мере необходимости. Этому также способствует наличие автоматизированного средства - Refactoring Browser. Впервые он был создан для среды VisualWorks Smalltalk, и позже стал появляться в оболочках для Java, таких как IDEA и Eclipse. Некоторые разработчики уже не представляют свою работу без Refactoring Browser.
    В данный момент рефакторинг стал очень популярным благодаря одноименной книге Мартина Фаулера. На написание этой книги его вдохновил тот подход, который Кент Бек и другие Smalltalk-еры каждодневно применяли при разработке программ.
  • Test-First Design. Smalltalk является динамически-типизированным языком, что означает отсутствие проверок типов во время компиляции. Казалось бы, это должно приводить к большему числу ошибок, чем в статически типизированных языках. В общем случае это неверно. Раннему обнаружению ошибок способствует его развитая динамическая среда. Но среди разработчиков бытует мнение, что язык со строгой типизацией позволяет выловить большинство ошибок. А это расходится с мнением экспертов, что на тестирование нужно выделять до половины ресурсов проекта. Просто те ошибки, которые обнаруживает компилятор, это далеко не все ошибки, которые могут содержаться в системе. Гораздо важнее удостовериться, что система выполняет именно то, что было задумано, и тестирование, в любом случае, остается очень важным фактором проекта.
    И Кент Бек разработал оболочку для модульного тестирования программ на Smalltalk, позже она была названа SUnit. Совместно в Эрихом Гамма они портировали ее для языка Java, так появился JUnit. И с этого момента xUnit framework получил широкую известность.
    Хотя, следует отметить, что заслуга xUnit не столько в том, что он позволяет тестировать модули программы. А в том, что с помощью него реализуется Test-First Design - подход, при котором тесты пишутся раньше кода, который они тестируют. Практика показывает, что такой вид дизайна часто приводит к оптимальной структуре системы.

Заключение

Самый первый вопрос, который возникает у многих относительно Smalltalk - если он такой хороший, почему он такой непопулярный?

Как всегда, на него непросто дать однозначный ответ. Первое, что приходит на ум - когда в нашем мире действительно хорошая вещь была очень популярной?

Среди объективных факторов стоит выделить следующие:

  • Необычный синтаксис. Многие, кто начинал с Pascal или C не могут к нему привыкнуть. И это несмотря на то, что он в большей степени напоминает предложения на естественном языке. Те, кто начинает изучение программирования со Smalltalk, никаких проблем с синтаксисом не имеют.
  • Объектный подход. За тридцать лет с лишним лет, которые прошли с момента появления объектного подхода, индустрия так и не приняла его. Большей популярностью пользуются псевдо объектно-ориентированные гибриды, такие как C++ и Java.
  • Производительность. По началу производительность приложений на Smalltalk была существенно ниже аналогичных программ, написанных на C. Это сдерживало многих разработчиков, так как скорость обычно является одним из определяющих факторов выбора технологии. Но времена меняются. Теперь, благодаря таким проектам как Animorphic Smalltalk, производительность больше не является проблемой. В умах разработчиков также намечается перелом - в большинстве случаев выгоднее написать программу вдвое быстрее, чем написать вдвое быструю программу.
  • Маркетинг. В данный момент у Smalltalk нет хозяина, который мог бы вложить миллионы/миллиарды долларов в его развитие, как это было сделано с VB/Java/C#. Компании, которые раньше занимались продвижение Smalltalk сослужили ему очень плохую службу. История могла бы пойти по-другому, если они согласились бы продать лицензию на виртуальную машину Smalltalk для языка Visual Basic компании Microsoft.

Но благодаря новым компаниям-разработчикам, таким как Cincom, Object-Arts и SmallScript, у Smalltalk есть будущее.

В частности, Cincom сообщает о росте продаж VisualWorks Smalltalk на 10% ежегодно. Также намечается тенденция возвращения к разработке на Smalltalk у компаний, которые использовали его в прошлом.

Вот краткий перечень компаний, которые продолжают пользоваться Smalltalk: AMD, BMW, Chrysler, Deutsche Bank, FedEx, Nokia, Texas Instruments, Volkswagen.

Все эти компании не могут ошибаться. Кроме того, есть тенденция к умалчиванию факта использования Smalltalk, так как это часто рассматривается как конкурентное преимущество.

13.02.2003, Владимир Лешкевич




Есть комментарии? Пишите.