Что такое парадигма программирования R?
Что такое парадигма программирования R (R, как в GNU S)?
Я считаю себя знакомым с языками программирования различных концептуальных парадигм (имеют программирование в С++, Java, Prolog и некоторых других языках), но хотя я уже пишу свои собственные небольшие R-скрипты, я не уверен, какая парадигма R должна представлять.
Ответы
Ответ 1
R поддерживает смесь парадигм объектно-ориентированного и функционального программирования.
На функциональной стороне:
- имеет функции первого класса
- имеет ленивую оценку аргументов
- поощряет бесплатные свободные побочные эффекты.
Но
- он не реализует рекурсию хвостового вызова
- и легко создавать нечистые функции
На объектно-ориентированной стороне:
-
у него есть три встроенных парадигмы OO: S3 и S4, которые являются неизменяемыми и поддерживают универсальный стиль OO функций и ссылочные классы (aka R5), которые изменяются, и поддерживают более распространенный стиль OO для передачи сообщений.
-
S4 сильно зависит от OO-стиля общих lisp (CLOS) и диланов.
-
Существует также несколько пакетов, которые предоставляют другие типы OO: proto
, mutatr
, R.oo
, OOP
.
Но
- Встроенные инструменты OO мало помогают синтаксическому сахару.
Ответ 2
Согласно Wikipedia (выделено мной),
R поддерживает процедурное программирование с функциями и объектно-ориентированное программирование с помощью общих функций. Общая функция действует по-разному в зависимости от типа передаваемых им аргументов. Другими словами, общая функция распознает тип объекта и выбирает (отправляет) функцию (метод), специфичную для этого типа объекта. Например, R имеет общую функцию print(), которая может печатать почти каждый тип объекта в R с помощью простого синтаксиса "print (objectname)".