Bonum Certa Men Certa

A Look Back (and Forward) at Friendly Programming

Guest post by figosdev

Java



Summary: Historical perspective on computer languages and how to do better

I have stayed interested in friendly programming languages for decades now. My favourite language, fig, came from another language inspired by the way people talk to the computer on Star Trek. On the Enterprise, people create "programs" used in places such as the holodeck, though most of the lines from the show remind me more of search queries and similar parameters:



"Alexa, please stop spying on us."

"Unable to comply, authorisation from a CEO or higher is needed."

"Alexa, initiate self-destruct sequence, authorisation Bezos-Four-Seven-Alpha-Tango."

This could also be looked at as a command line sequence, with three parts:

1. [ So-called "Wakeup" Command ] 2. [ Initiate command | command parameters ] 3. [ Password syntax | parameter (the password itself) ]

In GNU Bash this might look something like:

# sudo systemctl selfdestruct Password: Bezos-Four-Seven-Alpha-Tango systemctl: self-destruct sequence unnecessary, Systemd already running

Most (not all) common and/or friendly programming languages have a simple convention of:

1. a command name 2. command parameters after the name 3. some symbol that goes between commands (or just a newline)

For example, to say "Hello, world" on the screen in Bash, Python, and BASIC:

echo "Hello, world" print "Hello, world" PRINT "Hello, world"

First comes the command, then the parameters-- the things you want the command to know or work with.

To the computer, this is all translated into instructions that can be expressed as a long numeric sequence. To simplify this a bit, you can think of the command to put text on the screen as a the number 8:

8 "hello, world"

Of course to the computer, there is no such thing as "put text on the screen." The screen shows the display buffer, the display buffer to the computer is a series of numeric locations, the real job of the computer is to copy certain numeric values to these locations. It doesn't matter whether you're listening to music or running an interactive online 3d simulation, the computer is just a glorified calculator moving numeric values around-- to and from numeric locations.

The job of a compiler author (especially the first of them) used to be to worry about getting simple instructions like "print" translated to these simpler numeric routines (simpler to the computer, more complicated to many of us.) Someone still has to worry about that, but most people don't. Thanks to decades of innovation, if you implement or create a conventional programming language, you will probably use another existing computer language to do so.

For example, CoffeeScript is implemented in (and has since influenced development of) JavaScript. JavaScript was originally written (implemented) in the C language. V8 is a JavaScript implementation in C++. These languages are in many ways easier to work with than the native, numeric "machine language" the computer actually uses.

The pioneer of compiled languages, Grace Hopper, taught university level mathematics-- yet still decided that computer languages would be more useful to a greater number of people if they were based on words, rather than "symbols."

This is a great boon to the general understanding of computing, because these "words" can perfectly abstract the computer hardware itself. How well can they do that? Alan Turing mathematically proved they can do so, but in more practical terms, an emulator program like Qemu that lets you run a second operating system in a window from a "host" operating system is better proof for most people. If we can teach more people to code, we will have more people who are happy to say they are computer literate. We must offer greater computer literacy to everyone, if we are going to make informed political decisions about life and liberty in the 21st century.

The history of the GUI is one of creating a clumsier, more vague language for certain tasks. A GUI is very useful for things that require pointing or drawing, and sometimes very useful for other tasks (such as managing term windows.) But just like when you try to use a hammer for every carpentry task, sometimes our workarounds for not using the command line are a cure worse than the disease. Teaching a GUI is closer to application training-- next year, Microsoft or Apple or IBM will move things around and you'll need to retrain again. You probably won't understand computing by poking at things on a menu. But you can, from learning just the basics of coding.

Believe it or not, the first code written by Linus Torvalds was not in C. His first program went more like this:

10 PRINT "Sara is the best" 20 GOTO 10

This example from the Basic programming language includes the much-maligned GOTO statement. This statement corresponds to the JMP command, one of those numeric instructions mentioned earlier. JMP is a "mnemonic" (useful imaginary association) of the number reserved for that fundamental computing task. Most modern languages avoid use of this command, because it makes it more difficult to maintain larger programs.

Again we see the command name followed by the parameters, and we also see the line numbers that the Dartmouth Time Sharing System (DTSS) used to mark each line of text, or code. Dartmouth is the university where Basic was developed in the early 1960s.

Prior to the existence of Basic for teaching, Grace Hopper influenced the design of COBOL that contained TERSE-ENGLISH-PHRASES that were JOINED-BY-DASHES. Some early computers, even some from Apple, Inc., relied on character sets that did not include lower case letters. Some of the earlier languages (such as Basic) tended towards commands and other text expressed in ALL UPPER CASE.

Around the same time as Basic, the language known as Logo was developed as part of an entire philosophy of teaching. In Massachusetts, the MIT Media Lab continues to explore applications of languages in the same family as Logo, such as AppInventor, Lego Mindstorms and Scratch.

The feature of Logo that is best known, as (like Basic) it was used to introduce many children to coding, is Turtle Graphics. Apart from not requiring graphics initialisation commands like the SCREEN command in Microsoft QuickBasic, Turtle Graphics does not (in many implementations) require much or anything in the way of punctuation in its syntax.

To draw a square is this simple:

UP 5 RIGHT 5 DOWN 5 LEFT 5

There is no symbol required between commands, it simply follows from left to right and continues taking parameters until it finds another keyword. (as with math, statements put in nested parentheses might change this.)

So in Logo, this text:

UP 5 RIGHT 5 DOWN 5 LEFT 5

Translates (conceptually) into English instructions such as:

"Draw upwards 5 points in length, then draw to the right 5 points in length, then draw downwards 5 points in length, then draw to the left 5 points in length."

Other dialects may offer additional options or simply different commands:

TURN 90 FWD 5 TURN 90 FWD 5 TURN 90 FWD 5 TURN 90 FWD 5

This violates a useful convention in coding known as D-R-Y or "Don't Repeat Yourself." A better way to code the same task is:

REPEAT 4 TURN 90 FWD 5

You can change this from a square to a diamond simply by turning 45 degrees first:

TURN 45 REPEAT 4 TURN 90 FWD 5

One of the things that truly limited Basic in the 1980s and early 90s, when the PC revolution was taking place, was not just the lack of processing power but the constraints on RAM and what size a program could be. As the PC moved from 8 and 16-bit platforms to 32-bit, it was more trivial to access large amounts of RAM and have larger programs with larger units of information handling.

For example, a string of characters such as "Hello, world" in the 80s was limited to somewhere between 256 characters and 32,768 characters. You could have string arrays, which are collections of strings with a common name, but loading a large file into an array was costly. Basic traditionally has very rudimentary commands for dealing with strings.

Python deals with strings in a more flexible, modern fashion. A "list" in Python, similar to an array in Basic, can for starters mix types of data-- instead of having to initialise an array as being for strings or numeric data, Python lists can contain one or both at once. Basic has a MID$ function to get part of a string, but Python has a syntax that lets you get part of a string a list.

With increases in RAM and ease of addressing it came a greater use for more flexible commands, which were more practical to implement.

This does not mean Python is easier to learn than Basic-- one of the nice things about Basic is that you could master a good portion of the entire language, and feel like you definitely knew how to write programs in it. Sure, you wouldn't actually learn every command. But you probably knew which commands did something you didn't need for your programs.

Python has in many ways supplanted Basic in education, while Logo continues to provide inspiration for new languages that are easy to learn as a first language. Python can also be taught as a first language, although probably in later school years than Logo-based languages.

Getting back to the earliest languages designed for general education, Basic and Logo both had strengths. Basic was more obviously practical, being used to create video games, accounting programs and even point-of-sale software. There were often better languages (such as C++) for creating commercial software, but Basic enjoyed notoriety from both its success via Dartmouth and its inclusion in chips on board 8-bit computers.

Logo was an easier language, but typically wasn't used (by most of its users, that is) to do anything very practical. Today, it is a good foundation for creating mobile apps or controlling robots, or animating a cartoon cat-- but Logo-based languages (though Logo was originally a general purpose language) are not typically used for a multitude of tasks.

As a teen, I often wondered what a cross between BASIC and Logo would be like, or if such a thing was even possible. To this day, I believe exploring this question and similar questions will make it possible for more people to implement reasonably complex and sophisticated programs, with relative ease. I do not think Python is going to get friendlier, in fact I find it going in a typical direction of expanding until it is much less easy to learn than in the beginning.

Basic too, has grown more complicated than it needs to be. But Python, JavaScript and Logo are all used in education.

For my own efforts added to the pot, I have finally explored the question of combining aspects of Logo and Basic, with fig. Like 1980s versions of Basic, it is case-insensitive. Like Logo, you can avoid most punctuation in syntax. You can also add it optionally.

It goes left to right, demonstrates a variety of tasks such as drawing, array and file handling, getting text from the Internet, and even transitioning to a more feature-rich language such as Python-- while allowing you to create native functions that contain inline Python code.

To make an installer less necessary, the fig translator is a single Python script. It takes a program written in fig, translates it into Python, and (as with interpreted languages in general) requires Python to run the output program.

Fig was featured, thanks to much-appreciated help from the late Robert Storey, in the first 2017 issue of DistroWatch Weekly: https://www.distrowatch.com/weekly.php?issue=20170102

But although I enjoy using it (quite often, actually) as a heavily simplified derivative of Python, fig was always an experiment and a prototype. I would be just as happy to see people explore the concepts of fig as an educational language, which I spent many more years thinking about even while I taught myself to code ("You know what would be cool? An array that uses a string index instead of a numeric one!" ...Linked lists, hash tables, Python dictionaries) than I would be for them to adopt fig itself.

The core idea of fig is simply this-- instead of teaching a programming class, try to sit down everyday people and teach them to code. That's what fig was designed to make possible-- as well as make easier.

I tried doing that with BASIC, it is possible. I tried it with Python, as well as JavaScript. That was harder, though overall I think Python has some advantages over Basic. It has some rough corners too-- "SCREEN 9: PSET(10, 10), 5" draws a dot in early 80s QuickBasic and GW-BASIC. Try doing that in Python, such as you might with Pygame. It's a bit more to begin with. Of course that particular matter could be solved with a different library-- but you still have to learn how to import it.

As you teach more people, and note what it is that gets in the way of them learning, you remove as many unnecessary requirements of coding as possible. I removed Python's case-sensitivity. Although a fan of indented code (I wasn't one until I learned Python) I decided to replace Python's mandatory indentation with Basic-like keywords. It's easier to implement than you might think-- I just use a variable to keep track of the indentation level and increase or decrease it when required.

Before fig, I attempted to create a language with no punctuation at all-- so the print command was like this:

todisplay hello there, world! (you can put any text of any sort on this line) display

This is tedious, but I was trying my hand at designing a Basic-inspired language to be spoken into a microphone instead of typed on a keyboard.

When I got bored with that effort and focused on fig (then "fig basic") instead, I still tried to keep punctuation and other syntax minimal. I used "quotes for strings" and # hashes for comments and as I received feedback, I thought it best to allow the option of putting a colon : between commands on the same line.

Ultimately I thought why not do like English, and have several characters available for grouping text together visually? You can teach fig as a way to introduce bash syntax and concepts:

p=5 ; ucase | print

or Basic:

P = 5 : UCASE : PRINT

or Python:

p = 5 ; ucase().print()

I realise these are caricatures, I can write actual code in the syntax of each of these languages.

But "why?" is a question I will answer in three parts:

1. We want more people to understand code, so they can understand computing and help write free software.

2. An educational language didn't taint Torvalds, and most languages (even Basic) now lack the very problems that caused Dijkstra to moan about them so much. Indeed, many of them took a lot of what he said to heart. We can teach more people, more easily, if we have languages better suited to that task.

3. We can learn more about what makes languages easier to learn if we aren't afraid to experiment and collaborate more.

This is not a solved problem-- like with other tasks related to computing, the solutions are ongoing. Despite its revolutionary contributions to computer education, Basic no longer holds the title for most popular or most useful educational language. That title probably goes to Python now-- or perhaps Logo, if you consider it as a language family. Of course I still find great value in Basic as a concept, I would never be happy just switching from existing versions of Basic to existing versions of Logo.

The non-standard, computer language / computer educational philosophy that is Logo may well continue its legacy, but we know the language will continue to change to suit the needs of learners.

Regardless, not everyone is going to learn Python no matter how we try, and some languages are still easier to learn. I think it is trivial to prove (for those who are interested in the idea) that we can make a language that is both easier to teach than Python, and more generally practical than Logo.

