08 June 2023

When can we use spoken English as a programming language?

English has become unnecessarily complicated. Simplifying it will also help simplify AI training and daily use. What would you like to simplify about English?

Husbands across the world are familiar with how their wives use English or any other human language (or a broom) to “program” them into doing exactly what they want. The “code” in your mind is also getting re-programmed as you read this article. Such “dynamic syntax and semantics” which actually understands information and context, is ideally what we want computers to be capable of. Why aren’t programming language creators channeling efforts in this direction?

At my first computer class, our teacher said: “the computer is a dumb machine. It only does exactly what you tell it”. Although programs like Flappy Bird and GrootGPT have been built by prompting ChatGPT in English, and with GPT-4 generating websites using a diagram as a prompt, I do believe we are getting closer to being able to program computers by simply talking to them.

Don’t do the work. Make the computer do the work for you — Nav

The redundancy of memorizing syntax and semantics

Look at the various ways programmers had to learn and re-learn how to write a simple loop, because programming language creators decided to let their imagination go wild, instead of thinking about the end user:

  • Repeat 3[Forward 100 right 90]
  • for(int x = 0; x<=3; x++)
  • FOR i = 1 TO 3
  • for (let i = 0; i < a.length; i++)
  • for i := 1; i <= 3; i++
  • for x in data:
  • for a in 1..3 do
  • for i in {1..3}
  • for a = 3.0: -0.1: 0.0

As programmers gain experience, learning the wanton fluctuation in syntax and commands gets mentally exhausting. Creators of frameworks and programming languages really need to put in effort to provide simplicity and familiarity for the users. Either that, or build an AI to handle it.

It’s the same with conditional statements, classes and datastructures. In one language you learn the length of an array is array.length(). In another language it’s len(array). With for loops, what if we could just tell a computer to…

loop three times

…and the computer would understand it and automatically translate it to any high-level or low-level language we wish? The same applies to the unnecessary complexities of web frameworks. It’s mentally exhausting to be forced to learn all the nuances of PHP, then Struts2, then Spring framework and then realize that you also have to learn a different bunch of nuances of Django for a new project. Unfortunately, even new frameworks/languages like Julia and Modular’s Mojo are busy building a new syntax.

The future: Being able to talk to an IDE to do programming is just the first step. Improved versions will have us talking and interacting with (or even mind-controlling) not just a visualization of the final product on the screen (rather than deal with the code), but we’d be touching and interacting with what we create, via Virtual and Augmented Reality. Complexities and details will seamlessly be handled by an AI.

As programmers gain experience, learning the wanton fluctuation in syntax and commands can get mentally exhausting if one has to switch between languages multiple times. Creators of frameworks and programming languages really need to put in effort to provide simplicity and familiarity for the users. Either that, or build an AI to handle it.

The digital debt of repetitive manual tasks

As a full-stack developer, I’m fed up of manually having to start servers or write scripts to do it or setup manifest files and manually plan and test out the connectivity of disparate web technologies. Then there are the errors, compatibility issues and bugs that show up repeatedly which again require manual intervention. Then there’s the need to type and memorize commands like “kubectl run -i …” and also memorize which other parameters require a double dash “ — tty”.

These are all things that an AI assistant algorithm should be handling. Human intelligence and intervention is of course required, but a lot of the repetitive work can indeed be handled by an AI. This means massive cost savings not just in effort, but also in having reliable software (thus not losing time in debugging and also in not losing customers).

But we are too busy to build this, aren’t we?


Simplifying English as a first step

Haven’t you always wanted to just say “eye doctor” instead of having to spurt out “ophthalmologist”? Do we really need words like “yeet” when “throw” communicates it just fine? English is a language that borrowed from many other languages and grew massive with time. There’s a prominence of English used in programming languages, and it would help to simplify it.

Time: Was it really necessary to have 12am and 12pm? Isn’t 12:00hrs and 00:00hrs so much clearer in referring to day and night? Even clocks don’t need to have the pointless hour and minute hand where we are expected to do additional mental processing to interpret 6 as 30. It’s just silly!

Months & days: Couldn’t we have month names as Month1, Month2, instead of January, February? Couldn’t we have days of the week as Day1, Day2? I still find it hard to figure out what day of the week people are referring to in regional languages.

Planets: Mothers would be glad to not have their seating choices questioned, with mnemonics like My (Mercury ) Very (Venus) Elegant (Earth) Mother Just Sat Upon Nine Porcupines. Planets could simply be named Planet1, Planet2, and so on.

Spelling: Couldn’t we write words the way they are pronounced? “Kayos”, instead of “Chaos”, “Kernel” instead of “Colonel” (or just have military ranks as Rank1, Rank2A, …). Shorten unnecessarily long words like “Abbreviation” into “Abbr”? Get rid of the dots in “E.g.” and “etc.”.

I know it appears weird at first, but when you think about it, you’ll realize that we’ve just been conditioned into accepting and normalizing weird spellings and conventions.

English has become unnecessarily complicated. Simplifying it will also help simplify AI training and daily use. What would you like to simplify about English?

Reality of “AI” not being intelligent

“Intelligence” is still in the human brain. We haven’t really managed to make Generative AI or Artificial Neural Networks, truly intelligent. Using probability values to predict tokens is definitely not intelligence. When building GrootGPT, I noticed how ChatGPT didn’t actually understand what I meant by the left or right side of the page. It didn’t understand enough to modify the generated code to make the lightbox disappear when the User clicks outside the box. Colleagues have told me how ChatGPT would import imaginary packages in Python. Even though the results of current state-of-the-art of Machine Learning is impressive, the direction of research needs to be altered to build systems that are capable of independent logical analysis and adaptive learning. As few researchers have observed (and even I presented in my thesis), this requires allowing the AI to experience the world in the way we do. It is difficult to achieve, but I’m sure it is possible if people have the courage to break free from conventional thinking.

Communicating without errors with humans using English is tough in itself. An algorithm will need to take in a lot more context. Still, let’s see if it’s the open source community, academia, an independent researcher, or a corporate that builds the first truly intelligent algorithm. It should be incentivized. Although we have RPA, no-code frameworks and convention-over-configuration, we are still spending a lot of time and effort re-building and fixing things. This is not how life should be lived. We need to create more spare time to pursue our pleasures/interests and spend time with the people we love. To live, rather than just keep working long hours everyday! For a start, couldn’t we use existing tech to automate-away a lot of drab, monotonous tasks and build interfaces to command them with our voice? At least I’m going to try…

No comments: