OT: php te daña la cabeza

Horst H. von Brand vonbrand en inf.utfsm.cl
Mie Jul 26 16:17:22 CLT 2006


Juan Carlos Muñoz Ilabaca <jcmunoz en dcc.uchile.cl> wrote:
> Disque el Miércoles 26 Julio 2006 03:23, Roberto Bonvallet escribiosese:
> > Horst H. von Brand:
> > > el usar espacios para
> > > marcar sintaxis (al estilo Python) me parece algo sacado de COBOL,
> > > engendro que debiera estar /bien/ enterrado, estaca en el corazon y
> > > todo...

> Que yo sepa COBOL es usan indentaciones porque el compilador proviene del
> paradigma largo posición, de hecho el lenguaje se basa completamente en
> largo posición, con sus pictures y cosas raras... yo nunca he utilizado
> COBOL (y espero no hacerlo), pero mi madre si, y algunos compañeros de
> trabajo, y aunque ellos no son de los que les gusta saber el por qué de
> todo, queda más que claro que se compila por largo posición y se programa
> de la misma forma en ese lenguaje, en resumen no usar un automata de pila
> para validarse...

COBOL usa la idea de que la columna en que comienza una instruccion
determina que es. O sea, ciertas instrucciones tienen que comenzar en una
columna dada, el resto en otra (mas indentada). Los programadores
(siguiendo el ejemplo del caso) indentan el resto en forma "consistente",
aunque no tiene significado ya.

No se que usen para compilar COBOL, pero claramente es un lenguaje de
contexto libre de base (la notacion de la gramatica que usan es bastante
sui generis (en buena parte por su enorme variedad de alternativas en
muchas construcciones, y el uso de "noise words" que hacen que parezca
Ingles, pero que pueden omitirse sin mas), pero la tecnologia de parsing no
es realmente relevante aca).

> > En todos los lenguajes se utiliza indentacion para marcar los bloques.
> > Cual es el problema con eliminar las llaves o los begins/ends redundantes?
> >
> > Ademas, Python ofrece #{ y #} (incluso #begin y #end, y hasta #fi) para los
> > fanaticos de los delimitadores.

> Yo no creo que sea un tema de fanatismo... a mi me parece que es un tema
> de orden... claro que si me obligan a indentar... eventualmente se ordena
> más que usando delimitadores... supongo que los /#/ son comentarios no??? 
> es como una primitiva de precopilacion (o preinterpretación)???

No entendi nada...

> Bue... lo importante es que se puede hacer (usar llaves)... y que a mi
> parecer indentar para que algo funcione es más natural que poner
> delimitadores...

No creo... salvo en forma muy superficial.

>                  a mi me suena a estos problemas de change management...

???

> me dan algo más fácil de usar, que me ahorra código y me ahorra el
> problema típico del cerrado de llaves (que muchos programadores
> simplificaron con el abrir y cerrar al comenzar un bloque), pero me
> quitaron las llaves... así que no me sirve...

El "me ahorro un par de lineas de codigo" es totalmente irrelevante.

Mi molestia es casos como:

   if(algo)
       haga_caso_algo();
   else if(otro)
       haga_caso_otro();
   else 
       haga_ninguno_de_los_dos();

vs

   if(algo)
       haga_caso_algo();
   else
       if(tipo_uno_caso_no_algo) 
           haga_tipo_uno();
       else
           haga_tipo_dos();

Sintacticamente ambos son iguales, pero en el primer caso veo si es algo u
otro (o ninguno); en el segundo veo si es algo o no, en caso que no lo sea
hay una nueva (sub)discriminacion. Logicamente son diferentes.

A veces es comodo escribir cosas como:

   if(ta_bueno) return 0;

y no tener que poner lineas extra.

O tambien el poder decir:

   x = 0; y = 1; z = 2;

y no verme forzado "por la indentacion standard" a poner estas tres
instrucciones que /logicamente/ son una unidad ("asignar las coordenadas
de...") en tres lineas.

Tengo la costumbre ademas de separar con lineas en blanco secuencias de
instrucciones que conforman unidades logicas, p.ej. las lineas que
actualizan "juntos" los punteros al actualizar una estructura compleja, o
una secuencia de operaciones que inicializan/actualizan un struct
particular.  Esto le produce indigestion a los esquemas "indentacionistas"
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux