¿Cuál es la diferencia entre una biblioteca y una extensión de idioma? Específicamente en Scala.Extensión de biblioteca frente a idioma
Respuesta
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.
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.
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.
+1 me encanta, no puede ser más conciso! –
- 1. Extensión del módulo F # frente a la extensión de tipo
- 2. Página frente a extensión frente a segmento frente a espacio de tabla
- 3. función de idioma frente a característica de marco
- 4. Biblioteca Android frente a jar externo
- 5. Extensión de clase frente a la categoría de clase
- 6. Métodos de extensión LINQ - Cualquiera() frente a Where() versus Exists()
- 7. Método de extensión HtmlHelper frente a la vista parcial?
- 8. Biblioteca de traducción de idioma Java
- 9. C Idioma: ¿qué significa la extensión .mm?
- 10. Biblioteca de idioma/GUI para hacer el editor de mapas
- 11. Microsoft AJAX cliente de la biblioteca frente a jQuery
- 12. Detectar AIR frente a Flash Player desde una biblioteca actionscript
- 13. Codeigniter: cuándo usar un modelo frente a la biblioteca?
- 14. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 15. iterador frente a referencia frente a puntero
- 16. ¿Haskell FlexibleInstances es una extensión estable del idioma?
- 17. Terminología de persistencia de objetos: 'repositorio' frente a 'almacenar' frente a 'contexto' frente a 'retriever' vs. (...)
- 18. ¿Cómo escriben envoltorios de idioma diferentes para la misma biblioteca?
- 19. Zend Framework ORM-gateway de datos de tabla de estilo frente a extensión Zend_Db_Table_Abstract
- 20. Seguridad de Tomcat frente a WebSphere frente a WebLogic
- 21. Desarrollo de iPhone - XMLParser frente a libxml2 frente a TouchXML
- 22. Imagen frente a foto frente a imagen - Modelos de nomenclatura
- 23. Ir a idioma en el iPhone
- 24. Android - Actividad frente a ListActivity - ¿Cuál debería ser la extensión de mi clase de actividad?
- 25. RESTO frente a frente SOAP y simple página web, etc
- 26. const frente a sólo lectura
- 27. Dependencias circulares frente a DRY
- 28. Errores frente a la mejora frente a la nueva función
- 29. "Activo (depuración)" "depuración" frente a
- 30. Extensiones reactivas frente a FileSystemWatcher
¿Qué quiere decir decir * extensión de idioma *? –