Ver Mensaje Individual
  #9 (permalink)  
Antiguo 18/06/2013, 01:11
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: PHP 5.5, 5.6 y futuras versiones (6.0 ?)

Hola,

Cita:
Iniciado por Italico76 Ver Mensaje
... se agregaron unas 109 funciones siendo que ya tenia mas de 700 u 800 en su arsenal, ¿ quien puede dominar un lenguaje basado en funciones cuando son cientas ? ...
Posiblemente esa cantidad de métodos es fácilmente sobrepasado solamente en System.Windows.Forms o java.awt; eso solamente en ese namespace o package. Visual Basic 6.0 contaba con aproximadamente la misma cantidad de funciones según recuerdo (y tampoco era un lenguaje completamente orientado a objetos).

Aunque si hay una diferencia importante que en PHP no se observa tan claramente, uno de los tantos objetivos de la programación orientada a objetos es la herencia y las interfaces. El lenguaje PHP no es un lenguaje 'fuertemente tipado' por lo tanto las interfaces pierden bastante su sentido, no me sirve de mucho crear una interface si al final puedo pasar 'lo que se me de la gana' como parámetro a una función, al contrario de otros lenguajes donde solamente puedo pasar un objeto que implemente dicha interface.

Por cierto que ese número de funciones se queda muy corto cuando agregas un framework adicional como Zend.

Cita:
Iniciado por Italico76 Ver Mensaje
... en comparacion al costo-hora de programar y un programador aun experto puede necesitar muchas veces consultar la documentacion en un dia por este tipo de paradigma. Las IDEs ayudan pero sigo esperando un lenguaje mucho mas OO
Personalmente no veo la diferencia tan marcada sino es en la cantidad de funciones o métodos de las clases. Usando tu ejemplo,

Código:
password_get_info()
password_hash()
password_needs_rehash()
password_verify()
Usando un IDE descente solamente tendrías que escribir password y presionar Ctrl+Space para ver las opciones adicionales, si ese ejemplo fuera orientado a objetos,

Código:
password {
  get_info()
  hash()
  needs_rehash()
  verify()
}
En ese caso tendrías que escribir password y al presionar las teclas correspondientes la IDE debería mostrar las opciones disponibles. Técnicamente no veo la diferencia a saber que las funciones comienzan con la palabra password o el nombre de una clase sea password, aunque es cierto que hay muchas excepciones.

Cita:
Iniciado por pateketrueke Ver Mensaje
... Por ejemplo Python es un lenguaje orientado a objetos que también hace uso de ese estilo, es decir, a diferencia de otros lenguajes no existe el operador de acceso a métodos o propiedades: this.

El objeto en cuestión siempre se pasa como primer argumento: fn(self, n1, n2, ...) ...
Ese es un detalle interesante, normalmente en casi todos los lenguajes orientados a objetos, se pasa 'this' como primer parámetro a la función, el lenguaje C++ y Java así lo hacen, lo único es que en estos lenguajes está escondido, el compilador genera el código necesario para pasar dicho parametro automáticamente sin necesidad de escribirlo. Fácilmente se puede observar ese comportamiento en el código fuente de un compilador escrito en C para generar código C++.

Cita:
Iniciado por pateketrueke Ver Mensaje
... Traduce una clase con 100 métodos en funciones y tienes únicamente 100 funciones, así que ciertamente no se trata de memorizar APIs, para eso existen las referencias y la documentación, ese argumento tuyo es bastante hueco. ...
Exactamente, la misma cantidad de métodos existen en las clases de los lenguajes orientados a objetos, y en el caso de .NET o Java es abrumador. Ahora eso de memorizar APIs viene siendo de gran ayuda, aunque un IDE descente debería mostrar la documentación al solamente posicionar el mouse sobre la función o presionar una serie de teclas. Definitivamente para programar en un lenguaje cualquier programdor debería conocer la API de principio a fin de memoria aunque de vez en cuando olvide su sintaxis exacta.

Cita:
Iniciado por Italico76 Ver Mensaje
... Volviendo a lo primero, cuantas funciones tienes en .NET o en JAVA ? ademas y es CLAVE es de que tipo de clase proviene un objeto con el que trabajas te da el CONTEXTO y eso ayuda mucho a los IDEs y a ti puesto que cuando haces por ejemplo: "string." el IDE sabe cuales son los metodos que pueden tener sentido en ese contexto y te sugerira por ejemplo string.Format() o string.IndexOf() o string.Replace() ...
Técnicamente el IDE debería mostrarte las opciones disponibles al escribir password_ y una combinación como Ctrl+Space; aún así la clase String tiene tantos métodos y propiedades en Java que viene dando igual, es decir, escribes String. y muestra 100+ métodos, de los cuales si no sabes lo que sigue tendrías que buscarlo en la lista de métodos. La única forma de mejorar eso es saber de memoria todo o por lo menos lo usado frecuentemente.

Cita:
Iniciado por abimex Ver Mensaje
... ¿IDE? eso es lo de menos, podrias usar el block de notas de windows y producir un código decente y funcional ...
Eso de la IDE no es solamente un accesorio, por ejemplo en Eclipse y NetBeans escribes una parte de una construcción del lenguaje y te genera mucho código que facilita la creación de aplicaciones. Cuantas veces te has visto escribiendo :

for ($i = 0; $i < $x; $i++) {
}

En una IDE descente en la actualidad solo escribes for y presionas un par de teclas y genera todo lo demás automáticamente, adicionalmente cuentan con construcciones mas complejas. Con eso te ahorras horas de trabajo que al final te beneficia mucho.

Cita:
Iniciado por pateketrueke Ver Mensaje
... Rendimiento no es escribir en OOP, rendimiento no es escribir poco y bonito código. ...
Yo creo que ese es el punto clave en PHP, la idea principal es que sea un lenguaje liviano y rápido, fácil de escribir el código en aplicaciones genéricas; al contrario de Java y .NET y otros donde el código debe de cumplir con muchos requerimientos adicionales, así como el 'sintactic sugar' que viene por defecto en estos. Ese costo adicional en la complejidad del código genera otras ventajas, pero esa es otra historia.

Saludos,