Hello, World

“…hundreds of millions of years.”

In software development, it’s something of a tradition to write a “hello, world” program when learning a new programming language.[1]  It’s often just a simple program that prints the words “Hello, world” on the computer screen, to prove it can be done.  Getting this proof of concept to run, can tell us multiple things: the programming environment is set up correctly, the program source code is correct, and the steps to run the program from the source code are effective.  It can also be a confidence builder as well as fun.  But the general concept of it is far more than any of that.

First, a little bit of background.  The specific idea of a “hello, world” program was popularized by inclusion in a book called The C Programming Language by Brian Kernighan and Dennis Ritchie.[2]  This was before the graphical user interfaces (GUIs) we are used to. Instead of a mouse, icons, or a touch screen, the computer’s user interface typically consisted of just typing at a keyboard and reading from a scrolling text-only screen or even reading from a line printer.  A program using this type of text-only interface is called a console program or console app when using a monitor (use of a line printer for the main source of output is much less common nowadays).  While a GUI environment can boost our productivity, a text-only program is often simpler than its GUI-based counterpart.  So it can be easier to create (or understand) a traditional console program when (e.g.) first learning a programming language.

The “hello, world” practice is so embedded in computing tradition that the cargo software tool for the Rust programming language creates a “hello, world” program when asked to create a new program project.  The developer then modifies the given source code for whatever purpose.  Microsoft Visual Studio software does something similar when creating a new console program in the languages C# or VB.Net. The term “hello, world” program might even be used metaphorically to describe when an experienced developer is trying something new, like when first using an unfamiliar software library to add functionality to an existing program.

Performing a very simple task is a key aspect of a “hello, world” program.  Printing a few words to the screen is assumed to be simple enough to not fail, or the problem will be somewhat obvious if that simple program does fail. On the one hand, seeing the simple expected output shows that the environment is set up correctly. But on the other hand, assuming the environment is set up correctly, it shows that the user can in fact write a short program. Interpreted that way, the “hello, world” program can be seen as the next step in this simple example of the software development process, with setting up the environment being an earlier step. In fact creating the “hello, world” program could be seen as a slight change from having an empty source code file and therefore the first step in incremental changes to the code. Similarly, each new incremental change to the working source code that still works, can be seen as a variation on the “hello, world” program. In that case each working incremental change becomes its own “hello, world” program. An example of this was given previously, in the case of first using an unfamiliar software library with a given program.

The software industry seems to like small working changes. For example, the existing practice of repeatedly providing imperfect software to the end users to get feedback to guide further changes is called iterative development. The process of refactoring, which is reorganizing the source code without changing its behavior, is based on even smaller, simple changes. In each of these examples, one change or development cycle could be considered a kind of “hello, world” program, assuming the code was working before and after, at least when adding code. A relatively simple change was applied to a functional system. Doing a web search can show that other disciplines make use of incremental changes too.[2]

But as much as we humans would like to take credit for the idea of incremental changes to working systems, nature has been doing it with life on Earth for hundreds of millions of years. It’s no surprise, then, that the term evolutionary software development is also used. But did nature invent the idea of the “hello, world” approach? Yes, since nature can’t just be put on hold while changes are made to a species. So the “system” of a given species must be working before and after a change in that species. An unsuccessful species change is one that is not suitable for the given environment, in which case the species members with that change die off. Or if the environment changes such that the current version of the species is not adapted for it, then the species must also change to keep up or else migrate or face possible extinction. But nature is constantly making minor changes to species anyhow, maybe most of which are not noticed. Maybe the changes help the species adapt more, maybe less. Those species members without the change, don’t get its advantage or disadvantage. Maybe the degree of advantage or disadvantage of a species change for a given environment would need several generations to have a significant effect on the population.

A species needing to adapt to a changed environment is similar to when the environment for software changes, and the software must then be either upgraded or replaced/discarded. Maybe there are new security requirements or other new requirements, such as the need for new functionality or compatibility with external upgraded software. When developing the new version of the software, the developers likely started with the source code of the previous version of the software and changed it little by little. Each working change then became its own “hello, world” program, showing the change could be kept. Unfit changes were hopefully not kept.

So it seems that nature, software engineering, and other disciplines have used the “hello, world” approach for building systems such as a species, a software system, or some other product. In each case, it can seem daunting to start with practically nothing and end up with the finished product. Life itself is said to be a miracle. So the next time you are asked to do the impossible, in terms of scale, consider taking the incremental “hello, world” approach. You might not have hundreds of millions of years, but the process can still work for us humans on big projects.

References

[1] https://en.m.wikipedia.org/wiki/%22Hello,_World!%22_program

[2] https://www.rosemet.com/agile-in-non-software-projects/

Copyright 2025 by Mike Ferrell

A Quick Look at Unlucky 13

“Maybe it’s nothing so deep or analytical.”

