OT: php te daña la cabeza

Horst H. von Brand vonbrand en inf.utfsm.cl
Jue Jul 27 09:51:52 CLT 2006


Roberto Bonvallet <rbonvall en alumnos.inf.utfsm.cl> wrote:
> Horst H. von Brand:
> > > En todos los lenguajes se utiliza indentacion para marcar los bloques.
> > No Pascal. No C. No Perl. No Ruby, TCL. Ni FORTRAN, PL/1, ni assembler. No
> > lo hacen Prolog, Scheme (nada LISPico, como Common LISP o elisp), ni APL.
> > Tampoco los shell de Unix, o awk. No lo hace (La)TeX, o m4, o troff.

> No me refiero a lo que leen los parsers,

Ese es el lenguaje!

>                                          sino los programadores.

Precisamente...

>                                                                   Por lo
> menos yo me guio por la indentacion para entender el codigo en todos los
> lenguajes.  Yo indento hasta LaTeX y HTML.

Yo tambien. Pero indento segun un esquema logico, que no necesariamente
coincide con la sintaxis.

   fprintf(stderr, "Este es un mensaje de error "
                   "demasiado largo.\n"
                   "Incluso no cabe en una linea, "
                   "y debe cortarse en varias.\n"
		   "Algunos datos: i es %d, j es %d, k es 0x%3x\n",
                   i, j,
                   calcule_el_valor_de_k_mediante_una_compleja_expresion());

Cuando escribo LaTeX, pongo una idea/frase por linea. Si requiero continuar
algo (p.ej. poner una nota al pie de pagina) la indento con respecto a la
linea citada. Muchas expresiones matematicas resultan muy largas:

  \begin{equation}
    \label{eq:k-rev}
    \hat{u}(s, \sigma_k) = \hat{u}(s, {\sigma_k}') \Longrightarrow
          \sigma_k = {\sigma_k}'
               \quad\mbox{for all \(s \in S\)}
  \end{equation}

Cero relacion con la sintaxis del caso.
		   
> > El espacio en blanco (indentacion et al) se usa para describir la
> > estructura /logica/, que no necesariamente coincide con la estructura
> > /sintactica/.

> Podria dar un ejemplo en que no coincidan?  A mi se me ocurren puros
> ejemplos con goto, que no existe en Python.

Ver arriba. Ver los dos if anidados que di en el ejemplo anterior.

> > El creer que la sintaxis describe univocamente la semantica es un error
> > que se cometio con COBOL, y debiera haberse aprendido la leccion ya...

> En Python, la indentacion sirve solamente para agrupar bloques, lo mismo
> que {} en C.  No hay reglas especiales ni casos rebuscados cuya semantica
> sea distinta a la de {}.

Precisamente: Usa /espacio en blanco/ (por definicion invisible, por
convencion muy general (casi) sin importancia) para describir /sintaxis/.
La division de texto en lineas, paginas, etc es arbitraria en el lenguaje
natural, i.e., los espacios no tienen significado particular. No aparecen
siquiera en la gramatica que nos inculcaron en ensen~anza basica...
-- 
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