Everyday language no es tan claro, simple, limpio, adorable, conciso y comprensible - a una computadora. Sin embargo, para un ser humano, la legibilidad cuenta mucho, y cuanto más te acercas a un lenguaje natural, más fácil es leerlo. Es por eso que no todos estamos usando el lenguaje ensamblador.
Si usted tiene un lenguaje completamente natural, hay un montón de cosas que necesitan ser manejadas - la sentencia tiene que ser analizada, cada palabra debe entenderse - y hay un montón de espacio para la ambigüedad. En general, eso no es algo bueno para un lenguaje de programación, porque entonces nos estamos aventurando en la programación psíquica: la computadora tiene que descubrir lo que estás pensando, lo cual no es nada fácil de conseguir.
Sin embargo, si puede hacer algo lo suficientemente parecido al lenguaje natural, y sí, Inform 7 es probablemente el mejor ejemplo, las frases se ven naturales, pero todavía tiene alguna estructura que debe seguir, entonces el código es casi instantáneamente legible , incluso a personas que no conocen el idioma. Por lo general, también hay una sintaxis menos especializada que recordar, porque en realidad solo estás hablando (una forma ligeramente modificada) de inglés, pero si tienes que hacer algo fuera de lo común, entonces tendrás que pasar por algunos aros para hacerlo.
En la práctica, la mayoría de los idiomas no se molestan con esto, porque eso les permite ser más precisos. Sin embargo, algunos aún se acercarán más al "lenguaje natural". Esto puede ser algo bueno: si tiene que traducir algún algoritmo de pseudocódigo a un idioma, no necesita manipularlo tanto para hacerlo funcionar, lo que reduce el riesgo de que cometa un error en la traducción.
Como ejemplo, comparemos C y Pascal. Este código Pascal:
for i := 1 to 10 do begin
j := j + 1;
end;
es equivalente a este código C:
for (i = 1; i <= 10; i++) {
j = j + 1;
}
Si usted no tenía ningún conocimiento previo de cualquiera de sintaxis, la versión de Pascal es por lo general va a ser más fácil de leer, aunque sólo sea porque no es tan complejo como una C para.
Consideremos también los operadores. Pascal y C comparten +, - y *. También ambos tienen /, pero con semántica diferente: en C,/hace una división entera si ambos operandos son enteros; en Pascal, siempre hace una división "real" y usa div
para la división de enteros. Eso significa que debes tener en cuenta los tipos al determinar qué sucede realmente en esa línea de código.
C también tiene un montón de otros operadores: & &, ||, &, |, ^, < <, >> - en Pascal, los operadores están en su lugar nombró and
, or
, and
, or
, xor
, shl
, shr
. En lugar de confiar en una secuencia semi-arbitraria de caracteres, se detalla más. Es instantáneamente obvio que xor
es, bueno, XOR, a diferencia de la versión C, donde no existe una relación obvia entre^y XOR.
Por supuesto, esto es hasta cierto punto una cuestión de opinión: prefiero una sintaxis similar a Pascal a una sintaxis similar a C, porque creo que es más legible, pero eso no significa que todos los demás lo hagan: A el lenguaje más natural suele ser más detallado, y algunas personas simplemente no les gusta ese nivel extra de verbosidad.
Básicamente, es una cuestión de elegir lo que tiene más sentido para el dominio del problema: si el dominio del problema es muy limitado (al igual que con Inform), a continuación, un lenguaje natural tiene mucho sentido.Si se trata de un dominio muy genérico (como con C), entonces necesita un procesamiento mucho más avanzado de lo que actualmente somos capaces, o una gran cantidad de detalles para completar los detalles, y en ese caso, debe elegir un equilibrio dependiendo de sobre qué tipo de usuarios usarán los idiomas (para las personas normales, necesitas más naturalidad, para las personas que conocen la programación, suelen ser lo suficientemente cómodos con los idiomas menos naturales y prefieren algo más cercano a ese fin).
: -o ............. – PHP
¿No te refieres a 'MAX (naturalLanguage, computerLangauge)'? –
¿hay algo llamado Perl ofuscado? Pensé que todo en Perl está ofuscado :-) .. – Naveen