I'm very interested in multiple takes on this idea, not just one or two. What kinds of friendly languages with powerful features can we imagine, and perhaps implement? What can we learn from educators in the field (many of whom have their own difficulties with computers and programming.)

This is less about reveling in the past than first learning what we can from historical and contemporary efforts, and hopefully creating greater success in the future.

It is not a requirement, though I really do like the idea of translating to something like Python. You can technically implement a language in almost any other language (provided certain minimal features exist in it) but starting out with a friendly language means the implementation can also be tweaked or inspire a larger number of people. Someone who learns fig can even learn how to implement a similar language. (I have considered, but never gone to the extra trouble, of implementing fig in fig itself. With its inline python feature it is certainly possible.)

License: Creative Commons CC0 1.0 (public domain)

Recent Techrights' Posts

Car Companies Fail Because They Don't Manufacture What Costumers Actually Want
They try to impose their dumb vision on purchasers
Links 24/07/2026: Mass Layoffs at Patreon, Netflix Deemed Bad for People's Brains
Links for the day
Google Spreads Misinformation, Google's Slop Makes Stuff Up and Calls That "Intelligence"
Google very well understands (and even publicly admits so, albeit only for legal reasons) that the slop does not work
US is Insolvent, GAFAM is Buying Time by Hiding (Not Disclosing) Its True Debt Which Explains Never-ending Layoffs (Unrelated to Slop or "Efficiency Drives")
Five Tech Giants are Hiding $1.65tn in AI Debt, Using the Trick that Toppled Enron
PIP Apocalypse (PIPocalypse) at IBM, CEO Promotes Vapouware (Lying to Shareholders)
Companies get to shrink while lying about it to the public, even to shareholders
 
