Ask HN: Why don't smartphones encourage programming like early 80s computers?

162 points by amichail ↗ HN
Early 80s computers start up with a BASIC prompt and hence encourage you to learn programming right away.

Why don't smartphones do something similar?

234 comments

[ 2.9 ms ] story [ 281 ms ] thread
Early 80s computers were a niche market largely sold to people interested in computers and programming.
Everyone was talking automation of business early 80s. Home computers were for gaming and programming, but PCs were meant for non programmers. Even some of the home computers were pushed for business or at least non tech users.
Sure but that market was just starting out in the early 80s, even gaming was more of something they could do not really something they were sold for, the cool kids had a 2600, geeks had computers.
Not in my town: sad kids had 2600 with expensive cartridges; cool kids had tapes they could copy to their mates. No one paid for games here.
in the early 80s, all branches of wh smith, the uk's largest newsagent chain, had computers on display and available to use (or misuse, in the case of small children) - they were broadly targetted consumer goods.
I disagree. The "killer app" of the Apple II was VisiCalc, a spreadsheet. That's why my dad bought a computer for his home office. Computers were also used in education: I was exposed to them in junior high.
I have an original VisiCalc copy for an Ace computer 1981.. beautiful leather manual.
It's more profitable to sell apps and micro-transactions through their respective walled gardens.
I'd argue that a mobile phone is not an adequate platform for coding. The touchscreen and keyboard layouts make it difficult to type needed symbols, distracting from the problem at hand.

Coding requires deep thought, but phones are optimized for moving around rather than sitting in one place and thinking. As such, use cases like maps, calendars, communication and alarms get priority.

The reason people buy a phone is to communicate and get around. And manufacturers cater to those needs.

>I'd argue that a mobile phone is not an adequate platform for coding. The touchscreen and keyboard layouts make it difficult to type needed symbols, distracting from the problem at hand.

Something akin to hypercard could be made to work very well on a smartphone, or possibly a dataflow environment like PureData but more general purpose. But yeah, 99% of people just want to use their phone and development for phones is much simpler on a proper computer.

Drag and drop ‘stuff’ is the worst on phones. You need screen space for it. It works on tablets, but on phones it’s mostly awful. I cannot think of an example where it is smooth and usable, especially on the move.
There is no reason to use drag and drop.
HyperCard does though?
To quote myself with emphasis added, "Something akin to hypercard could be made to work." So something like hypercard but not hypercard and reworked to the strengths of a smartphones interface.
Alright, I agree. Not easy to come up with the akin though.
Hypercard could be reworked without the drag and drop, double tap or long press pops up a menu, select what you need from the menu. It would work like every other phone app and leverage the other apps which come stock, want to place a picture than double tap to get the menu, click add image and it opens your gallery app and lets you select a picture and do basic editing, click done and the image is placed. And I can think of dozens of ways to extend the hypercard idea based off what a smartphone offers.
As someone who has done a non-trivial amount of coding work directly on my phone, I'll say you just get good at being able to type the symbols you need (though I agree it isn't great; but like, that's what BASIC is for, and I certainly spent a ton of time coding BASIC on my old TI calculators ;P). I also frankly find my phone to be an extremely pleasant device to "sit in one place and think", and given how many games and media consumption apps exist for phones I'm surprised that isn't more obvious ;P. Like, often when I want to seriously think about something, I'll go pick up my phone and lie down in bed, pulling up the notes app--or ssh'ing to a server and using vim--to work on stuff without all of the worldly distractions of having to sit at my desk.
I've seen the youth doing this nowadays.

But just watching it causes severe physical pain in me. Everything is awkward, and painful slow. In the time you would have written a page of code on a desktop in an IDE you hardly manage to write a few lines of working code on a phone. Alone the fact that you can't use keyboard shortcuts efficiently is more than crippling! Not to mention the extremely tiny screen on a phone. On a desktop you have for serous work 2, or better 3 screens (or some big wide one), for a reason.

And regarding deep thinking: The best setting for that is imho not the desktop, nor the bed. Best for thinking is actually walking around, while not being distracted by anything else.

It’s neither awkward nor slow, it’s just tooling that sucks (we have to type in a bare textarea, which is designed for text). Add some helpers and keys to the keyboard and it’s done. Like an email field makes your on-screen kbd have @ and . characters, you can add {} and [] and autoindent.

Best for thinking is actually walking around, while not being distracted by anything else.

Fwiw my best ideas were born in a bathroom.

> It’s neither awkward nor slow

Compared to mouse and keyboard it is.

> I'd argue that a mobile phone is not an adequate platform for coding.

Neither is a calculator.

