Язык программирования Smalltalk СмаллтолкSmalltalk это динамически типизированный объектно-ориентированный язык программирования, разработанный в Xerox PARC, в разработке принимали участие: Алан Кэй , Дэн Инголс, Тед Kaehler Адель Голдберг , и другие в 1970-х годах. Язык был выпущен как Smalltalk-80 и широко использовался начиная с этого времени. . Несмотря на свою 20-летнюю историю, широко распространено мнение, что опыт программирования и производительности языка программирования Smalltalk по-прежнему является непревзойденным другими средами разработки и языками.Программирование для чайников Smalltalk до сих пор продолжает активное развитие, и собрал вокруг себя лояльное сообщество пользователей. Язык программирования Smalltalk оказал большое влияние на развитие многих других языков программирования, в том числе: Objective-C , Actor, Java и Ruby . Многие разработки и идеи 1990-х годов пришли из Смаллтолк сообщества, таких как шаблоны проектирования (применительно к ПО), экстремальное программирование и рефакторинг кода. Программирование для начинающих. Среди последователей языка программирования Смаллтолк можно выделить самого знаменитого - Ward Cunningham , изобретателя ВикиВики концепции (основы Википедии).
Для основ программирования вот самые грандиозные идеи, пришедшие из языка программирования Смаллтолк: - "Все это объект ". Строки, целые числа, логические значения, определения классов, блоки кода, кадры стека, памяти все это представлено в виде объектов.
- Все доступно для модификации. Если вы хотите изменить IDE, вы можете сделать это - в работающей системе, без остановки перекомпилировать и перезапустить. Если вы хотите построить новый элемент управления в языке, вы можете добавить его. В некоторых реализациях, вы можете изменить даже синтаксис языка, или способ очистки мусора.
- Типы являются динамическими - это означает, что вы не должны определять типы данных в коде, что делает язык гораздо более кратким. Очистка мусора является встроенной и невидима для разработчика.
- Smalltalk программы, как правило, переводятся в байт-код, которым управляет виртуальная машина. Динамическая трансляция: современные коммерческие виртуальные машины перекомпилируют байт-код в машинный код для быстрого выполнения, а ведь эта методика впервые была применена на Smalltalk-80 с использованием ParcPlace системы в середине 1980-х годов. Эта идея была взята на вооружение Java десять лет спустя и названа "Компиляция на лету" (Just-in-time compilation), или JIT.
В следующем примере кода для нахождения гласных в строке демонстрируется стиль Smalltalk's. ( «|» символ объявляет переменные, «:» объявляет параметры, а «[ ]» и «{}» являются скобками на данный момент): | aString vowels |
aString := 'This is a string'.
vowels := aString select: [:aCharacter | aCharacter isVowel].
В последней строке кода, переменная типа строка отправляется на блок выбора: где в качестве аргумента выступает блок кода. Вот код суперкласса Collection, который производит обработку этих данных делает: | newCollection |
newCollection := self species new.
self do: [:each |
(aBlock value: each)
ifTrue: [newCollection add: each]].
^newCollection
Этот суперкласс реагирует на сообщение, перебирая каждый член (что определяется в строке do: method) и оценивая каждый раз кусок кода aBlock, который передан в качестве параметра в переменную aBlock в виде (aCharacter isVowel), при оценке создает булевскую (Boolean) переменную, которая затемпередается в блок обработки ifTrue: . Если булево значение «правда», символ добавляется в строку, которая должна быть возвращена. Так как блок выбора определен в классе абстрактных коллекций, мы можем также использовать с помощью другого кода: | rectangles aPoint|
rectangles := OrderedCollection
with: (Rectangle left: 0 right: 10 top: 100 bottom: 200)
with: (Rectangle left: 10 right: 10 top: 110 bottom: 210).
aPoint := Point x: 20 y: 20.
collisions := rectangles select: [:aRect | aRect containsPoint: aPoint].
|