Articulo de referencia

Dart (lenguaje de programación)

{{cite book|last1=Kopec|first1=David|title=Dart for Absolute Beginners|date=30 June 2014|isbn=9781430264828|page=56|publisher=Apress |url=https://books.google.com/books?id=EcvjA...

Dart es un lenguaje de programación diseñado por Lars Bak y Kasper Lund y desarrollado por Google . [ 7 ] 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 al estilo de C. [ 8 ] Puede compilarse a código máquina , JavaScript o WebAssembly . Admite interfaces , mixins , clases abstractas , genéricos reificados e inferencia de tipos . [ 4 ] La última versión de Dart es la 3.12.2 [ 3 ] . Edita esto en Wikidata

Historia

Dart se presentó en la conferencia GOTO en Aarhus , Dinamarca, del 10 al 12 de octubre de 2011. [ 9 ] Lars Bak y Kasper Lund fundaron el proyecto. [ 10 ] Dart 1.0 se lanzó el 14 de noviembre de 2013. [ 11 ]

Dart tuvo una recepción mixta al principio. Algunos criticaron la iniciativa Dart por fragmentar la web debido a los planes de incluir una máquina virtual de Dart en Chrome . Esos planes se abandonaron en 2015 con el lanzamiento de Dart 1.9. El enfoque cambió a compilar código Dart a JavaScript. [ 12 ]

Dart 2.0 se lanzó en agosto de 2018 con cambios en el lenguaje, incluido un sistema de tipos. [ 13 ]

En noviembre de 2019, Dart 2.6 introdujo una nueva extensión, dart2native. Esta extendió la compilación nativa a las plataformas de escritorio Linux, macOS y Windows. [ 14 ] Anteriormente, los desarrolladores podían crear nuevas herramientas utilizando solo dispositivos Android o iOS. Con esta extensión, los desarrolladores podían implementar un programa en ejecutables autocontenidos. El SDK de Dart no necesita estar instalado para ejecutar estos ejecutables autocontenidos. [ 15 ] El kit de herramientas de Flutter integra Dart, por lo que puede compilar en servicios pequeños como el soporte de backend. [ 16 ] [ 17 ]

Dart 3.0 se lanzó en mayo de 2023 [ 18 ] con cambios en el sistema de tipos para exigir seguridad nula sólida. Este lanzamiento incluyó nuevas características como registros, patrones [ 19 ] y modificadores de clase [ 20 ] .

Dart puede compilar a WebAssembly desde la versión 3.4. [ 21 ]

Especificación

Dart publicó la quinta edición de su especificación de lenguaje el 9 de abril de 2021. [ 22 ] Esta abarca toda la sintaxis hasta Dart 2.10. Un borrador de la sexta edición incluye toda la sintaxis hasta 2.13. [ 23 ] Las propuestas aceptadas para la especificación y los borradores de posibles características se pueden encontrar en el repositorio del lenguaje Dart en GitHub. [ 24 ]

ECMA International formó el comité técnico TC52 [ 25 ] para estandarizar Dart. ECMA aprobó la primera edición de la especificación del lenguaje Dart como ECMA-408 [ 26 ] en julio de 2014 en su 107.ª Asamblea General. [ 27 ] Las ediciones posteriores fueron aprobadas en diciembre de 2014, [ 28 ] junio de 2015 y diciembre de 2015. [ 26 ]

Implementación de aplicaciones

El kit de desarrollo de software (SDK) de Dart incluye un entorno de ejecución independiente. Esto permite ejecutar código Dart en un entorno de interfaz de línea de comandos . El SDK incluye herramientas para compilar y empaquetar aplicaciones Dart. [ 29 ] Dart incluye una biblioteca estándar completa que permite a los usuarios escribir aplicaciones de sistema totalmente funcionales, como servidores web personalizados. [ 30 ]

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 a WebAssembly desde mayo de 2024. .

JavaScript

Para ejecutarse en los navegadores web más comunes , 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 JavaScript compilada para evitar comprobaciones y operaciones costosas. Esto da como resultado un código JavaScript que puede ejecutarse más rápido que un código equivalente escrito manualmente en JavaScript puro. [ 32 ]

El primer compilador de Dart a JavaScript fue dartc. Fue descontinuado en Dart 2.0.

El segundo compilador de Dart a JavaScript fue frog. [ 33 ] Escrito en Dart, se introdujo en 2013 y se dejó de usar en 2020. No debe confundirse con Dart Frog, un framework de Dart de código abierto para construir sistemas backend de Very Good Ventures . [ 34 ]

El tercer compilador de Dart a JavaScript es dart2js. Introducido en Dart 2.0, [ 35 ] el basado en Dart dart2jsevolucionó a partir de compiladores anteriores. Su objetivo era implementar la especificación y semántica completas del lenguaje Dart. Los desarrolladores utilizan este compilador para compilaciones de producción. Compila a JavaScript minificado .

El cuarto compilador de Dart a JavaScript es dartdevc. [ 36 ] Los desarrolladores podrían usar este compilador para compilaciones de desarrollo. Compila a JavaScript legible para humanos. El 28 de marzo de 2013, el equipo de Dart publicó una actualización en su blog sobre el código Dart compilado a JavaScript con el dart2jscompilador, [ 37 ] afirmando que ahora se ejecuta más rápido que el JavaScript escrito a mano en el motor JavaScript V8 de Chrome para la prueba de rendimiento DeltaBlue. [ 38 ]

Antes de Dart 2.18, tanto dart2jscomo dartdevcpodían llamarse desde la línea de comandos. Dart 2.18 integró estas funciones en el SDK de Dart. Esto eliminó los envoltorios directos de la línea de comandos, pero mantuvo los dos compiladores. El webdev servecomando llama al dartdevccompilador. El webdev buildcomando llama al dart2jscompilador.

El SDK de Dart se compila a JavaScript de dos maneras.

Para depurar el código, ejecute el comando webdev servepara compilar un archivo JavaScript más grande con código legible. El código JavaScript generado por Dart solo se puede depurar usando Chrome .

$ cd <directorio_de_aplicaciones_de_dart> $ servicio webdev [--debug] [-o <target.js>] 

Para crear aplicaciones de producción, ejecute el comando webdev buildpara compilar un archivo JavaScript minimizado.

$ cd <directorio_de_aplicaciones_de_dart> $ webdev build [-o <target.js>] 

WebAssembly

Con el lanzamiento de Dart 3.22, Google anunció la compatibilidad con la compilación de código Dart a WebAssembly . [ 21 ] La compatibilidad total con Wasm requiere la adopción de la función WasmGC [ 39 ] en el estándar Wasm. Chrome 119 [ 40 ] admite WasmGC. Firefox [ 41 ] 120 y posteriores podrían admitir WasmGC, pero un error actual está bloqueando la compatibilidad. [ 42 ] Safari [ 43 ] y Microsoft Edge están integrando la compatibilidad con WasmGC.

Implementación en plataformas nativas

Dart puede compilar a código 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 utilizando el framework Flutter .

Ejecutable autónomo

Los ejecutables autónomos incluyen código 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. Este entorno gestiona la comprobación de tipos y la recolección de basura. El compilador genera una salida específica para la arquitectura en la que el desarrollador lo compiló. Este archivo puede distribuirse como cualquier otro ejecutable nativo.

$ dart compile exe "source.dart" -o "target_app" Generado: <target_app> $ ./target_app 

Módulo de preparación anticipada

Cuando se compila con anticipación , [ 44 ] el código Dart produce módulos de alto rendimiento y específicos de la plataforma. Incluye todas las bibliotecas y paquetes dependientes que la aplicación necesita. Esto aumenta su tiempo de compilación. El compilador genera una aplicación específica para la arquitectura en la que se compiló.

$ dart compile aot-snapshot "source.dart" Generado <target_app.aot> $ dartaotruntime "target_app.aot"

Módulo justo a tiempo

Cuando se compila justo a tiempo , el código Dart produce módulos de alto rendimiento que se compilan rápidamente. Este módulo requiere la máquina virtual de Dart incluida en 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 compile jit-snapshot "source.dart" Compilando <source.dart> al archivo jit-snapshot <target_app.jit> ¡Hola mundo! $ dart run "target_app.jit" ¡Hola mundo!

Módulo del kernel de Dart

Cuando se compila como módulo del kernel, el código Dart produce un formato independiente de la máquina llamado Representación Intermedia de Dart (Dart IR). El formato de bytecode Dart IR funciona en cualquier arquitectura que tenga una máquina virtual de Dart. Esto hace que este formato sea muy portable y rápido de compilar, pero menos eficiente que otros formatos de compilación.

$ dart compile kernel "source.dart" Compilando <source.dart> al archivo kernel <target_app.dill>. $ dart run "target_app.dill"

Concurrencia

Para lograr la concurrencia , Dart utiliza trabajadores aislados e independientes que no comparten memoria, sino que emplean el paso de mensajes , [ 45 ] similar a los procesos de Erlang (véase también el modelo de actor ). Cada programa Dart utiliza al menos un proceso aislado, que es el principal. Desde Dart 2, la plataforma web de Dart ya no admite procesos aislados y sugiere a los desarrolladores que utilicen Web Workers en su lugar. [ 46 ]

Seguridad nula

A partir de Dart 2.12, Dart introdujo una sólida seguridad contra valores nulos . [ 47 ] Esto garantiza que las variables no puedan devolver un valor nulo a menos que tengan permiso explícito. La seguridad contra valores nulos 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 cumplir con una sólida seguridad contra valores nulos.

Almacenamiento de datos

Los archivos de instantáneas, una parte fundamental de la máquina virtual de Dart, almacenan objetos y otros datos de tiempo de ejecución. [ 45 ]

Instantáneas de scripts
Los programas Dart se pueden compilar en archivos de instantánea que contienen todo el código del programa y las dependencias preparadas y listas para ejecutarse, lo que permite un inicio rápido.
Instantáneas completas
Las bibliotecas principales de Dart se pueden compilar en un archivo de instantánea que permite una carga rápida de las bibliotecas. La mayoría de las distribuciones estándar de la máquina virtual principal de Dart incluyen una instantánea precompilada de 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 objetos aislados. Como lenguaje altamente asíncrono , Dart utiliza objetos aislados para la concurrencia . [ 48 ] Un objeto genera una instantánea , la transfiere a otro objeto aislado y luego este último 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 macOS , Windows y sistemas operativos basados ​​en Linux . [ 49 ] El editor admite resaltado de sintaxis , autocompletado de código , compilación de JavaScript, ejecución de aplicaciones web y de servidor Dart y depuración .

El 13 de agosto de 2012, Google anunció el lanzamiento de un complemento de Eclipse para el desarrollo de Dart. [ 50 ]

El 18 de abril de 2015, Google retiró el editor Dart en favor del entorno de desarrollo integrado (IDE) de JetBrains . [ 51 ] Android Studio , IntelliJ IDEA , PyCharm , PhpStorm y WebStorm admiten un complemento de Dart. [ 52 ] Este complemento admite muchas características como resaltado de sintaxis, autocompletado de código, análisis, refactorización, depuración y más. Otros editores incluyen complementos para Dart [ 53 ] incluidos Sublime Text , [ 54 ] Atom , [ 55 ] Emacs , [ 56 ] Vim [ 57 ] y Visual Studio Code . [ 58 ]

Editor para desarrolladores 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 de GUI , con nombre en clave Spark. [ 59 ] El proyecto fue renombrado posteriormente como Chrome Dev Editor. [ 60 ] Construido en Dart, contenía Spark, que funciona con Polymer. [ 61 ]

En junio de 2015, Google transfirió el proyecto CDE a GitHub como un proyecto de software libre y cesó la inversión activa en CDE. [ 62 ] El proyecto Chrome Dev Editor fue archivado el 24 de abril de 2021. [ 63 ]

DartPad

Captura de pantalla de DartPad

Para facilitar el inicio en el uso de Dart, el equipo de Dart creó DartPad a principios de 2015. Este IDE 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, autocompletado de código, documentación y edición de HTML y CSS. [ 64 ]

Herramientas de desarrollo

Dart DevTools, escrito en Dart, [ 65 ] es un conjunto de herramientas para depurar código y mejorar el rendimiento.

Aleteo

Google introdujo Flutter para el desarrollo de aplicaciones nativas. Construido con Dart, C, C++ y Skia , Flutter es un marco de interfaz de usuario de aplicaciones multiplataforma de código abierto. Antes de Flutter 2.0, los desarrolladores solo podían dirigirse a Android , iOS y la web. Flutter 2.0 lanzó soporte para macOS, Linux y Windows como una función beta. [ 66 ] Flutter 2.10 se lanzó con soporte de producción para Windows [ 67 ] y Flutter 3 lanzó soporte de producción para todas las plataformas de escritorio. [ 68 ] 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. [ 69 ] Flutter funciona con Firebase [ 70 ] 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. [ 71 ] JetBrains también admite un complemento de Flutter. [ 72 ]

Ejemplo

Un ejemplo de ¡ Hola, mundo!:

void main () { print ( '¡Hola, mundo!' ); }

Un bucle for simple : [ 73 ]

void main () { for ( int i = 1 ; i <= 10 ; i ++ ) { print ( i ); } }

Una función para calcular el enésimo número de Fibonacci :

void main () { int i = 20 ; print ( 'fibonacci( $ i ) = ${ fibonacci ( i ) } ' ); }/// Calcula el enésimo número de Fibonacci. int fibonacci ( int n ) { return n < 2 ? n : ( fibonacci ( n - 1 ) + fibonacci ( n - 2 )); }

Una clase simple:

// Importa la biblioteca matemática para acceder a la función sqrt. // Se importa 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 que se les asigna un valor. // Declarar dos variables de instancia. final num x , y ;// Un constructor, con azúcar sintáctico para establecer variables de instancia. // El constructor tiene dos parámetros obligatorios. Point ( this . x , this . y );// Un constructor con nombre y una lista de inicialización. Point . origin () : x = 0 , y = 0 ;// Un método. num distanceTo ( Point other ) { num dx = x - other . x ; num 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 magnitude => math . sqrt ( x * x + y * y );// Ejemplo de sobrecarga de operador Point operator + ( Point other ) => Point ( x + other . x , y + other . y ); // Al instanciar una clase como Point en Dart 2+, new es // una palabra opcional }// Todos los programas Dart comienzan con main(). void main () { // Instanciar objetos de punto. Point p1 = Point ( 10 , 10 ) ; print ( p1.magnitude ); Point p2 = Point.origin ( ) ; num distance = p1.distanceTo ( p2 ); print ( distance ) ; }

Influencias de otros idiomas

Dart pertenece a la familia de lenguajes ALGOL . [ 74 ] Sus miembros incluyen C, Java, C#, JavaScript y otros.

La sintaxis de cascada de métodos se adoptó de Smalltalk. [ 75 ] 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 [ 76 ] [ 77 ] y Ruby .

Dart utiliza aislados como unidad de concurrencia y seguridad al estructurar aplicaciones. [ 78 ] El concepto de aislado se basa en el modelo de actor implementado en Erlang. [ 79 ]

En un artículo de 2004, Gilad Bracha (quien era miembro del equipo Dart) y David Ungar propusieron por primera vez Mirror API para realizar reflexión controlada y segura . [ 80 ] El concepto se implementó por primera vez en Self .

Véase también

Referencias

  1. Kopec, David (30 de junio de 2014). Dardos para principiantes absolutos . Apress. pág.  56. ISBN 9781430264828Consultado el 24 de noviembre de 2015 .
  2. 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 .
  3. 1 2 "Versión 3.12.2" . 9 de junio de 2026. Consultado el 10 de junio de 2026 .
  4. 1 2 "El sistema de tipos de Dart" . dart.dev .
  5. "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 .
  6. "El equipo de Dart da la bienvenida a TypeScript" . 10 de septiembre de 2019. Consultado el 22 de febrero de 2020 .
  7. "Un poco sobre Dart - Aprende Dart: Primer paso a Flutter" . Educativo: Cursos interactivos para desarrolladores de software . Consultado el 20 de junio de 2023 .
  8. "Un recorrido por el lenguaje Dart" . dart.dev . Consultado el 9 de agosto de 2018 .
  9. "Dart, un nuevo lenguaje de programación para la programación web estructurada" , conferencia GOTO (presentación) (discurso inaugural), conferencia de Århus, 10 de octubre de 2011{{citation}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  10. Ladd, Seth. "¿Qué es Dart?" . ¿Qué es Dart? O'Reilly . Consultado el 16 de agosto de 2014 .
  11. "Dart 1.0: Un SDK estable para aplicaciones web estructuradas" . news.dartlang.org . Consultado el 8 de agosto de 2018 .
  12. Seth Ladd (10 de septiembre de 2019). "Noticias y actualizaciones de Dart" . dartlang.org .
  13. Moore, Kevin (2018-08-07). "Anuncio de Dart 2 Stable y la plataforma web de Dart" . Dart . Recuperado el 2018-08-08 .
  14. "Evolución del lenguaje Dart" . dart.dev . Consultado el 20 de junio de 2023 .
  15. "Descripción general de Dart" . dart.dev . Consultado el 12 de mayo de 2023 .
  16. "Dart 2.5 lleva la compilación nativa al escritorio" . Infoworld . 20 de noviembre de 2019. Consultado el 28 de noviembre de 2019 .
  17. "Dart 2.6 lanzado con dart2native" . SDtimes . 7 de noviembre de 2019. Consultado el 28 de noviembre de 2019 .
  18. "Evolución del lenguaje Dart" . dart.dev . Consultado el 9 de enero de 2024 .
  19. "Patrones" . dart.dev . Consultado el 12 de mayo de 2023 .
  20. "Modificadores de clase" . dart.dev .
  21. 1 2 3 Thomsen, Michael (14 de mayo de 2024). "Lanzamiento de Flutter 3.22 y Dart 3.4 en Google I/O 2024" . Flutter . Recuperado el 17 de mayo de 2024 .
  22. "Especificación del lenguaje de programación Dart, 5.ª edición" (PDF) .
  23. "Especificación del lenguaje de programación Dart, 6.ª edición (borrador)" (PDF) .
  24. "Repositorio de GitHub del lenguaje Dart" . GitHub .
  25. "TC52 - Dart" . Archivado del original el 2 de agosto de 2016. Consultado el 16 de diciembre de 2013 .
  26. 1 2 "ECMA-408" . Ecma International . Consultado el 12 de mayo de 2023 .
  27. ^ Anders Thorhauge Sandholm (10 de septiembre de 2019). "Noticias y actualizaciones de Dart" . dartlang.org .
  28. ^ Anders Thorhauge Sandholm (10 de septiembre de 2019). "Noticias y actualizaciones de Dart" . dartlang.org .
  29. "Paquetes de publisher tools.dart.dev" . Paquetes de Dart . Consultado el 12 de mayo de 2023 .
  30. "Introducción a la biblioteca dart:io" . dart.dev . Consultado el 21 de julio de 2013 .
  31. Thomsen, Michael (10 de mayo de 2023). "Anuncio de Dart 3" . Dart . Consultado el 13 de mayo de 2023 .
  32. "JavaScript como objetivo de compilación: cómo hacerlo rápido" (PDF) . Dartlang.org. Archivado del original (PDF) el 2 de julio de 2016. Consultado el 18 de agosto de 2013 .
  33. "Hacia un único compilador de Dart a JavaScript" . 10 de septiembre de 2019. Consultado el 13 de mayo de 2023 .
  34. Lawson, Loraine (2 de marzo de 2023). "Dart Frog: Un lenguaje de frontend se traslada al backend" .
  35. Moore, Kevin (2018-08-08). "Anuncio de Dart 2 Stable y la plataforma web de Dart" . Dart . Recuperado el 13 de mayo de 2023 .
  36. "dartdevc: El compilador de desarrollo de Dart" . dart.dev . Consultado el 13 de mayo de 2023 .
  37. Ladd, Seth (28 de marzo de 2013). "Noticias y actualizaciones de Dart: Por qué dart2js produce código JavaScript más rápido a partir de Dart" . News.dartlang.org . Consultado el 21 de julio de 2013 .
  38. "Rendimiento en dardos" . Dartlang.org . Archivado del original el 3 de enero de 2017. Consultado el 21 de julio de 2013 .
  39. Propuesta del GC para WebAssembly , WebAssembly, 12/05/2023 , consultado el 13/05/2023
  40. "Recolección de basura de WebAssembly (WasmGC) ahora habilitada de forma predeterminada en Chrome | Blog" . Chrome para desarrolladores . Consultado el 17 de mayo de 2024 .
  41. "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 .
  42. "1788206 - OffscreenCanvas.transferToImageBitmap genera una copia" . bugzilla.mozilla.org . Consultado el 17 de mayo de 2024 .
  43. "Notas de la versión Safari Technology Preview 167" . Documentación para desarrolladores de Apple . Consultado el 13 de mayo de 2023 .
  44. Obinna, Onuoha (2020-04-07). "¿Cómo funcionan JIT y AOT en Dart?" . Medium . Consultado el 2023-06-20 .
  45. 1 2 "La esencia de Google Dart: creación de aplicaciones, instantáneas y aislamientos" . InfoQ . Consultado el 29 de agosto de 2021 .
  46. Moore, Kevin (23 de febrero de 2018). "Cambio importante en Dart2: Eliminación del soporte web para dart:mirrors y dart:isolate" . Grupos de Google .
  47. Hracek, Filip (10 de junio de 2020). "Anuncio de seguridad nula sonora" . Dart . Consultado el 12 de mayo de 2023 .
  48. "Concurrencia en Dart" . dart.dev . Consultado el 12 de mayo de 2023 .
  49. "Google lanza el editor Dart para Windows, Mac OS X y Linux" . Archivado del original el 3 de diciembre de 2013. Consultado el 29 de noviembre de 2011 .
  50. "El plugin de Dart para Eclipse está listo para su versión preliminar" . 10 de septiembre de 2019.
  51. 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 . Recuperado el 18 de mayo de 2015 .
  52. "Repositorio de plugins de JetBrains : Dart" . Plugins.intellij.net . Consultado el 21 de julio de 2013 . 
  53. "Herramientas de Dart" . dart.dev . Consultado el 15 de noviembre de 2016 .
  54. "Dart - Paquetes - Control de paquetes" . packagecontrol.io . Consultado el 13 de mayo de 2023 .
  55. "dart - Complemento de Dart para Atom" . dart-atom.github.io . Consultado el 13 de mayo de 2023 .
  56. Trainor, Brady (15 de abril de 2023), bradyt/dart-mode , consultado el 13 de mayo de 2023
  57. Soporte de Dart para Vim , Dart, 9 de mayo de 2023 , consultado el 13 de mayo de 2023
  58. "Dart - Visual Studio Marketplace" . marketplace.visualstudio.com . Consultado el 13 de mayo de 2023 .
  59. Beaufort, François. "El equipo de cromo está trabajando activamente en la actualidad" .
  60. "Entorno de desarrollo basado en aplicaciones Chrome" . GitHub . 26 de octubre de 2021.
  61. "Spark, una aplicación de Chrome de Google, es un IDE para tu Chromebook" . 22 de noviembre de 2013.
  62. ^ Saroop, Sri. "Editor para desarrolladores de Chrome: anuncios" .
  63. "Chrome Dev Editor es una herramienta para desarrolladores que permite crear aplicaciones en la plataforma Chrome: aplicaciones web y aplicaciones de Chrome, en JavaScript o Dart. (YA NO ESTÁ EN DESARROLLO ACTIVO) - googlearchive/chromedeveditor" . 29 de julio de 2019 vía GitHub.
  64. Ladd, Seth (2015-05-06). "Presentamos DartPad: una forma sencilla de explorar el código Dart" . Noticias y actualizaciones de Dart . Consultado el 18 de mayo de 2015 .
  65. Herramientas de desarrollo de Dart y Flutter , Flutter, 12 de mayo de 2023 , consultado el 12 de mayo de 2023
  66. Sells, Chris (2021-03-03). "Novedades de Flutter 2.0" . Flutter . Consultado el 2023-05-12 .
  67. Sneath, Tim (3 de febrero de 2022). "Anuncio de Flutter para Windows" .
  68. Chisholm, Kevin (12 de mayo de 2022). "Novedades de Flutter 3" . Flutter . Consultado el 12 de mayo de 2023 .
  69. "Preguntas frecuentes" . flutter.dev . Consultado el 29 de agosto de 2021 .
  70. "Firebase" . flutter.dev . Consultado el 29 de agosto de 2021 .
  71. "Paquetes de Dart" . Paquetes de Dart . Consultado el 12 de mayo de 2023 .
  72. "Flutter - Complemento para IDEs de IntelliJ | Marketplace" . JetBrains Marketplace . Consultado el 13 de mayo de 2023 .
  73. "Bucles en Dart | Fluter World | Tutoriales de Dart y Flutter" . Archivado del original el 13 de enero de 2024. Consultado el 12 de enero de 2024 .
  74. "Familia Algol" . c2.com .
  75. "Cascadas de métodos en Dart" . 10 de septiembre de 2019. Consultado el 13 de mayo de 2023 .
  76. Bracha, Gilad; Griswold, David (septiembre de 1996). "Ampliando el lenguaje Smalltalk con Mixins" (PDF) . Taller OOPSLA . OOPSLA.
  77. Ladd, Seth (13 de noviembre de 2011). "Transcripción de Un recorrido rápido por Dart por Gilad Bracha" . Recuperado el 13 de mayo de 2023 .
  78. "La esencia de Google Dart: creación de aplicaciones, instantáneas y aislamientos" . InfoQ .
  79. "Concurrencia sin miedo: cómo Clojure, Rust, Pony, Erlang y Dart te permiten lograrlo. - Renato Athaydes" . sites.google.com . Archivado del original el 13 de mayo de 2023. Consultado el 13 de mayo de 2023 .
  80. Bracha, Gilad; Ungar, David (2004). "Mirrors: design principles for meta-level facilities of object-oriented programming languages" (PDF) . ACM SIGPLAN Notices . 39 (10). ACM: 331–344 . doi : 10.1145/1035292.1029004 . Recuperado el 15 de febrero de 2014 .

Bibliografía

  • Walrath, Kathy; Ladd, Seth (7 de marzo de 2012). ¿Qué es Dart? (1.ª  ed.). O'Reilly Media . pág.  20. ISBN 978-14493-32327.
  • Walrath, Kathy; Ladd, Seth (7 de noviembre de 2012). Dart: En funcionamiento (1.ª  ed.). O'Reilly Media . pág.  144. ISBN 978-1449330897.
  • Buckett, Chris (28 de diciembre de 2012). Dardo en acción (1.ª  ed.). Manning Publications . pág.  475. ISBN 978-1617290862.
  • Sitio web oficial
  • DartPad