Smalltalk по-русски
понедельник, Май 23, 2005
Гибкость vs Корректность

В продолжение темы из предудыщего сообщения...

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

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

Исходный код в нем вводится через специализированные браузеры, которые являются медиумами между программистом и миром "живых" объектов. Не делается разделения между временем создания и временем запуска приложения. Приложение как бы работает все время. А разработчик посредством ввода исходного кода и команды Apply пробует модифицировать программу непосредственным изменением определений классов и байт-кода их методов. Естественно, если в исходном коде содержится синтаксическая ошибка, то об этом будет сообщено немедленно. То же относится к некоторым семантическим ошибкам вроде использования необъявленной переменной или класса. Но Smalltalk остается динамически-типизированным языком, поэтому ошибка "метод не найден" может быть обнаружена только при выполнении соответствующего кода. Но и здесь современная IDE приходит на помощь - она может подсказать, что метода с указанным именем в системе не существует, что предотвращает опечатки и неверное написание.

Также следует сказать, что Refactoring Browser, изначально придуманный для Smalltalk, делает изменения кода более контролируемыми и корректными. Хоть в исходном коде и не содержится описаний типов, но в некоторых случаях инструмент "догадывается" о типах исходя из контекста. Кроме того, есть возможность проводить refactoring в полуавтоматическом режиме с контролем со стороны разработчика.

Из всего этого следует, что по контролю корректности разработки Smalltalk скорее ближе к Java и C# с инструментами IDEA и ReSharper соответственно, чем к PHP, Perl, Python и Ruby. Но, в то же время, он полностью сохраняет всю свою простоту и гибкость.

Comments: Отправить комментарий

<< Home

Популярные статьи
:: Smalltalk?!
:: Почему Smalltalk?
:: Great Leap Forward from Java to Smalltalk

Последние сообщения
:: Запрещать или разрешать?
:: 1-е ежегодное соревнование программистов на Smallt...
:: Smalltalk & OCL (Bold for Delphi/C++): Найдите 10 ...
:: Обмен опытом
:: Dolphin 6 beta
:: История GUI и Smalltalk
:: [Dolphin] Документация
:: Будущее IBM Instantinations' VisualAge Smalltalk
:: [VW] Знаете ли Вы, что такое Ephemeron?
:: [VW] Полезняшки: StorePlugins

Архив
Предыдущие новости / Декабрь 2004 / Январь 2005 / Февраль 2005 / Март 2005 / Апрель 2005 / Май 2005 / Июнь 2005 / Июль 2005 / Август 2005 / Сентябрь 2005 / Октябрь 2005 / Ноябрь 2005 / Декабрь 2005 / Январь 2006 / Февраль 2006 / Март 2006 / Апрель 2006 / Май 2006 / Июнь 2006 / Июль 2006 / Сентябрь 2006 / Октябрь 2006 / Ноябрь 2006 / Декабрь 2006 / Январь 2007 / Февраль 2007 / Март 2007 / Апрель 2007 / Май 2007 / Июнь 2007 / Август 2007 / Сентябрь 2007 / Ноябрь 2007 / Январь 2008 / Март 2008 / Май 2008 / Июнь 2008 / Июль 2008 / Август 2008 / Сентябрь 2008

Atom Feed
Smalltalk по-русски


Powered by Blogger