Programmazione drag-and-drop - volerebbe? [chiuso]

12

Tutti i linguaggi di programmazione che conosco sono scritti, cioè digitati come lunghezze di testo in un modo o nell'altro. Ma mi chiedo se ci sia un linguaggio di programmazione in cui puoi semplicemente trascinare e rilasciare l'intero programma; per ottenere un ciclo, si seleziona questa casella qui e trascinarla in quella sezione del "codice" laggiù, e così via. E se non ce n'è uno simile, volerebbe se ne fosse inventato uno?

Personalmente non credo che sarebbe una buona idea, ma mi piacerebbe sentire cosa ne pensi.

    
posta gablin 05.12.2010 - 19:18
fonte

12 risposte

23

Un sacco di outfit hanno realizzato sistemi di programmazione drag-and-drop.

National Instruments "Labview" è probabilmente il più conosciuto e il migliore.

Il problema fondamentale che incontrano è che non esiste un modo conosciuto per convertire una scimmia Flying Code in un programmatore esperto e un ingegnere. Come un esempio, non vi è alcuna differenza per una scimmia Flying Code tra un processo O (N ^ 2) o O (N ^ 3) e un processo O (N log N), il che significa che devono essere forniti con routine fisse per gli algoritmi O (N log N), che possono essere adattati ai kludge grafici veloci che costruiranno.

