NetLogo

NetLogo
Información sobre la plantilla
Parte de la familia Lenguaje de programación.
Diseñado porUri Wilensky
Lanzamiento inicial1999
Sistemas Operativos compatiblesWindows, OS y Linux
LicenciaGPL
Sitio web
https://ccl.northwestern.edu/netlogo

NetLogo.Lenguaje de programación y entorno de desarrollo integrado para la realización de modelos basados en agentes. NetLogo no es sólo un lenguaje de programación]], en realidad es un ambiente computacional que incluye como núcleo central un lenguaje de [[programación para la creación de modelos basados en una multitud de agentes, disciplina que se conoce con el nombre de Modelado Basado en Agentes o MBA (en inglés Agent Based Modeling o ABM).

Es de Código Abierto y su entorno permite la exploración de fenómenos emergentes. Viene con una extensa biblioteca de modelos que incluye modelos en una variedad de dominios, como economía, biología, física, química, psicología, dinámica de sistemas. NetLogo permite la exploración modificando interruptores, controles deslizantes, selectores, entradas y otros elementos de la interfaz. Más allá de explorar, permite crear nuevos modelos y modificar modelos existentes.

Descripción

Fue diseñado por Uri Wilensky, con el espíritu del lenguaje de programación Logo, para tener «umbral bajo y sin techo». Enseña conceptos de programación usando agentes con la forma de turtles («tortugas»), patches («parcelas»), links («enlaces») y el observer («observador»). Fue diseñado teniendo en mente a numerosas audiencias, en particular enseñar a niños en la comunidad educativa y para que expertos de diferentes campos sin conocimientos previos de programación pudieran modelizar fenómenos relacionados con su campo. Se han publicado numerosos artículos científicos usando NetLogo.

Historia

Fue creado en 1999 por Uri Wilensky y desde entonces, ha estado en continuo desarrollo, siempre bajo su dirección, en el Center for Connected Learning and Computer Based Modeling de Northwestern University. NetLogo es un producto completamente gratuito, con excelente documentación -aunque la mayoría en inglés- y una comunidad de usuarios muy activa y participativa, que incluye a educadores, investigadores de distintas áreas de las ciencias y la ingeniería y simples amantes del arte-ciencia de la programación.

Se encuentra disponible para las tres plataformas: Windows, OS y Linux. Una de sus ventajas es la gran cantidad de modelos disponibles, muchos de ellos incluidos dentro del [[software mismo o en la Web, los cuales son de gran utilidad para aprender el lenguaje. Además, su ambiente incluye varios módulos o extensiones que amplían sus posibilidades en varias direcciones.

Ambiente y lenguaje

Cuando se inicia el software , lo primero que aparece en la pantalla del computador es una ventana, la cual constituye la interfaz con el usuario y que llamaremos la interfaz . Su aspecto es el que se muestra en la figura de la izquierda. En la interfaz se puede apreciar una serie de elementos, como menús, ventanas y botones, los cuales tienen por objeto facilitar la creación de los modelos. La interfaz junto con el lenguaje de programación subyacente conforma lo que se conoce como un ambiente de programación. Los tres elementos principales del ambiente NetLogo son:

  • La interfaz: es la ventana con que el programador se comunica con NetLogo para construir los modelos y ejecutarlos.
  • El lenguaje: está constituido por las palabras y construcciones gramaticales con las que se construyen los programas de NetLogo.
  • Los agentes: Son los entes que ejecutan las acciones del programa o modelo.

Características

Sistema

  • Gratis, código fuente abierto.
  • Multiplataforma: se ejecuta en Mac, Windows, Linux.
  • Soporte de juego de caracteres internacional.

Programación

  • Totalmente programable.
  • Sintaxis accesible.
  • Lenguaje es Logo extendido a los agentes de soporte.
  • Los agentes móviles (tortugas) se mueven sobre una grilla de agentes estacionarios (parcelas).
  • Los agentes de enlace conectan las tortugas para crear redes, gráficos y agregados.
  • Gran vocabulario de primitivas incorporado (lenguaje nativo).
  • Matemáticas de punto flotante de doble precisión.
  • Valores de función de primera clase (también conocidos como procedimientos anónimos, cierres, lambda).
  • Las ejecuciones (corridas) son reproducibles multiplataforma.

Ambiente

  • Centro de comando para la interacción sobre la marcha.
  • Constructor de interfaz con botones, controles deslizantes, interruptores, selectores, monitores, cuadros de texto, notas, área de salida.
  • Pestaña de información para anotaciones de su modelo con texto e imágenes formateadas.
  • HubNet: simulaciones participativas utilizando dispositivos en red.
  • Monitores de agente para inspeccionar y controlar agentes.
  • Exportar e importar funciones (exportar datos, guardar y restaurar el estado del modelo, hacer un video).
  • BehaviorSpace, una herramienta de código abierto utilizada para recopilar datos de múltiples ejecuciones paralelas de un modelo.
  • Modelador de Sistemas Dinámicos.
  • 3D para modelar mundos 3D.
  • El modo sin cabezal permite hacer corridas por lotes desde la línea de comando.

Despliegue y Visualización

  • Parcelas de líneas, barras y dispersión.
  • El deslizador de velocidad le permite avanzar rápidamente su modelo o verlo en cámara lenta.
  • Ver un modelo en 2D o 3D.
  • Formas vectoriales escalables y giratorias.
  • Etiquetas de tortuga y parcela.

Interfaz de Programación de Aplicaciones (APIs)

  • El control de API permite incrustar NetLogo en un script o aplicación.
  • La API de extensiones permite agregar nuevos comandos y reporteros al lenguaje de NetLogo.
  • Se incluyen ejemplos de extensiones de código.

Significado de los Colores

En la pestaña Código y en cualquier otro lugar de la interfaz de usuario de NetLogo, el código del programa está codificado por colores mediante el siguiente esquema:

  • Las palabras clave son verdes.
  • Las constantes son anaranjadas.
  • Los comentarios son grises.
  • Las instrucciones primitivas son azules.
  • Los reporteros primitivos son morados.
  • Todo lo demás es negro.

Palabras Clave

Las únicas palabras clave en el idioma son globals, breed, turtles-own, to, to-report y end, más extensions y la palabra clave experimental __includes. (Los nombres de las primitivas incorporadas no se pueden sombrear o redefinir, por lo que también son un tipo de palabra clave).

Instrucciones y Reporteros

Las instrucciones toman cero o más entradas; las entradas son reporteros, que también pueden tomar cero o más entradas. No hay puntuación que separe o finalice las instrucciones; ninguna puntuación separa las entradas. Los identificadores deben estar separados por espacios en blanco o entre paréntesis o corchetes. (Entonces, por ejemplo, a + b es un identificador único, pero a (b [c] d) e contiene cinco identificadores). Todas las instrucciones son prefijos. Todos los reporteros definidos por el usuario son prefijos. La mayoría de los reporteros primitivos son prefijos, pero algunos (operadores aritméticos, operadores booleanos y algunos operadores de conjuntos de agentes como with e in-points) son infijos. Las precedencias de los operadores son las siguientes, de mayor a menor:

  1. with, at-points, in-radius, in-cone, (todas las otras primitivas y procedimientos definidos por el usuario), ^, *, /, mod, +, -, <, >, <=, >=, =, !=, and, or, xor.

Diferencias Más Profundas

  • Las variables locales de NetLogo y las entradas a los procedimientos tienen un alcance léxico, no tienen un alcance dinámico.
  • NetLogo no tiene ningún tipo de datos "palabra" (lo que Lisp llama "símbolos"). Eventualmente, podemos agregar uno, pero como rara vez se solicita, es posible que la necesidad no surja en el modelado basado en agentes.

Tiene cadenas. En la mayoría de las situaciones en las que un Logo tradicional usaría palabras, simplemente se usan cadenas en su lugar. Por ejemplo, en Logo, puede escribir [see spot run] (una lista de palabras), pero en NetLogo debe escribir "see spot run" (una cadena) o ["see" "spot" "run"] (una lista de cadenas) en su lugar.

  • La instrucción run de NetLogo funciona en procedimientos y cadenas anónimas, no en listas (ya que no tenemos ningún tipo de datos de "palabra"), y no permite la definición o redefinición de procedimientos.
  • Las estructuras de control como if y while son formas especiales, no funciones ordinarias. No se puede definir formas especiales propias, por lo que no se puede definir estructuras propias de control. (Se puede hacer algo similar usando procedimientos anónimos, pero se deben usar las primitivas ->, run y runresult, no se puede hacerlos implícitos).
  • Los procedimientos anónimos (valores de función aka o lambda) son verdaderos cierres de alcance léxico. Esta característica está disponible en NetLogo y en Lisps modernos, pero no en Logo estándar.

Véase también

Fuentes