Iniciar sesión

Ver la versión completa : pregunta MUY TONTA sobre php



akualung
28/08/2009, 11:45
Hola. Tengo una pregunta de concepto sobre php. Es una solemne chorrada, pero he buscado por internet y no encuentro nada al respecto.

Se trata de lo siguiente. ¿Por qué no se usa sintaxis de punto en los objetos creados con php? Es decir, ¿por qué se hace "objeto->metodo()" en lugar de "objeto.metodo()"?

Estoy metido en php desde hace pocos dias, y me jode bastante que en cada lenguaje te cambien estos detalles cuando lo que deberían hacer es tratar que los operadores y la sintaxis en general fuesen lo más homogéneos posibles. Parece que lo hagan a aposta para confundir. Ahora estás con C++ o C# y te has de acordar de que tal operador no es como lo hacias en java, o tal cosa es así o asá según el lenguaje (sin que, a mi entender, esos cambios tengan razón de ser).

Volviendo a mi pregunta, ya sé que quizá lo hacen porque en php ya se usa el punto para concatenar cadenas, pero esa es otra que no entiendo, si en todos los lenguajes que he visto concatenan con el operador "+".

Qué ganas de hacer las cosas diferentes porque sí, j0der.

Pues nada, gracias y perdonad semejante soplaflautez de pregunta.

PharaOnyx
28/08/2009, 11:49
Porque esa característica es una de las muchas heredadas de Perl, donde los métodos de los 'objetos' se acceden con -> y se concatena con . :)

Saludos, Alex

Bizkaitarra
28/08/2009, 11:52
Porque esa característica es una de las muchas heredadas de Perl, donde los métodos de los 'objetos' se acceden con -> y se concatena con . :)

Saludos, Alex
+1 me lo has quitado :(

De todas formas, que más quisieramos muchos programadores que eso mismo que dices, que los lenguajes sean algo más uniformes en operadores etc.

akualung
28/08/2009, 12:01
Joer, qué rapidez en las respuestas, jeje. Muchas gracias a los dos por aclararme la duda.

Yo pensaba que igual el "cambio" se debía a "matemáticos listillos" que hicieran piña para cambiar cosas. Me explicó un día un profesor que la razón por la que existe el operador de incremento (variable++) era porque muchos matemáticos se quejaron de que "variable = variable+1" era una incoherencia desde el punto de vista de las matemáticas y "chirriaba a la vista". No sé si me tomó el pelo, sólo reproduzco lo que él me dijo.

Además, lo encuentro una chorrada, ya que si quieres incrementar la variable en un valor mayor a 1, tienes que seguir usando igualmente la igualación "proscrita", ya que hasta donde yo sé, no existe "variable++2", "variable++5" o "variable++40". Corregidme si me equivoco.

PharaOnyx
28/08/2009, 12:04
Además, lo encuentro una chorrada, ya que si quieres incrementar al variable en un valor mayor a 1, tienes que seguir usando igualmente la igualación "proscrita", ya que hasta donde yo sé, no existe "variable++2", "variable++5" o "variable++40". Corregidme si me equivoco.
Yo al menos no lo he visto. Pero claro, con tantísimos lenguajes de programación sueltos por ahí... vete a saber x'D

Para incrementar tienes los clásicos:

$variable=$variable+1
$variable+=1
$variable++
++$variable

Saludos, Alex

edito: realmente $variable=$variable+1 y $variable++ no se procesan igual (por norma general), aunque el resultado sea el mismo

Ñuño Martínez
28/08/2009, 12:06
<never-mind>

juanvvc
28/08/2009, 12:07
Pero sí existen "variable+=2", "variable+=5" o "variable+=40" en muchos lenguajes :D

En otros muchos no existe variable++, por cierto.

Ñuño Martínez
28/08/2009, 12:09
edito: realmente $variable=$variable+1 y $variable++ no se procesan igual (por norma general), aunque el resultado sea el mismo

Depende del lenguaje, el contexto y el nivel de optimización. Pasa algo parecido con

var2 = ++var1;

y


var1++; var2 = var1;

El resultado es el mismo, pero puede que se traduzca a distintos códigos máquina.

akualung
28/08/2009, 12:11
Pero sí existen "variable+=2", "variable+=5" o "variable+=40" en muchos lenguajes :D

En otros muchos no existe variable++, por cierto.

DIOSSSS, ES VERDAD!!! Y además lo he usado un montón de veces. Ostia, mira que olvidarme. Jo, qué ridículo más espantoso, corramos un tupido velo, jeje.

Merci por la puntualización, juanvvc :brindis:

PharaOnyx
28/08/2009, 12:12
Depende del lenguaje, el contexto y el nivel de optimización. Pasa algo parecido con

var2 = ++var1;

y


var1++; var2 = var1;

El resultado es el mismo, pero puede que se traduzca a distintos códigos máquina.
Claro, precisamente por eso puse 'por norma general' x'D

Normalmente un $variable++ se traduce en un INC (que simplemente incrementa el contenido de una posición de memoria) y $variable=$variable+1 es un ADD (que crea otra variable para realizar la suma y luego copia el resultado en la primera variable)

Saludos, Alex

josepzin
28/08/2009, 12:21
Cuanto sabio que hay por aqui :P

enkonsierto
28/08/2009, 13:05
Pues si.

GameMaster
28/08/2009, 17:00
Qué ganas de hacer las cosas diferentes porque sí, j0der.



Si es para ser igual no veo razón de existir.
En la diferencia esta lo bueno, para eso seguiriamos programando en Simula o Fortran.

josepzin
28/08/2009, 17:03
O en BASIC :P

GameMaster
28/08/2009, 17:39
O en BASIC :P

No porque seria diferente del anterior (malditos autores que lo han echo distinto) :)

