16 ms·
Show HN: Skov – A visual programming environment
- anigbrowl 10y agoI wonder if this visual chema will work for more complex projects where one needs to zoom in and out of scope (eg Reaktor). But the potential is excellent and even if it doesn't take off as a hardcore programming environment it will make an excellent educational tool.
- rg2004 10y agoI think it would be hugely beneficial to allow people to code with both text and the visual interface. LabView has a graphical editor as well, for bigger projects, it would have been nice to have both formats available.
- dukoid 10y agoShameless plug -- something similar for Android: http://flowgrid.org http://flowgrid.org
- opvasger 10y agoThis might be cool for something like Elm? :) maybe even implement it in Elm with something like the Electron project?
- DonaldFisk 10y agoIt's quite impressive that you've got so far so quickly. There are some similarities to my own Full Metal Jacket (http://web.onetel.com/~hibou/fmj/FMJ.html http://web.onetel.com/~hibou/fmj/FMJ.html), which I'm still actively developing, but I suspect there are significant differences as well. So I have a few questions. (1) Is the computation model dataflow, i.e. do vertices execute asynchronously, when all their inputs have values? (2) If not, is Skov a visual equivalent of factor or some other textual language? (3) Is it statically or dynamically typed? (4) How is iteration done? (5) Is there a lambda?
- nicolas-p 10y ago(1) & (2) The code is compiled using the Factor compiler so it really works like Factor (3) Dynamically typed, type errors will be caught at runtime (4) You use "while" and "until", you can see an example in the last screenshot in the web page (5) There is a lambda. There are several examples of this on the web page, including a lambda inside a lambda
- DonaldFisk 10y agoIt's quite different then, despite the superficial similarities. (1) Full Metal Jacket is explicitly dataflow - that's how the interpreter works. How to compile it (and to what) is an open problem for me, but there are a number of options. I won't release it until I have a working compiler. (2) It's not a visual version of any existing text-based language. It is implemented in Lisp, and you can mix the two languages, but it's nothing like Lisp. (3) It's very strongly statically typed, with type inference. Type errors are prevented by the editor. Run time errors are simply unacceptable. (4) Iteration is done two different ways: using a feedback mechanism, and using emitters and collectors. (5) Lambdas, including non-local capture of values, are built into the language. More information here, including papers and tutorials: http://web.onetel.com/~hibou/fmj/FMJ.html http://web.onetel.com/~hibou/fmj/FMJ.html
- matt4077 10y agoI'm persistently getting an error "Skov is damaged and can't be opened". I extracted the folder from the disk image to my Desktop. I tried right-click->open with the same result (and Gatekeeper gives a different error anyway). I'm still on El Capitan. Could that be the problem?
- nicolas-p 10y agoI have just tried it on my older Mac that still runs El Capitan. I downloaded the image from the website, opened it and copied the folder to the desktop. I had the same error as you ("Skov is damaged and can't be opened"). Then I went to System Preferences > Security and Confidentiality and I saw that "Allow applications downloaded from" was set to "Mac App Store and identified developers". I selected "Anywhere" and tried again: it worked. So the problem was really Gatekeeper.
- stesch 10y agoShouldn't right click and "Open" work? It doesn't work and I don't know if I want to disable gatekeeper.
- nicolas-p 10y agoOther people have helped me identify the cause of the problem (quarantine attribute on the app folder). I've uploaded a new dmg image. If you try to download it again it should work this time (I hope).
- stesch 10y agoDoesn't work. Same problem. But thanks for the tip about quarantine. I removed it from the folder and app with xattr and now I can start it.
- mrcabada 10y agoNice, I like it's simplicity. I'm also working on a visual programming environment, but for building chatbots. Check it out, I bet you can get some ideas for yours. I just released the beta: https://talkbot.io https://talkbot.io How do you avoid wires overlapping other wires on more complex "flows"?
- c4n4rd 10y agoJust a quick note: 1-minute away to get your bot alive .. maybe should be "bot live"? not sure what you intention was here, but one would use "live" more likely in this context. "Use it, is free" should be "Use it, it is free" or "User it. It's free". English always requires a pronoun before the verb (with exception)
- mrcabada 10y agoThanks for feedback! Sometimes I have difficulties with english grammar, spanish is my native language.
- kowdermeister 10y agoI've watched Uncle Bob's talk today and one of the key messages were that software hasn't advanced much since the 50s: https://www.youtube.com/watch?v=ecIWPzGEbFc https://www.youtube.com/watch?v=ecIWPzGEbFc Visual programming may or may not be the next big step, but I have to applaud anyone who attempts it in an OS manner. Unreal Studio for example executed it really good and the code it generates operates in god knows how many games.
- JasonSage 10y ago"Each dot is actually a plus button in disguise." Why disguise it though? This seems like a decision to create obfuscation and make the design less-intuitive for something that is very-marginally simpler to look at.
- marknadal 10y agoAwesome, great work! Personally I'm not a fan of "visual" because it requires too much mouse work and navigating around. I tried to tackle these challenges by coming up with the concept of a "tactile-spatial" programming language, which is foremost designed for coding from a phone/on-the-go/touch-based devices. Here is an animated gif that shows integrated live testing while you code the phone in a rapid T9 or calculator style: http://giphy.com/gifs/ast-tactile-gundb-l0HlRxRHUg0WpF3kk http://giphy.com/gifs/ast-tactile-gundb-l0HlRxRHUg0WpF3kk
- dev_throw 10y agoThis is wonderful for folks who can understand concepts presented to them visually. If I had access to this as a child, I could have definitely grokked functional programming faster :) I can only think of one major improvement - add the concept of synchronicity/asynchronousness. Perhaps a visualization to illustrate difference in function completion times or race conditions will help!
- fernly 10y agoFor anyone curious about the Factor language mentioned, http://factorcode.org/ http://factorcode.org/
- tluyben2 10y agoFactor is a great for playing around with. When Slava was still pushing it , it felt more alive but it is an impressive effort still.
- sjayasinghe 10y agoThis is coming close to the way I envision we’ll be programming in the future. This goes from traditional 1-dimensional text-based programming to 2-dimensional visual programming. What I envision is a 3-dimensional augmented-reality programming language where program elements will be floating around in 3d space around us and we use an augmented-reality interface to interact with them. It’ll also enable us to do IoT programming in a very literal sense. For example if you look at an air conditioner, light switch, or some other network-connected appliance that’s in front of you in the real world then the augmented-reality display will overlay the interface exposed by that device. Let’s say that you’re looking at your phone (not the screen but the actual object). Since this is a device with a GPS chip your AR interface will indicate that you can do location-based programming with it. Then you create the equivalent of an if-condition specifying a 10m radius around your current location. if (phone is within 10m of current location) { } Now you look at a lightbulb in the room and your interface shows you that the lightbulb has a method for turning on. You draw a line from the then-branch of the if condition to the light bulb. You’ve created a program that turns on the light bulb in your room whenever you’re within 10m of this room.
- DonaldFisk 10y agoWhile in my optimistic moments I imagine we'll be programming visually in the not too distant future, and am doing all I can to bring this about, I still would prefer to turn on light bulbs by flicking switches, which simply close electrical circuits rather than call methods. For that, some might consider me a Luddite.
- sjayasinghe 10y agoRight, I'm totally with you on this. I only used the light bulb to illustrate the basic idea. This need not be limited to network-connected devices either. You can define interfaces for any object even if they aren't electronic. For example you can define the interface for a bottle as something that can be opened. You can define processes based on the interfaces of multiple objects. These process definitions can then be transferred to a robot that will then be able to interact with the real world based on those definitions.
- paloaltokid 10y agoIs the author Danish? I believe "Skov" means "forest" in Danish. And there's a picture of a tree on the page.
- nicolas-p 10y agoNo, I just looked at the translations for "tree" and "forest" in many languages and I chose the one I preferred.
- clappski 10y agoBack when I was studying for my degree, we used visual programming with an application called Max/MSP [1]. Having a quick glance at Skov it looks very similar although Max (and its open source brethren PureData [2]) probably has a much more mature ecosystem (it's been around for quite a long time). I believe you could even program extensions in Java that you could drop in if you needed to have a performant algorithm that wasn't supplied by the 'standard library'. The main difference is Max and PureData are focussed around creating audio and graphics, but they're both perfectly suitable for general-purpose programming. You could even build quite complex GUIs that were just a shim over the application logic. However, AFAIK, there wasn't a concept of 'building'/'compiling'. You had to ship your application with the full run time which required a user to make a separate install with no option for a statically built 'fat' executable. [1] https://cycling74.com/products/max/ https://cycling74.com/products/max/ [2] https://puredata.info/ https://puredata.info/
- dkersten 10y agoI used Max/MSP (well, max4live) for a while and I loved it. I especially found that not having to name stuff (variables, functions etc in other languages) quite liberating when experimentally working towards a solution. Once the design solidified, I could go back and name things nicely. I also found that while Max gets a bad rep for "literal spaghetti code" (I mean, google image search for Max/MSP and what you'll find is a mess), my code really didn't reflect this. I put it down to the fact that most users of Max are musicians and artists and not programmers who have learned basic software engineering principles like abstraction and separation of concerns and whatnot. When you compartmentalism logic into self-contained little blocks, I found the code to be super clear and actually kinda beautiful. My main complaint with Max is that its data structures are very.. lacking. As far as I remember, you couldn't even do nested lists (or any kind of references), so things like trees and such were out. You basically had their built in types and nothing else. I'd love to see a visual programming language very similar to Max/MSP but with better support for user-defined types/data structures, unit testing and other basic things lacking from Max but present in modern programming languages (or their tooling). This was a few years ago though, so perhaps some of these things are now "fixed".
- cormullion 10y agoLooks great, like a visually pleasing version of Prograph. I remember my arms starting to ache after a few days of using the mouse constantly when working with Prograph. So some keyboard shortcuts would be recommended. http://www.andescotia.com/examples/ http://www.andescotia.com/examples/
- beagle3 10y agoI applaud the attempt, and it does look nice, but my impression of visual programming environments is that they never scale, and it might be an inherent issue. I have never met a single person that, with more than 5 minutes of time, preferes the "distance computation" as given in the skov example, to the simple mathematical (x-x)2+(y-y)2 Lamdu[0], which has been discussed on HN before, is more Haskellesque, and I have also not heard from anyone that it is actually useful (beyond very early Haskell teaching). Personally, I'm at the other end (preferring the tersest practical language, K) but I understand the appeal of a visual programming language - it's just that I have never seen an example that delivers. [0] http://www.lamdu.org/ http://www.lamdu.org/
- jbpetersen 10y ago> ...my impression of visual programming environments is that they never scale, and it might be an inherent issue. Eventually they won't need to.
- beagle3 10y agoCan you elaborate?
- jbpetersen 10y agoI think visual programming calls for a dramatically different style of programming (along with the dramatically different tooling) in order to take advantage of it well. And I think part of that is working well with many small snippets of code rather than much more monolithic functions. Though I'm not sure quite what it'll take for it to make sense for people to collectively give visual programming the attention it needs to improve beyond being a mostly useless oddity.
- Fluxenein 10y agoUse a caret for your "2", you confused me with that equation.
- tluyben2 10y ago
- dainichi 10y agoOn Windows 10 Home, the Windows version gives me "This app can't run on your PC To find a version for your PC, check with the software publisher."
- nicolas-p 10y agoI don't really know Windows 10 but apparently it's available on ARM processors. The version available on the website will only work on x86-64 processors. Could that be the reason why it doesn't work?
- dainichi 10y agoDon't think so, I am running 32-bit Windows on a x64-based processor.
- grault 10y agoI'd expect to see something like this in the FAQ section: How is it possible to diff/merge Skov program soucre trees? Just asking, it's definitely possible. I used to work at a CAD company, they did some dev work to do these with building models...
- nicolas-p 10y agoIdeally, Skov would need an integrated version control system that understands the visual code. But now, all you can do is export your code to text files (Ctrl+S) and use traditional text-based diff/merge/version control tools.
- DonaldFisk 10y agoThis is the right answer, at least for visual dataflow. It should be done by diff/merge of graphs, displayed visually, not by converting it into a text-based format and using something like git, Perforce, or cvs. Dataflow can be expressed textually, but you'd have a hard time following the code.
- rcarmo 10y agoI quite like the digraph's organic look, the visuals are _nice_. But I don't think this is very practical, even if Factor itself seems interesting.
- devgutt 10y agoI don't know why I thought it would be a visual language to develop on mobile. On desktop, I don't think this is useful. I tried to teach once using Scratch, and the IDE was not the problem, but the logic and the way to think about the problem and solution.
- agumonkey 10y agoNothing Real Shake was one of my favorite program back in the early 2Ks. http://community.avid.com/cfs-filesystemfile.ashx/__key/CommunityServer.Components.PostAttachments/00.00.76.92.19/GS-1.png http://community.avid.com/cfs-filesystemfile.ashx/__key/Comm... http://deliveryimages.acm.org/10.1145/510000/509455/4743f2.jpg http://deliveryimages.acm.org/10.1145/510000/509455/4743f2.j... That was for mainly 2D image compositing (aka 2D matrices). If you dig earlier, you'll find SideFX Houdini (successor of PRISM) which isn't tied to a dimension, 1, 2, 3D, geometry. You swing between all these to create whatever you want. It's like interactive math and physics right before your eyes taken to an extreme (at least until 2010s). You can then lift parameters from the graph to "package" it as a user made function to have things like city generations https://www.youtube.com/watch?v=4QT_-Sws_nI https://www.youtube.com/watch?v=4QT_-Sws_nI Loads of fun
- Senji 10y agoYou've reinvented block diagrams, only badly.
- KenNichols 10y agoAnother powerful visual programming language is called VVVV which you can find at https://vvvv.org/ https://vvvv.org/ I think they will be shortening it to VL with the next release. I had experimented with it back in 2011 trying to make a poor man's multi touch interface for the PC using an iPad and Touch OSC. https://www.youtube.com/watch?v=DYEtkJSvZCk https://www.youtube.com/watch?v=DYEtkJSvZCk It has a pretty clean/ minimalist UI and one of the more interesting implementations of visual programming.