2012-05-07 15 views

Respuesta

6

Esto es válido tanto para la Scala y para Java, una biblioteca se podría definir como:

En informática, una biblioteca es una colección de recursos utilizados para desarrollar software. Estos pueden incluir código escrito previamente y subrutinas, clases, valores o especificaciones de tipo.

Esto significa que (lo sé, simplifico mucho) una biblioteca es una colección de rutinas que va a utilizar en su código para implementar un algoritmo . Le ahorran escribir el mismo código una y otra vez (por ejemplo, no necesita reinventar la rueda cada vez que tiene que imprimir una cadena a la consola).

Una extensión idioma no es el código que se le llama (o uso) directamente desde el código, sino algo que va a cambiar su forma de escribir sus programas. Puede cambiar (y generalmente lo hace) la sintaxis del idioma en sí y a menudo es un complemento para el compilador. Muchas de las funciones añadidas al lenguaje Java son extensiones (genéricos, por ejemplo).

Por ejemplo Sesión-Scala es un extensiones hechas de ambos:

  • una biblioteca para gestionar la programación paralela (código se puede llamar directamente desde el código).
  • extensión de idioma: para hacer que el código que escriba sea más claro (lo que a veces se llama azúcar sintáctico), cambia la sintaxis del lenguaje para facilitar el uso de sus funciones de biblioteca (debería decir nice?)

Por ejemplo, echa un vistazo a this page.

Dicho esto, a menudo con Scala, una extensión de idioma no es realmente necesaria (incluso si es tan fácil de escribir, más que para lenguajes .NET, por ejemplo) debido a su sintaxis. Lo primero que me viene a la mente son los operadores de infijo, pero en general toda su sintaxis para la invocación de métodos hace que todo sea sencillo de usar como DSL sin un DSL.

1

Si por extensión de idioma quiere decir un complemento de compilación, puede verificar o transformar el código fuente dado en otro, código Scala simple en tiempo de compilación. Sin embargo, otros que usan el mismo código fuente original también deben tener instalado el complemento del compilador para compilar el código.

Una biblioteca, por el contrario, en la Scala puede parecerse a una extensión del lenguaje gracias al apoyo de la Scala de infix notation/suffix notation y symbolic methods. Sin embargo, no se hace nada especial en tiempo de compilación, aunque naturalmente cualquier persona que compile y ejecute el mismo código fuente necesitará cualquier biblioteca referenciada para hacerlo.

15

This is the Scala language specification. Si puede escribirlo con el lenguaje descrito en esta especificación, entonces es una biblioteca . Si realiza cambios en el idioma descrito en este documento que no se puede escribir en el idioma en sí, entonces es una extensión de idioma.

+3

+1 me encanta, no puede ser más conciso! –

Cuestiones relacionadas