TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Frame-Based Editing

117 pointsby gnocchiabout 10 years ago

12 comments

glitchabout 10 years ago
Just to add to this discussion, some quasi-related links with regard to visual presentation of code:<p>• Experiments in Code Typography (McDirmid, Microsoft) <a href="http:&#x2F;&#x2F;research.microsoft.com&#x2F;en-us&#x2F;projects&#x2F;liveprogramming&#x2F;typography.aspx" rel="nofollow">http:&#x2F;&#x2F;research.microsoft.com&#x2F;en-us&#x2F;projects&#x2F;liveprogramming...</a><p>• Typography of Code (MAX 2010): <a href="https:&#x2F;&#x2F;youtu.be&#x2F;mG0lyGekGDs" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;mG0lyGekGDs</a> (alternate recording: <a href="https:&#x2F;&#x2F;youtu.be&#x2F;r2JePjrDggE" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;r2JePjrDggE</a>)<p>• Elastic tabstops: <a href="http:&#x2F;&#x2F;nickgravgaard.com&#x2F;elastic-tabstops&#x2F;" rel="nofollow">http:&#x2F;&#x2F;nickgravgaard.com&#x2F;elastic-tabstops&#x2F;</a><p>Of course, there&#x27;s also numerous projects with more significant visual representation, like Blockly, Scratch, flow programming, etc. And, of course, real-time feedback&#x2F;simulation is another arena of usefulness e.g, <a href="http:&#x2F;&#x2F;research.microsoft.com&#x2F;en-us&#x2F;people&#x2F;smcdirm&#x2F;managedtime.aspx" rel="nofollow">http:&#x2F;&#x2F;research.microsoft.com&#x2F;en-us&#x2F;people&#x2F;smcdirm&#x2F;managedti...</a>, Bret Victor&#x27;s works, etc. But, I digress.
评论 #9536240 未加载
评论 #9537950 未加载
ianbickingabout 10 years ago
The first time I heard about this approach was Boxer: <a href="http:&#x2F;&#x2F;edutechwiki.unige.ch&#x2F;en&#x2F;Boxer" rel="nofollow">http:&#x2F;&#x2F;edutechwiki.unige.ch&#x2F;en&#x2F;Boxer</a><p>Some more info here: <a href="http:&#x2F;&#x2F;lambda-the-ultimate.org&#x2F;node&#x2F;4695" rel="nofollow">http:&#x2F;&#x2F;lambda-the-ultimate.org&#x2F;node&#x2F;4695</a><p>Paper with some screenshots: <a href="http:&#x2F;&#x2F;www.soe.berkeley.edu&#x2F;boxer&#x2F;20reasons.pdf" rel="nofollow">http:&#x2F;&#x2F;www.soe.berkeley.edu&#x2F;boxer&#x2F;20reasons.pdf</a><p>And another more contemporary document: <a href="http:&#x2F;&#x2F;www.pyxisystems.com&#x2F;file&#x2F;BoxerStructures.pdf" rel="nofollow">http:&#x2F;&#x2F;www.pyxisystems.com&#x2F;file&#x2F;BoxerStructures.pdf</a><p>It goes beyond framing a bit, making things like variables concrete (they are actual boxes that contain a value). But it doesn&#x27;t do full Scratch-style pluggable programming, the statements are still text, as in &quot;Frame-Based Editing&quot;.
评论 #9535759 未加载
Animatsabout 10 years ago
This goes back a long way, to, at least, a Cornell system circa 1980. It&#x27;s usually been a teaching tool, for students having trouble with language syntax.<p>LISP used to have very structured editors. One of the features of INTERLISP was that you could select a subexpression and pull it out as a function. A call to the function, with the correct parameters, then replaced the function. Conversely, you could select a function call and have it expanded in line. These were safe operations; they would not change the program semantics.<p>That&#x27;s the key. The editor understood the semantics of the language, not just the syntax, and only performed safe transformations. This sort of thing is useful in program maintenance; when faced with a large function, you can safely break it apart into smaller ones.<p>C++ could really use a tool like that. It would be very hard to write. The tool has to perform only valid transformations, so it needs to know the language.
评论 #9537034 未加载
thegeomasterabout 10 years ago
I found writing in Lisp dialects enjoyable after having used mainly C and C++ for (too much) years partly because it was easier to reason about the syntax, of course also for the obvious paradigmatical reasons. Slurpage and barfage, splicing, enclosing and other functions that editors provide really mean you are no more editing code on a textual, but rather structural level, and what makes this effective is the beautifully simple way Lisp programs are expressed. Coupled with the concise recursive representation of algorithms, ordinary functional programming goodies (map, fold, etc.) and the powerful macros, it feels like it completely redefined &#x27;coding&#x27; for me. I wouldn&#x27;t go back if I had the luxury of having such a choice. So anyone who finds this frame-based concept attractive will probably like Lisp&#x27;s s-expression syntax and paredit mode in your favorite editor.
lorddoigabout 10 years ago
I was thinking the other day, after reading the post about the Unison project, that graphical editing could be a really neat idea - &quot;there is no syntax, you manipulate the AST directly&quot; kind of thing. Then I started to try to flesh out how such a thing might actually work and I quickly realised that it offers zero benefit over editing standard Lisp syntax with paredit. They&#x27;re equivalent.
评论 #9538311 未加载
评论 #9536334 未加载
primitivesuaveabout 10 years ago
I designed Java curriculum around Greenfoot for a few large summer camps and education programs in Silicon Valley, but have since turned away from the platform completely because of how it limits students from developing games independently on their own. When they realize how much more involved it is to write similar games in Java, they stick to the confines of Greenfoot, where flashy images and motion are easy to implement. Since then, I&#x27;ve realized it&#x27;s more useful to have students implement a game like Flappy Bird with Java&#x27;s native functions for drawing ovals and rectangles, rather than by explaining how to do it with Actors and Worlds.<p>However, it is an extremely effective way to get students <i>interested</i> in Java, and that is often the most important objective.
评论 #9536363 未加载
gknoyabout 10 years ago
I&#x27;m having trouble seeing how this is different from Lisp&#x27;s S-expressions. Is it basically paredit for blocks and logical constructs in a non-lisp context?
adriano_fabout 10 years ago
Interesting approach.<p>I agree with the premise (code is structured, and shouldn&#x27;t be handled as flat files). I&#x27;ve played with the idea of using my own card-tree editor as a LISP editor before: <a href="http:&#x2F;&#x2F;blog.gingkoapp.com&#x2F;features&#x2F;gingko-as-a-lisp-editor" rel="nofollow">http:&#x2F;&#x2F;blog.gingkoapp.com&#x2F;features&#x2F;gingko-as-a-lisp-editor</a><p>It&#x27;s an avenue I definitely want to explore.
doucheabout 10 years ago
It&#x27;s an interesting idea. I wonder if something like this could be rigged up in Visual Studio, maybe using Rosyln?
评论 #9536030 未加载
al2o3crabout 10 years ago
Looks neat. But I was bummed out by this: &quot;Frames are useful for statements, but they get unwieldy if you were to use them for expressions.&quot; I&#x27;d love to see an approach to this that works for languages that don&#x27;t have a statement &#x2F; expression distinction.
评论 #9536358 未加载
escapabout 10 years ago
See also the work of Dave Winer in using outline to edit code (e.g <a href="http:&#x2F;&#x2F;scripting.com&#x2F;stories&#x2F;2012&#x2F;01&#x2F;23&#x2F;codeNodetypesInWorldOutlin.html" rel="nofollow">http:&#x2F;&#x2F;scripting.com&#x2F;stories&#x2F;2012&#x2F;01&#x2F;23&#x2F;codeNodetypesInWorld...</a> )<p>and <a href="http:&#x2F;&#x2F;leoeditor.com&#x2F;" rel="nofollow">http:&#x2F;&#x2F;leoeditor.com&#x2F;</a> to edit python code as outline
kremlinabout 10 years ago
In my first programming module we used a language called Sense, which was a visual drag-and-drop block editor. I sometimes imagined an editor that used plain text but showed what block you were in visually.