Hacker News new | ask | show | jobs
by ashleyn 3010 days ago
HyperCard together with Qbasic both fell into that forgotten realm of democratising programming; making it so that even your aunt could write a simple program herself. A lot of people ended up learning programming because of these simple languages/tools, and I used to love playing with their projects I'd download from Geocities and the like.

It's a bit of a shame the industry gave up on the idea, and abandoned these syntactically-sugared programming languages. HyperTalk reads just like English; it very much seemed like the next generation of the niche BASIC aimed to fill. Because computers of that era typically opened right into a development environment (e.g. a simple BASIC interpreter), there was even brief discussion of HyperCard potentially replacing Finder as the default Mac OS environment.

7 comments

People have written a lot about programming languages that try to use natural-language syntax, but one idea that I remember is that both HyperTalk and AppleScript are a lot easier to read than to write, because you can relatively easily use your knowledge of English to understand what the code is doing, but you can't easily use your knowledge of English to figure out how to phrase instructions in a way that the interpreter will understand. And your own praise of HyperTalk mentions its being easy to read, not easy to write. :-)

One way to experiment with this distinction might be to look at the Wikipedia page

https://en.wikipedia.org/wiki/HyperTalk#Fundamental_operatio...

and read through the examples and see if you follow them. I'm sure you will.

Now, close the page and try to write a valid loop, and a valid user interaction, and a valid test for the existence of a file. I don't think you're likely to succeed unless you've actually programmed in HyperTalk recently.

But I could readily imagine that many people can learn HyperTalk more quickly or comfortably than a language without the natural language elements. Maybe part of that is the low psychological barrier to using a system that looks like it makes sense semantically, compared to learning special meanings for lots of symbols.

