The Hypercard Legacy
medium.com
medium.com
Sweet merciful crap, no. I loved Hypercard as a kid but I could never get my head around the English-but-not-quite programming style of the script. Any time I've tried to do anything with Applescript over the years, I just end up giving up and doing it some other way.
A DSL would be better than this approach, or a language that has a decently smooth learning curve.
It's actually a fairly quick way of prototyping mobile apps for iOS/Android - which is one of the main things I use it for at work. Though, I am probably incredibly biased.
They recently(2012) open sourced the IDE, http://LiveCode.com
It went downhill from there:
Put field 2 of card 54 into field 5 of card 71
You could name fields, but it went visibly slower if you did.
There's visual programing, where you drag boxes around and connect them. This comes back every few years. Simple examples look great. Larger program are awful. Blender, the animation system, has a game development system like that. Programs are single huge, messy wiring diagrams. Programming requires lots of zooming and scrolling.
There's a reason that IC designers gave up schematics for VHDL.
[1] http://www.scribd.com/doc/136875051/why-s-complete-printer-s...
I was grinning madly when I noticed -- in the part where he's exploring an island -- the page written in syntactically valid Inform 7.
> Put field 2 of card 54 into field 5 of card 71
Means (Pascalish pseudocode): > Card71[5] := card54[2]
Or, perhaps a likely C adoption: > cards[71][5] = cards[54][2]
I'm not so sure I think your example demonstrate how "bad" this is.What's cool is that as I made these games I kept wanting to add more to them (interactivity, sounds, etc) so I ended up doing some scripting as well.
As a 12-year-old, this was amazing - my first introduction to "programming" but I didn't know that at the time.
As an aside, I sold it to my school mates for 50p a copy. When they asked why they couldn't just copy it themselves I told them I'd installed DRM on the floppy disks.
They believed me.
What that kind of a stack enables is potential. So you're happy with your app. Take what you already know, learn about a server and a client and make a scoreboard. Now you understand client/server you can make it collaborative. etc.
jQuery makes even that learning curve a lot easier (e.g. $('.text-box').text() instead of whatever even hackier stuff I was using back then).
I could not have gotten through my teenage years without HyperCard and ResEdit.
There's some advantage to a stupid simple DOS computer with a copy of some BASIC implementation and every math textbook from grade 3 on having BASIC programs at the end of every chapter or section.
It's a functional language, but I'm not convinced that an object-oriented language is good for an introductory language, anyway.
I plan to start my 7-year-old daughter on Elm in the next few months. She's already playing around with various introductory programming activities on Sugar OS (Turtle, etc.).
I'll report back on how it goes.
But I agree that a revived HyperCard would also be a great environment. My family was all PC growing up in the 80s, so I had no exposure to HyperCard at that time. But reading about it retrospectively, I'm impressed.
One of these three is entirely non-obvious
image 472 315 "/stack.jpg"
Insert Image "/stack.jpg" with width 472 and height 415
image {width: 472, height: 315, filename: "/stack.jpg"} image Image { width = 472, height = 315, filename = "/stack.jpg" }It requires programming knowledge just to set it up.
Seriously, read the prologue of How to Design Programs: http://www.ccs.neu.edu/home/matthias/HtDP2e/part_prologue.ht... It's clear and accessible, but introduces programming in terms of values and the idea of animation as a reduce/foldl of a function that returns image values over a list of frame numbers. Incredible stuff. And as a bonus DrRacket is simple enough for kids without compromising much on capability.
Most beginner Hypercard apps were just multimedia pages hyperlinked together. You can do that now GitHub right now and publish it immediately to a web site. It was fast and easy to get my 10-year-old daughter a GitHub account and show her how to use the online editor. Then I showed her HTML and CSS and let her loose. I set up github pages and gave her instructions to pull to that branch (which took me a while to figure out but she took right to it.) She took my netbook into school the next day and blew away the kids in her project group with it. Then she got bored and hasn't wanted to mess around with it anymore. Oh well...
The original article is much nicer to read:
https://medium.com/@blprnt/the-hypercard-legacy-e5b9eb273b6a
At http://livecode.com/support/ask-a-question/at-what-point-do-... you say: "The FAQ on the FSF website states that the GPL does not apply to code simply “executed with an interpreter”. LiveCode is far more than a simple language interpreter and each language call utilizes internal libraries within the platform. These libraries provide the platform’s entire functionality and rich feature set."
However, every interpreter works by making calls to "internal libraries within the platform" which "provide the platform's entire functionality and rich feature set." If an interpreter did not contain the code to do the things that the interpreted language can do, then it wouldn't do anything at all and it wouldn't be an interpreter.
While I find LiveCode attractive, this license weirdness makes me uncomfortable enough that I haven't explored it even for my Open Source projects. It's not often that I find license interpretations that make Richard Stallman look moderate.
I also loved Visual Basic when it was young, but it just kept getting more complex and bloated. I think Microsoft was trying to counter the stereotype of VB being for amateurs, by making it as comprehensive as their other development tools. (cf. recent HN thread about "professional tools"). LiveCode seems to suffer from that tendency.
When it got to the point where I could no longer make sense of VB, I went language shopping. For me, the new HyperCard is Python plus Tkinter plus Matplotlib. Heaven. Granted almost every program that I write is "some buttons, parameters, computation, and a graph." The only downside is that it doesn't port to Android.
Once a programmer, I appreciate the efficiency of automation. But today I'm old-ish, run a business, have kids and although my need to automate is greater than ever, there is simply no time to do so using, say, Python.
Hypercard... I miss you.
What kind of tasks do you need to automate? Zapier and IFTTT are both pretty powerful tools (and I say that as a programmer who uses Python to automate most quick, mundane tasks).
It's on iPad: http://www.scratchjr.org/
It also integrates with hardware: http://education.lego.com/en-us/preschool-and-school/lower-p...
Do we still need to revive HyperCard?
Perhaps we just need to focus some open-source energy on it.
To continue the conversation it's important to remember the environment that Hypercard was born in: there was no Python, Ruby, or Javascript. The major alternatives were just C or C++ (right?). That is no longer the case. Consequently I'm not really sure it needs to be reborn.
Speaking of Javascript:
Squeak is a modern, full-featured Smalltalk. It is closely related to Pharo, a cleaner, leaner fork. (Both of these put mainstream languages like Java to shame.)
Scratch is simply a kid-friendly DSL built in Squeak. Big difference!
But statements like the following suggest to me that there are some misunderstandings here.
> With the developer restrictions and extreme proprietism of the iPhone App Store, it’s hard to remember the Apple of the 80s. Steve Jobs, Bill Atkinson and their team had a vision to not only bring computers to the people, but also to bring computer programming to the public – to make makers out of the masses. At Apple, this philosophy, along with HyperCard seems to have mostly been lost.
Making makers out of the masses is an idea that is still there. Think about software like GarageBand and iMovie. These have the added advantage that you can make things without doing programming.
Also, I was very much involved with the Apple of the 80s. And I can assure you all that the "proprietism" was just as strong as it is today.
While it's exciting to see Hypercard and similar ideas coming alive again, I'm certainly glad that Hypercard died when it did. A Hypercard-based web would have been Apple formats distributed from Apple servers via Apple protocols to Apple clients. And lawsuits for everyone! We're fortunate to have dodged that particular scenario.
Second, HC reached its zenith (the final version was a real improvement over its predecessors) just as Apple went into somewhat of a dark age in between System 7 and OS X.
I loved my Mac but never felt that Apple was interested in encouraging indie or small-scale software development. I can't say that Windows was any better, but Windows had a built in lightweight API called MS-DOS.
Continuing my revisionist history, I think what happened next is simply that desirable computer system features proliferated more rapidly than any development tool could keep up with. And the diversity of interests in programming is what would stymie such a revival today.
First, HC was built before the popularization of the internet, and as such a distribution model for stacks didn't really exist. I can literally remember mailing stacks on floppy disks. So, people could make things, but not easily share them.
Second, there was a fundamental shift in which software became a commodity. I really think in the beginning it was about selling computers; it took a while for people to realize that software was not a 'value add' for the machine but a place to make much, much more money.
So when HC was conceived, it seemed natural to provide a tool to let people author their own software. As the business model changed, this idea lost out. Software should be something that people bought, not something people made
Does anyone else remember HyperStudio? It was like HyperCard, but more multimedia features. Despite the name and function similarities, I'm not sure if there is any formal connection between the two.
Haha memories, that may be the first time I ever tried to exploit a system
* Take the original idea of Hypercard and take it into the 21st century.
* Be completely open source.
* Export to HTML/CSS/JS and perhaps native for performance sensitive things.
* Would run as well on desktop as on mobile browsers.
* Maybe have a (subset) of Javascript, Lua or Python as a scripting language.
* Be as fun, easy and playful as the original.
Would definitely be something i'd support on a platform like Kickstarter.
The 2.0 version is a choose-your-own adventure generator that can go from simple (create 'pages', make one-way links between them) to complex (use CSS + Javascript to create multiple panes, keep track of variables, write graphics, etc), and it exports as a Tiddlywiki-based self-contained HTML file.
* Yes
* Community Version is open source
* On the LiveCode roadmap
* Compiles as a native app for iOS,Android,Mac,Win and soon HTML 5
* No, but ... the ability to wrap other languages and libraries and map them to HyperTalk is in development: http://livecode.com/blog/2014/07/08/the-next-generation-widg...
* Definitely as fun as the original
Sorry if I am coming off as a fan boy, but I read HN everyday, and this is the first time I've seen HyperCard/HyperTalk come up.
A minor nitpick but "native" is almost always unnecessary for this kind of programming. We have WebGL and soon, SIMD.js. Things are looking good on the performance front.
I think it'd be more important to focus on making WebGL support better on lower-end mobile devices or have a downgrade path to canvas or some other maguffin.
Maybe have a (subset) of Javascript, Lua or Python as a scripting language.
All of these languages are fine in their own right but they fall on the floor for being user-friendly when your user is someone whose vocabulary is not a part of the programming lexicon.
But they could be useful to people who do understand their models of execution.
I'd be more apt to suggest giving the users a kernel upon which any appropriate language can be integrated into the system for the user to select.
As a kid, everyone I knew who liked computers loved HyperCard. It was an amazing learning tool and I still find myself reminiscing about it like the author of the article.
And we're looking for talented souls to help make it real
Computing as a tool for individual empowerment... who'd have thought?
Confusing syntax is certainly a problem, don't get me wrong, but I have found that the above is not entirely true (in my limited experience). A lot of times once you want to commit an idea you have to a program, you discover that the idea in your head is actually quite ambiguous and difficult to describe, regardless the language.
When I think about the difficulties of programming, I separate the problems into "real" and "fake". Understanding truthy values in Javascript falls decidedly in the "fake" category. On the other hand, "find all the birds in this picture" is legitimately hard. I believe that a lot of the things "normal people" would want to do would require some genuine patience, thinking, and time to figure out (which I think is the real hurdle of programming). This is why we see a lot more success in programming systems that tackle incredibly specific problems, and why these systems are often even more appealing to programmers:
1. Arithmetic and equation solvers (Calculator.app).
2. Drawing programs that just describe and manage a non destructive image-processing pipeline (Photoshop.app/Illustrator).
3. Sound mixing applications (Garage Band)
In each of these examples, the system has given up a lot of flexibility in order to make that specific task so much easier. As a trivial example, most calculators are nicer to use, and look nicer, than typing math in a language console.
Perhaps all of these tasks could theoretically be possible in some "perfect" language, but I find it very suspect that they'd be better at it. It's just hard to make a tool thats good for everything also be better at everything. Its certainly the case that I'd rather use PaintCode or PhotoShop to take an existing image and mutate it today, and I'm a programmer: we haven't even solved making our core audience prefer programming in a lot of cases.
Separately, I'm not entirely convinced that the world is perfectly split into "typing programmers" and "connect the noodles" quartz-composer programmers. I think many of the visual systems we've developed end up having just as many quirks as the language ones. Certainly different quirks, but if in a parallel universe HyperCard and QuartzComposer-style programming had won, we'd maybe have just as many programmers as today and those guys would be wondering "how do we get people who think in terms of text to program?".
The disgusting thing is that we seem to be moving in the opposite direction -- more walled gardens, more dumbing down of the interfaces for its own sake, more incidental complexity on the development tools side for its own sake.
And, as it turns out, Photoshop is scriptable and has a plug-in API.
There's a bit more discussion here: https://en.wikipedia.org/wiki/No_Silver_Bullet#The_argument
At the Turing Institute in Glasgow, Arthur and his colleagues created a groundbreaking HyperCard-like PostScript-based networked user interface creation tool called GoodNeWS, later renamed HyperNeWS and then HyperLook, which was the most amazing thing anyone ever did with NeWS.
I moved to Glasgow in 1992 to work at the Turing Institute with Arthur, making HyperLook into a product and porting SimCity to the Sun, and we released HyperLook and SimCity for HyperLook simultaneously!
HyperLook was so far ahead of its time in 1989, that there still isn't anything quite like it for modern technology. Since we developed HyperLook and SimCity at the same time, that forced us to eat our own dog food, and ensure that HyperLook supported everything you needed to develop real world applications. (Not to imply that SimCity is a real world! ;)
https://en.wikipedia.org/wiki/Arthur_van_Hoff https://en.wikipedia.org/wiki/Turing_Institute https://en.wikipedia.org/wiki/NeWS
http://www.art.net/~hopkins/Don/hyperlook http://www.art.net/~hopkins/Don/hyperlook/HyperLook.README
http://donhopkins.com/home/movies/HyperLookDemo.mov http://www.art.net/~hopkins/Don/simcity/hyperlook-demo.html
http://www.art.net/~hopkins/Don/hyperlook/SimCity.README http://art.net/~hopkins/Don/hyperlook/HyperLook-SimCity.gif https://www.scribd.com/doc/77164708/HyperLook-SimCity-Manual
https://www.scribd.com/doc/77192848/HyperNeWS-Brochure https://www.scribd.com/doc/77192884/HyperLook-Product-Info https://www.scribd.com/doc/77199792/HyperLook-Manual-Part-1-... https://www.scribd.com/doc/77194415/HyperLook-Manual-Part-2-... https://www.scribd.com/doc/77199691/HyperLook-Manual-Part-3-... https://www.scribd.com/doc/77194936/HyperLook-Manual-Part-4-... https://www.scribd.com/doc/77195777/HyperLook-Manual-Part-5-... https://www.scribd.com/doc/77193909/HyperLook-Manual-Part-6-...