Newspeak es un lenguaje de programación y una plataforma en la tradición de Smalltalk y Self , desarrollados por un equipo liderado por Gilad Bracha . [ 1 ] La plataforma incluye un entorno de desarrollo integrado (IDE), una biblioteca de interfaz gráfica de usuario (GUI) y bibliotecas estándar. [ 2 ] A partir de 2006, Cadence Design Systems financió su desarrollo y empleó a los principales colaboradores, pero finalizó la financiación en enero de 2009. [ 3 ]
Descripción general
Newspeak es un lenguaje basado en clases y mensajes . Las clases pueden estar anidadas, como en BETA . Esta es una de las principales diferencias entre Newspeak y Smalltalk.
La Newspeak se distingue por su enfoque inusual de la modularidad. [ 4 ] El lenguaje no tiene un espacio de nombres global. Las clases de nivel superior actúan como declaraciones de módulos. La modularidad en Newspeak se basa exclusivamente en el anidamiento de clases. [ 1 ] Las declaraciones de módulos son valores de primera clase (es decir, pueden almacenarse en variables, pasarse como parámetros, devolverse desde métodos, etc.) y no tienen estado.
Por diseño, Newspeak carece de acceso no declarado a un ámbito global y, por lo tanto, impone la inyección de dependencias . En consecuencia, requiere que todas las dependencias de clase ( variables de instancia denominadas "slots") se referencien explícitamente. Esto hace que cada clase en Newspeak sea virtual . [ 1 ] Todos los nombres de las dependencias en Newspeak se enlazan tardíamente ( se enlazan dinámicamente ) y se interpretan como envíos de mensajes , como en Self.
Una característica notable de la neolengua es su imposibilidad de acceder directamente a las variables de instancia. Esto se hace a través de métodos getter o setter generados automáticamente . [ 1 ] : 3
Desarrollo
Durante su desarrollo en Cadence, Newspeak se utilizó para escribir su propio IDE (compilador, depurador, exploradores de clases, inspectores de objetos, marco de pruebas unitarias, una API de reflexión basada en espejo, etc.), un kit de herramientas GUI portátil, un serializador/deserializador de objetos, una biblioteca combinadora de analizadores, un paquete de expresiones regulares, bibliotecas principales para colecciones, flujos, cadenas y archivos, partes de la interfaz de funciones externas y código de aplicación CAD. [ 5 ] La plataforma Newspeak en su conjunto requirió aproximadamente 8 años-persona de trabajo. [ 1 ] : 17
Identidad
El nombre Newspeak está inspirado en el idioma Newspeak que aparece en la novela distópica de George Orwell , 1984. El encabezado en el sitio web del lenguaje de programación dice "Es doblemente bueno ". El motivo del nombre es que el idioma Newspeak de Orwell se fue reduciendo con cada revisión; [ 6 ] Bracha considera que este es un objetivo deseable para un lenguaje de programación.
Se supone que el icono del idioma es el ojo del Gran Hermano , como se puede ver en la página 3 de la documentación.
No debe confundirse con el lenguaje de programación de seguridad crítica del mismo nombre diseñado por Ian Currie de RSRE en 1984 para su uso con el microprocesador VIPER . Su característica principal era que su compilador garantizaba que todo comportamiento excepcional potencial fuera manejado explícitamente por el programa. [ 7 ] [ 8 ]
Implementación
Primordial Soup es una máquina virtual (VM) que ejecuta instantáneas binarias de Newspeak de archivos serializados en Newspeak. [ 9 ] La representación interna de objetos se inspiró en la VM de Dart y proporciona primitivas básicas de VM para el lenguaje. [ 9 ] Puede ser compilada por SCons en varias plataformas.
Ejemplo de código
" Una declaración de una clase Point" class Point x: i y: j = ( " Esta sección es el inicializador de instancia" | " Las declaraciones de ranuras siempre están entre barras" public x ::= i . " ::= denota la inicialización de una ranura mutable" public y ::= j . | ) ( " Un método" public printString = ( ˆ ' x = ' , x printString , ' y = ' , y printString ) )"Instanciación del objeto Point en la ranura `p` dentro de alguna clase" ... public p := Point x: 42 y: 91. ...Ejemplo de "Hola Mundo"
HelloBraveNewWorld usingPlatform: platform = ( platform Transcript open show: 'Hola, oh, mundo nuevo y valiente' . )Véase también
- Programación genérica – Estilo de programación informática
Referencias
- 1 2 3 4 5 Bracha, Gilad; von der Ah´, Peter; Bykov, Vassili; Kashai, Yaron; Maddox, William; Miranda, Eliot (junio de 2010). "Módulos como objetos en neolengua" (PDF) .
- ↑ Gilad Bracha, Peter Ahe, Vassil Bykov, Yaron Kashai y Eliot Miranda. La plataforma de programación de la neolengua.
- ↑ Bracha, Gilad (24 de noviembre de 2008). "Habitación 101: Tenemos buenas noticias y malas noticias" . Habitación 101: Un lugar para ser (re)educado en neolengua . Google Blogger . Consultado el 21 de septiembre de 2009 .
- ^ Gilad Bracha, Peter Ahe, Vassili Bykov, Yaron Kashai, William Maddox y Eliot Miranda. Módulos como objetos en neolengua. En las actas de la 24ª Conferencia europea sobre programación orientada a objetos, Maribor, Eslovenia, 21 al 25 de junio de 2010.
- ↑ Bracha, Gilad; Von der Ah, Peter; Bykov, Vassili; Kashai, Yaron; Maddox, William; Miranda, Eliot (6 de mayo de 2008). "La plataforma de programación de la neolengua" . Cadence Design Systems – vía ResearchGate.
- ↑ Episodio 140 de Software Engineering Radio: Neolengua y tipos conectables con Gilad Bracha/
- ↑ Currie, IF (julio de 1986). "NewSpeak: un lenguaje común y corriente". Software Engineering Journal . 1 (4): 170– 176. doi : 10.1049/sej.1986.0027 . ISSN 0268-6961 .
- ↑ Cullyer, WJ (2012-12-06). "Implementación de sistemas críticos de seguridad: El microprocesador VIPER" . En Birtwistle, Graham; Subrahmanyam, PA (eds.). Especificación, verificación y síntesis de VLSI . Springer Publishing. pp. 16–17 . ISBN 978-1461320074.
- 1 2 Sopa Primordial , Ministerio de la Verdad, 19/12/2021 , consultado el 11/05/2023
Enlaces externos
- Sitio web oficial
- Borrador de especificación del lenguaje de programación Newpeak
- Lenguajes de programación orientados a objetos
- Familia de lenguajes de programación Smalltalk
- Lenguajes de programación creados en 2006
- Obras basadas en 1984