Des outils à l'appui direct de codage dans le Bret Victor, “Inventer sur le Principe de” parler
J'ai regardé déjà bien connu vidéo où Bret Victor, ancien d'Apple concepteur d'INTERFACE utilisateur affiche des démos avec la mise à jour immédiate de l'exécution de code après avoir changé littéralement un symbole dans le code source.
À faire de ma question clair pour ceux qui n'ont pas vu ou n'ont pas le temps de regarder la vidéo: je veux utiliser un outil comme celui d'écrire mon propre logiciel. Est l'outil qu'il faisait une démonstration disponible, ou il y en a d'autres outils similaires?
Il n'est pas question que les langages/environnements, je veux juste avoir mon code en cours d'exécution et ensuite modifier une ligne dans la source et de voir immédiatement les résultats mis à jour sans avoir à redémarrer il.
La vidéo est également disponible sur YouTube, et les points essentiels sont:
- 03:30 - 05:30 - en Direct de codage graphique de l'algorithme (de l'espace)
- 11:00 - 14:30 - Live coding certains code de jeu (espace & temps)
- 17:30 - 21:30 - en Direct de codage des variables locales (état)
- Je n'ai pas regardé la vidéo. Qu'entendez-vous par "modifier une ligne dans la source et de voir immédiatement votre code de mise à jour"?
- Dommage, je suis très intéressé dans une discussion à ce sujet 🙁
- Je remarque, que cette question est constamment upvoted par d'autres personnes s'intéressent à ce sujet. Appuyez sur le bouton "rouvrir" pour redémarrer la discussion.
- Je suis en train de travailler sur un version de Python pour Eclipse, @Sven, et j'ai vu un Javascript démo.
- Morten Jensen aussi, semble être de travailler sur quelque chose, mais je n'en ai pas vu posté n'importe où.
- Certaines questions sont, "puis-je le faire en Haskell?", "puis-je le faire en Groovy?", "Comment puis-je dessiner l'arbre en Javascript?"
- Les nouvelles vidéos sont incroyables, mais c'est totalement frustrant qu'il n'a pas de nom ou de la mention quand/comment ses "outils" peuvent être disponibles. Réf: Arrêter de Dessiner les Poissons Morts et Dessin Visualisations Dynamiques
- Il y a github.com/Peaker/lamdu ainsi. Mais je ne savais pas comment l'installer si.
- arrêt sur les outils de nom 🙂 c'est à propos de l'architecture. Voir ma réponse stackoverflow.com/questions/9448215/...
- Si vous avez plus préoccupés par la façon dont cela est possible, plutôt que d'un nom d'outil, veuillez vérifier ma réponse (stackoverflow.com/questions/9448215/...)
Vous devez vous connecter pour publier un commentaire.
Qui ne
Vous trouverez beaucoup de choses intéressantes dans la Réagir et l'ORME des communautés, et en frontend de la programmation fonctionnelle des communautés en général.
Récente de la full-stack plates-formes qui sont en quelque sorte essayer de fournir un environnement de développement de ce type sont:
Eve:
Un Andreessen Horowitz /Y-Combinator de démarrage, de 2,3 millions de dollars financé, à partir de Chris Granger, un affluent du Clojure programmeur qui a déjà construit LightTables.
Technologies: Rouille (backend), Tapuscrit (frontend) avec un home-made de mise en œuvre de Réagir concepts (ce qu'ils appellent "microReact")
L'unisson:
Pas une entreprise (encore?) mais pris en charge par un Patreon campagne, à partir de Paul Chiusano (auteur du célèbre livre "FP à la Scala").
Technologies: Haskell (backend), l'ORME (frontend).
Note: vous pouvez voir que le gars derrière ces outils sont expérimentés fonctionnelle des programmeurs. Cochez la case "comment ça marche" section.
Comment cela fonctionne -> programmation fonctionnelle
Programmes de l'état.
Pourquoi Bret Victor est capable de faire cette vidéo?
Parce que:
Un outil inspiré par ce discours, de l'ORME de la langue.
ELM les états qui:
Donc, ce que vous avez vraiment à comprendre, c'est que ce n'est pas la technologie qui est intéressant, mais le logiciel sous-jacent de l'architecture. Une fois que vous avez l'architecture, il n'est pas si difficile d'ajouter ces fonctionnalités de débogage.
Beaucoup dans le ReactJS/Flux communautés ont montré que l'on peut réaliser des choses vraiment super avec ce type d'architecture. David Nolen de Om's ClojureScript hype est probablement le déclencheur, et Dan Abramov a montré récemment que nous pouvons réaliser des choses similaires qui se compare aux Bret Victor de débogage de l'.
Moi-même j'ai fait des expériences avec des enregistrement de la session de l'utilisateur, des vidéos en JSON, qui est également une caractéristique qui est mise à profit par ce type d'architecture.
Donc, vous devez comprendre que ce qu'il réalise n'est pas fait par clever code des astuces, ou un super langage, mais vraiment bon modèles architecturaux.
Ces modèles ne sont même pas nouveaux, ils sont utilisés par les créateurs de bases de données et certains développeurs back pour un très long moment sous différents noms, y compris de commande/event sourcing, la journalisation... Si vous voulez une introduction, le Confluentes.IO blog est un très pédagogique source.
Le problème n'est même pas sur de rechargement code, il est tout au sujet de ce à voir avec l'état après le code a été rechargée.
Ce que vous avez vraiment besoin de comprendre, c'est qu'il n'y a pas de réponse unique à cette question: tout dépend de ce que vous voulez atteindre.
Par exemple dans le Bret Victor exemple avec Mario, quand il modifie certains paramètres comme la gravité, vous pouvez voir qu'il peut affecter à la fois le passé (ce qu'il a enregistrées) et le futur (les actions qu'il va faire après le changement de code). Cela signifie que l'utilisateur intention est réinterprété dans un contexte différent, la production d'une nouvelle histoire de faits (souvent appelé commande-sourcing).
Tout ce qui est vraiment intéressant pour les jeux vidéo, comme il l'a montré, il est tout à fait inutile pour de nombreuses autres applications. Prenons un exemple d'une responsabilisation de l'application, où l'impôt % pouvez augmenter ou diminuer chaque année. Pensez-vous vraiment modifier l'exercice en cours impôts % devrait avoir aucun effet sur le bilan de 10 ans? Évidemment pas, mais il peut néanmoins avoir des effets sur l'année en cours.
Aussi le Mario positions de plateau lors du réglage du paramètre de saut, l'outil ne peut pas savoir par lui-même qu'il est à l'affiche pour le Mario élément. Vous devez être explicite à ce sujet sinon il pourrait faire de même pour les nuages ou la tortue. Et est-il judicieux de faire de même pour la responsabilité de l'app?
Ce que je veux dire ici, c'est que c'est une démo fraîche, qui a été bien réalisée. Vous ne pouvez pas obtenir le même environnement de dev qui travaillent si bien hors de la boîte. Mais vous pouvez apprendre les formes architecturales qui permettent de le faire facilement, et utiliser des outils comme l'ORME /Om /Redux /Flux /ReactJS (et certains Haskell /Scala /Erlang peut être utile aussi!), qui vous aidera grandement dans la mise en œuvre correctement et de vous fournir le plus qu'ils peuvent pour chaud de rechargement.
Chris Granger est la construction de quelque chose qui s'appelle la Lumière de la Table qui semble prometteuse aller dans cette direction. D'abord il ne l'appui Clojure, mais il est prometteur à soutenir d'autres langues dans le futur.
Je crois suivantes permettent de changer une ligne dans la source (et de voir les effets immédiats):
Remarque: j'ai de l'expérience avec 1, 5-7. Pour beaucoup de ces pays, je ne pense pas que vous pouvez mettre votre curseur sur une certaine partie du code et les parties pertinentes de l'image en surbrillance.
Edit: ajout d'éléments pas. 4 (2014.10.27), 5 (2014.10.31), et 6-7 (2015.03.12).
Edit 2 (2015.06.25): à partir de http://sixrevisions.com/tools/code-demo-sites/ (la plupart de ces sont en HTML/CSS/Javascript).
J'ai construit un plug-in pour Emacs, PyCharm, et Eclipse appelé Vivre Codage en Python qui couvre deux des trois caractéristiques vous m'avez demandé. Il instantanément les mises à jour à la suite d'une tortue graphique de l'algorithme pendant que vous tapez le code.
Il affiche également l'état des variables locales à côté de chaque mission. Voici un exemple d'affichage d'un code binaire de l'algorithme de recherche:
La IPython Notebook est pas dans cette direction. Bien que, il est plus orienté vers Interactive Analyse Exploratoire de problème scientifique, je trouve que c'est très interactif et amusant pour développer avec.
Je viens aussi de découverte de Code en Direct. Après quelques essais, j'ai trouvé, il n'englobe pas tous les principes de Bret Victor philosophie. Il dispose d'un droit de l'avant de la syntaxe, mais l'INTERFACE n'est pas de développement interactif. Ils ont encore du chemin à parcourir.
Puis il y a aussi R. Depuis les nouveaux développements avec Brillant et knitr quelques innovations intéressantes ont lieu, qui est en ligne avec Bret de la philosophie.
Il y a COLT — en direct d'un outil de codage pour Flash (ActionScript3). Il permet à des méthodes de mises à jour, l'ajout de nouveaux champs/méthodes/classes, la mise à jour intégré actifs, etc au moment de l'exécution, tout en préservant l'état de l'application, tout comme dans le Bret Victor vidéo. Il y a quelques vidéos de démonstration en action, avec cette être le plus impressionnant à ce jour.
Il ne vous force pas à tout nouvel IDE, c'est un autre outil qui envoie les mises à jour incrémentielles à l'application en cours d'exécution lorsque vous cliquez sur 'enregistrer' dans votre IDE.
Prise en charge de JavaScript est également annoncé.
Code de l'orchestre gars a sorti récemment son livecoding outil appelé C. O. L. T. Il prend en charge JavaScript et ActionScript et semble très prometteur. Hautement recommandé de l'essayer.
Haskell pour Mac peut avoir un public limité, puisque c'est (a) une plate-forme spécifique — comme vous avez pu le deviner à partir du nom et (b) d'un logiciel commercial (de 20$à l'heure actuelle). Mais c'est très explicitement sur Brett Victor idées, tel que discuté dans un des premiers post de blog.
Il mérite certainement d'être ajouté à toute la liste exhaustive des environnements de programmation que de mettre en œuvre “faciles à apprendre la Programmation”.
Ces jours pour le frontend développement de nombreux outils d'offrir quelque chose qui s'appelle "hot-rechargement", en gros de faire vos modifications dans le code immédiatement visible dans le navigateur/mobile emulator. Ceci est indépendant de l'IDE/éditeur.