Il secondo problema che incontrano è che, quando si forniscono i blocchi per scopi speciali richiesti dal primo problema, l'overhead imposto spostando i dati tra i blocchi inizia a diventare costoso. Ho lavorato con un sistema molto carino come Rippen. Quando ho profilato, per vedere dove ci stavamo ferendo con un'applicazione di elaborazione dei sensori con prestazioni elevate, è stato piuttosto turbato vedere che circa il 20% del tempo della mia CPU stava andando al trasferimento dei dati. (Poiché stavo facendo l'elaborazione delle immagini LADAR, facendo un bel po 'di elaborazione in virgola mobile su ogni pixel di un'immagine in ingresso, il 20% della CPU era un MOLTO carico di dati in movimento.)

Probabilmente è possibile aggirare la parte 2 andando su un sistema basato sul compilatore: si alimenta la tua immagine e si compila con un programma eseguibile ottimizzato, ma non sono sicuro che risolverebbe davvero i problemi, e potrebbe danneggiare la natura interattiva dello strumento.

    
risposta data 05.12.2010 - 19:29
fonte
15

La risposta semplice è no.

Quando si parla di programmazione, l'input testuale supera di gran lunga le informazioni specificate rispetto alla controparte visiva.

    
risposta data 05.12.2010 - 19:35
fonte
12

LabVIEW è piuttosto grafico.

Dal sito web LabVIEW :

    
risposta data 05.12.2010 - 19:25
fonte
6

Yahoo! Pipes è probabilmente un perfetto esempio di linguaggio grafico del tipo che stai descrivendo; si trascinano e si rilasciano le primitive (tutto dalle origini dati su cui si agisce, a loop e condizionali) per produrre un flusso di informazioni attraverso il sistema.

È altamente specifico del dominio, ma questo è principalmente il punto; Pipes è incentrato sui dati, rendendo la visualizzazione (piuttosto che l'espressione) fondamentale. Allo stesso modo, ambienti tutorial come Scratch o Sprog! sottolineare la visualizzazione di ciò su cui stai lavorando come aiuto per l'apprendimento; l'efficienza dell'entrata dati è una priorità molto più bassa in quel dominio.

    
risposta data 06.12.2010 - 00:29
fonte
3

Ogni tanto qualcuno presenta un linguaggio di programmazione trascinabile o uno strumento di progettazione che sta per "mettere fine alla programmazione così come la conosciamo" e rendere tutti coloro che lo utilizzano in un programmatore.

Il motivo per cui nessuno di loro ha ancora fatto il lavoro finora e ci ha messo tutti fuori dal lavoro è che in realtà, non importa quanta funzionalità drag and drop tu crei e non importa quanto tu sia facile da usare, il semplice fatto è che la programmazione è difficile.

Le vere discipline della programmazione riguardano tanto la conoscenza di come risolvere i problemi, la comprensione di come modellare i processi e organizzare i dati per essere utilizzabili. Anche a capire cosa è possibile con un computer.

Esistono prove (se controverse) che suggeriscono ad alcune persone non si può insegnare a pensare in questo modo che mi porta a un paio di pensieri interessanti e pertinenti. Per cominciare, se non puoi pensare in questo modo, ci sono molti programmatori in giro, quindi puoi sempre assumere qualcuno per implementare un'idea se ne hai uno e pensi che valga la pena pagare. Se riesci a lavorare con la logica di programmazione abbastanza bene, potresti anche imparare un vero linguaggio piuttosto che andare in giro con un ambiente drag and drop relativamente semplice.

Sto pensando alla programmazione generale qui. La stessa cosa non si applica necessariamente in uno scenario di tipo DSL più limitato in cui il trascinamento della selezione potrebbe essere un processo molto utile per gli utenti che sono specialisti all'interno di quel dominio piuttosto che esperti IT.

    
risposta data 05.12.2010 - 22:04
fonte
3

Il miglior sistema di programmazione drag and drop che ho visto è per i robot Lego Mindstorms NXT.

Questo ti permette di fare cose incredibili, controllando alcune funzionalità abbastanza complesse.

Tuttavia ad un certo punto si rompe e devi tornare a un altro sistema.
Vedi questo articolo: link

Tuttavia, è possibile che, se questo fosse migliorato, e in cui diversi scenari fossero soddisfatti, la necessità di ciò diventerebbe sempre meno.

    
risposta data 05.12.2010 - 19:54
fonte
2

La programmazione del flusso di dati (a.k.a. programmazione basata sul flusso) può essere una specie di. Inoltre, la programmazione del flusso di dati non è completa con Turing.

La programmazione del flusso di dati è il metodo per creare applicazioni, quando si inseriscono istanze di componenti sulla scena e si collegano le loro porte, in modo da formare una rete di elaborazione dei messaggi. I componenti possono essere scelti da una libreria, hanno porte consumer (input) e producer (output), che sono pronte per connettersi con le porte di altri componenti.

Ecco un bell'esempio, dove nemmeno un mouse usava costruire un'app di synth, ma mani nude e piccoli cubetti: link

Gli articoli di Wikipedia sono un buon punto di partenza: link http://en.wikipedia.org/wiki/Dataflow_programming

La generazione del suono è un'area tipica della programmazione del flusso di dati. Esistono alcuni sistemi di synth open source: link http://alsamodular.sourceforge.net/

Se hai un Mac, potresti avere un Quartz Composer preinstallato in fabbrica: link

Ho anche creato un sistema DF con un mio amico, ma non abbiamo un editor visuale ancora , solo visualizzatore di script.

    
risposta data 05.12.2010 - 23:10
fonte
2

Il Scratch sistema di programmazione del MIT è quasi interamente drag-and-drop.

Il App Inventor di Google sembra essere simile (e attribuisce ai crediti Scratch).

Non vorrei scrivere nulla di grosso in me stesso, ma per insegnare "pensare ai programmatori", Scratch è superbo. È una vera programmazione, ma con una gratificazione visiva istantanea e i blocchi snap-together evitano gran parte del " Errore di sintassi "frustrazione che rimanda i nuovi arrivati (una visione che vedo echeggiata in questo articolo ). Oggigiorno, cercare di entusiasmare i ragazzini con una linea di comando python non lo taglia.

    
risposta data 05.12.2010 - 22:23
fonte
1

Questo esiste già, anche se forse non nella forma a cui stai pensando. Due esempi sono Simulink e Alice.

Simulink è un mezzo grafico per assemblare simulazioni di sistemi dinamici. Mentre la maggior parte dei costrutti sono più complessi di quelli che normalmente si pensa di programmare, cose come per e se le dichiarazioni possono ancora essere costruite graficamente. Simulink è un grosso problema per le applicazioni aerospaziali come il governo e molte delle grandi aziende fanno i loro progetti iniziali in Simulink e quindi applicano un qualche tipo di dimostratore di teoremi al "codice" di Simulink.

Alice, è un drag and drop, strumento di programmazione per bambini. Permette ai bambini di divertirsi a creare storie trascinando e rilasciando azioni e oggetti su una sorta di storyboard di programmazione.

    
risposta data 05.12.2010 - 23:39
fonte
1

Prograph è stato un bel linguaggio che era tutto trascinato. Inoltre, Wikipedia ha un articolo con una lista di buone dimensioni di lingue visive .

    
risposta data 07.12.2010 - 08:31
fonte
0

Ci sono alcuni linguaggi di programmazione visuale. Un sistema telefonico che ho gestito per un call center di grandi dimensioni è stato programmato usando i moduli drag and drop. Mio zio ha sviluppato un sistema Just-In-Time per la progettazione di linee di produzione completamente drag and drop e 20 anni fa.

Ho persino giocato a un gioco di combattimento robotizzato su PS1 che utilizzava un linguaggio di programmazione drag and drop.

    
risposta data 05.12.2010 - 19:55
fonte
-1

La programmazione testuale ha avuto una bella corsa di 50 anni, ma l'ingegneria del software deve spostarsi nel regno grafico per affrontare il prossimo livello di complessità. Ad esempio, l'emergere di molti processori principali e le sfide della programmazione parallela stanno spingendo il modello di threading al limite. Francamente, penso che la comunità del software sia semplicemente arrogante e pensa che ci sia qualcosa di fondamentalmente diverso e speciale nella programmazione che non sarebbe suscettibile di visualizzazione come ogni altro dominio. Come gli operatori telefonici e molte altre professioni, la giusta tecnologia di automazione consentirà agli esperti di dominio di collaborare presto in spazi di simulazione ricchi di sistemi basati sulla conoscenza. L'industria del software è attesa da tempo per un cambio di paradigma.

    
risposta data 06.12.2010 - 01:26
fonte

Leggi altre domande sui tag