Lenguaje de programación
Dart es un lenguaje de programación diseñado por Lars Bak y Kasper Lund y desarrollado por Google . [8] Se puede utilizar para desarrollar aplicaciones web y móviles , así como aplicaciones de servidor y de escritorio .
Dart es un lenguaje orientado a objetos , basado en clases y con recolección de basura , con sintaxis de estilo C. [9] Puede compilarse en código de máquina , JavaScript o WebAssembly . Admite interfaces , mixins , clases abstractas , genéricos reificados e inferencia de tipos . [4]
Historia
Dart se presentó en la conferencia GOTO en Aarhus , Dinamarca, del 10 al 12 de octubre de 2011. [10] Lars Bak y Kasper Lund fundaron el proyecto. [11] Dart 1.0 se lanzó el 14 de noviembre de 2013. [12]
Al principio, Dart tuvo una recepción mixta. Algunos criticaron la iniciativa Dart por fragmentar la web debido a los planes de incluir una máquina virtual Dart en Chrome . Esos planes se abandonaron en 2015 con el lanzamiento de Dart 1.9. El enfoque cambió a compilar el código Dart en JavaScript. [13]
Dart 2.0 se lanzó en agosto de 2018 con cambios de lenguaje, incluido un sistema de tipos. [14]
Dart 2.6 introdujo una nueva extensión, dart2native
. Esta extensión extendió la compilación nativa a las plataformas de escritorio Linux, macOS y Windows. [15] Los desarrolladores anteriores podían crear nuevas herramientas utilizando solo dispositivos Android o iOS. Con esta extensión, los desarrolladores podían implementar un programa en ejecutables autónomos. No es necesario instalar el SDK de Dart para ejecutar estos ejecutables autónomos. [16] El kit de herramientas Flutter integra Dart, por lo que puede compilarse en servicios pequeños como el soporte de backend. [17] [18]
Dart 3.0 se lanzó en mayo de 2023 [19] con cambios en el sistema de tipos para exigir una seguridad nula sólida. Esta versión incluyó nuevas características como registros, patrones [20] y modificadores de clase. [21]
Dart puede compilarse en WebAssembly desde la versión 3.4. [22]
Especificación
Dart publicó la quinta edición de su especificación de lenguaje el 9 de abril de 2021. [23] Esta cubre toda la sintaxis hasta Dart 2.10. Un borrador de la sexta edición incluye toda la sintaxis hasta la versión 2.13. [24] Las propuestas aceptadas para la especificación y los borradores de las características potenciales se pueden encontrar en el repositorio del lenguaje Dart en GitHub. [25]
ECMA International formó un comité técnico, TC52, [26] para estandarizar Dart. ECMA aprobó la primera edición de la especificación del lenguaje Dart como ECMA-408 [27] en julio de 2014 en su 107.ª Asamblea General. [28] Las ediciones posteriores se aprobaron en diciembre de 2014, [29] junio de 2015 y diciembre de 2015. [27]
Implementación de aplicaciones
El kit de desarrollo de software Dart (SDK) se entrega con un entorno de ejecución Dart independiente. Esto permite que el código Dart se ejecute en un entorno de interfaz de línea de comandos . El SDK incluye herramientas para compilar y empaquetar aplicaciones Dart. [30] Dart se entrega con una biblioteca estándar completa que permite a los usuarios escribir aplicaciones de sistema completamente funcionales, como servidores web personalizados. [31]
Los desarrolladores pueden implementar aplicaciones Dart de seis maneras:
Implementación en la web
Dart 3 puede implementar aplicaciones en la web como aplicaciones JavaScript o WebAssembly. Dart admite la compilación en WebAssembly a partir de mayo de 2024 [actualizar].
JavaScript
- Para ejecutarse en los principales navegadores web , Dart se basa en un compilador de código fuente a código fuente para JavaScript . Esto hace que las aplicaciones Dart sean compatibles con todos los navegadores principales. Dart optimiza la salida de JavaScript compilado para evitar comprobaciones y operaciones costosas. Esto da como resultado un código JavaScript que puede ejecutarse más rápido que el código equivalente escrito a mano en JavaScript puro. [33]
- El primer compilador Dart-to-JavaScript fue
dartc
. Quedó obsoleto en Dart 2.0. - El segundo compilador Dart-to-JavaScript fue frog. [34] Escrito en Dart, se introdujo en 2013 y quedó obsoleto en 2020. No debe confundirse con Dart Frog, [35] un marco Dart de código abierto para crear sistemas backend de Very Good Ventures.
- El tercer compilador Dart-to-JavaScript es
dart2js
. Introducido en Dart 2.0, [36] el compilador basado en Dart dart2js
evolucionó a partir de compiladores anteriores. Su objetivo era implementar la especificación y la semántica completas del lenguaje Dart. Los desarrolladores utilizan este compilador para compilaciones de producción. Compila a JavaScript minimizado . - El cuarto compilador Dart-to-JavaScript es
dartdevc
. [37] Los desarrolladores pueden utilizar este compilador para compilaciones de desarrollo. Compila en JavaScript legible para humanos. El 28 de marzo de 2013, el equipo Dart publicó una actualización en su blog que abordaba el código Dart compilado en JavaScript con el dart2js
compilador, [38] indicando que ahora se ejecuta más rápido que el JavaScript escrito a mano en el motor de JavaScript V8 de Chrome para el benchmark DeltaBlue. [39] - Antes de Dart 2.18, tanto
dart2js
como dartdevc
se podían llamar desde la línea de comandos. Dart 2.18 incorporó estas funciones al SDK de Dart. Esto eliminó los contenedores de línea de comandos directos, pero mantuvo los dos compiladores. El webdev serve
comando llama al dartdevc
compilador. El webdev build
comando llama al dart2js
compilador. - El SDK de Dart se compila en JavaScript de dos maneras.
- Para depurar el código, ejecute el comando
webdev serve
para compilar un archivo JavaScript más grande con código legible para humanos. El JavaScript generado por Dart se puede depurar solo con Chrome .$ cd <directorio_de_aplicación_dart> $ servicio webdev [ --debug ] [ -o <target.js> ]
Para crear aplicaciones de producción, ejecute webdev build
para compilar un archivo JavaScript minimizado.$ cd <directorio_de_aplicación_dart> $ webdev build [ -o <target.js> ]
WebAsamblea
- Con el lanzamiento de Dart 3.22, Google anunció soporte para compilar código Dart en WebAssembly . [22] El soporte completo para Wasm requiere la adopción de la función WasmGC [40] en el estándar Wasm. Chrome 119 [41] admite WasmGC. Firefox [42] 120 y versiones posteriores podrían admitir WasmGC, pero un error actual está bloqueando la compatibilidad. [43] Safari [44] y Microsoft Edge están integrando soporte para WasmGC.
Implementación en plataformas nativas
Dart puede compilar código de máquina nativo para macOS, Windows y Linux como herramientas de línea de comandos. Dart puede compilar aplicaciones con interfaces de usuario para la web, iOS, Android, macOS, Windows y Linux mediante el marco Flutter .
Ejecutable autónomo
- Los ejecutables autónomos incluyen código de máquina nativo compilado a partir del archivo de código Dart especificado, sus dependencias y un pequeño entorno de ejecución de Dart. El entorno de ejecución se encarga de la comprobación de tipos y la recolección de elementos no utilizados. El compilador produce una salida específica para la arquitectura en la que el desarrollador lo compiló. Este archivo se puede distribuir como cualquier otro ejecutable nativo.
$ dart compile exe <origen.dart> -o <aplicación_destino>Generado: <target_app>$ ./<aplicación_destino>
Módulo de anticipación
- Cuando se compila con anticipación , [45] el código Dart produce módulos de alto rendimiento y específicos de la plataforma. Incluye todas las bibliotecas y paquetes dependientes que necesita la aplicación. Esto aumenta su tiempo de compilación. El compilador genera una aplicación específica para la arquitectura en la que se compiló.
$ dart compila aot-snapshot <fuente.dart>Generado <target_app.aot>$ dartaotruntime <aplicación_destino.aot>
Módulo justo a tiempo
- Cuando se compila en tiempo real , el código Dart produce módulos de alto rendimiento que se compilan rápidamente. Este módulo necesita la máquina virtual Dart incluida con el SDK para ejecutarse. El compilador carga todas las clases analizadas y el código compilado en la memoria la primera vez que se ejecuta la aplicación. Esto acelera cualquier ejecución posterior de la aplicación. El compilador genera una aplicación específica para la arquitectura en la que se compiló.
$ dart compila jit-snapshot <fuente.dart>Compilación de <source.dart> en el archivo de instantánea jit <target_app.jit> ¡Hola Mundo!$ dart ejecutar <target_app.jit>¡Hola Mundo!
Módulo del núcleo Dart
- Cuando se compila como un módulo del núcleo, el código Dart produce un formato independiente de la máquina llamado Dart Intermediate Representation (Dart IR). El formato de bytecode Dart IR puede funcionar en cualquier arquitectura que tenga una máquina virtual Dart. Esto hace que este formato sea muy portátil y rápido de compilar, pero menos eficiente que otras salidas de compilación.
$ dart compila kernel <fuente.dart>Compilando <source.dart> en el archivo de kernel <target_app>.dill. $ dart run <aplicación_objetivo>.dill
Concurrencia
Para lograr la concurrencia , Dart utiliza trabajadores aislados e independientes que no comparten memoria, sino que utilizan el paso de mensajes , [46] de manera similar a los procesos de Erlang (ver también el modelo de actor ). Cada programa Dart utiliza al menos un aislamiento, que es el principal. Desde Dart 2, la plataforma web Dart ya no admite aislamientos y sugiere que los desarrolladores utilicen Web Workers en su lugar. [47]
Seguridad nula
A partir de Dart 2.12, Dart introdujo una sólida seguridad nula . [48] Esto sirve como garantía de que las variables no pueden devolver un valor nulo a menos que tengan permiso explícito. La seguridad nula evita que el desarrollador introduzca excepciones de puntero nulo, un error común, pero difícil de depurar. Con Dart 3.0, todo el código debe seguir una sólida seguridad nula.
Almacenamiento de datos
Los archivos de instantáneas, una parte fundamental de la máquina virtual Dart, almacenan objetos y otros datos de tiempo de ejecución. [46]
- Instantáneas de script
- Los programas Dart se pueden compilar en archivos instantáneos que contienen todo el código del programa y las dependencias preparadas y listas para ejecutarse, lo que permite inicios rápidos.
- Instantáneas completas
- Las bibliotecas principales de Dart se pueden compilar en un archivo de instantáneas que permite cargarlas rápidamente. La mayoría de las distribuciones estándar de la máquina virtual Dart principal tienen una instantánea precompilada para las bibliotecas principales que se carga en tiempo de ejecución.
- Instantáneas de objetos
- Dart utiliza instantáneas para serializar los mensajes que pasa entre los aislamientos. Como lenguaje muy asincrónico , Dart utiliza aislamientos para la concurrencia . [49] Un objeto genera una instantánea , la transfiere a otro aislamiento y luego el aislamiento la deserializa.
Editores
El 18 de noviembre de 2011, Google lanzó Dart Editor , un programa de código abierto basado en componentes de Eclipse , para sistemas operativos basados en macOS , Windows y Linux . [50] El editor admite resaltado de sintaxis , finalización de código , compilación de JavaScript, ejecución de aplicaciones Dart web y de servidor, y depuración .
El 13 de agosto de 2012, Google anunció el lanzamiento de un complemento de Eclipse para el desarrollo de Dart. [51]
El 18 de abril de 2015, Google retiró el editor Dart a favor del entorno de desarrollo integrado (IDE) JetBrains . [52] Android Studio , IntelliJ IDEA , PyCharm , PhpStorm y WebStorm admiten un complemento Dart. [53] Este complemento admite muchas funciones como resaltado de sintaxis, finalización de código, análisis, refactorización, depuración y más. Otros editores incluyen complementos para Dart [54], incluidos Sublime Text , [55] Atom , [56] Emacs , [57] Vim [58] y Visual Studio Code . [59]
Editor de desarrollo de Chrome
En 2013, el equipo de Chromium comenzó a trabajar en un entorno de desarrollo de código abierto basado en Chrome App con una biblioteca reutilizable de widgets GUI , con nombre en código Spark. [60] El proyecto luego fue renombrado como Chrome Dev Editor. [61] Construido en Dart, contenía Spark que funciona con Polymer. [62]
En junio de 2015, Google transfirió el proyecto CDE a GitHub como un proyecto de software libre y dejó de invertir activamente en CDE. [63] El proyecto Chrome Dev Editor se archivó el 24 de abril de 2021. [64]
DartPad
Para ofrecer una forma más sencilla de comenzar a utilizar Dart, el equipo de Dart creó DartPad a principios de 2015. Este editor en línea permite a los desarrolladores experimentar con las interfaces de programación de aplicaciones (API) de Dart y ejecutar código Dart. Ofrece resaltado de sintaxis, análisis de código, finalización de código, documentación y edición de HTML y CSS. [65]
Herramientas de desarrollo
Las Dart DevTools, escritas en Dart, [66] incluyen herramientas de depuración y rendimiento.
Aleteo
Google introdujo Flutter para el desarrollo de aplicaciones nativas. Flutter, creado con Dart, C, C++ y Skia, es un marco de interfaz de usuario de aplicaciones multiplataforma y de código abierto. Antes de Flutter 2.0, los desarrolladores solo podían trabajar con Android , iOS y la web. Flutter 2.0 lanzó soporte para macOS, Linux y Windows como una característica beta. [67] Flutter 2.10 se lanzó con soporte de producción para Windows [68] y Flutter 3 lanzó soporte de producción para todas las plataformas de escritorio. [69] Proporciona un marco, widgets y herramientas. Este marco ofrece a los desarrolladores una forma de crear e implementar aplicaciones móviles, de escritorio y web. [70] Flutter funciona con Firebase [71] y admite la extensión del marco a través de complementos llamados paquetes. Estos se pueden encontrar en su repositorio de paquetes, pub.dev. [72] JetBrains también admite un complemento de Flutter. [73]
Ejemplo
Un ejemplo de ¡Hola mundo!:
void main () { print ( '¡Hola, mundo!' ); }
Un bucle for simple : [74]
vacío principal () { para ( var i = 1 ; i <= 10 ; i ++ ) { imprimir ( i ); } }
Una función para calcular el n-ésimo número de Fibonacci :
vacío principal () { var i = 20 ; imprimir ( 'fibonacci( $ i ) = ${ fibonacci ( i ) } ' ); } /// Calcula el n-ésimo número de Fibonacci. int fibonacci ( int n ) { return n < 2 ? n : ( fibonacci ( n - 1 ) + fibonacci ( n - 2 )); }
Una clase sencilla:
// Importa la biblioteca matemática para obtener acceso a la función sqrt. // Importado con `math` como nombre, por lo que los accesos deben usar `math.` como prefijo. import 'dart:math' as math ; // Crea una clase para Point. class Point { // Las variables finales no se pueden cambiar una vez asignadas. // Declarar dos variables de instancia. final num x , y ; // Un constructor, con sintaxis simplificada para configurar variables de instancia. // El constructor tiene dos parámetros obligatorios. Point ( this . x , this . y ); // Un constructor nombrado con una lista de inicializadores. Punto . origen () : x = 0 , y = 0 ; // Un método. num distanceTo ( Point other ) { var dx = x - other . x ; var dy = y - other . y ; return math . sqrt ( dx * dx + dy * dy ); } // Ejemplo de un "getter". // Actúa igual que una variable final, pero se calcula en cada acceso. num get magnitud => math . sqrt ( x * x + y * y ); // Ejemplo de sobrecarga de operadores Operador Punto + ( Punto otro ) => Punto ( x + otro . x , y + otro . y ); // Al crear una instancia de una clase como Punto en Dart 2+, new es // una palabra opcional } // Todos los programas Dart comienzan con main(). void main () { // Crear instancias de objetos de punto. var p1 = Point ( 10 , 10 ) ; print ( p1.magnitud ) ; var p2 = Point.origen (); var distancia = p1.distanciaTo ( p2 ) ; print ( distancia ) ; }
Influencias de otros idiomas
Dart pertenece a la familia de lenguajes ALGOL . [75] [ verificación fallida ] Sus miembros incluyen C, Java, C#, JavaScript y otros.
La sintaxis de método en cascada se adoptó de Smalltalk. [76] Esta sintaxis proporciona un atajo para invocar varios métodos uno tras otro en el mismo objeto.
Los mixins de Dart fueron influenciados por Strongtalk [ cita requerida ] [77] [78] y Ruby .
Dart utiliza aislamientos como una unidad de concurrencia y seguridad al estructurar aplicaciones. [79] El concepto de aislamiento se basa en el modelo de actor implementado en Erlang. [80]
En 2004, Gilad Bracha (que era miembro del equipo Dart) y David Ungar propusieron por primera vez la API Mirror para realizar una reflexión controlada y segura en un artículo. [81] El concepto se implementó por primera vez en Self .
Véase también
Referencias
- ^ Kopec, David (30 de junio de 2014). Dart for Absolute Beginners. Apress. p. 56. ISBN 9781430264828. Recuperado el 24 de noviembre de 2015 .
- ^ Bak, Lars (10 de octubre de 2011). «Dart: un lenguaje para la programación web estructurada». Blog de Google Code . Consultado el 31 de enero de 2016 .
- ^ "Versión 3.5.3".
- ^ ab "El sistema de tipos Dart". dart.dev .
- ^ "Lenguajes web y máquinas virtuales: el código rápido siempre está de moda (V8, Dart) - Google I/O 2013". YouTube . 16 de mayo de 2013 . Consultado el 22 de diciembre de 2013 .
- ^ "El equipo Dart da la bienvenida a TypeScript". 10 de septiembre de 2019. Consultado el 22 de febrero de 2020 .
- ^ "Etiquetas del SDK de Dart". GitHub .
- ^ "Un poco sobre Dart - Aprende Dart: primer paso para Flutter". Educativo: cursos interactivos para desarrolladores de software . Consultado el 20 de junio de 2023 .
- ^ "Un recorrido por el lenguaje Dart". dart.dev . Consultado el 9 de agosto de 2018 .
- ^ "Dart, un nuevo lenguaje de programación para programación web estructurada", conferencia GOTO (presentación) (discurso inaugural), conferencia de Århus, 10 de octubre de 2011
{{citation}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace ) - ^ Ladd, Seth. "¿Qué es Dart?". ¿Qué es Dart? . O'Reilly . Consultado el 16 de agosto de 2014 .
- ^ "Dart 1.0: un SDK estable para aplicaciones web estructuradas". news.dartlang.org . Consultado el 8 de agosto de 2018 .
- ^ Seth Ladd (10 de septiembre de 2019). "Noticias y actualizaciones de Dart". dartlang.org .
- ^ Moore, Kevin (7 de agosto de 2018). "Anuncio de Dart 2 Stable y la plataforma web Dart". Dart . Consultado el 8 de agosto de 2018 .
- ^ "Evolución del lenguaje Dart". dart.dev . Consultado el 20 de junio de 2023 .
- ^ "Descripción general de Dart". dart.dev . Consultado el 12 de mayo de 2023 .[ enlace muerto permanente ]
- ^ "Dart 2.5 trae la compilación nativa al escritorio". Infoworld . 20 de noviembre de 2019 . Consultado el 28 de noviembre de 2019 .
- ^ "Dart 2.6 lanzado con dart2native". SDtimes . 7 de noviembre de 2019 . Consultado el 28 de noviembre de 2019 .
- ^ "Evolución del lenguaje Dart". dart.dev . Consultado el 9 de enero de 2024 .
- ^ "Patrones". dart.dev . Consultado el 12 de mayo de 2023 .[ enlace muerto permanente ]
- ^ "Modificadores de clase".
- ^ abc Thomsen, Michael (14 de mayo de 2024). "Lanzamiento de Flutter 3.22 y Dart 3.4 en Google I/O 2024". Flutter . Consultado el 17 de mayo de 2024 .
- ^ "Especificación del lenguaje de programación Dart, 5.ª edición" (PDF) .
- ^ "Especificación del lenguaje de programación Dart, borrador de la sexta edición" (PDF) .
- ^ "Repositorio de GitHub del lenguaje Dart". GitHub .
- ^ "TC52 - Dart". Archivado desde el original el 2016-08-02 . Consultado el 2013-12-16 .
- ^ ab "ECMA-408". Ecma International . Consultado el 12 de mayo de 2023 .
- ^ Anders Thorhauge Sandholm (10 de septiembre de 2019). "Noticias y actualizaciones de Dart". dartlang.org .
- ^ Anders Thorhauge Sandholm (10 de septiembre de 2019). "Noticias y actualizaciones de Dart". dartlang.org .
- ^ "Paquetes de herramientas de publicación.dart.dev". Paquetes de Dart . Consultado el 12 de mayo de 2023 .
- ^ "Introducción a la biblioteca dart:io". dart.dev . Consultado el 21 de julio de 2013 .
- ^ Thomsen, Michael (10 de mayo de 2023). "Anuncio de Dart 3". Dart . Consultado el 13 de mayo de 2023 .
- ^ "JavaScript como objetivo de compilación: cómo hacerlo rápido" (PDF) . Dartlang.org. Archivado desde el original (PDF) el 2016-07-02 . Consultado el 2013-08-18 .
- ^ "Hacia un único compilador Dart para JavaScript". 10 de septiembre de 2019. Consultado el 13 de mayo de 2023 .
- ^ "Rana dardo". dartfrog.vgv.dev . Consultado el 13 de mayo de 2023 .
- ^ Moore, Kevin (8 de agosto de 2018). "Anuncio de Dart 2 Stable y la plataforma web Dart". Dart . Consultado el 13 de mayo de 2023 .
- ^ "dartdevc: el compilador de desarrollo de Dart". dart.dev . Consultado el 13 de mayo de 2023 .[ enlace muerto permanente ]
- ^ Ladd, Seth (28 de marzo de 2013). "Noticias y actualizaciones de Dart: por qué dart2js produce código JavaScript más rápido desde Dart". News.dartlang.org . Consultado el 21 de julio de 2013 .
- ^ "Rendimiento de dardos". Dartlang.org . Archivado desde el original el 3 de enero de 2017. Consultado el 21 de julio de 2013 .
- ^ Propuesta de GC para WebAssembly, WebAssembly, 2023-05-12 , consultado el 2023-05-13
- ^ "WebAssembly Garbage Collection (WasmGC) ahora está habilitado de forma predeterminada en Chrome | Blog". Chrome para desarrolladores . Consultado el 17 de mayo de 2024 .
- ^ "Boletín informativo de SpiderMonkey (Firefox 110-111)". Motor JavaScript/WebAssembly de SpiderMonkey . 16 de febrero de 2023. Consultado el 13 de mayo de 2023 .
- ^ "1788206 - OffscreenCanvas.transferToImageBitmap genera una copia". bugzilla.mozilla.org . Consultado el 17 de mayo de 2024 .
- ^ "Notas de la versión de Safari Technology Preview 167". Documentación para desarrolladores de Apple . Consultado el 13 de mayo de 2023 .
- ^ Obinna, Onuoha (7 de abril de 2020). "¿Cómo funcionan JIT y AOT en Dart?". Medium . Consultado el 20 de junio de 2023 .
- ^ ab "La esencia de Google Dart: creación de aplicaciones, instantáneas y aislamientos". InfoQ . Consultado el 29 de agosto de 2021 .
- ^ Moore, Kevin (23 de febrero de 2018). "Cambio radical en Dart2: eliminación de la compatibilidad web con dart:mirrors y dart:isolate". Grupos de Google .
- ^ Hracek, Filip (10 de junio de 2020). "Anuncio de seguridad nula de sonido". Dart . Consultado el 12 de mayo de 2023 .
- ^ "Concurrencia en Dart". dart.dev . Consultado el 12 de mayo de 2023 .
- ^ "Google lanza Dart Editor para Windows, Mac OS X y Linux". Archivado desde el original el 2013-12-03 . Consultado el 2011-11-29 .
- ^ "El complemento Dart para Eclipse está listo para su versión preliminar". 10 de septiembre de 2019.
- ^ Ladd, Seth (30 de abril de 2015). "El presente y el futuro de los editores y los IDE para Dart". Noticias y actualizaciones de Dart . Consultado el 18 de mayo de 2015 .
- ^ "Repositorio de complementos de JetBrains: Dart". Plugins.intellij.net . Consultado el 21 de julio de 2013 .
- ^ "Herramientas de Dart". dart.dev . Consultado el 15 de noviembre de 2016 .
- ^ "Dart - Paquetes - Control de paquetes". packagecontrol.io . Consultado el 13 de mayo de 2023 .
- ^ "dart - complemento Dart para Atom". dart-atom.github.io . Consultado el 13 de mayo de 2023 .
- ^ Trainor, Brady (15 de abril de 2023), bradyt/dart-mode , consultado el 13 de mayo de 2023
- ^ Compatibilidad de Dart con Vim, Dart, 9 de mayo de 2023 , consultado el 13 de mayo de 2023
- ^ "Dart - Visual Studio Marketplace". marketplace.visualstudio.com . Consultado el 13 de mayo de 2023 .
- ^ Beaufort, François. "El equipo de cromo está trabajando activamente en estos momentos".
- ^ "Un entorno de desarrollo basado en aplicaciones de Chrome". GitHub . 26 de octubre de 2021.
- ^ "Spark, una aplicación de Chrome de Google, es un IDE para tu Chromebook". 22 de noviembre de 2013.
- ^ Saroop, Sri. "Editor para desarrolladores de Chrome: anuncios".
- ^ "Chrome Dev Editor es una herramienta para desarrolladores que permite crear aplicaciones en la plataforma Chrome: Chrome Apps y Web Apps, en JavaScript o Dart. (YA NO SE ENCUENTRA EN DESARROLLO ACTIVO) - googlearchive/chromedeveditor". 29 de julio de 2019 – vía GitHub.
- ^ Ladd, Seth (6 de mayo de 2015). "Anuncio de DartPad: una forma sencilla de explorar el código Dart". Noticias y actualizaciones de Dart . Consultado el 18 de mayo de 2015 .
- ^ Dart & Flutter DevTools, Flutter, 12 de mayo de 2023 , consultado el 12 de mayo de 2023
- ^ Sells, Chris (3 de marzo de 2021). "Novedades de Flutter 2.0". Flutter . Consultado el 12 de mayo de 2023 .
- ^ Sneath, Tim (3 de febrero de 2022). "Anuncio de Flutter para Windows".
- ^ Chisholm, Kevin (12 de mayo de 2022). "Novedades de Flutter 3". Flutter . Consultado el 12 de mayo de 2023 .
- ^ "Preguntas frecuentes". flutter.dev . Consultado el 29 de agosto de 2021 .
- ^ "Firebase". flutter.dev . Consultado el 29 de agosto de 2021 .
- ^ "Paquetes Dart". Paquetes Dart . Consultado el 12 de mayo de 2023 .
- ^ "Flutter - Complemento de IDE para IntelliJ | Marketplace". JetBrains Marketplace . Consultado el 13 de mayo de 2023 .
- ^ "Bucles en Dart | Fluter World | Tutoriales de Dart y Flutter".
- ^ "Familia Algol". c2.com .
- ^ "Método Cascadas en Dart". 10 de septiembre de 2019. Consultado el 13 de mayo de 2023 .
- ^ Bracha, Gilad; Griswold, David (septiembre de 1996). "Extensión del lenguaje Smalltalk con mixins" (PDF) . Taller de OOPSLA . OOPSLA.
- ^ Ladd, Seth (13 de noviembre de 2011). "Transcripción de A Quick Tour of Dart de Gilad Bracha" . Consultado el 13 de mayo de 2023 .
- ^ "La esencia de Google Dart: creación de aplicaciones, instantáneas y aislamientos". InfoQ .
- ^ "Concurrencia sin miedo: cómo Clojure, Rust, Pony, Erlang y Dart te permiten lograrlo. - Renato Athaydes". sites.google.com . Archivado desde el original el 2023-05-13 . Consultado el 2023-05-13 .
- ^ Bracha, Gilad; Ungar, David (2004). "Mirrors: design principles for meta-level features of object-oriented programming language" (PDF) . Avisos SIGPLAN de la ACM . 39 (10). ACM: 331–344. doi :10.1145/1035292.1029004 . Consultado el 15 de febrero de 2014 .
Bibliografía
Enlaces externos