Ñuño Martínez
28/08/2009, 22:12
Hola. Tengo una pregunta de concepto sobre php. Es una solemne chorrada, pero he buscado por internet y no encuentro nada al respecto.

Se trata de lo siguiente. ¿Por qué no se usa sintaxis de punto en los objetos creados con php? Es decir, ¿por qué se hace "objeto->metodo()" en lugar de "objeto.metodo()"?

Estoy metido en php desde hace pocos dias, y me jode bastante que en cada lenguaje te cambien estos detalles cuando lo que deberían hacer es tratar que los operadores y la sintaxis en general fuesen lo más homogéneos posibles. Parece que lo hagan a aposta para confundir. Ahora estas con C++ o C# y te has de acordar de que tal operador no es como lo hacias en java, o tal cosa es así o asá según el lenguaje (sin que, a mi entender, esos cambios tengan razón de ser).

Volviendo a mi pregunta, ya sé que quizá lo hacen porque en php ya se usa el punto para concatenar cadenas, pero esa es otra que no entiendo, si en todos los lenguajes que he visto concatenan con el operador "+".

Qué ganas de hacer las cosas diferentes porque sí, j0der.

Pues nada, gracias y perdonad semejante soplaflautez de pregunta. Discrepo.

Las diferencias entre lenguajes se deben a muchos factores, empezando por su objetivo, y es que todos los lenguajes han sido diseñados para cubrir una necesidad. También depende de la forma que se va a implementar (lenguaje interpretado, compilado, de ejecución directa, incrustado, etc.)

En el caso de PHP se necesitaba algo que fuera rápido y que, al mismo tiempo, estuviera integrado en el propio documento HTML. Decidieron que fuera interpretado para facilitar su uso en servidores web (imaginaos cómo sería tener que compilarlo antes de subirlo a vuestro servidor) y decidieron que tuviera el mínimo número de ambigüedades para facilitar su interpretación. De ahí que no se utilice "+" para concatenar textos ya que tendría que perder tiempo dilucidando si lo que se quiere es concatenar o sumar (recordad que no es un lenguaje tipado).

Por cierto: pocos lenguajes utilizan el punto para acceder a los métodos y propiedades de un objeto: Java, por ejemplo, también utiliza la flecha y Objective C utiliza corchetes (tal vez emulando LISP(?)).

Aiken
28/08/2009, 22:56
Decidieron que fuera interpretado para facilitar su uso en servidores web (imaginaos cómo sería tener que compilarlo antes de subirlo a vuestro servidor)

que problema habria en eso? no es por subirlo es poruqe el mismo codigo sin necesidad de compilarlo ni tocarlo funciona en todas las plataformas que tengan el interprete.

Aiken

^MiSaTo^
29/08/2009, 00:06
Por cierto: pocos lenguajes utilizan el punto para acceder a los métodos y propiedades de un objeto: Java, por ejemplo, también utiliza la flecha y Objective C utiliza corchetes (tal vez emulando LISP(?)).

lo que????

PD: Por cierto, en ObjC tb puedes usar punto (esto como curiosidad)

Ñuño Martínez
29/08/2009, 01:27
lo que????

PD: Por cierto, en ObjC tb puedes usar punto (esto como curiosidad)

Fallo mío. Y grande. Lo de Java, digo, que no utiliza flecha sino punto. Estaba dormido.

En cuanto a Objective C, utiliza punto si utilizas estructuras (struct), pero no objetos.

^MiSaTo^
29/08/2009, 11:19
Fallo mío. Y grande. Lo de Java, digo, que no utiliza flecha sino punto. Estaba dormido.

En cuanto a Objective C, utiliza punto si utilizas estructuras (struct), pero no objetos.

Creo que en la última versión de Obj-C puedes tb llamar a métodos de objetos con .
No estoy segura ya que con ello he cacharreado poco, pero me suena que si.
Pero vaya que no vamos a discutir por esa tontá ;)

dardo
29/08/2009, 13:47
Creo que en la última versión de Obj-C puedes tb llamar a métodos de objetos con .
No estoy segura ya que con ello he cacharreado poco, pero me suena que si.
Pero vaya que no vamos a discutir por esa tontá ;)

Y en WhiteSpace todo lo que no sean espacios en blanco, tabulaciones horizontales, tabulaciones verticales y saltos de linea son comentarios. Esto es como curiosidad.

GameMaster
29/08/2009, 14:08
Y en WhiteSpace todo lo que no sean espacios en blanco, tabulaciones horizontales, tabulaciones verticales y saltos de linea son comentarios. Esto es como curiosidad.

!!! pues en un fichero de texto, todo lo que no sean espacios en blanco, tabulaciones horizontales, tabulaciones verticales y saltos de linea tambien son comentarios, o mejor dicho el texto en sí ;)

^MiSaTo^
29/08/2009, 14:25
Y en WhiteSpace todo lo que no sean espacios en blanco, tabulaciones horizontales, tabulaciones verticales y saltos de linea son comentarios. Esto es como curiosidad.

Y eso qué tiene que ver con llamar a un método con un punto o con una flecha? xD

< - >

!!! pues en un fichero de texto, todo lo que no sean espacios en blanco, tabulaciones horizontales, tabulaciones verticales y saltos de linea tambien son comentarios, o mejor dicho el texto en sí ;)

:quepalmo::quepalmo::quepalmo::quepalmo:

Ñuño Martínez
29/08/2009, 20:48
Creo que en la última versión de Obj-C puedes tb llamar a métodos de objetos con .
No estoy segura ya que con ello he cacharreado poco, pero me suena que si.
Pero vaya que no vamos a discutir por esa tontá ;)

Pus sí. De todas formas ayer tuve un día muy tonto y solté más burreces que de costumbre.