Todos los lenguajes de programación que conozco están escritos, es decir, escritos como fragmentos de texto de una forma u otra. Pero me pregunto si hay algún lenguaje de programación en el que pueda arrastrar y soltar todo el programa; para obtener un bucle, seleccione este cuadro aquí y arrástrelo a esa sección del "código" allí, y así sucesivamente. Y si no hay uno como este, ¿volaría si se inventara uno?
Personalmente, no creo que sea una buena idea, pero me gustaría saber lo que piensas.
programming-languages
gablin
fuente
fuente
Respuestas:
Muchos equipos han hecho sistemas de programación de arrastrar y soltar.
National Instruments "Labview" es probablemente el más conocido y el mejor.
El problema fundamental que todos encuentran es que no hay una forma conocida de convertir un Flying Code Monkey en un programador e ingeniero experto. Como UN ejemplo, no hay diferencia en un Flying Code Monkey entre un proceso O (N ^ 2) u O (N ^ 3) y un proceso O (N log N), lo que significa que deben suministrarse con rutinas enlatadas para los algoritmos O (N log N), que pueden ajustarse a la medida en los errores gráficos rápidos que construirán.
El segundo problema que todos encuentran es que, cuando se suministran los bloques de propósito especial requeridos por el primer problema, la sobrecarga impuesta al mover los datos entre los bloques comienza a ser costosa. Trabajé con un sistema muy bueno llamado Rippen. Cuando hice un perfil, para ver dónde estábamos sufriendo en una aplicación de procesamiento de sensores de alto rendimiento requerido, me molestó bastante ver que aproximadamente el 20% de mi tiempo de CPU iba a mover datos. (Como estaba haciendo el procesamiento de imágenes LADAR, haciendo una buena cantidad de procesamiento de punto flotante en cada píxel de una imagen de entrada, el 20% de la CPU era MUCHA sobrecarga de movimiento de datos).
Probablemente podría sortear la parte 2 yendo a un sistema basado en compilador: alimenta su imagen y se compila en un programa ejecutable altamente optimizado, pero no estoy seguro de que eso realmente solucione los problemas y podría doler La naturaleza interactiva de la herramienta.
fuente
La respuesta simple es no.
Cuando se trata de programación, la entrada de texto supera con creces la información especificada que su contraparte visual.
fuente
LabVIEW es bastante gráfico.
Desde el sitio web de LabVIEW :
fuente
Yahoo! Pipes es probablemente un ejemplo perfecto de un lenguaje gráfico del tipo que está describiendo; puede arrastrar y soltar primitivas (todo, desde fuentes de datos sobre las que actúa, hasta bucles y condicionales) para producir un flujo de información a través del sistema.
Es altamente específico de dominio, pero ese es principalmente el punto; Pipes está centrado en los datos, por lo que la visualización (en lugar de la expresión) es primordial. Del mismo modo, entornos de tutoriales como Scratch o Sprog! enfatice la visualización de lo que está trabajando como ayuda para el aprendizaje; la eficiencia de entrada de datos es una prioridad mucho menor en ese dominio.
fuente
De vez en cuando, a alguien se le ocurre un lenguaje de programación de arrastrar y soltar o una herramienta de diseño que "pondrá fin a la programación tal como la conocemos" y convertirá a todos los que la usan en programadores.
La razón por la que ninguno de ellos ha hecho el trabajo todavía y nos ha dejado a todos sin trabajo es que en realidad, no importa cuánta funcionalidad de arrastrar y soltar cree y no importa cuán fácil de usar sea, el simple hecho es que la programación es difícil.
Las disciplinas reales de la programación tienen que ver tanto con saber cómo resolver problemas, comprender cómo modelar procesos y organizar datos para ser utilizables. Incluso entender lo que es posible con una computadora.
Hay evidencia (si es controvertida) que sugiere que a algunas personas no se les puede enseñar a pensar de esta manera, lo que me lleva a un par de pensamientos interesantes y relevantes. Para empezar, si no puede pensar de esta manera, hay muchos programadores, por lo que siempre puede contratar a alguien para implementar una idea si tiene una y cree que vale la pena pagarla. Si puede trabajar con la lógica de programación lo suficientemente bien, también podría aprender un lenguaje real en lugar de perder el tiempo con un entorno de arrastrar y soltar relativamente simple.
Estoy pensando en la programación general aquí. Lo mismo no se aplica necesariamente en un escenario de tipo DSL más limitado en el que arrastrar y soltar podría ser un proceso realmente útil para los usuarios que son especialistas dentro de ese dominio en lugar de especialistas de TI.
fuente
El mejor sistema de programación de arrastrar y soltar que he visto es para los robots Lego Mindstorms NXT.
Esto le permite hacer cosas bastante sorprendentes, controlando algunas funciones bastante complejas.
Sin embargo, en algún momento se descompone y debe volver a otro sistema.
Ver este artículo: http://www.wired.com/geekdad/2007/11/the-best-progra/
Sin embargo, es posible que si esto mejorara y se atendieran diferentes escenarios, la necesidad de esto sería cada vez menor.
fuente
La programación de flujo de datos (también conocida como programación basada en flujo) puede ser algo así. Aunque, la programación del flujo de datos no está completa en Turing.
La programación de flujo de datos es el método de creación de aplicaciones, cuando coloca instancias de componentes en la escena y conecta sus puertos, para que formen una red de procesamiento de mensajes. Los componentes se pueden elegir desde una biblioteca, tienen puertos de consumidor (entrada) y productor (salida), que están listos para conectarse con los puertos de otros componentes.
Aquí hay un buen ejemplo, donde ni siquiera un mouse solía construir una aplicación de sintetizador, sino manos descubiertas y cubitos: http://www.youtube.com/watch?v=0h-RhyopUmc
Los artículos de Wikipedia son un buen punto de partida: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming
La generación de sonido es un área típica de la programación del flujo de datos. Existen algunos sistemas de sintetizador de código abierto: http://www.synthedit.com/ http://alsamodular.sourceforge.net/
Si tiene Mac, puede tener un Quartz Composer preinstalado de fábrica: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
También he hecho un sistema DF con un amigo mío, pero no tenemos editor visual sin embargo , sólo el visualizador guión.
fuente
El sistema de programación Scratch del MIT es casi completamente de arrastrar y soltar.
App Inventor de Google parece ser similar (y da crédito a Scratch).
Yo tampoco quisiera codificar nada grande, pero para enseñar "pensamiento de programador", Scratch es excelente. Es una programación real, pero con una gratificación visual instantánea y los bloques de unión evitan gran parte de la frustración del "error de sintaxis" que desalienta a los recién llegados (una vista que veo reflejada en este artículo ). Intentar entusiasmar a los niños pequeños con una línea de comandos de Python no es suficiente en estos días.
fuente
Esto ya existe, aunque posiblemente no en la forma en que está pensando. Dos ejemplos son Simulink y Alice.
Simulink es un medio gráfico para ensamblar simulaciones de sistemas dinámicos. Si bien la mayoría de las construcciones son más complejas de lo que normalmente se pensaría como programación, cosas como para y si las declaraciones aún se pueden construir gráficamente. Simulink es un gran problema en las aplicaciones aeroespaciales ya que el gobierno y muchas de las grandes empresas hacen sus diseños iniciales en Simulink y luego aplican algún tipo de prueba de teoremas al "código" de Simulink.
Alice, es una herramienta de entrenamiento de programación de arrastrar y soltar para niños. Permite que los niños se diviertan construyendo historias arrastrando y soltando acciones y objetos en una especie de guión gráfico de programación.
fuente
Prograph era un lenguaje genial que era todo arrastrar y soltar. Además, Wikipedia tiene un artículo con una buena lista de lenguajes visuales .
fuente
Hay bastantes lenguajes de programación visual. Un sistema telefónico que manejé para un gran centro de llamadas fue programado usando módulos de arrastrar y soltar. Mi tío desarrolló un sistema Just-In-Time para diseñar líneas de fabricación que fue completamente arrastrar y soltar y que fue hace 20 años.
Incluso he jugado un juego de combate de robots en la PS1 que usaba un lenguaje de programación de arrastrar y soltar.
fuente
La programación textual ha tenido una buena ejecución de 50 años, pero la ingeniería de software debe pasar al ámbito gráfico para lidiar con el siguiente nivel de complejidad. Por ejemplo, la aparición de muchos procesadores de núcleo y los desafíos de la programación paralela están llevando el modelo de subprocesos a su límite. Francamente, creo que la comunidad de software es arrogante al pensar que hay algo fundamentalmente diferente y especial sobre la programación que no sería susceptible de visualización como cualquier otro dominio. Al igual que los operadores telefónicos y muchas otras profesiones, la tecnología de automatización adecuada permitirá a los expertos en dominios colaborar pronto en ricos espacios de simulación de sistemas basados en el conocimiento. La industria del software está muy atrasada para un cambio de paradigma.
fuente