Ask HN: Why don't smartphones encourage programming like early 80s computers?
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?
Why don't smartphones do something similar?
234 comments
[ 2.9 ms ] story [ 281 ms ] threadCoding 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.
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.
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.
Best for thinking is actually walking around, while not being distracted by anything else.
Fwiw my best ideas were born in a bathroom.
Compared to mouse and keyboard it is.
Neither is a calculator.
I tried ssh-ing from my phone once, and it was an absolutely terrible experience.
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.
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.
Pythonista is probably one of the better ones. http://omz-software.com/pythonista/
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.
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.
LLMs will change a lot of this though.
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.
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.
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 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.
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.
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
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.
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.
Nowadays you can go to a page like this ...
https://no-gravity.github.io/html_editor/
... edit the code and see the result in real time.
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.
- 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?
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.
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.
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.