I started programming on a Ti-89 calculator and I loved it and it made me want to continue on this path. Modern smartphones would be much better for programming than my old Ti: better performance, better screen, better programming language.
Most mobile games are about manipulating symbols, and there is a significant body of work on visual programming. So this part should not be a blocker.
A teenage me regularly debugging hard programming problems many years ago on a Neo Freerunner with a small resistive touchscreen in a tram while traveling to/from school using nothing but a slightly pointy fingernail would disagree. It's not as convenient as a PC with full keyboard, sure, but it still works fine given the right software.
We wrote tons of games on 80's computers with crappy keyboards and 40x25 text on poor quality TV's
Even the rubber keys of a ZX Spectrum were better than trying to type on a small touchscreen, though.
I feel like the crapiest of keyboards is still better than an on screen keyboard for long text entry.

I tried ssh-ing from my phone once, and it was an absolutely terrible experience.

> “The touchscreen and keyboard layouts make it difficult to type needed symbols”

The key layout on a touchscreen is entirely adaptable though. A language with a custom symbol set designed for small touchscreen entry could perform well.

I’ve long thought that an APL-derived language might be great for phone coding. The custom symbols aren’t a problem on a touchscreen, and the extreme code density means you could fit a lot of meaningful program on a small screen.

I would like to challenge you a little. Most programming languages are all designed around an environment where typing is relatively easy and quick. Keyboards allow you to input so much quicker than phone screens.

However, the phone has the pro that you can have any arbitrary keyboard layout. In that case I think that perhaps APL might be pretty well suited. Perhaps we should design languages around the idea that they should be used on phonescreens, where we don't need to restrict the character set to ASCI?

I have an APL program and I like using it basically like a calculator, but I imagine one could write full programs on a phone, if we did some tweaking to the interface.

Input is one thing - but also how much of a program can you see on a smartphone screen?
Sure, but you shouldn't need to develop on the phone itself. Where's an Arduino-like IDE that I can run on Windows or Linux to develop for iPhone? Should just be able to connect a USB cable and go. Where's the Python support?

Of course smartphones are mainstream so most owners are users not potential developers.. unlike the late 70s/early 80's computer scene which grew out of the hobby electronics scene where the early users were much more technical. My first computer came as a kit - bag of components and a motherboard - had to get out the soldering iron to build it.

Probably because natural language will supercede progranming language soon: https://youtu.be/PgT8tPChbqc
This was not on the horizon when smartphones were becoming popular.
do you know how long people have being saying that?
There is a computer chronicles on archive.org where they say this. I don’t remember the year but early 80s I would say.
it was a rhetorical question.

actually, cobol was supposed to be easy for buisness people to create applications in a "natural language". so, considerably before the 80s, though there were other developments aimed at doing so then, all of which failed miserably.

I didn’t try to answer the question; I am agreeing with you and pointing out a concrete example that they said this already early 80s. Also it’s entertaining too (re)watch the computer chronicles.

LLMs will change a lot of this though.

Is not natural language being superseded by specialized language in pretty much every specialized, competitive niche?

I mean, even with large language models, isn’t there a whole new area forming around “prompt engineering“?

Natural language is just very imprecise. It relies on shared context. It’s not even working, particularly well between humans if they don’t know each other well, as you can see in all forms of politics, and actually not even that well in many marriages. Often enough, in the end, you have to call in the specialists to figure out what was actually said, and what wasn’t… So that my bank account doesn’t rely on this technology, but on computer code and math, that’s not a step backwards, in my opinion, but a step forward.

Because they're not equivalent to 80s computers, they're equivalent to 80s TVs.
Smartphones were designed to do the opposite, they will never do that. The worst thing is that desktop development has been influenced by mobile and become just as restrictive.
In the 80s computer programming was done with the same device. With today's mobile phones, programming is done with another device, usually a laptop.

This is of course changing, as mobile phones gain more functions. However, for it to happen it needs a change in culture. Phones have been largely seen as consumption devices, and still, a lot of people aren't comfortable writing long pieces with them.

It also could be as simple as what priorities the executive class wants to give their devices. I could imagine an alternate world where Steve Wozniak still had influence at Apple and he could push their lineup towards more hackable.

My phone is as powerful as my laptop. It’s limited by walled gardens and not enough research making them useful as production devices with such a limited screen size.
When I got my first computer, a Z80 based system running BASIC from ROM and able to boot CP/M 2, it came with almost no software. If you wanted to make it do something, you got out the BASIC manual or the Z80 assembler. Since most professional software was way out of my price range, and shareware was had to come-by (2400bps modem + expensive calls), you really had to be a builder. I’m grateful I didn’t have to do any soldering though.
I'd say Raspberry Pi 400 could ignite a similar spark, I don't think you're comparing apples to apples here.

Smartphones are consumer devices. And a Raspberry Pi 400 is probably even more niche than 80s computers were in comparison.

