7 ms·
A spreadsheet is really just an easily accessible, visual, functional programming environment. I think the question is not how to make spreadsheets more program
by kitd 3y ago
A spreadsheet is really just an easily accessible, visual, functional programming environment. I think the question is not how to make spreadsheets more programmable, but how to make programming IDEs as simple as spreadsheets.
- DonHopkins 3y agoFrom the discussion of Brad Myers' classic 1990 paper (originally published by the ACM CHI conference in 1986, then updated in 1990 in the Journal of Visual Languages & Computing), "Taxonomies of Visual Programming and Program Visualization" (where Brad dropped by to answer questions): https://news.ycombinator.com/item?id=26057530 https://news.ycombinator.com/item?id=26057530 https://www.cs.cmu.edu/~bam/papers/VLtax2-jvlc-1990.pdf https://www.cs.cmu.edu/~bam/papers/VLtax2-jvlc-1990.pdf https://news.ycombinator.com/item?id=26061576 https://news.ycombinator.com/item?id=26061576 >Brad Myers' paper answers the age-old argument about whether or not spreadsheets are visual programming languages! >Google sheets (and other google docs) can be programmed in "serverless" JavaScript that runs in the cloud somewhere. It's hellishly slow making sheets API calls, though. Feels like some kind of remote procedure call. (Slower than driving Excel via OLE Automation even, and that's saying something!) Then it times out on a wall clock (not cpu time) limit, and breaks if you take too long. >A CS grad student friend of mine was in a programming language class, and the instructor was lecturing about visual programming languages, and claimed that there weren't any widely used visual programming languages. (This was in the late 80's, but some people are still under the same impression.) >He raised his hand and pointed out that spreadsheets qualified as visual programming languages, and were pretty darn common. >They're quite visual and popular because of their 2D spatial nature, relative and absolute 2D addressing modes, declarative functions and constraints, visual presentation of live directly manipulatable data, fonts, text attributes, background and foreground colors, lines, patterns, etc. Some even support procedural scripting languages whose statements are written in columns of cells. >Maybe "real programmers" would have accepted spreadsheets more readily had Lotus named their product "Lotus 012"? (But then normal people would have hated it!) >I Was Wrong About Spreadsheets And I'm Sorry: https://www.reifyworks.com/writing/2017-01-25-i-was-wrong-about-spreadsheets-and-im-sorry https://www.reifyworks.com/writing/2017-01-25-i-was-wrong-ab... Excerpt from "Taxonomies of Visual Programming and Program Visualization", by Brad A Myers, 1990/3/1, Journal of Visual Languages & Computing, Volume 1, Issue 1, pages 97-123: Spreadsheets, such as those in VisiCalc or Lotus 1-2-3, were designed to help nonprogrammers manage finances. Spreadsheets incorporate programming features and can be made to do general purpose calculations [71] and therefore qualify as a very-high level Visual Programming Language. Some of the reasons that spreadsheets are so popular are (from [43] and [1]): 1. the graphics on the screen use familiar, concrete, and visible representation which directly maps to the user's natural model of the data, 2. they are nonmodal and interpretive and therefore provide immediate feedback, 3. they supply aggregate and high-level operations, 4. they avoid the notion of variables (all data is visible), 5. the inner world of computation is suppressed, 6. each cell typically has a single value throughout the computation, 7. they are nondeclarative and typeless, 8. consistency is automatically maintained, and 9. the order of evaluation (flow of control) is entirely derived from the declared cell dependencies. The first point differentiates spreadsheets from many other Visual Programming Languages including flowcharts which are graphical representations derived from textual (linear) languages. With spreadsheets, the original representation in graphical and there is no natural textual language. Action Graphics [41] uses ideas from spreadsheets to try to make it easier to program graphical animations. The 'Forms' system [43] uses a more conventional spreadsheet format, but adds sub-sheets (to provide procedural abstraction) which can have an unbounded size (to handle arbitrary parameters). A different style of system is SIL-ICON [49], which allows the user to construct 'iconic sentences' consisting of graphics arranged in a meaningful two-dimensional fashion, as shown in Figure 5. The SIL-ICON interpreter then parses the picture to determine what it means. The interpreter itself is generated from a description of the legal pictures, in the same way that conventional compilers can be generated from BNF descriptions of the grammar. 10. Conclusions Visual Programming and Program Visualization are interesting areas that show promise for improving the programming process, especially for non-programmers, but more work needs to be done. The success of spreadsheets demonstrates that if we find the appropriate paradigms, graphical techniques can revolutionize the way people interact with computers. https://news.ycombinator.com/item?id=26061279 https://news.ycombinator.com/item?id=26061279 >By the way, something I always meant to ask you, Brad: How does "C32" fit into your acronym theme of gemstones and rocks? Is it a teeny tiny 4x4x2 carbon atom block of diamond? How many carats would that be? >Brad Myers wrote several articles in that book about his work on PERIDOT and GARNET, and he also developed C32: >C32: CMU's Clever and Compelling Contribution to Computer Science in CommonLisp which is Customizable and Characterized by a Complete Coverage of Code and Contains a Cornucopia of Creative Constructs, because it Can Create Complex, Correct Constraints that are Constructed Clearly and Concretely, and Communicated using Columns of Cells, that are Constantly Calculated so they Change Continuously, and Cancel Confusion >Spreadsheet-like system that allows constraints on objects to be specified by demonstration. Intelligent cut and paste. Implemented using Garnet. http://www.cs.cmu.edu/~bam/acronyms.html http://www.cs.cmu.edu/~bam/acronyms.html
- sillysaurusx 3y agoThis is by far the most comprehensive overview of spreadsheets related to programming that I’ve ever seen. Thank you for putting this together.
- nox101 3y agoIt an very different definition of visual programming to claim a system where you don't actually see the code is "visual programming” In a text based language you see the code as text In visual programming you generally see the code as a connected graph of nodes like Unreal Blueprints In most spreadsheets you don't see the code. it's all hidden as formulas in cells and all you see is the result of each formula. I'm not saying a spreadsheet isn't a programming environment but it's hard to see it as "visual programming" to see at most one line at a time
- mcbishop 3y agoSeeing all formulas in Excel is a menu-button click away: Formulas tab > Formula Auditing group > Show Formulas button
- nox101 3y agoyes but, most of them will still be hidden given they are longer than the cells they populate. Right?
- DonHopkins 3y agoThe "Visual" in "Visual Programming Language" is about the graphical, interactive method of creating and understanding programs, rather than merely the visibility of textual or graphical code. Spreadsheets typically show the entire formula of the selected cell at the top of the window, at the full width of the window. Visual programming languages based on outliners and notebooks, like UserLand Frontier, Jupyter, or Mathematica, let you hide the code by closing the outlines or code editor views. The many lives of Frontier: https://www.youtube.com/watch?v=MlN-L88KScw https://www.youtube.com/watch?v=MlN-L88KScw Demo of Scripts menu in Little Outliner: https://www.youtube.com/watch?v=_jrDW18R-Us https://www.youtube.com/watch?v=_jrDW18R-Us Ivan Sutherland's pioneering PhD thesis "Sketchpad" didn't show code or formulas or constraints on the screen all the time either, focusing on the graphical content itself that you were creating and editing and programming with direct manipulation, demonstration, and constraints, instead of just the code. Ivan Sutherland Sketchpad Demo 1963: https://www.youtube.com/watch?v=6orsmFndx_o https://www.youtube.com/watch?v=6orsmFndx_o >This video is a TV show made about the software Ivan Sutherland developed in his 1963 thesis at MIT's Lincoln Labs, "Sketchpad, A Man-Machine Graphical Communication System", described as one of the most influential computer programs ever written. This work was seminal in Human-Computer Interaction, Graphics and Graphical User Interfaces (GUIs), Computer Aided Design (CAD), and contraint/object-oriented programming. While watching this video, remember that the TX-2 computer (built circa 1958) on which the software ran was built from discrete transistors (not integrated circuits -it was room-sized) and contained just 64K of 36-bit words (~272k bytes).