Arc es un lenguaje de programación , un dialecto del lenguaje Lisp , desarrollado por Paul Graham y Robert Morris . Es software libre y de código abierto, publicado bajo la Licencia Artística 2.0.
Historia
En 2001, Paul Graham anunció que estaba trabajando en un nuevo dialecto de Lisp llamado Arc . Desde entonces, ha escrito varios ensayos que describen las características y los objetivos del lenguaje, y algunos proyectos internos de la incubadora de empresas emergentes de Graham, llamada Y Combinator, se han escrito en Arc, en particular el foro web y el programa agregador de noticias Hacker News . Arc se escribió originalmente en Racket , [ 2 ] pero en septiembre de 2024 había sido reemplazado en gran medida en Y Combinator por una versión llamada Clarc que utiliza la implementación de Common Lisp SBCL . [ 3 ]
Motivos
En el ensayo Ser popular [ 4 ], Graham describe algunos de sus objetivos para el lenguaje. Si bien muchos de estos objetivos son muy generales ("Arc debería ser modificable", "debería haber buenas bibliotecas "), también dio algunos detalles específicos. Por ejemplo, cree que es importante que un lenguaje sea conciso:
No sería descabellado afirmar que un hacker a punto de escribir un programa decide qué lenguaje usar, al menos de forma subconsciente, en función del número total de caracteres que tendrá que teclear. Si bien los hackers no piensan así, un diseñador de lenguajes haría bien en actuar como si así fuera.
También afirmó que es mejor que un lenguaje implemente solo un pequeño número de axiomas , incluso cuando eso significa que el lenguaje puede no tener características que las grandes organizaciones desean, como la orientación a objetos (OO). Además, Graham piensa que la OO no es útil ya que sus métodos y patrones son simplemente "buen diseño", y considera que las características del lenguaje utilizadas para implementar la OO son parcialmente erróneas. [ 5 ] [ 6 ] En la presentación de Arc en 2008, Graham afirmó que uno de sus beneficios era su brevedad. [ 7 ]
Una controversia entre los programadores de Lisp gira en torno a si las expresiones s del lenguaje deberían complementarse con otras formas de sintaxis , y en qué medida . Graham opina que la sintaxis adicional debería utilizarse en situaciones donde las expresiones s puras resultarían demasiado verbosas, afirmando: «No creo que debamos oponernos rotundamente a la introducción de sintaxis en Lisp». Graham también considera que los problemas de eficiencia deberían resolverse proporcionando al programador un buen analizador de rendimiento . [ 8 ]
Recepción
Cuando se lanzó en 2008, Arc generó reacciones encontradas; algunos lo consideraron simplemente una extensión de Lisp o Scheme y no un lenguaje de programación por derecho propio. Otros aplaudieron a Arc por simplificar Lisp a lo esencial. Poco después de su lanzamiento, Arc se adaptó a JavaScript y recibió soporte de Schemescript , un entorno de desarrollo integrado (IDE) basado en Eclipse . [ 9 ]
Ejemplos
Hola mundo en Arc :
( pronunciación: "Hola, mundo" )Para ilustrar la brevedad de Arc, Graham utiliza un programa conciso. Este genera un formulario con un solo campo en la URL "/said". Al enviar el formulario, se accede a una página con un enlace que dice "haz clic aquí", que a su vez lleva a una página con el valor del campo de entrada original. [ 10 ]
( defop dijo req ( aform [onlink "haz clic aquí" ( pr "dijiste: " ( arg _ "foo" )) ] ( input "foo" ) ( submit )))Versiones
Versiones oficiales
La primera versión pública de Arc se publicó el 29 de enero de 2008, [ 11 ] implementada en Racket (entonces llamada PLT-Scheme). La publicación se presenta en forma de un archivo .tar , que contiene el código fuente de Racket para Arc. También están disponibles un tutorial [ 12 ] y un foro de discusión [ 13 ] . El foro utiliza el mismo programa que Hacker News y está escrito en Arc.
En noviembre de 2019 había dos implementaciones adicionales de Arc, una dirigida a JavaScript llamada Jilt y otra dirigida a Common Lisp llamada Clarc. [ 14 ]
Versiones no oficiales
Debido a la falta de actualizaciones en la rama oficial de Arc, algunos miembros de la comunidad de Arc iniciaron sus propios repositorios con modificaciones, extensiones y bibliotecas no oficiales. Una versión, Anarki , [ 15 ] permitía [ 16 ] que cualquiera enviara cambios al proyecto y tiene una wiki administrada por la comunidad. [ 17 ]
Rainbow [ 18 ] es una implementación de Arc en Java .
Cronología de los dialectos LISP
Referencias
- ↑ "Foro Arc: Cuéntale a Arc: Arc 3.2" . Arclanguage.org . Consultado el 7 de noviembre de 2018 .
- ↑ "Foro Arc: instalación" . Arclanguage.org . Consultado el 7 de noviembre de 2018 .
- ↑ "dang el 9 de septiembre de 2024" . Hacker News . 9 de septiembre de 2024. Archivado del original el 30 de septiembre de 2024.
- ↑ Graham, Paul (mayo de 2001). "Ser popular" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ Graham, Paul. "Por qué Arc no es especialmente orientado a objetos" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ Graham, Paul. "Preguntas frecuentes sobre Arc" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ Huber, Mathias (8 de febrero de 2008). "Arc hace que los programas sean más cortos" . Linux Magazine . Lawrence, Kansas: Linux New Media USA . Consultado el 25 de noviembre de 2018 .
- ↑ Graham, Paul (mayo de 2001). "Cinco preguntas sobre el diseño del lenguaje" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ "Pionero de la web desafía a sus críticos con el uso de Lisp" . The Register . Reino Unido . 7 de febrero de 2008.
- ↑ Graham, Paul (febrero de 2008). "Acepta el desafío del Arco" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ Graham, Paul (29 de enero de 2008). "Arc's Out" . PaulGraham.com . Consultado el 5 de diciembre de 2018 .
- ↑ "Tutorial de Arco" . Paul Graham . Consultado el 5 de diciembre de 2018 ..
- ↑ "Foro Arc" . Lenguaje Arc .
- ↑ "dang el 16 de noviembre de 2019" . Hacker News . 16 de noviembre de 2019. Archivado del original el 29 de septiembre de 2024.
- ↑ Rapp, Kenneth (kennethrapp) (14 de noviembre de 2018). "Anarki" . GitHub . Recuperado el 5 de diciembre de 2018 .
- ↑ Agaram, Kartik (akkartik) (27 de mayo de 2013). "Anuncio: anarki ya no es apto para compromiso mundial" . Arc Forum . Lenguaje Arc . Recuperado el 5 de diciembre de 2018 .
- ↑ "Arc Lang Wiki" . Sitios . Consultado el 5 de diciembre de 2018 .
- ↑ Dalton, Conan (conanite) (12 de octubre de 2010). "Rainbow" . GitHub . Recuperado el 5 de diciembre de 2018 .
- ↑ Kim, Taegyoon (kimtg) (19 de agosto de 2018). "Arcadia" . GitHub . Recuperado el 5 de diciembre de 2018 .
- ↑ Kim, Taegyoon (kimtg) (13 de agosto de 2023). "Arcpp" . GitHub . Recuperado el 13 de agosto de 2023 .
Enlaces externos
- Sitio web oficial
- Tutorial
- Anarki en GitHub
- Lenguajes de programación de tipado dinámico
- Lenguajes funcionales
- Familia de lenguajes de programación Lisp
- Software libre multiplataforma