In any case I don't think it's about the devices at all, there are just better things to do even for an introvert who doesn't go out much. Just different times.

I often wonder how many people actually did any programming on those computers. For a very long time I assumed loads of people did - I did, my brothers and Dad did, my friends did. There were listings in magazines and books. It seemed wildly popular. But looking back now, and having met far more people from that era than I knew in my small town at the time, hardly anyone says they did too. They had computers but they used them for gaming and nothing much else. I was in a bubble, living in place where a major employer was a tech company. What reality was like outside seems to explain why programming was so appealing - it made me a bit special and opened a lot of doors back in the 90s.

I suspect that, even now, including an IDE as a default app with a language compiler or interpreter would be a waste of space for most users. They wouldn't use it, and they'd complain about it taking up valuable photo and music storage.

So just add load81; takes no space and is great fun.
I think, many did try themselves at code, or, at least, attempted it to some degree. But, and this is a big but, I also think that there were very few finished programs to show for all these attempts. I'm much under the impression that the era of the home computer was also the era of the unfinished project.
For the same reasons you can't open up a smartphone and tinker with it whereas it was and still is one of the great things about most non-Apple computers. They'd love to kill the culture that birthed them, because then there can't be another.
In BASIC times there were dozens of incompatible platforms and they were competing on the available software. Programmers were very scarce (and you had to persuade them to write for your platform instead of other platforms).

You couldn't expect to have most use-cases solved by the available code, so people were willing to code what they needed. 8-bit computer without BASIC was almost useless.

Software was also very crude back then - it was possible for some teen to write a commercially useful piece of code in a few weeks - that code could then help you sell your hardware to other people.

Nowadays we have millions of programmers worldwide writing for only a few possible platforms and the low hanging fruits are long picked. Writing successful software today usually takes millions of man-hours. So hobbyists aren't that important.

This sounds backwards. There was no way a teen in a few weeks could write a commercial useful application, nevermind distributing it or be taken seriously. Now a days teens are.

There are more teens programming than ever and creating more things.

The pie is bigger. There might have been thousands or ten thousands of kids programming before now it's millions.

Programs don't take millions of man hours. I can point to many useful one man open source projects. Selling business software is as hard as ever and it's hard to get buyin without connections. Teens are not making those connections neither were teens in the 80s or 90s.

Back than ever computer type was a different platform. Your c64 basic program couldn't run on an Mac. Things were much harder to package for others to use.

Programming has less benefits now for teens

Early 80s computers were boring if you didn't code something. That's a simplified way to explain it. It reminds me of the programs people wrote on TI-83 calculators, also because they didn't have any diversions unless you created them.
There are positive and negative factors presented by mobile platforms:

Negative:

1. Highly abstract, hiding away internal functionality. 99% of mobile is GUI. iOS even abstracts away the filesystem. Android is more transparent.

2. Highly locked down: walled gardens increase the friction to run custom code. Terminal as an app that can be installed, but on unrooted devices it's almost useless compared to terminal on a desktop.

3. Ergonomics: smartphone keyboards and screens are not conducive for onboard development. Solutions exist but are pretty niche, and most people would prefer attaching a real keyboard.

Positive:

1. Arguably mobile platforms have increased the number of coders! The app stores facilitate distribution and payment, encouraging new programmers to make an impact. Desktops are in most cases the actual development platform though.

A smartphone is not an exploratory device.

Its tiny form factor and lack of keyboard input are forbidding.

Even a lower-end unit is a relatively sealed package. I can get a command prompt on my 'droid unit via termux, but it's not going to show much, or easily integrate with the OS, for security reasons.

The kicker is that, from a risk-management perspective, I don't want to jack around with my (non-cheap) 'droid unit and risk bricking or destabilizing it.

Right now phones are really only consumption devices. This is mostly an intentional limitation. I'm not sure if you've ever actually hooked up a keyboard to a phone, but even with a keyboard (usually bluetooth) a phone is still far less convenient than a simple laptop. Some keyboard commands work. Focus is very spotty, and often you have to touch the screen to interact with elements so you can actually use the keyboard. There seems to be no app switching, but perhaps I'm just missing the keyboard command. Your list of applications is limited to what's available in the app store, and much of it is questionable. I could go on, but phones are basically the TV replacement in a certain sense. The user gets what's provided to them, and creativity and control are kept at a minimum.
IMHO a mobile handset's primary use case is availability to respond to (mobile telephony) messaging events; as a consequence, its power management domains are intentionally oriented toward short-duration events.

A tablet device, on the other hand, is more likely to possess a higher-capacity battery and be usable for content generation / long-form editing.

Lack of a keyboard is not the only reason. A good ad hoc/hobby programming environment needs to offer a lot nowadays:

