7 ms·
I just love this. For some reason, our ways of specifying what we want a computer to do (I don't want to say 'language') remain mired the same territory we star
by glangdale 9y ago
I just love this. For some reason, our ways of specifying what we want a computer to do (I don't want to say 'language') remain mired the same territory we started in with punched cards (which I actually got to use as a 10 year old, which was fun).
I'm not sure if this particular cut is the right idea, but it's good to see experimentation. A bias I have here is that I think these ideas should be rigorously separated from the concept that some sort of WYSIWYG editor will allow non-programmers to code.
- ilaksh 9y ago> WYSIWYG...non-programmers That touches on the reason these type of ideas haven't gone further. Programming is definitionally limited to cryptic text. Anything that deviates from that, especially if it makes it non-cryptic or easy, is no longer a programming tool; it becomes a tool for lowly users. This detracts from the identity of programmers because that is tied to producing and consuming cryptic text.
- glangdale 9y agoI don't agree. I think there are two things conflated here and trying to unpick them both in the same system is a recipe for disaster. The two things are: (1) programming should be an exercise in linear-text 1970s ASCII art (arguably) and (2) programming should be easy and the hard decisions programmers have to make are all just intentional obfuscation to keep their jobs (not true). I think a system build along lines to violate assumption #1 will fail if it has the goal of making assumption #2 go away as well. The complexity of many things we manage in text will either appear somewhere else, or bubble up in even worse ways (missing functionality or a system that is broken by design). I would really like to see work that is focused on attacking assumption #1. I'm not going to try to dictate that no-one should work on #2, I just think it's been tried without much success so many times.
- nikki93 9y agoI mean programming is already ASCII art. That's why we indent as opposed to directly writing minified JS and why { and } are mirrors of each other. Self-limiting beliefs like those expressed in the comment you are responding to are more a function of what timespan the author was born in than anything else.
- ilaksh 9y agoIts not my belief. I am trying to explain the false psychological hangup that is preventing us from accepting non-textual programming environments like projectional editors. No one ever agrees with me or admits it. Thats how I know I am right after seeing dozens of amazing tools over the years and this discussion repeated over and over.
- nikki93 9y agoI see, yeah I misunderstood the levels of scoping involved in what you were saying. Cool! But yeah we gotta keep doing it until we can't, and leave a breadcrumb trail for others to continue.
- empath75 9y agoI think #2 has been achieved a few times in specific domains, it's just that people don't really think of it as programming any more (spreadsheets, for example)
- digi_owl 9y agoI found myself pondering what it is that makes spreadsheets approachable. And i suspect it is because the state is up front, and one do not have to track variable names, scopes, and so on, in one's head. Inputs are named based on what cells they are entered in, and the results are named from the cells the expression is housed in. Never mind that the scope is by default the sheet, though one can access those in other sheets with a bit extra effort. On top of this one get instant feedback when something is awry. not entirely sure if it is possible to expand something like this into a more general purpose IDE though.
- rtoal 9y agoThis is pretty much correct. Spreadsheets have two powerful ideas: (1) the show the data (one the Learnable Programming principles) and (2) they are inherently live.
- mcbits 9y agoLooking at it from the other direction, we can start with the premise that applications like Excel, Max, Nuke, and Blender are already visual DSLs. The users are "programmers" of a sort, but not "coders" because they don't type code. Then the question is whether such a DSL can be extended to general-purpose computation with any advantages over text-based coding languages.
- stuaxo 9y agoNone of these integrate very well with a programmers existing tools, if they did I am sure programmers wouldn't mind so much.
- lallysingh 9y agoHuh? Excel talks .Net, Blender's a python app. I remember manipulating an excel table in vb 20+ years ago.
- jerf 9y agoThe fastest way to cure that idea as a programmer is to pick up one of the environments that was designed to make it "easy to program" in and try to work with it for a while. Many people have tried to "make programming easy". It turns out to be a fundamentally difficult problem. Of course, if you believe that all attempts were stopped by the Programmer Complexity Mafia, feel free to try yourself. It would certainly be a lucrative product if you can solve the problem.
- flukus 9y agoOn the contrary, we've been trying to simplify programming since a programmers job was to string wires between transistors, we hit the local maximum in the 70's and every single attempt since then to simplify things or point and clickify things has been an abject failure. Every programmer will at some point try to build a system that allows users to add their own fields, rules, etc. We try to program ourselves out of a job and fail.
- yellowapple 9y agoI think it's more accurate to say that we do program ourselves out of a job. We just program ourselves right into a new one in the process.
- unityByFreedom 9y ago> Programming is definitionally limited to cryptic text. Anything that deviates from that, especially if it makes it non-cryptic or easy, is no longer a programming tool; it becomes a tool for lowly users Disagree. My first job trained non-programmers to be proficient in Ab Initio, whose first layer was visual directed graphs. It was a data processing tool, and yes you could click into the "cryptic text", but more often, due to the visual first layer that generalized basic data operations, the code beneath was quite understandable. It is still Turing complete and an efficient language, just a little more accessible and easier for non-developers to pick up.
- Buttons840 9y agoHow sane were the non-programmers creations? I've sometimes wondered, if we did have an effective way to visualize code, how would people react when they see the horrors we sometimes create - or they make us create ;) ?
- unityByFreedom 9y agoPretty sane! The first view you get is a visual representation of the architecture, which is a really nice way to get to know someone else's code. Plus, there isn't much code with this setup because it's easier to add another block to the graph than it is to add code to do the same task. Here's an example of a graph [1]. You can click into each block to see its parameters [2]. Once you click into the code, it's usually just one or a few line definitions of what each output item should be. It runs in CPU-parallel by default without any adjustments from the developer, so pretty efficient. Also it was made by the guys who started Thinking Machines in the 80s, which was the hot AI company at the time. At the time, Ab Initio was considered a Data Warehousing or ETL tool. The most conceptually similar modern tool I've seen is Luna [3], though I don't think that's considered "Data Warehousing" per-se. Anyway, I always felt it was a cool way to write software, having a visual layer on top to describe data flow. [1] http://1.bp.blogspot.com/_FwFkbVFfnGQ/S_V4l062fNI/AAAAAAAABOQ/pyA_W1NNq70/s1600/Abinitio+Partition+By+Key+1.jpg http://1.bp.blogspot.com/_FwFkbVFfnGQ/S_V4l062fNI/AAAAAAAABO... [2] http://1.bp.blogspot.com/_FwFkbVFfnGQ/S_V1P_C64TI/AAAAAAAABNQ/Js5BPCectkc/s1600/Abinitio+Join.jpg http://1.bp.blogspot.com/_FwFkbVFfnGQ/S_V1P_C64TI/AAAAAAAABN... [3] http://www.luna-lang.org/ http://www.luna-lang.org/
- masukomi 9y agoTo that point why, does no-one ever suggest that a WYSIWYG text editor (MS Word for example) is for non-writers to use? why is it totally reasonable for other professions to have tools that help them see what they're doing but so many geeks seem to cling to the idea that only non-programmers would want a tool that makes it easier to visualize the outcome of their work?
- dragonwriter 9y ago> To that point why, does no-one ever suggest that a WYSIWYG text editor (MS Word for example) is for non-writers to use? That was actually a frequent complaint (along with the, research-backed, complaint that WYSIWYG editors make people, whether pros or not, worse writers) in the 1980s through early 1990s. You still sometimes hear it from pros that hold to archaic word processors, long-hand, or typewriting for manuscripts, or the TeX crowd. It wasn't effective at stopping WYSIWYG from taking over virtually everything, but it wasn't an uncommon complaint.
- whatshisface 9y agoThe greatest horror I have ever witnessed in my life is Ladder Logic, a GUI-based language for industrial control. Lured in by the sweet scent of (supposedly) not having to learn anything new, thousands upon thousands of EEs were tricked into inflicting upon themselves one acyclic directed cuthulu-beard after another, as they amassed screenfulls and screenfulls of white boxes implementing one operation apiece. One of my colleagues was tasked with supporting such a system, and like the weary Atlas he shoulders the burden to this day. Beware, you all, the siren song of squares labled "concatenate." They will only add to your troubles.
- brabel 9y agoMost ladder logic editors allow you to see the code in structured text format. As a former PLC programmer I think you or your friend just didn't know it well... it's pretty good for what it does: control industrial machines.
- fest 9y agoI too thought that ladder logic is horrible (and for certain tasks, it is). Ladder logic predates PLCS though- essentially the same notation was used when relays were used to implement it, and EEs were fine with that.
- digi_owl 9y agoYeah, this strikes me as being at the logic gate level, not the functions and expressions level. That said, a complicating element is that PLCs can extend the basic diagram with custom blocks...
- rf15 9y agohmmm, I somewhat agree. Also probably plays on a similar line as "good programming tools have to be cli-based, and GUI is for lowly users"
- stuaxo 9y agoI think it's more a lack of integration: None of the graphical tools integrate well with the programmers existing editors, vcs or anything else very well. They need to be represented by a textual format, carefully planned so that it is easy to manipulate in an ordinary editor with understandable diffs in version control.
- joesb 9y agoProgrammers doesn't use text-based programming language because it gives them elite feeling. They use it because it is the currently best tool possible. - It's concise, clear and unambiguous. - It's easily extensible. `def foo() ...` is all you need to define new word. What do you need to do to define new block in WYSIWYG that is still meaningful to the user? - It can be diff and search. Can you meaningfully diff visual graphic? And then merge it automatically? - It's stable. Do you think source code in WYSIWYG today will be usable in the editor 5 years from now? Typing "cryptic text" is the easiest part in programming. "Thinking clearly" is the most important part, and most people are not specifying clear instruction to be made into program. It has nothing to do with programmer's identity crisis.
- majewsky 9y agoAlso, text editors are aplenty and every programmer can choose the editor they like best. With a WYSIWYG editor, you're likely locked into using that particular editor and all its design decisions. Also, when you're designing a text-based programming language, you can focus on the compiler, and users of your language can just use their existing text editor. When you're designing a language with a WYSIWYG editor, you just put the burden on yourself of also implementing that editor. Potentially on many different platforms, if you want to reach a wide audience.
- ilaksh 9y agoThings like tables and mathematical notation would make programming more elegant, but even going this far is rare.
- joesb 9y agoSimilarly, the hard part of Mathematics is the math itself. It's not because we don't have WYSIWYG math equation editor, that people can't understand advance calculus.
- Eerie 9y agoI know someone who programs in LabVIEW for 15 years, and is horrified by the idea that he could be forced to write in a different language, because visual programming is so much better (in his opinion).
- Sean1708 9y agoIf that were true we wouldn't have spent so much time, money, and effort on making programming more accessible. No, the unfortunate truth is that making a general purpose visual language is hard and that so far text is still the best we've managed to come up with.
- yellowapple 9y agoThis same argument applied back in the days of Real Programmers (TM) scoffing at the likes of Pascal. And yet, here we are.
- robotresearcher 9y agoOn the contrary, if you come up with a non-text tool that is really good, people will snap it up. Consider: The spreadsheet is a limited-domain example. Spreadsheets are great and they caught on like crazy. They were the killer app of PCs before the Internet. And they are an easy to use not-very-textual programming tool.
- naiveattack 9y agoMicrosoft Dynamics / Salesforce allow you to set up a data model without any code. Turns out you still have to be able to model things, and understand the mental model for programming which is why people end up with hell on these systems. Also, if you've gotten this far, plain text is actually a far more easy and convenient way to specify things. Further, if you need to run such a system yourself, you'd still need to deal with the rest of it, which is just hidden to users, which we're developing tools for all the time.