EN: Just want to show, how Russian language is already could be used to program in Smalltalk using Krestianstvo.
Here is a program for building L-systems and drawing them with Pen or any other Object later in Smalltalk (for example Croquet's TObjects in OpenGL).
You will see some fragments of source code in Russian - all are the executable Smalltalk code. The whole version is available here (also it is available in update stream). The changeset (*.cs) or source code (*.st) files, which could contain Unicode symbols (russian here), could be exported or imported into the Krestianstvo system without any trouble.
RU: Представляю вашему вниманию пример, показывающий как уже сейчас можно программировать в среде Крестьянство на Smalltalk используя Русский язык. Мы запрограммируем алгоритм пострения L - систем и их рисования с помощью Карандаша или других объектов в дальнейшем (например Croquet TObjects в OpenGL).
Ниже приведены фрагменты исполняемого кода, полная версия доступна для скачивания здесь (так же в потоке обновлений для системы). Файлы изменений (*.cs) или исходного кода (*.st), содерджащие символы Unicode (в данном случае - русские), могут экспортироваться или импортироваться в систему Крестьянство без ошибок.
Smalltalk in Russian/ Smalltalk'а по Русски
L - система (code fragments)/(фрагменты кода)self = я
to: do: = по: делай:
at: = в:
at: put: = в: значение:
ifNotNil:[] = еслиНеПусто:[]
ifTrue:[] = еслиИстина:[]
or:[] = или:[]
1. Объявление класса / Creating the class:
Объект подкласс: #ЛСистема3. Метод инициализаци / Initialization
именаПеременныхЭкземпляраКласса: 'предложение наборПравил генерация'
именаПеременныхКласса: ''
глобальныеСловари: ''
категория: 'Математика-ЛСистемы'
ЛСистема>>определитьЛСистемуАксиома: аксиома наборПравил: набор
я предложение: аксиома.
я наборПравил: набор.
я генерация: 0.
2. Определение метода генерации / Defining the generation method:
ЛСистема>>генерировать
| текущийСимвол строкаЗамены заменаИзПравил следующаяГенерация |
следующаяГенерация := ''.
1 по: предложение размер делай:[:индекс|
текущийСимвол := (предложение в: индекс) какСтрока.
строкаЗамены := '',текущийСимвол.
заменаИзПравил := (я искатьИзНабораПравил: текущийСимвол).
заменаИзПравил еслиНеПусто:[ строкаЗамены := заменаИзПравил].
следующаяГенерация := следующаяГенерация, строкаЗамены.
].
предложение := следующаяГенерация.
генерация := генерация + 1.
4. Рисование / Painting:
ЛСистема>>нарисовать5. Выполнение / Executing:
| символ карандаш длинаЛинии уголПоворота |
карандаш := Карандаш новый.
длинаЛинии := 20.
уголПоворота := 60.
1 по: предложение размер делай:[:индекс|
символ := (предложение в: индекс) какСтрока.
((символ = 'F') или:[ (символ = 'G')]) еслиИстина:[
карандаш иди: длинаЛинии.
].
(символ = '+') еслиИстина:[
карандаш повернуть: уголПоворота.
].
(символ = '-') еслиИстина:[
карандаш повернуть: (-1) * уголПоворота.
].
].
ЛСистема класс>>примерПостроенияЛСистемыСерпинский
| правила лСистема |
правила := Массив новый: 2.
правила в: 1 значение: ((ЛСистемаПравило новый) определитьПравило: 'F' строка: 'F--F--F--G').
правила в: 2 значение: ((ЛСистемаПравило новый) определитьПравило: 'G' строка: 'GG').
лСистема := (ЛСистема новый) определитьЛСистемуАксиома: 'F--F--F' наборПравил: правила.
"генерировать 5 раз"
1 по: 5 делай:[:i|
лСистема генерировать.
].
лСистема нарисовать.