- The IDE and language must be preinstalled or available with a one-click installer.

- The programming language must be extremely simple and easy to learn. Almost no currently popular language satisfies this requirement. Even Python is too complicated, requires learning too many libraries.

- Easy input and output, ideally with a GUI, but at least console style.

- Simple way to run a program. Just click or type "run", for example.

- Integration into the target platform. If programs are started by clicking on an icon, the deployment must provide apps with icons, of course.

- Easy deployment, either by source code or by a single file that can be run everywhere with an interpreter.

In addition to this, for modern phones there would need to be an interpreter for running programs on desktops, too, and an online library of extension packages and programs.

Not many languages/implementations/IDEs for phones satisfy these criteria. There are not even many for desktop. How many IDE/language combos do you use that are easy to learn and allow one-click deployment to all major platforms?

Because it's not in their best interest. Smartphone makers are big tech, big tech only wants you to learn their framework to be locked into using big tech for life. No one wants you to learn to think on your own. Learn Dashly(tm) for Pear Phone or don't program at all.

The reality is the time for tinkering and stuff is over (for pc workloads, you can tinker all you like with hardware/agri/space/radio/nuclear open-source). Computers, whether they are on your lap or in your pocket, are being controlled by big corporations. You might say "But, Linux isn't controlled by a big corporation" and you'd be wrong. All these big tech companies want to wall you into their garden to shake you down anytime they want more capital.

The best way to get that 80s tinkering feeling again is to go get a Raspberry Pi or something and start building your own thing. Don't expect any of the consumer tech to ever cater to that kind of crowd again. They may pay homage to their roots but their bottom line depends on you forking over cash on their services and app stores.

there's still tech out there that does, like the pinephone. It's going to be niche, but it exists
not saying they don't exist, but to penetrate that 1% market share to be relevant they have not. I did call out things like raspi and such as still viable for tinkering but not the same way that I was introduced to computers with the Apple II and later the 386/486DX revolution. Around Pentium II things got anti-tinker and ever since 2007 it's been pretty much a consumer-only market. Walled gardens and locked down OS's, complete with injected ads and tracking.
at least on x86 you're still able to install whatever operating system you want, even if only for legacy reasons
New motherboards have safe boot enabled and you can’t disable it in UEFI. So no, you can’t.
not universally true, gigabyte motherboards definitely allow you to disable this
Nope, my new laptop allows disabling. Also many distros are installable anyway/have been signed.
except that on x86 you are forced to always run an undocumented modified version of Minix
Allow me to add a bit of context (my first computer was an Apple ][, Xmas 1979).

Yes, computers at that time stsrted with a Basic prompt... because there was no appstore, and (at the start) very little in terms of apps. You were supposed to program it yourself (even by tediously copying listings from magazines) and, especially for the early generation products, storage was either very finicky (cassette tapes) or quite expensive (floppy).

In the same years, consoles also started to become a real product, like Atari 2600, Colecovision etc.

Guess what? Consoles did not start up with Basic or Assembly... because you were supposed to use cartridges to play something that had been programmed by a guy working for a company.

So I would argue that personal computers were built and sold (at least at the very start) for people who had a background in electronics and/or an interest in programming. Visicalc changed this almost overnight because after that computers became "interesting" for small business... and this in turn created a market for word processors, small inventory management systems and so on. But also a big push to make "serious" computers (CP/M) that could fit the format/size/price of Apple and TSR-80.

What I am trying to argue here is that PC were at the start mostly intended as educational devices, because there was very little in terms of shrinkwrapped sw to sustain other business cases. And if you just wanted something for your children to play with, you would buy an Atari at a fraction of the price of a Commodore PET or Apple.

Smartphones were always sold as "communication device first" and also the business infrastructure to almost immediately create a large portfolio of apps was already in place (if you remember the original idea for iPhones was not to develop for iOS but just create webapps).

TL;DR: If you bought an Apple at the end of the 70s you absolutely needed a Basic interpreter or it would have been just a very expensive paperweight. If you bought an iPhone in 2007 you wouldn't need to write your own software to get any use out of it.

I'd add that modern PCs don't encourage programming. Sure, potential programmer could seek out ways to rode and run javascript in the browser, which is typically included with the PC, but it would still require curiosity and determination. Without that BASIC prompt, most users will never even have the concept that THEY TOO could program this thing.
The only reason I'm a professional programmer today is that my Mac came with Xcode developer tools on installer disc in the box.
Because the UX of that would be terrible and nobody would buy the product and they would go out of business. Best case only people who wanted to learn programming would use the weird nerdy programming phone.

Why aren't AAA games running on text based interactive fiction engines? Because for the target market, that's crap.

Most people do not want to learn programming. I know, it's a horrible thought, but it is what it is.