Inform 7 ( http://inform7.com/ ) is a modern programming language with "English like" syntax. And as someone who's tried to work from their manual (it has only "shallow end" and "learn by example" formulations) when you actually want to do the thing, one particular English-like construction will compile and a very similar English-like construction will be rejected and it's awfully hard, except by repetition, to learn which one will work.
I find well thought-out formalized grammars easier to follow in either direction. In particular, I find Python striking a good balance between reading almost like English for the most part, and being compact and non-ambiguous.
Like many commenters here, I loved HyperCard and used it quite a bit in middle through high school (and even college years). For me, it never was the syntactic-sugar-laden language, but the entire environment: it was really easy to create an interactive, custom GUI to do more or less what one wants. And since every Mac shipped with HyperCard, a stack can run anywhere (unless it depended on specific extensions).
Considering code is read more frequently than it is written [0] [1], seems like a trade-off that could be helpful... I wonder if autocomplete to a language like this would help a lot. There was nothing like that for HyperCard.

[0] https://blogs.msdn.microsoft.com/oldnewthing/20070406-00/?p=... [1] https://blog.codinghorror.com/when-understanding-means-rewri...

The way "normal" people tend to enter into programming is by starting with some example code and modifying it to their purpose. In this sort of scenario readability is very much a benefit.
As opposed to software developers, who take some existing application code and refactor it to their purpose.
I would expect a software developer to be able to write code from scratch (when necessary), but then again I'm old fashioned like that.
not when you're in a language you've never used before...
> forgotten realm of democratising programming

This phrase reminded me of a thought I once had, that the removal of the compiler as a first-class application in user-centric OS distributions was an imperial gesture to enforce class hierarchies among end-users: you were either a user, incapable of making your computer do new things, or you are a developer, who must be convinced to make computers do new things using rules and policies (and tools) that were forced upon you by the Powers That Be™.

I think one thing we should be demanding, as computer power users/developers, is the return of software development tools to the forefront of the computing experience. It is unacceptable that computers are being shipped today without the means of making them productive, other than participation in a walled garden.

I know its a tall order, but I'd love to see an OS vendor make a serious point of making their users better developers, not worse.

No computers actually come without the means of making them productive; they all have a JS engine. It's how I learned programming, almost twenty years ago - IE5 on a public computer.

That said, I do agree that programming should be made more accessible. Bret Victor and others seem to be exploring new ways of doing that, besides making computing more physical:

https://dynamicland.org/

https://news.ycombinator.com/item?id=15962730

There are many who think that JS is not an acceptable means of developing applications for computers. It may be effective, but not acceptable.

(Disclaimer: I'm one of them, so this argument doesn't really appeal to me personally. I'd rather there were tools that don't require me to have a lobotomy to use them..)

Those people are universally wrong
Rubbish. Javascript is far from acceptable as a first language to learn and use.
Nah. Any language is acceptable as a first language. I started writing BASIC. Gatekeeping is for losers.
If there was a standard IDE for using js, HTML and CSS to build desktop apps and games that shipped with major OSs I bet it would get used a ton. Click icon, start new template project. Any more steps required to get started and it will be ignored.
I suspect that there were a number of things going on:

- The bundled development tools were usually still there, but they took a form that those of use who grew up with computers in the 1980s were less likely to acknowledge. Consider how web development took off soon after more traditional languages were removed.

- People are more interested in programming when new technologies appear. There are more itches to scratch, opportunities available, and the barrier to entry is lower.

- Programming simply became more complex. It used to take one line of code to do something. Between the OS and languages requiring more (initialization, boilerplate code, etc.), programming became less appealing. While tools like HyperCard addressed some of this, the distinction between "real" programs and these environments was quite clear.

All of this is driven more by the end user than by industry. And if end users are less keen on programming, why should businesses make the investment in creating tools for them?

> - Programming simply became more complex. It used to take one line of code to do something. Between the OS and languages requiring more (initialization, boilerplate code, etc.)

It's important to acknowledge that we have done this to ourselves. The amount of job-justifying unnecessary complexity found in today's programming environments make me wonder how the field hasn't yet toppled over itself

> And if end users are less keen on programming, why should businesses make the investment in creating tools for them?

Alas, I feel that if we don't make it easy for users to become developers, they stay users.

Its not the other way around - clearly there is a market for developers/users. Its just that I think the dividing line is completely arbitrary, and enforced by marketing decisions - not technical or ethical ones.

The culture behind this went away with the advent of mobile. Now that tech is mainstream the majority of users see their computing devices as appliances, not tools.

I personally think this tools vs. appliances distinction explains a lot about tech culture nowadays and I would love it with we nerds could collectively exile the computing "mainstream" to mobile so we power users can have our tools (computers) back.

Microsoft, Google, and Apple et al are muddying the waters, by trying to shove mobile square pegs into desktop's round holes

I'd like to see development democratised as well, but I think the reason for the change is that not expecting users to be developers made software easier.

Not just the failure of desktop Linux, but also Windows, which still asks regular users if they want to 'debug' a crashing app. To most people, 'debug' means 'fix' and the button just doesn't work.

It is going to require a shift in perspective to make headway on this issue, I feel. I don't really see it happening except perhaps with some of the more cocktail Linux distros... but honestly, I think that a lot of it has to do with the quality of the tooling. Users don't have time for error messages or debug buttons. Developers barely even do, also.
I totally agree - QBasic was my first language (after DOS batch files!). The fact that it was an interpreter meant you could read all the code for any program you found. Which, IIRC, was via floppy disks from my neighbor and a friend from school.

The web has some of that, but the technology is just so much more complex. The difference between reading the .bas file for SNAKE vs. using the web inspector to understand how gmail works is astronomical.

To be fair, the difference between Snake and GMail is astronomical in itself.
> The fact that it was an interpreter meant you could read all the code for any program you found.

This wasn't a granted thing back then.

GW-BASIC source needed to be explicitly saved in ASCII mode.

A lot of basics compiled each line to bytecode as you entered it. The Spectrum made this explicit with its one-keypress-per-bytecode approach.
HyperCard is why I'm a developer today, and it's precisely because it was such an egalitarian tool. I was a (human) language geek as a child, but I loved using computers. I downloaded a bunch of neat stacks other people had made, and I was able to open them up and see how they ticked — eventually I realised that I could make my own stacks, and make the computer do things for me, too!

I do worry that HyperTalk ruined me in the same way the Dijkstra asserted BASIC ruined programmers of his era, but I have a good job and seem to write good software so I don't worry about it too hard.

I really worry for kids these days: JavaScript + HTML is nowhere near as friendly an environment as HyperCard was. What's a clever kid going to use as a programming environment now?

Isn't https://scratch.mit.edu/ a modern incarnation of this style?
Scratch is nothing like HyperCard.
It's pretty much in the same ballpark.
Having used both, Scratch is nothing like Hypercard at all. Hypercard was very simple to start with, but you could produce properly powerful programmes with it if you wanted.

A closer analogy would be to the fully featured Logos you could get in the late 80s which looked like simple drawing languages on the surface, but were actually pretty full-featured LISP implementations.

Agreed, totally different things. Hypercard was for sharing hyperlinked information. Scratch is for teaching kindergartners how to program in an object-oriented fashion.
The comment I was replying to was grouping Hypercard and QBASIC together under the umbrella of "..democratising programming... reads like English..." and it was specifically this that I was responding to.

QBASIC isn't for sharing hyperlinked information either!

Actually, Scratch is being used in colleges for CS 101 class as well.
> even your aunt

I think you may be making a couple of unsavoury assumptions there.

> A lot of people ended up learning programming because of these simple languages/tools, and I used to love playing with their projects I'd download from Geocities and the like.

But I do agree wholeheartedly with your point. I'd love to see more people embrace hackability over shininess, and become more than just consumers again.

I'd be interested to know what circumstances made the concept flourish. Massively popular yet difficult-to-program devices sitting in every home?

If I could go back in time I would have stuck with QBasic for at least another five years before moving to C. I wasn't close to ready for the briefly exciting dive into "real" coding, which led to abstract CS concepts, the thick books with exciting illustrations on the covers, the CS classes which were so boring. Meanwhile I believe I could have actually been shipping software had I stuck with QB. Gar to admit but true.

I was lucky to have started in 8 bit machines, and having used Basic and Pascal compilers before ever touching C.

There wasn't a single new concept regarding low level hardware programming that C teached me, on the contrary, I got to learn how not to do it.

And I wasn't infected by the "micro-optimize each line of code as it gets written" culture, rather I was shipping software that was fast enough to keep its users happy.