Hacker News new | ask | show | jobs
by toby 4453 days ago
It's arguable that Excel is the most widely used "programming language" depending on your definition. If you've spent much time around certain business professionals, you'll see that they really push spreadsheets to do unexpected things to solve their problems.

I've actually wondered why there hasn't been more exploration into visual / declarative programming since it has the appeal of being very easy to get started.

6 comments

I'm not sure what you mean by more. Visual programming was explored a lot and became a popular approach for building non-standard interactive multimedia applications. I think the most famous and inspirational piece of this kind of software is Max/MSP which started as an interactive computer music environment (created by academic) and evolved into multimedia processing/generation powerhouse.

It's commercial and proprietary software but it has an open-source "cousin" called Pure Data.

Both applications were created by Miller Puckette and his creations inspired a lot of more or less similar systems.

One worth noting is vvvv. It doesn't have musical programming roots and uses some unique and really powerful concepts to make graphics programming easier. http://vvvv.org/documentation/of-spreads-and-slices

Also it's a very pragmatic system which is built and maintained by people who do really cool and sometimes complex projects. http://www.meso.net/vvvv

Thanks for pointing that out, I actually have used Max/MSP and think it's awesome, it didn't even occur to me.
You're welcome!

Oh I just remembered there was a successful kickstarter for flow-based IDE. The interesting thing here it demonstrated some interest from the general public. http://noflojs.org/

A couple of recent, interesting explorations:

