Un IDE con una vista del diagramma di flusso sarebbe pratico? [chiuso]

2

Se il titolo della domanda era un po 'troppo vago o confuso, sto parlando di qualcosa che ricorda gli IDE Mindstorms NXT / EV3. Ma l'editor di codice, invece di avere dei blocchi generici prefabbricati con cui lavorare, userebbe solo delle scatole con il codice all'interno di esse che si collega ad altro codice.

Sono interessato a come questa implementazione potrebbe essere realizzata perché non conosco molte lingue che possono essere utilizzate in questo modo.

    
posta Brian Lu Happyville101 01.04.2017 - 05:31
fonte

3 risposte

3

Questo può funzionare e questa potrebbe essere una pessima idea e dipende davvero da cosa stai cercando di ottenere.

Esempio positivo: Arena è un software di simulazione che utilizza blocchi predefiniti per creare nuove simulazioni. Funziona molto bene poiché i costrutti sono simili tra due simulazioni e lavorare con uno strumento grafico è vantaggioso per quel tipo di lavoro.

Esempio negativo: ho sviluppato software utilizzando un software proprietario creato in un'organizzazione a cui ho lavorato. Puoi scrivere il tuo codice, definirlo come un blocco e quindi collegare i blocchi insieme attraverso una GUI.

Anche se questo suona bene in linea di massima c'erano molti problemi, scriverò alcuni di questi qui per farti avere la sensazione che qualcosa del genere potrebbe andare terribilmente male:

  1. Dovevi derivare da una classe base del framework in modo che il framework riconoscesse la tua classe come un blocco. Ciò ha creato una dipendenza e l'ha resa tale da non poter derivare da un'altra classe

  2. Per controllare il flusso di dati, i dati passati tra i blocchi dovevano essere un wrapper del framework. Significa che non si potevano passare gli oggetti stessi ma il loro wrapper (avevamo anche problemi di tipo sicuro in quanto questi non erano considerati nella progettazione del framework)

  3. Il framework ha creato i blocchi usando il reflection (in modo da poter collegare i dati e passarli), il che significava che il ctor doveva essere di default e non c'era un buon modo per creare una classe.

  4. I dati inviati da un blocco sono andati a tutti i blocchi ad esso collegati. Questo ha creato un problema in cui si desidera inviare alcuni dati ad alcuni blocchi, ma non ad altri.

  5. La testabilità è diventata un problema, entrambi i test di integrazione (poiché la creazione del sistema è qualcosa che il framework ha fatto) e dal momento che i blocchi erano "isolati" (il framework era quello che ha fatto il cablaggio)

  6. È stato difficile navigare nel codice (poiché il cablaggio dei blocchi è stato eseguito nella configurazione del framework)

  7. Ciò ha reso l'IOC e l'iniezione delle dipendenze un incubo poiché un'applicazione creata con un IOC ha una radice di composizione, ovvero un blocco.

  8. Cambiare il sistema in modo che potesse funzionare dopo che il supporto per la perdita di strutture era un incubo (a causa delle ragioni sopra esposte).

risposta data 01.04.2017 - 09:24
fonte
3

Se hai intenzione di creare un IDE per la presentazione di blocchi di codice per le lingue esistenti, questo non sarà molto pratico:

  • in primo luogo, i diagrammi di flusso sono più adatti ai linguaggi procedurali e alla logica. Questo non sarà così pratico per i linguaggi orientati agli oggetti.
  • Non è di grande utilità per i linguaggi strutturati in cui i blocchi di codice possono essere profondamente annidati. Ciò porterebbe a un grafico illeggibile se presentassi il nesting con trasparenza. Oppure porterebbe a una perdita di supervisione, se i blocchi nidificati sono opachi e devono essere aperti per visualizzarli all'interno.
  • quindi, quando si disegna un diagramma di flusso, è necessario molto più spazio per presentare lo stesso codice in sequenza. Ciò renderà molto ingombrante la navigazione nel tuo IDE.

Esistono tuttavia alcune applicazioni di nicchia:

  • lingue semplificate, utilizzate a scopo didattico con i bambini (ad esempio Kind of BASIC con presentazione visiva del flusso di controllo).
  • linguaggi funzionali in cui ogni funzione è una casella e il parametro che passa e il valore restituito sono collegamenti tra i blocchi. Ma ancora una volta, la complessità del mondo reale darà diagrammi complessi e illeggibili, quindi considera di nuovo uno scopo educativo più limitato.
risposta data 01.04.2017 - 11:28
fonte
0

"Un IDE con una vista del diagramma di flusso sarebbe pratico?" (Brian Lu Happyville101, 2017).

Nel 2002, i risultati di uno studio empirico mostrano che la programmazione visiva può aiutare un programmatore a sviluppare programmi per computer (Menzies, 2002). Forse ci sono studi empirici più recenti.

Personalmente utilizzo un diagramma Petri Net con un sistema per associare codici computer con elementi Petri Net per sviluppare programmi JavaScript® per applicazioni di moduli PDF che utilizzano l'API Acrobat® / JavaScript (Adobe, 2007; Chionglo, 2014; Flanagan, 2006 ). Il mio IDE è PowerPoint® + Notepad® + Word® + Acrobat + Photoshop® e lo trovo pratico. Per i diagrammi utilizzo PowerPoint, per i moduli che utilizzo Word e per i codici utilizzo Notepad (Adobe, 2012a; Microsoft, 2016; 2013a; 2013b). A volte uso Photoshop per "modificare" immagini che non ho creato (Adobe, 2012b).

Lo trovo pratico perché uso il diagramma per aiutarmi a scrivere programmi JavaScript. Dopo aver disegnato il diagramma e aggiunto "annotazioni" alle forme nel diagramma e aggiunto ulteriori "annotazioni" in un modulo, traduco manualmente le "annotazioni" in un programma JavaScript.

Qualsiasi tipo di codice computer può essere associato agli elementi di rete di Petri (Petri, 1973). In altre parole frammenti di JavaScript, COBOL, VB, assembler, ecc. Possono essere associati a elementi di rete - una o più lingue di computer alla volta. In teoria, qualsiasi tipo di informazione può essere associata a elementi di rete - testo, grafica, espressioni matematiche, codici di computer, ecc. (Petri, 1973). Quindi in teoria puoi usare gli stessi strumenti che sto usando per creare altre applicazioni che girano in altri ambienti host.

Riferimenti

Adobe Systems Incorporated. (2012a). Adobe Acrobat XI [software]. San Jose, California: Adobe Systems Incorporated.

Adobe Systems Incorporated. (2012b). Adobe Photoshop CS6 [software]. San Jose, California: Adobe Systems Incorporated.

Adobe Systems Incorporated. (2007). Adobe Acrobat SDK 8.1 JavaScript per Acrobat API Riferimento per Microsoft Windows e Mac OS. Edizione 2.0, aprile 2007. San Jose, California: Adobe Systems Incorporated. Recuperato il 3 agosto 2010 dal link .

Brian Lu Happyville101. (2017). Un IDE con una vista del diagramma di flusso sarebbe pratico? Scambio di stack di ingegneria del software. Richiamato il 2 aprile, 107 da Sarebbe un IDE con una vista del diagramma di flusso è pratica? .

Chionglo, J. F. (2014). Elementi netti e annotazioni per la programmazione del computer: calcoli e interazioni in PDF. Disponibile all'indirizzo link .

Flanagan, D. (2006). JavaScript: la guida definitiva, quinta edizione. Sebastopol, CA: O'Reilly Media Inc. Menzies, T. (2002). Problemi di valutazione per i linguaggi di programmazione visiva. In S. K. Cambiato). Manuale di ingegneria del software e amp; Ingegneria della conoscenza, vol. 2 Tecnologie emergenti. World Scientific Publishing co. Pte. Ltd., pp. 93 - 101.

Microsoft (2016). Blocco note [software]. Redmond, WA: Microsoft Corporation.

Microsoft (2013a). PowerPoint 2013 [software]. Redmond, WA: Microsoft Corporation.

Microsoft (2013b). Word 2013 [software]. Redmond, WA: Microsoft Corporation.

Petri, C. A. (1973). Concetti di Net Theory. In Basi matematiche dell'informatica: Proc. di Simposio e Summer School, Alti Tatra, 3 - 8 settembre 1973, pagine 137 - 146. Matematica. Inst. dell'acad slovacco. of Sciences, 1973.

    
risposta data 04.04.2017 - 11:06
fonte

Leggi altre domande sui tag