With Friday the 13th coming up, it’s hard not to wonder about the number 13.  Is that number really a source of bad luck, or is that just in the imagination?  Various reasons have been given for 13’s reputation, some of which are related to Christianity and the Christian Bible[1].  Also there are various discussions of “perfect” 12 being more common, like for the number of months. But the calendar is more of a long-term thing.  I’m looking for a more practical everyday reason.

Continue reading “A Quick Look at Unlucky 13”

Unreal

“…even when there was nothing but air in between.”

How real is our everyday life? Most people probably have some experience with artificial colors or flavors in food or maybe even hair coloring or colored contact lenses. There are also reports of fake news that didn’t happen and so-called “deep fake” images that look like actual – but nonexistent – photos. Recent advances in generative AI tend to accelerate such fake media trends. But living with what is not real is nothing new.

Continue reading “Unreal”

Stop Refactoring Your Code

“…also write dumb code.”

If you know much about software development, then you probably have some idea what refactoring is. It was made more popular some years ago by Martin Fowler’s book Refactoring, which defines the term as “improving the design of existing code.”[1] The code referred to, is of course software source code, the specialized text used to tell a computer how to perform some task. It’s generally accepted that refactoring is a good practice for fixing unruly code, as the schedule allows. Then why does my title for this blog entry tell you to stop refactoring your code? There’s more here than meets the eye.

Continue reading “Stop Refactoring Your Code”

Natural Processes and Life

“But the sacrifices?”

The recent full moon may or may not have turned someone into a werewolf, but it did remind me that the moon can influence the behavior of animals, just like the sun can. Both are part of the daily cycle of day and night as well as the rising and falling tides. There are many cyclic processes in nature, interacting with each other. Many are such a part of our lives, that they have been given names as if they were people. For example, Jack Frost has recently visited my neighborhood. Treating complex natural phenomena as intelligent beings could just be poetic license, but maybe the basic idea is not so far-fetched. Could “nonliving” natural processes have intelligence or even be a form of life?

Continue reading “Natural Processes and Life”

Witches’ Brew

“But what if there’s more to it than that?”

Like other aspects of culture, witches have stereotypes that are fueled by tradition, fiction, and modern media. A well-known aspect of witch stereotypes is the brewing of potions or witches’ brew, often in a large black cauldron. The purpose of a potion could be to cure illness, obtain immortality, or try to “induce love”, according to Wikipedia.[1] Other historic purposes for witch’s brew can be found on the web as well. The ideas for tradition and fiction are often based on truth. In fact, the mixing of natural ingredients in potions eventually helped bring about modern medicine. Could there be any truth to other supposed uses of witches’ potions, beyond potential use as medicine?

Continue reading “Witches’ Brew”

The Top or the Bottom

“We may still need something closer to our scale…”

We humans like to think of ourselves as the dominant lifeform of Earth, having the power to help or hurt any and all life on the planet.  Mainstream science depicts us as naturally intelligent beings using technology to help us do things, harnessing nature as we see fit.  Do we have it backwards?  Is nature harnessing us?  What if we are the technology?

Continue reading “The Top or the Bottom”

COBOL’s Innovative English Mimicry

“In my opinion, it excels at that, even better than modern programming languages.”

Years ago, I took a college course on the COBOL programming language while studying computer science.[1]  The version of COBOL being taught in the course was from the 1960s or 1970s.  Having already learned some Pascal and FORTRAN, I was disappointed with what COBOL apparently lacked.  While COBOL had what might best be referred to as “subroutines,” the subroutines in our programs did not have have parameters, return values, or even local variables.  Yes, all data was global, a situation that has been blamed for at least a few problems in faulty software.  I don’t recall whether such features were absent from the version of COBOL we used, or if they simply did not fit into the scope of that one-semester course.  Regardless, even that old version of COBOL had a quality I found very impressive then, and even more so now.

Continue reading “COBOL’s Innovative English Mimicry”

The Universe Doesn’t Care What We Think

“Reality is simply not that convenient.”

Some (most?) people may not care what I think, and that’s fine. But I think the physical universe doesn’t care what any of us thinks. In attempting to explain the universe or the part we experience, just about any theory we throw at it, has limitations that make the theory inaccurate under certain conditions. The experimental results and theories from physics can be different enough from our everyday experience, to make it seem presumptuous to expect the universe to behave the way we normally perceive it or to understand why it does what it does. Relativity and quantum physics come to mind.

Continue reading “The Universe Doesn’t Care What We Think”

The Distance Between Heaven and Hell

“You can calculate just about anything, if you really want to.”

Around Halloween time, you may see someone dressed up like Satan or maybe watch scary movies that involve Satan or demons.  But the day after Halloween is All Saints Day, which celebrates people of a more holy disposition, particularly the Christian Saints.  And then there is Christmas in December, celebrating the birth of Jesus with images of singing angels.  That’s quite a reversal over night or even in two months, as if Heaven and Hell aren’t so far apart.  Granted, they may be metaphysical places that we can’t travel to physically, what if we could?  How far apart might they be?

Continue reading “The Distance Between Heaven and Hell”