Подтвердить что ты не робот

Что такое парадигма программирования R?

Что такое парадигма программирования R (R, как в GNU S)?

Я считаю себя знакомым с языками программирования различных концептуальных парадигм (имеют программирование в С++, Java, Prolog и некоторых других языках), но хотя я уже пишу свои собственные небольшие R-скрипты, я не уверен, какая парадигма R должна представлять.

4b9b3361

Ответ 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)".