[R-es] R <- POO

javier.ruben.marcuzzi en gmail.com javier.ruben.marcuzzi en gmail.com
Jue Mar 16 11:53:02 CET 2017


Estimado Miguel

Creo que no vale la pena discutir si es o no es orientado a objetos, hay otras preguntas:

¿Tiene capacidad de soportar POO? Si.

¿Tiene capacidad de programación funcional? Si, ayer pase un link del libre de Hadley Wickham que lo trata.

Ahora otro lenguaje C#, C++, java, ¿pueden programar sin usar objetos?, sin usarlos se complica, cosa que no pasa con R, o Microsoft no desarrollaría F#.

R tiene un poco de cada uno, yo aprendí R con lo que sabía de fortran, sobre objetos aprendí mucho tiempo después. R no es un lenguaje “clásico”, aunque se esté transformando en el “clásico de la estadística”.


Javier Rubén Marcuzzi

De: miguel.angel.rodriguez.muinos en sergas.es
Enviado: jueves, 16 de marzo de 2017 7:33
Para: javier.ruben.marcuzzi en gmail.com; cgb en datanalytics.com
CC: r-help-es en r-project.org
Asunto: Re: [R-es] R <- POO

Sigo estando en desacuerdo contigo, Javier.
R es, claramente, un lenguaje de Programación Orientado a Objetos (POO, OOP, o como quieras llamarlo). Maneja clases (con sus propiedades, métodos, propiedades, estados, ...), herencia, polimorfismo, ....
Otra cosa es que quieras usar R de otra manera (programación estructurada, modular, funcional, ...)
Un saludo,
Miguel.


El 15/03/2017 a las 16:32, javier.ruben.marcuzzi en gmail.com escribió:
Estimados 
 
Yo me refería a esto:
 
https://stat.ethz.ch/R-manual/R-devel/library/base/html/class.html
 
Interpreto que la traducción dice algo como que es una función con un mecanismo simple y genérico que puede ser utilizado como un estilo de programación orientada a objetos.
 
Sin entrar en partes muy técnicas.
 
En un lenguaje orientado a objetos como c#, creo una clase con atributos, luego puedo crear una lista para estos, algo como List<autos> lista_de_autos.
 
Otra forma sería algo como List<T>, donde no coloco el objeto creado por la clase autos. T se daría cuenta. 
 
R interpreto que tiene un mecanismo semejante a este último. Si realizo str(algo), por decirlo de alguna forma me trae los atributos de un objeto ya definido, pero altura <- 1.85 sería una variable, que R permite ser llamada como un objeto.
 
R tiene partes en C/C++ que tiene objetos, pero en Fortran no se utilizan objetos, yo nunca tuve que iniciar una instancia de una matriz en Fortran, en R tampoco tuve que iniciar una instancia de una matriz, ni colocar partes pública o privadas, hay partes distintas en los lenguajes, o herencia entre dos data.frame.
 
Comparo nuevamente con C#
Var altura = 1,85 es una variable.
Persona.altura = 1,85 es un valor dentro del objeto
 
En R altura <- 1,85 puede trabajarse como variable u objeto (porque tiene una función simple y genérica que puede ser utilizada como programación orientada a objetos, entiendo que por library/base/class).
 
Por eso escribí que no es orientado a objetos pero que hay formas de trabajarlo como objetos. Luego hay diferencias como función y método,  pero el efecto es lo mismo, las diferencias no nos complica la vida, salvo si por lo que yo nombre como cajas se confunda con crear clases para definir objetos, en R no necesitamos definir una clase para llenar un data.frame. Sin embargo permite crear objetos y ser trabajado como OOP, en R se pueden usar varias alternativas.
https://www.r-bloggers.com/oo-in-r/
 
R permite más de un estilo de programación.
 
Javier Rubén Marcuzzi
 
De: Carlos J. Gil Bellosta 
Enviado: miércoles, 15 de marzo de 2017 11:14
Para: miguel angel rodriguez muinos
CC: Javier Marcuzzi; Mauricio Monsalvo; r-help-es
Asunto: Re: [R-es] R <- POO
 
De hecho, dos de los principios de diseño de R son:
 
1) Todo lo que existe es un objeto.
2) Todo lo que sucede es una llamada a una función.
 
Un saludo,
 
Carlos J. Gil Bellosta
http://www.datanalytics.com
 
El 15 de marzo de 2017, 14:22, <miguel.angel.rodriguez.muinos en sergas.es> escribió:
Disiento, Javier.

R sí es un lenguaje orientado a objetos.

:-)


Un saludo,
Miguel.



El 15/03/2017 a las 13:43, javier.ruben.marcuzzi en gmail.com<mailto:javier.ruben.marcuzzi en gmail.com> escribió:

R es un lenguaje medio complicado, no es orientado a objetos, aunque hay formas para un trabajo con objetos, por otro lado se puede definir una función o emplear 5 paquetes para lo mismo en dos líneas de código.




Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso-confidencialidad

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170316/5856ff60/attachment-0001.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 1B3D3795748C48A193350615BDA1511A.png
Type: image/png
Size: 148 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20170316/5856ff60/attachment-0001.png>


Más información sobre la lista de distribución R-help-es