The Final Programming Language is Language

My first programming class was in C. The class started with two weeks of pseudocode. We wrote out descriptions of what the code does. Our professor was trying to get us to think through software versus the semantic expression of a particular programming language. We were writing English statements that eventually turned into sections of C code. In a giant twist of fate, our course was teaching C so that we could build a matrix solver. Now, I work at MathWorks, creators of the most advanced matrix solver, MATLAB which literally stands for matrix laboratory.

Hans Scharler holding The C Programming Language Book

What is pseudocode?

Pseudocode is a high-level, informal description of a computer program or algorithm that uses natural language and simple syntax to outline the logic of the program or algorithm. It is not a programming language, but rather a way of expressing a program or algorithm in a way that is easy for humans to understand. Pseudocode is often used as a tool for planning and designing programs before they are implemented in a specific programming language. It is also used in teaching and documentation to explain the steps of a program or algorithm in a way that is accessible to readers who may not have programming experience or who are not familiar with a particular programming language. Pseudocode typically includes common programming constructs such as loops, conditional statements, and functions, but does not include specific syntax or code examples.

Going Full Circle

In my long history with programming, I wasn’t always thinking about pseudocode. Programming quickly devolves into the syntax and language specific quirks, but I do realize I was learning how to think through how I solve problems with code. Software engineers and developers have developed their own processes to breakdown complex applications to a series of sections. In the era of large language models and code generation, this is now what I refer to as prompting. Pseudocode is now prompting a LLM or codex to generate specific code responses. Does AI make a programmer obsolete? I argue that AI will unilaterally benefit humans who understand how to breakdown complexity and build up complexity. Humans who leverage AI will become a different specie of humans.

“Language is the final programming language.”

Hans Scharler

Tools like ChatGPT effortlessly spit out code based on prompts. If you are better at prompting, you are better at writing code. Prompting is just a series words in a language, but not a programming language. Anyone can now write HTML with the English language. Are you going to ignore this super power or are you going to leverage it?

ChatGPT Prompt: Create a table of made up fantasy city names in HTML where one column is the city name and other column is a population size

Pseudocode is Now Prompt Engineering

Pseudocode and prompt engineering are both techniques used in software development to help with designing and planning the structure and logic of a program or algorithm.

Pseudocode is a high-level description of a program or algorithm that is written in natural language and simple syntax. It allows developers to outline the steps and structure of a program without getting bogged down in the specifics of a particular programming language. Pseudocode can be used to plan out the logic of a program before writing any actual code.

Prompt engineering, on the other hand, is a technique used in natural language processing and machine learning to create high-quality prompts that guide the language model towards producing desired outputs. It involves designing and refining the prompts used to generate text, which can be used to train and fine-tune language models.

Tips for Getting Better at Prompting for Programming

I have some advice if you want to start thinking like a software engineer and start learning how to prompt a language model like ChatGPT.

  1. Break down the problem: The first step in prompt engineering is to break down the problem you want to solve into smaller, more manageable pieces. This requires you to think critically about the problem and identify the key factors that will influence the outcome.
  2. Identify the key inputs and outputs: Once you have broken down the problem, identify the key inputs and outputs of the system. This will help you design effective prompts that guide the model towards producing the desired outputs.
  3. Use clear and concise language: Just like in software development, clear and concise language is essential when using prompt engineering. Use language that is easy to understand and avoids ambiguity or confusion.
  4. Test and iterate: Prompt engineering is an iterative process, just like software development. Test your prompts and make adjustments based on the results you get. Continuously refine and improve your prompts to achieve the best possible outcomes.
  5. Consider edge cases: As a software engineer, you are familiar with the importance of edge cases in testing and development. When using prompt engineering, consider the edge cases that may impact the accuracy and performance of your model.

By thinking like a software engineer, you can effectively leverage prompt engineering to create high-quality prompts that guide natural language processing and machine learning models towards producing the desired outputs.

What do you think? Join our community. Let’s discuss.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.