Найс программирование

SourceForge

Презентация

Nice-это новый язык программирования. Он расширяет идеи, лежащие в основе объектной ориентации. Чтобы лучше поддерживать модульное программирование и безопасность статического типа. Он также включает в себя функции функционального программирования и применяет на практике самые современные результаты академических исследований. Это приводит к большей выразительности, модульности и безопасности.

Безопасность

Nice обнаруживает больше ошибок во время компиляции. Чем существующие объектно-ориентированные языки (доступ к нулевому указателю. Приведение исключений). Это означает. Что программы, написанные в Ницце, никогда не бросают печально

NullPointerExceptionизвестное ни ClassCastException. Этот аспект более подробно рассматривается в данной статье.

Модульность

В объектно-ориентированных языках можно добавить новый класс в существующую иерархию классов. В Ницце также можно добавлять методы в существующие классы без изменения их исходного файла. Это частный случай мультиметодов.

Экспрессивность

Многих повторяющихся задач программирования можно избежать, используя расширенные функции Nice. Вам когда-нибудь надоедало писать тонны циклов, приведений, перегруженных методов со значениями по умолчанию. Анонимных классов …

Расширенные функции

В дополнение к традиционным объектно-ориентированным функциям, Nice предлагает:

Параметрические типы

Это особенно полезно для контейнеров (списков. Хэш-таблиц) и позволяет создавать более короткий и безопасный код. Значения примитивного типа (int, float, …) могут использоваться в полиморфном коде. И в этом случае обертывание и разворачивание выполняются компилятором автоматически.

Анонимные функции

Функции можно создавать и манипулировать ими как первоклассными выражениями, как в Lisp и ML. Это намного легче, чем анонимные классы Java во многих ситуациях, например. Со слушателями в графическом интерфейсе.

Мульти-методы

Они позволяют определять методы вне классов. Это означает. Что новые методы могут быть определены на классах. Которые принадлежат другому пакету (даже в java.*). Это позволяет использовать более модульный стиль: вам не нужно упаковывать классы со всеми возможными полезными методами. Но вы можете разделить их на несколько пакетов. Связанных с различными аспектами. Тогда разработка может происходить независимо в каждом пакете.

Мульти-методы также расширяют обычные методы с возможностью отправки по каждому аргументу. А не только по классу receiver.

В этой статье показано, почему использование нескольких методов предпочтительнее применения шаблона посетителя.

Кортежи

Это позволяет, в частности, методам возвращать несколько значений.

Дополнительные параметры к методам

Необязательные параметры имеют значение по умолчанию, которое используется, когда параметр отсутствует в вызове. Это гораздо проще, чем в Java, где нужно написать несколько версий метода для каждой комбинации параметров. Имена аргументов также могут быть указаны на сайте вызова. Что улучшает читаемость и делает порядок аргументов неуместным.

Контракты и утверждения

Контракты могут быть прикреплены к методам. Чтобы лучше описать их спецификацию и обнаружить незаконное использование автоматически во время выполнения. В режиме отладки. Контракты и утверждения могут быть отключены, в этом случае они не вызывают замедления работы программы. Кроме того, они могут быть использованы на любой версии JVM, даже до 1.4.

Интеграция с Java

Текущая реализация тесно интегрирована со средой Java, что дает ряд преимуществ. Огромное количество библиотек Java можно использовать непосредственно в хороших программах.

Библиотеки также могут быть написаны на Nice и вызваны из Java-программы. Компилятор Nice создает байт-код Java, что означает. Что программы Nice могут выполняться практически на любой платформе. С любой виртуальной машиной Java. Или же они могут быть скомпилированы в собственные программы с помощью собственного компилятора Java. Сам компилятор написан на Java и на Nice. Для запуска компилятора требуется JVM версии 1.2 или выше.

Доступность

Nice находится в свободном доступе под GPL. Классы среды выполнения лицензируются под лицензией