Subtext (http://subtext-lang.org/) - in particular check out the video on "schematic tables," which is very immediate and direct like Excel but better for general purpose.

Some of Bret Victor's work: Inventing on principle (http://vimeo.com/36579366) Media for the Unthinkable (http://worrydream.com/MediaForThinkingTheUnthinkable/) He has a lot of examples of similar interfaces for more domains than just what Excel is good at.

Another example, although much less so, is Unity's editor- property editing and level editing are very immediate and visual even for things like behavior.

There was, called Visual Basic 6 (1998), the best RAD tool for Windows back then. It's the full version of limited VBA that comes with Office. Instead of releasing a version 7, Microsoft scarified it in favor of dotNet Framework idea.

Hundreds of thousands developers are still pissed at Microsoft in 2014 (according to Wikipedia): http://en.wikipedia.org/wiki/Visual_Basic

(I moved on to various other languages, but I still have VB in fond memories.)

And yet, despite millions (I'm being nice, probably billions) of lines of VB6 code, not one single competitor has managed to build a business out of creating a 100% Visual Basic 6 compatible system.

Looks like Microsoft was correct in their assessment of shooting VB6. Nobody using it was willing to pay money.

VB was all about COM technology. It suits perfectly to work on and extend Windows and Office applications. Migrating to another RAD tool like Delphi or varous *Basic or even VB.net is not possible without starting more or less from scratch. As no other RAD tool offer compareable compatibility and most even do not support or are COM based.
Hogwash. It's perfectly reasonable to make something that would be compatible. It's not even that hard.

There's just no money in doing so.

People used VB6 because it was easy and cheap. They're not going to suddenly turn around and start spending 7 figure sums of money. They'll just hobble along until they don't make a computer that can run VB6 and Windows XP any longer.

I moved from VB6 to Python.
> visual / declarative programming ... has the appeal of being very easy to get started

Does it, really? I spent the last 2 years building systems that ran off of workflows (as in flowcharts), and I think now that they don't make the big hurdle (capability for abstract reasoning) any easier at all.

They are fine to document and communicate things, but as input they are just flawed (except for some very very specific niches).

> building systems that ran off of workflows (as in flowcharts) > but as input they are just flawed

The flaw is to assume there is only one mental model that Visual Programming Languages should operate under: say only workflows for example (a mistake all VPLs I've seen have done). This is like assuming that there should only be object-oriented programming when there are other methodologies we use as programmers to form mental models such as declarative programming, functional programming, structured programming, etc.

It doesn't make much sense to code out mathematical equations using flow charts.

A VPL which supports multiple mental models is able to best represent behavior based on specific business domains. The right tool for the right job.

Functional VPLs have the same abstraction/scaling up problems as OO VPLs. The problem is that we (as human beings) don't know how to communicate very efficiently without our words, and visual embellishment is not directly useful.
> The problem is that we (as human beings) don't know how to communicate very efficiently without our words, and visual embellishment is not directly useful.

To me, this sounds like someone in the literary field of the arts telling an artist or musician that those fields of the arts are not directly useful.

Music and art? Those visual (and aural) embellishments are not directly useful.

There was a great HN post (https://news.ycombinator.com/item?id=7543691) on visually stunning math concepts. What you are implying is that coding out a mathematical equation as opposed to representing it using actual equations (http://i.livescience.com/images/i/000/036/119/original/minim...) is a visual embellishment that is not directly useful?

> Functional VPLs have the same abstraction/scaling up problems as OO VPLs.

This could be a problem with VPLs or it could be a sign of some root cause problem(s) with how we code today. Perhaps, there are better programming abstractions/methodologies that work equally well as words (source code) and as VPLs.

I'm all for art and music, but can you converse with it? They obviously communicate something that is quite different than "buy eggs on your way home from work." Could you communicate this to your SO without using words, using a picture or music? There is a good reason why pictionary is a challenging game. And just as well, artists and musicians are probably not very interested in communicating such utilitarian trivialities through the artifacts they create. Art is not meant to be efficiently communicative, but to influence us in other, perhaps deeper, ways.

> This could be a problem with VPLs or it could be a sign of some root cause problem(s) with how we code today. Perhaps, there are better programming abstractions/methodologies that work equally well as words (source code) and as VPLs.

The language center of our brains evolved 50-100 thousands of years ago, which eventually led us to technology and civilization (things really pick up after we discovered writing at about 10kya). The reason we use words for programming is that we are biologically evolved for that. Are you seriously suggesting that there might be a better way for us to communicate and express ourselves concisely?

> Are you seriously suggesting that there might be a better way for us to communicate and express ourselves concisely?

I've never suggested any such thing. In fact, I hinted at just the opposite when I wrote

"The flaw is to assume there is only one mental model that Visual Programming Languages should operate under: say only workflows for example (a mistake all VPLs I've seen have done)."

I wrote a blog post on VPL - Snapshots (https://news.ycombinator.com/item?id=7274674). The pattern I noticed on these VPLs (of which there are close to a hundred in that list now) is that they all attempted to use a single mental model (some are flow, some are spatial, some mathematical, etc.). None of them support different mental models (say flow based when defining business process and mathematical when defining equations).

The flaw is assuming a single mental model can be used to most efficiently describe all real world systems. Given a real world system, there may be one or more approaches used to efficiently describe that real world system in a computing device. That mental model could be textual, it could be visual or it could be both.

Taking the position that no VPL(s) exist that could better describe a particular real world system better than a textual language is standing on loose ground. Perhaps a general purpose domain agnostic VPL doesn't exist (yet), but VPLs shine for some domain specific solutions (gaming engines for example).

> Are you seriously suggesting that there might be a better way for us to communicate and express ourselves concisely?

I'm suggesting that to assume otherwise is limiting our chances of growing Information Technology as a community. I'm suggesting that if we "get it right" then our programming abstractions would be equally useful and descriptive in both a textual and visual language formats.

The widespread use of syntax highlighting in code editors is some evidence that visual embellishment is at least somehow directly useful - it does aid communicating the code to the reader.
Yeah, I probably used the wrong terms there. I was referring not to flowcharts, but the way Excel is used as a "see-it-as-you-go" functional language.
I think excel is interesting because of it's limitations, and it's short feedback loops. all it's data is ultimately tabular, and it changes visually as you work with it.

That last property is one of the reasons I think that flowcharts can work in some niches (like video and audio processing).

Excel is very often abused and made to do things it should definitely not be doing (massive files, enormously complex formulas). In many business situations, this may only lead to frustration and lost productivity, but in finance in particular the implications can be huge(1), and a faster, more stable, testable and transparent/auditable solution should definitely be found for critical applications.

[1] http://www.forbes.com/sites/timworstall/2013/02/13/microsoft...

Exactly, I'd be curious to see something that gives business analysts the interactivity of something like Excel but has ways to avoid the rigid, interlinked-sheets with ridiculous formulas that seem to be inevitable in a large model.
I have dreamed of a similar thing for a long time...

When I worked in a (science research) lab, we had a few Excel files we passed around for performing various calculations. These were great in that my non-computer-fluent boss could use them (and even contribute). There were a few input boxes to fill out which were run through some calculations, and the answer spit out.

Pros:

* Single file

* Everyone has Excel installed on desktop

* Accessible. Even if you're not an Excel wizard, you can see and edit the basic formulas.

Cons:

* Rigid grid (Any documentation, notes, etc. must fit into the grid)

* Formulas are hidden, when you might want to highlight the most critical ones

* If you want to calculate intermediate results (which you do, to prevent very long formulas that are hard to read), you've got to plop them in some cells

* No meaningful variable names, A10:A55 what?

Excel is so entrenched, it'd probably be difficult for a slight improvement to gain any traction, but it would have made my life a heck of a lot easier.

And I'm by no means an Excel wizard, so there's a good chance that some of the Cons above can already be avoided... But I still want some kind of hybrid of LabVIEW and Excel.

Have you seen or tried slate[1] btw, and does it mitigate any of the cons you mention? I've only seen the demos for it and not tried it, so I don't know if it would be useful in practice.

[1]:https://www.useslate.com/

I've not heard of slate before. Glancing at the front page, it looks very interesting. I'll definitely take a closer look, thank you.
Lotus Improv and Apple's descendant of it have a better model IMHO. At the very least making formulas a top level construct avoids countless "oops I accidentally updated that cell" errors. But the locked in value effect of Excel is enormous.
Functional Reactive Programming has some interesting parallels, though pointing to an FRP package is clearly not a complete solution.
"things it should definitely not be doing (massive files, enormously complex formulas)"

Massive files especially is something Excel "should not be doing" for superficial technical reasons that are mostly unrelated to whether the UI is a good fit. "Enormously complex formulas" do call for better editors, but again don't damn the model.

Visual programming languages have gone a long way in some niches, too; LabView (lab automation and experimental logging) and Max/MSP (audio and video synthesis) come to mind.