We Need More Encryption, Not Less of It
Use Free software and use encryption to ensure sources are fully protected
At 3PM on a Friday The Register MS Collects Some 'Pyramid Scheme' Money From Communist China (ZTE)
This won't age well for The Register MS
What Freedom Does Not Mean
Tell Warren Buffett to go skiing; he'll soon understand how much freedom he truly has
Linuxiac is Plagiarism
We won't link to it, we're done [...] If you wish to support journalism about GNU/Linux, do not visit or link to slop
Verizon is Over 200 Billion Dollars in Debt (US Telecoms Collapsing, Wrapping Up the Failure in "Hey Hi" Clothing)
They will tell us this is "innovation", not a failure, and that only "Luddites" would oppose this
You've Been Conned If You Ever Believed That MElon (MUSK, Elon) Was a Trillionaire
Connected to corrupt officials
The People Who Tried to 'Cancel' (or Deplatform/Censor) Daniel Pocock Are Annoyed That He's Mentioned in Dozens of Press Articles
If Pocock's words did not matter, there would not be such a huge effort to silence him
Cybershow Explains Why Only Sociopaths Gravitate Towards Leadership Position in 'Tech'
The general thesis is a familiar one
Give Me Your "Dumbest" (Devices)
Why can't people accept that a "modern "smart" "phone" isn't necessary to check the time (overkill) and playing social control media "on the go" is far from necessary?
Speeding Up 'Down Under': Australia, New Zealand, Tasmania...
As things stand, the best we can do is let people retrieve pages within less than 0.1 seconds since a request is received
Google's Debt Trebled in Only 9 Months and It's Not Even the Full Picture (There's Secret Debt, Too)
No wonder there are so many layoffs and workers try to unionise
Microsoft Layoffs in India
it's about cost-cutting
Deregulation is Blowing Up the Economy, Which Has Become a Multi-Level Scheme or Pyramid Scheme
Why did only Japanese media call out the BS; is that so hard to figure out and properly report on?
Daniel Pocock Proves Wikipedia is for Rich People or People Who Work for Very Rich People (the True Owners of Wikipedia)
It's for billionaires and their faithful boot lickers
GNOME: Your Personal Opinions Must Overlap GAFAM's (Otherwise Those Opinions Are Impermissible)
Get well soon, GNOME
Making Excuses for Stressful, Unrewarding, and Immoral Jobs
excuses for difficult and/or barely-rewarding jobs. [...] People in tech must not be evaluated (or have their "worth" assessed) based on remuneration
Almost 5 Years Without Social Control Media ('Mind Prison')
Life is too short to be stuck inside a skinnerbox
Linux Must be About People (Humans), Not Bribery From Slop Companies Trillions of Dollars in Debt and in Pursuit of Positive Press
We've lost Williams
John Dvorak Understood That "MSM" Was a Vehicle of Censorship
Independent publishing, which obviates the need to censor (influenced by existing advertisers or lookout for prospective advertisers), is the only credibly thing out there
To Understand Why Linus Torvalds Became a Boot-Licking Booster of Slop Look at Another Operative of 'Linux' Foundation, the "Mentor" of Clickfraud SPAMnil (According to SPAMnil Himself)
it seems like SJVN does not give a full disclosure
Blaming "Computers" Instead of Blaming Microsoft
Blaming Microsoft is "hate"
"Online We Are All Refugees" and Slop Pushers Are the Oppressors
They basically resort to nationalism and racism to distract from their commercial failure and fraud (pyramid scheme)
GNU/Linux Soaring in Antigua And Barbuda
GNU/Linux is internationally approaching 8%
Calling Out the Worst Culprits in "Linux" Slop (Slopfarms That Manipulate Information and Engage in Plagiarism)
Once they're gone (offline), the slopfarms cannot carry on for much longer
Defying Discrimination
Rianne's birthday is exactly a month away
Dan Williams Represented Real Diversity in Linux
Williams probably understood based on personal experience what it was like to be marginalised and discriminated against
The First Point About Software Freedom is, You Must Understand What It Really Means (Not "Open Source")
Forty Three Years of Commitment to Software Freedom [...] Educating people about what Software Freedom actually means
Gemini Links 24/07/2026: Recovering From Broken Shoulders, Loss of Passion, and "True Hacker Versus Growth Hacker"
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Thursday, July 23, 2026
IRC logs for Thursday, July 23, 2026
Gemini Links 23/07/2026: Databases, TLGS, and RSS Feeds
Links for the day
Links 23/07/2026: Science, Censorship, and Territorial Overreach by China
Links for the day
The State of Google Security: Blocking competition
GMail is the best!
What Happens When Windows Becomes as 'Niche' as GNU/Linux on Desktops and Laptops
Android enjoys a near-monopoly and GNU/Linux isn't far behind Windows.
IBM Cash "Down $6.3 Billion From Year-end 2025." Total Debt/Equity 188.97%. (Debt Can Exceed the Company's Real Value)
the CEO alone can make well over $0.7 billion in 5 years of salaries and bonuses
Wave of PIPs Allegedly Coming to Microsoft, Managers Trained to Terminate Employees Without Paying Severance (and Without Calling it Layoffs)
They count and cut the losses
This Looks Like the End of XBox, the Console
Sharma has become the "fall man" of Microsoft
European Patent Office (EPO) Series: A Consummate Master of the "Rigged Game"
"single-candidate shortlist"
Attempts to Change Focus and Change the Subject as IBM Shares Dwindle. Buying Revenue to Mask the Rapid Decline One More Time.
IBM used to be good at engineering, not financial engineering
Down 848% Year-on-year, Negative Cash Flow, Growing Debt (Richest Man on the Planet or Shrewd Scammer?)
The latest for Tesla is more of the same
IBM Falls Below $200, Expect $199 or Less Today (Panic Threshold)
Will this be enough to topple the managers?
Gemini Links 23/07/2026: SharePoint Rants and “Junk DNA” in Commented-Out Code
Links for the day
Links 23/07/2026: RIP John C. Dvorak, Organisation Weaponised Against J.K. Rowling
Links for the day
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Wednesday, July 22, 2026
IRC logs for Wednesday, July 22, 2026
Freexian & Debian: antitrust, unfair competition against joint authors and volunteers
Reprinted with permission from Daniel Pocock
IBM in the Red After Bad Results (Shares Down in After Hours)
Will the CEO step down, retire, of what else?
Gemini Links 22/07/2026: Fault Lines, the Dark Web and Beyond, and Why Substack is Awful
Links for the day
Insult and Injury: Getting Banned, Not Just Sacked, by Microsoft
A former insider spoke about this in public 5 hours ago
Links 22/07/2026: "Dumb Phones" Not Enough to Tackle Harmful Addition, "MPEG-4 Visual's Road to Being [Software] Patent-Free"
Links for the day
IBM's Press Release About Results Mentions "AI" 10 Times, "Quantum" 4 Times
Blah blah blah AI"
Top secret: Cults inquiry submission concealed from public
Reprinted with permission from Daniel Pocock
An Hour Ahead of Alleged 'Results' (Amid Investigation Into Fraud) IBM Falls Back to New Lows
Only cents away from a 52-week low
IBM Headed for Lowest "Value" in 2 Years
In a nutshell, Krishna "can't keep it up" and IBM is now investigated for fraud
Investigation Progressing
There is nothing "funny" about receiving mortal threats for merely reporting information in a civilised country
Things We Could Do More Than Half a Century Ago But Can No Longer Accomplish
Newer is not always better
Anupa Ann Joseph & Debian defamation gang
Reprinted with permission from Daniel Pocock
State of the Invidious Project
Never forget how hostile Google can be towards freedom
Prioritising the Safety of Women is the Best Approach to Foster Diversity in Technical Communities
Debian was never "normative", but that does not mean Debian should have such low standards
IBM Will Report 'Results' Tonight (CET), It's Already Investigated for Securities Fraud
"Five of the biggest US tech giants are carrying $1.65 trillion in debt that does not show up on their balance sheets"
Hardware Has Gotten a Lot Worse, Not Just Far More Expensive
prices go up fast
Amid Claims of Microsoft Bing Layoffs It Seems Like Bing Cannot Even Hold on to Second Place
Yandex is sometimes bigger than Bing
Wikileaks Does Not Publish New Material Anymore, But Wikileaks Still Changes the World
Wikileaks has a legacy that will soon turn 20
Links 22/07/2026: Postal IRCs, PlayStation Kills Discs, Union Action Against Microsoft, "Judge Considers Tossing Databricks Patent Suit Under California anti-SLAPP Law"
Links for the day
Same 'Journalists' Who Published Fake News for IBM (Pump and Dump) Now Write Puff Pieces About the Stock Falling
the media is so compromised
They Called It "Social" and "Media", But It Turned Out to be Slop and Child Porn
Why do any sane people still use social control media?
Age of consent: DebConf26 registered sex offender in Argentina?
Reprinted with permission from Daniel Pocock
European Patent Office (EPO) Series: In the Pole Position Despite a Dismal Track Record
António Campinos is an old hand when it comes to such high-level institutional intrigue
Site a Bit Slower Due to Visitors' Load
We'll try to work out better speeds
Gemini Links 22/07/2026: Emacs, Astrology Clock, Arduino, and Rogallo v1.0.0
Links for the day
After Involvement by the Free Software Foundation (FSF) LibreTech and Quibble Gain More Participants
RMS expressed gratitude for people who worked on Quibble and improved LibreJS after many years of inactivity
The Lessons From the Assange Saga
This will not end well
Linux Foundation an Enemy of the Planet, Proponent of Pollution and Global Heating
"could the "polluters pay" model be extended to the computing environment and used to take on Microsoft and Microsofters?"
Apple Will Increase Surveillance of Customers, Record Verbal Communications Under the Guise of "Hey Hi"
Apple now drinks that same Kool-Aid
Dave Winer, Blogging Pioneer, Sells Out, Spews Out LLM Slop to Readers
Another one bites the dust [...] Now it's a slopfarm of sorts
Not Everything Can be Automated
not a new thing
GNU/Linux OS in ComorOS
Now, as in recent years or the last year, the GNU/Linux "signal" is growing significantly
Microsoft Redefines "Layoffs" to Give Smaller Tallies
It's not just calling them "buyouts" or saying people are merely "leaving" or "retiring"
IBM is Not Done Destroying Red Hat, Wait Till October 1st 2026 (More Layoffs and Bluewashing)
It's not bluewashing 'til it's 100% done
Over at Tux Machines...
GNU/Linux news for the past day
IRC Proceedings: Tuesday, July 21, 2026
IRC logs for Tuesday, July 21, 2026
"LF Sex", Nothing to Do With Linux
a lot of explaining to do this week