**Dylan** é unha linguaxe de programación funcional e orientada a obxectos.

Vén sendo unha versión depurada e simplificada de CLOS, un sistema de programación orientada a obxectos desenvolto en Common Lisp. En Dylan, a maioría das entidades (incluíndo os tipos de datos primitivos, métodos e clases) son obxectos de primeira "clase". Os programas poden ser escritos desde unha forma fortemente tipeada a unha forma debilmente tipeada. Dylan soporta herdanza múltiple, polimorfismo, palabras clave, macros, e moitas outras características avanzadas.

A meta de Dylan é ser unha linguaxe apropiada para o desenvolvemento de software comercial.

Historia
--------

Dylan foi creado a principios dos anos 90 por iniciativa de Apple Computer. Durante o desenvolvemento, intentouse usalo cos computadores de Apple Newton, pero a implementación da linguaxe non estivo listo a tempo, e Newton usou unha combinación de C e a linguaxe de programación NewtonScript (desenvolvido por Walter Smith) no seu lugar. Apple concluíu o seu desenvolvemento de Dylan en 1995.

Outros dous grupos contribuíron ao deseño da linguaxe e desenvolveron implementaciones: a compañía de software Harlequin lanzou un contorna de desenvolvemento integrado para Microsoft Windows e Carnegie Mellon University lanzou un compilador para sistemas Unix. Ambas as implementaciones son hoxe en día open source (de código aberto) e son mantidas por un grupo de voluntarios.

A linguaxe Dylan tivo como nome en clave ‘Ralph'. James Joaquin elixiu o nome Dylan por DYnamic "LANguage" (linguaxe dinámica).

Sintaxe
-------

Nun principio, Dylan usaba a sintaxe Lisp, que está baseada en expresións simbólicas:

````
(bind ((radio 5)
       (circunferencia (* 2 radio)))
  (if (> circunferencia 42)
      (format-out "¡É un círculo grande! c é %=" circunferencia)
      (format-out "É un círculo.  c é %=" circunferencia)))
````

A linguaxe foi entón cambiada para usar unha sintaxe ao estilo Algol, deseñada por Mike Kahl, a cal sería máis familiar para os programadores de C.

````
begin
 let radio = 5;
 let circunferencia = 2 * * radio;
 if (circunferencia > 42)
    format-out("¡É un círculo grande! c = %=", circunferencia);
 else
    format-out("É un círculo c é %=", circunferencia);
 end if
end
````

Do mesmo xeito que outras linguaxes de programación funcionais, a última avaliación nunha función é o valor de retorno. Isto quere dicir que o seguinte código é unha función válida, devolvendo un de dous posibles valores para unha chamada á función:

````
define method a_number(isTen :: <string>)
  if (isTen = "10")
    10;
  else
    11;
  end if;
end method;
````

Véxase tamén
------------

### Ligazóns externas

* Gwydion Maintainers *(en inglés)*.
* Tutorial de Dylan *(en inglés)*.

| * v
* c
* e
Linguaxes de programación |
| --- |
| Baixo nivel | 

|  |  |
| --- | --- |
| Primeira xeración | Código máquina |
| Segunda xeración | Assembly |

 |
| Alto nivel | 

|  |  |
| --- | --- |
| Terceira xeración | 
* A+
* ABC
* Algol
* B
* BASIC
* C
* C++
* C#
* COBOL
* CPL
* D
* E
* Fortran
* Go
* Java
* JavaScript
* Lisp
* Objective-C
* PL/1
* Pascal
* Smalltalk
* Visual Basic .NET

 |
| Cuarta xeración | 
* Clarion
* Clipper
* Clojure
* Common Lisp
* Erlang
* GNU Octave
* Haskell
* Lisp
* Lua
* Julia
* Perl
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* S
* Scilab
* Stata
* SQL

 |
| Quinta xeración | 
* Mercury
* OPS5
* Prolog

 |

 |
| 
* Ambiente de desenvolvemento
* Metaprogramación
* Programación a nivel funcional
* Programación estruturada
* Programación non estruturada
* Programación imperativa
* Programación modular
* Programación multidimensional
* Orientación a obxectos

 |

|  |  |
| --- | --- |
| Control de autoridades | 
* Wd: Q1268744
* LCCN: sh96003058

 |