RubyHammer: различия между версиями
Содержимое удалено Содержимое добавлено
Scoundrel (обсуждение | вклад) |
|||
Строка 21:
* Отсутствие стадии [[w:компилятор|компиляции]]
Простое и быстрое программирование:
* Не надо объявлять
* Переменные динамически [[w:типизация|типизированы]]
* Простой и последовательный синтаксис
* Автоматическое управление [[w:Оперативная память|оперативной памятью]]
Объектно-ориентированное программирование:
* Всё есть [[w:Экземпляр (программирование)|объект]]. Даже имя класса есть экземпляр класса <code>Class</code>
* [[w:Класс (программирование)|Классы]], [[w:Метод|методы]], [[w:Наследование (программирование)|наследование]], [[w:Полиморфизм в языках программирования|полиморфизм]], [[w:Инкапсуляция (программирование)|инкапсуляция]] и т. д.
* [[w:Примесь (программирование)|Примеси]] (mixins) при помощи модулей (возможность расширить класс без наследования)▼
* Некоторые ОО паттерны реализованы как макросы (Singleton, Struct, и так далее).
▲* [[w:Примесь (программирование)|Примеси]] при помощи модулей (возможность расширить класс без наследования)
* Итераторы и [[w:Блок (программирование)|блоки]]
* Широкие возможности метапрограммирования
Множество идей из других языков, часто не только ОО:
* Lisp
* Smalltalk
* CLU
* Python
* Perl
{|
|Удобства:
* Неограниченный диапазон значений целых чисел.
* Модель обработки [[w:исключение (программирование)|исключений]].
*
* Динамическая загрузка и исполнение исходного кода.
* Очень гибкий синтаксис, возможность создавать мощные domain-specific languages.
* Поддержка [[w:поток (программирование)|потоков]]; как собственных, так и систем семейства Unix
* Очень простые средства языка позволяют использование метапрограммирования.
* Объекты могут иметь специфичные для них singleton methods (ничего общего с паттерном Singleton не имеет).
|-
|Недостатки:
*
* Невозможность компиляции и,
** Открытость исходного кода даже в готовой программе <small>(есть [http://exerb.sourceforge.jp/index.en.html средство упаковки исходного кода в .exe-файл] под Windows)</small>
* Следствие двух первых недостатков — весьма низкая скорость запуска и выполнения программ
|