Язык программирования Smalltalk (Смоллтолк).

0
42

Язык программирования 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].

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь