Tous les langages de programmation que je connais sont écrits - c'est-à-dire tapés sous forme de longueurs de texte d'une manière ou d'une autre. Mais je me demande s'il y a un langage de programmation où vous pouvez simplement glisser-déposer le programme entier; pour obtenir une boucle, sélectionnez cette case ici et faites-la glisser vers cette section du "code" là-bas, et ainsi de suite. Et s'il n'y en a pas un comme ça, cela volerait-il si on était inventé?
Personnellement, je ne pense pas que ce serait une si bonne idée, mais j'aimerais savoir ce que vous en pensez.
programming-languages
gablin
la source
la source
Réponses:
Beaucoup de tenues ont fait des systèmes de programmation par glisser-déposer.
National Instruments "Labview" est probablement le plus connu et le meilleur.
Le problème fondamental qu'ils rencontrent tous est qu'il n'existe aucun moyen connu de convertir un Flying Code Monkey en programmeur et ingénieur expert. Comme UN exemple, il n'y a aucune différence pour un Flying Code Monkey entre un processus O (N ^ 2) ou O (N ^ 3) et un processus O (N log N), ce qui signifie qu'ils doivent être fournis avec des routines en conserve pour les algorithmes O (N log N), qui peuvent être adaptés sur mesure aux capacités graphiques rapides qu'ils vont créer.
Le deuxième problème qu'ils rencontrent tous est que, lorsque vous fournissez les blocs spéciaux requis par le premier problème, les frais généraux imposés par le déplacement des données entre les blocs commencent à coûter cher. J'ai travaillé avec un très bon système de ce type appelé Rippen. Lorsque j'ai fait le profil, pour voir où nous en étions dans une application de traitement de capteur à hautes performances, j'ai été plutôt troublé de voir qu'environ 20% de mon temps CPU était consacré au déplacement de données. (Puisque je faisais du traitement d'image LADAR, faisant un bon morceau de traitement en virgule flottante sur chaque pixel d'une image d'entrée, 20% du CPU était BEAUCOUP de surcharge de déplacement de données.)
Vous pourriez probablement contourner la partie 2 en allant vers un système basé sur un compilateur: vous lui donnez votre image, et il se compile dans un programme exécutable fortement optimisé, mais je ne suis pas certain que cela réglerait vraiment les problèmes, et cela pourrait nuire la nature interactive de l'outil.
la source
La réponse simple est non.
En ce qui concerne la programmation, la saisie textuelle dépasse de loin en termes d'informations spécifiées sa contrepartie visuelle.
la source
LabVIEW est assez graphique.
Depuis le site Web de LabVIEW :
la source
Yahoo! Pipes est probablement un parfait exemple d'un langage graphique du type que vous décrivez; vous faites glisser des primitives (tout, depuis les sources de données sur lesquelles vous agissez, jusqu'aux boucles et conditions) pour produire un flux d'informations à travers le système.
C'est très spécifique au domaine, mais c'est surtout le point; Les tuyaux sont centrés sur les données, ce qui rend la visualisation (plutôt que l'expression) primordiale. De même, des environnements de tutoriels comme Scratch ou Sprog! mettre l'accent sur la visualisation de ce sur quoi vous travaillez comme outil d'apprentissage; l'efficacité de la saisie des données est une priorité beaucoup plus faible dans ce domaine.
la source
De temps en temps, quelqu'un propose un langage de programmation par glisser-déposer ou un outil de conception qui va "mettre fin à la programmation telle que nous la connaissons" et faire de tous ceux qui l'utilisent un programmeur.
La raison pour laquelle aucun d'entre eux n'a encore fait le travail et nous a tous mis au chômage, c'est qu'en fait, peu importe la quantité de fonctionnalités de glisser-déposer que vous créez et peu importe la facilité d'utilisation que vous en faites, le simple fait est que la programmation est difficile.
Les véritables disciplines de la programmation consistent tout autant à savoir comment résoudre les problèmes, à comprendre comment modéliser les processus et organiser les données pour qu'elles soient utilisables. Même comprendre ce qui est possible avec un ordinateur.
Il existe des preuves (si elles sont controversées) suggérant que certaines personnes ne peuvent pas apprendre à penser de cette façon, ce qui m'amène à quelques réflexions intéressantes et pertinentes. Pour commencer, si vous ne pouvez pas penser de cette façon, il y a beaucoup de programmeurs, vous pouvez donc toujours embaucher quelqu'un pour mettre en œuvre une idée si vous en avez une et vous pensez que cela vaut la peine de payer. Si vous pouvez assez bien travailler avec la logique de programmation, vous pourriez aussi bien apprendre un vrai langage plutôt que de jouer avec un environnement de glisser-déposer relativement simple.
Je pense à la programmation générale ici. La même chose ne s'applique pas nécessairement dans un scénario de type DSL plus limité où le glisser-déposer peut être un utilisateur de processus vraiment utile qui est spécialiste dans ce domaine plutôt que spécialiste informatique.
la source
Le meilleur système de programmation par glisser-déposer que j'ai vu est pour les robots Lego Mindstorms NXT.
Cela vous permet de faire des choses assez étonnantes, en contrôlant des fonctionnalités assez complexes.
Cependant, à un moment donné, il tombe en panne et vous devez revenir à un autre système.
Voir cet article: http://www.wired.com/geekdad/2007/11/the-best-progra/
Il est possible, cependant, que si cela était amélioré et que différents scénarios soient pris en compte, la nécessité de cela deviendrait de moins en moins.
la source
La programmation de flux de données (ou programmation basée sur les flux) peut être en quelque sorte. Bien que la programmation du flux de données ne soit pas complète de Turing.
La programmation de flux de données est la méthode de création d'applications, lorsque vous placez des instances de composants sur la scène et connectez leurs ports, afin qu'ils forment un réseau de traitement des messages. Les composants peuvent être choisis dans une bibliothèque, ils ont des ports consommateurs (entrée) et producteurs (sortie), qui sont prêts à se connecter avec les ports d'autres composants.
Voici un bel exemple, où même pas une souris utilisée pour construire une application de synthé, mais à mains nues et de petits cubes: http://www.youtube.com/watch?v=0h-RhyopUmc
Les articles de Wikipedia sont un bon point de départ: http://en.wikipedia.org/wiki/Flow-based_programming http://en.wikipedia.org/wiki/Dataflow_programming
La génération de sons est un domaine typique de la programmation de flux de données. Il existe des systèmes de synthé open source: http://www.synthedit.com/ http://alsamodular.sourceforge.net/
Si vous avez un Mac, vous pouvez avoir un Quartz Composer préinstallé en usine: http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html
J'ai également créé un système DF avec un de mes amis, mais nous n'avons pas encore d' éditeur visuel , seulement un visualiseur de script.
la source
Le système de programmation Scratch du MIT est presque entièrement glisser-déposer.
L' inventeur d'applications de Google semble similaire (et crédite Scratch).
Je ne voudrais pas coder quoi que ce soit de gros dans moi-même, mais pour enseigner la "pensée programmeur", Scratch est superbe. C'est de la vraie programmation, mais avec une gratification visuelle instantanée et les blocs à assembler évitent une grande partie de la frustration des "erreurs de syntaxe" qui rebute les nouveaux arrivants (une vue que je vois en écho dans cet article ). Essayer d'enthousiasmer les jeunes enfants avec une ligne de commande en python ne suffit pas de nos jours.
la source
Cela existe déjà, mais peut-être pas sous la forme à laquelle vous pensez. Simulink et Alice en sont deux exemples.
Simulink est un moyen graphique d'assembler des simulations de systèmes dynamiques. Alors que la plupart des constructions sont plus complexes que ce que vous pensez habituellement de la programmation, des choses comme for et if peuvent toujours être construites graphiquement. Simulink est un peu un gros problème dans les applications aérospatiales car le gouvernement et de nombreuses grandes entreprises font leurs conceptions initiales dans Simulink et appliquent ensuite un type de prouveur de théorème au "code" Simulink.
Alice, est un outil de formation de programmation par glisser-déposer pour les enfants. Il permet aux enfants de s'amuser à construire des histoires en faisant glisser et en déposant des actions et des objets sur une sorte de story-board de programmation.
la source
Prograph était un langage cool qui était tout glisser-déposer. De plus, Wikipédia a un article avec une bonne liste de langages visuels .
la source
Il existe plusieurs langages de programmation visuels. Un système téléphonique que j'ai géré pour un grand centre d'appels a été programmé à l'aide de modules de glisser-déposer. Mon oncle a développé un système Just-In-Time pour la conception de lignes de fabrication entièrement glisser-déposer, il y a 20 ans.
J'ai même joué à un jeu de combat de robots sur PS1 qui utilisait un langage de programmation glisser-déposer.
la source
La programmation textuelle a connu une belle période de 50 ans, mais le génie logiciel doit entrer dans le domaine graphique pour faire face au prochain niveau de complexité. Par exemple, l'émergence de nombreux processeurs de noyau et les défis de la programmation parallèle poussent le modèle de threading à sa limite. Franchement, je pense que la communauté des logiciels est juste arrogante en pensant qu'il y a quelque chose de fondamentalement différent et spécial dans la programmation qui ne se prêterait pas à la visualisation comme tous les autres domaines. Comme les opérateurs téléphoniques et de nombreuses autres professions, la bonne technologie d'automatisation permettra aux experts du domaine de collaborer prochainement dans de riches espaces de simulation de systèmes basés sur la connaissance. L'industrie du logiciel attend depuis longtemps un changement de paradigme.
la source