jueves, 5 de diciembre de 2013

Buenas tardes queridos lectores, bienvenidos a otra entrada de mi blog de programación...
Seguro que me deben de haber visto publicar cosas como que a mi php me interesa porque simplemente paso el tiempo haciendo a algunas aplicaciones interesantes...

Hoy quiero publicar una entrada que marca el final de php, hoy estaba viendo unos códigos de Haskell (muy interesante lenguaje de programación, un mundo diferente para ser sincero), y recordé que hoy ya no tengo muchos motivos para programar en php, si bien es un lenguaje que me agradó durante un tiempo, hoy en día considero que no vale la pena seguir haciendo monstruitos jajaja.-

Desde hace bastante tiempo lo decidí, php no vale la pena, tengo muchas razones, pero la que más me influyó probablemente sea los múltiples y serios problemas de diseño que tiene el intérprete de php, dejaré algunos ejemplos de las cosas que me han tocado ver.
function a(array $a = NULL){}; a(NULL);
function a(array $a){}; a(NULL);
Como verán resulta que typehitting anda de forma desastrosa y resulta que la regla del "por defecto se puede poner null" no aplica, y si uno envía de parámetro NULL, tira un fatal :P

Qué clase de lógica es esta? por qué si no pongo nada si puede valer null, pero si le paso como parámetro null me dice que solo puede ser un array o null (si haz leído bien el error dice que se puede pasar null), creo que ni ellos se deciden :P

Otra lógica que no entiendo es esto por ejemplo

$a="foo";
var_dump
($a instanceof stdClass);var_dump("foo" instanceof stdClass);
el resultado:

bool(false)
PHP Fatal error:  instanceof expects an object instance, constant given in Command line code on line 1
si le haces un instanceof a la variable resulta que funciona, pero al texto directo TIRA UN FATAL!?

 teóricamente el instanceof decide si el valor (porque no pasamos referencia) es instancia de stdClass, no obstante, si le pasamos directamente el valor tira un fatal, debería tirar fatal en los dos, o devolver false en los dos.

Otra más para la lista
is_scalar($variable) es alias de is_bool($variable) || is_string($variable) || is_int($variable) || is_float($variable)
resulta que en este caso, si trabajamos con NULL, null devuelve false si se le hace un is_scalar porque resulta que is_scalar es un alias de is_bool, pero como todos sabemos y si leemos wikipedia, dice claramente que NULL es un scalar value. Al parecer para php null es un tipo de dato JAJAJAJA.

una de mis favoritas:

<?php print "a"."2"; ?>

<?php print "a".2; ?>
en la primera funciona, en la segunda tira un parser error: PHP Parse error:  syntax error, unexpected '.2' (T_DNUMBER) in Command line code on line 1

<?php
$a
= array('7.1');var_dump(in_array('7.10', $a));?>
el resultado de esto es TRUE, inexplicable, en que momento 7.1 escrito como string se convirtió en un real para que pueda devolver true cuando se pone 7.10? creo que hace un tiempo había dicho que php tenía un heavy problema con el control de tipos, si mal no recuerdo fue cuando sugerí mi idea de crear clases que definan """tipos"""

En fin, podría seguir, porque la cantidad de errores WTF!? que hay en php, es tan grande, que se le ha dedicado una página para documentarlos (aquí), de donde saqué estos ejemplos.

En lo personal tuve problemas de estos como por ejemplo cuando en una función usamos toString para concatenar una clase a un texto, resulta que no se puede devolver nada que no sea LITERALMENTE STRING. si es Null, o un numero por ejemplo, tira un fatal error, por lo que para poder devolver un valor nulo hay que escribir return ''; porque null no sirve xD (lo recuerdo porque fué uno de los últimos que me pasó hace unos días.

Lo que ocurre es que no es la única razón por la que dejo el lenguaje, en principio php está muy verde y recién ahora en las últimas versiones se pueden realizar ciertas cosas, pero para un trabajo más "profesional" php no llega ni a la esquina.-

Además, el otro día en una charla escuché a alguien comentar "php es usado hoy porque, es popular, pero cuando su popularidad se termine, y los que mantienen php se cansen, quién va a darle soporte?" y comprendí que seguir en este lenguaje realmente no tiene mucho futuro, porque otros lenguajes como C++ por ejemplo llevan en la industria decenas de años, y no sufren modificaciones diarias como php, por lo que si no es mantenido no ocurre absolutamente nada.

Por último, estoy cansado de construir monstruitos (por eso elegí la foto de esta entrada), y para recordar hago referencia a esta entrada.

Por lo que probablemente cuando publique Ibot v2 será mi último código oficial en php, no obstante, cuando un cliente lo requiera optaré por programar en php, por supuesto ya tengo un par de lenguajes nuevos para experimentar en mente jajaja.-

Un saludo lectores! y espero que la publicación del día de hoy les agrade :)

0 comentarios:

Publicar un comentario