7

El gráfico es posiblemente la estructura de datos más versátil y valiosa de todas. Puedo almacenar variables individuales, listas, hashes, etc., y por supuesto gráficos, con él.Idiomas con soporte nativo/sintáctico/gráfico en línea?

Dado esto, ¿hay algún idioma que ofrezca sintaxis y soporte gráfico en línea/nativo? Puedo crear variables, matrices, listas y hashes en línea en Ruby, Python y Javascript, pero si quiero un gráfico, tengo que administrar la representación yo mismo con una matriz/lista, o seleccionar una biblioteca, y usar el método gráfico llamadas.

¿Por qué diablos sigue siendo así en 2010? Y, prácticamente, ¿hay algún idioma que ofrezca soporte y sintaxis en línea?

+0

Prueba nPiet: http://www.bertnase.de/npiet/ (nota: esto es una broma). –

+0

Punto interesante y válido. Sospecho que la naturaleza variada de los gráficos que las personas generalmente manipulan es la razón por la cual no están presentes en los idiomas como una función incorporada (¡o incluso como parte de una biblioteca estándar, AFAIK!). Sin embargo, hay muchos idiomas basados ​​en la reescritura de gráficos, pero esto generalmente ocurre detrás de escena, no como algo accesible para programadores. – Gian

+0

Acepto que los gráficos varían en cuanto a su naturaleza, pero no es una buena razón para no ofrecer una implementación predeterminada y sintaxis en línea. –

Respuesta

2

El problema principal de lo que está preguntando es que una solución más general no es la mejor para un problema específico. Es solo promedio para todos ellos pero no es el mejor.

Ok, puede almacenar una lista en un gráfico suponiendo su degeneración, pero ¿por qué debería hacer algo como eso? ¿Y cómo almacenarías un hashmap dentro de un gráfico? ¿Por qué necesitarías una estructura así?

Y no olvide que la implementación del gráfico debe elegirse de acuerdo con las operaciones que va a realizar en él, de lo contrario sería como usar una tabla hash para almacenar una lista de valores o una lista para almacenar una colección ordenada que un árbol. Usted sabe que puede usar una matriz de adyacencia, una lista de bordes o listas de adyacencia ... cada implementación diferente con sus propias fortalezas y debilidades.

Entonces, los gráficos pueden tener realmente muchas propiedades en comparación con otras colecciones de datos, cíclicos, acíclicos, dirigidos, no dirigidos, bipartitos, etc., y para cualquier caso específico puede implementarlos de otra manera (asumiendo alguna hipótesis) en el gráfico que necesita) así que tenerlos en sintaxis nativa sería exagerado ya que tendría que configurarlos de todos modos (y el lenguaje debería proporcionar muchas implementaciones/optimizaciones).

Si todo ya está hecho, elimine la diversión del desarrollo :) ¡Por cierto, simplemente busque un lenguaje que le permita escribir su propio gráfico DSL y vivir con él!

+0

Para ser honesto, creo que el mundo de los entornos matemáticos programables es interesante. No tengo mucha exposición a eso, pero supongo que existen, y es una idea que vale la pena explorar, en mi humilde opinión. –

+0

En Java, cuando necesito una lista, utilizo una ArrayList por defecto y cambio a LinkedList si es necesario. ¿Por qué no puedo tener a mano la implementación del gráfico "mejor ajuste general", construir en el idioma, que puedo ajustar si es necesario? Realmente no me divierto reconsiderando los detalles de implementación cada vez que hago un gráfico, es una gran pérdida de tiempo. –

+0

Normalmente, cuando necesita gráficos, los necesita para realizar cálculos intensivos, por eso deberá pensar detenidamente si utiliza una matriz o una lista de adyacencia (ya que son opuestos para algunas operaciones). Mi implementación Java es de solo 600-700 líneas de código, lo escribí una vez y todavía lo uso cuando es necesario, pero solo modela algunas propiedades ... ¿cómo sedosa sugiere que muchos entornos matemáticos tienen implementaciones de gráficos? – Jack

1

GrGen.NET (www.grgen.net) es un lenguaje de programación para la transformación gráfica además de un entorno que incluye un depurador gráfico. Puede definir su modelo de gráfico, las reglas de reescritura y control de reglas con algunos lenguajes de propósito especial y usar los ensamblados generados/código C# de cualquier lenguaje .NET que desee o del shell provisto.

Para entender por qué los lenguajes normales no ofrecen una interfaz tan conveniente/integrada a los gráficos, solo eche un vistazo a la cantidad de código escrito para ese proyecto: el compilador solo tiene varios años-hombre de trabajo. Esa es una etiqueta de precio demasiado alta para una estructura de características/datos que solo una minoría de programadores necesita, por lo que no está incluida en los lenguajes de programación de uso general.

Cuestiones relacionadas