Welcome!

Java IoT Authors: Liz McMillan, Elizabeth White, Yeshim Deniz, Zakia Bouachraoui, Pat Romanski

Related Topics: Java IoT, Microservices Expo, IBM Cloud, Microsoft Cloud

Java IoT: Article

The History of Programming

Programming really starts back around 2500 B.C. with the introduction of the Abacus

I've been programming since around 1982, first using an Apple in high school and then finally getting my first computer, the Timex Sinclair 1000 (2k of ROM and 2k of RAM), that same year. Both computers came with a form of the BASIC programming language and it was the start of my lifelong pursuit of trying to understand computers.

A few months ago, one of my good friends called and asked if I had a PowerPoint presentation on the history of programming. When I checked my extensive list of presentations, I noticed that I didn't have one, so that led me on a journey to create a presentation on that very subject.

However, where to start? Maybe 1940 or 1950? After thinking about it for a while I realized that's really not where programming started. You need to go way, way back to really understand the programming concept and where it came from. This led me to envision the world as a dark, almost black place with a small white light in the center... really the only light around was the small white light in the center and that light represented the idea: there has to be a better, more accurate, way to count and keep track of things for commerce.

Prehistoric Programming
To be honest, programming really starts back around 2500 B.C. with the introduction of the Abacus. It was the first mechanical calculator that had more capabilities than most people realize. Did you know that the Abacus was used to help the blind count? I guess it could be said that it was the first 508-compliant device, and it was also used to explain things like ASCII that came many years later.

I know what you're thinking - that this is "hardware" not "software," which is 100% correct, but it's also the start of thinking and implementing in a mechanized fashion. Remember, the use of zero (0) was not introduced for another 2000 years, binary was still 2200 years away and almost 2400 years away from having a mechanical machine to predict astronomical events such as eclipses.

It took many years after that to get things like a machine to do control sequences (60 AD), the first real program, the first Cryptography (850 AD), the first security, the first mechanized mechanical calculator (1640 AD) from Blasé Pascal, and the first use of punch cards (1725 AD) for use with looms.

As history points out, there were a lot of things that had to happen to get us to the point where we could start thinking of the concept of "programming." This concept of "programming" was really nothing more than the idea of a repeatable process for counting and manufacturing.

The Leap...
This lead to Charles Babbage's "Analytical Machine," which was a huge, and I mean monumental, leap of what was before and what would come after. Many books and articles have been written on the Babbage machine, but a few reminders are in order:

  • Used a concept of a program
  • Had read-only memory
  • Had the concept of a CPU
  • Used a form of punch cards
  • Could do conditional jumps
  • Would be powered by steam

This change was on the order of going from black and white television to the high definition, millions of colors, televisions of today. The only problem was the machine never worked! However, the thoughts of where it could go sparked a revolution in ideas around such machines.

The great philosopher Plato said it best; "Necessity... is the mother of invention." No truer statement was applied when in 1880 the U.S. Census needed a better way to count the population of the U.S. At that time, it took seven years to complete the counting for that Census and it was predicted that it would take over 10 years to count the next one. The problem was the U.S. Census is supposed to happen every 10 years, hence the problem.

The Census department held a contest to find a better method of counting and it was won by an employee called "Herman Hollerith" who went on to create the Tabulating Machine Company, which later became known as IBM. Now back to the 1880 Census. It counted the 62,622,250 people with the famous line: "finished months ahead of schedule and under budget." The idea for the punch cards that were used came not from history or the loom, but from the observation of railroad conductors who categorized passengers with a code when they punched the ticket.

The Birth of Programming
Things continued to progress with the German Z3 in 1943 that could do three to four additions per second. Then along came the IBM Automatic Sequence Controlled Calculator, which was a massive machine that was 51 feet long, weighed about five tons, and was made up of 750,000 parts. What kind of processing power did you get from this machine you may ask? It could handle numbers up to 23 digits with a plus sign and could process more than three or four add or subtracts per second, it could multiply in six seconds, divide in 15 seconds, and could do a logarithm or trig function in just over a minute, and by the by, this was all done on 24 column paper tape.

Finally in 1946, a real speed breakthrough occurred in processing with the ENIAC, which could do 5,000 simple add or subtracts per second. It could do real processing like Loops, Branches, and Subroutines and was programmed by six women moving cables and manipulating switches, and was one of the first machines to offer a debug process for a "single step" process.

The Dawn of Modern Programming
We started to get machine language that could be executed with switches and levers, but then came the dawn of SOAP. I'm not exactly talking about today's concept of SOAP (Simple Object Access Protocol), I'm talking about 1957's SOAP, and you know the one, Symbolic Optimal Assembly Program. While not as hip as today's SOAP, the 1957 version did add a lot for the programming world. Things like remembering numeric codes and addresses, large programs, and Assemblers are still used today; think about the Java JVM for example, which is written almost entirely in Assembler.

Around the same time as SOAP, a new language from IBM came onto the scene - Formula Translation or FORTRAN as it became known. This was really the first "general-purpose" language to hit the market. It was designed for numeric and scientific computing, but it could do a lot more and did. Today, Fortran 2008 (capitalization was removed in a later language specification) is the latest standard and still widely used, and it has influenced other, more modern languages used today, many that you most likely use from time to time.

A year later (1958), LISP (LISt Processing) came online and changed the way we think about data by introducing concepts of tree data structures, dynamic typing, and many others. It was originally designed to run on specialized LISP machines and has inspired another multitude of languages, for instance JavaScript.

Next came the dinosaur of languages, not because it's old, or extinct, but because it was and still is a giant when it comes to the number of people who have been exposed to it. I can only be writing about COBOL (Common Business-Oriented Language). Developed by IBM, the U.S. Government, and many others, this became the standard language used by businesses around the world. It's estimated that over a quarter of a trillion lines of COBOL are still in production today.

The Great Expanse in Software Language
The 1960s, from both general historical and a computer science point of view, were a radical time. New computer languages were being developed at a record pace. Take for example ALGOL, which spawned other languages such as B, Pascal, C, and Haskell. New thoughts like the introduction of Scripting languages like PL/1 that led to REXX and to the first DSL (Domain Specific Language) RPG for report generation were all new approaches to programming.

A culmination of things learned were put into a general programming language called BASIC (Beginner's All-purpose Symbolic Instruction Code), which ironically was way ahead of its time by releasing the compiler for free. It was also the first language to really be "snobbed" by the highly respected computer professionals around its approach to many things, with the biggest offense being the use of the GOTO statement.

Most likely the biggest addition to computer programming came in 1967 with the invention of Object-Oriented (OO) programming. OO programming was introduced with Simula, which introduced concepts of Objects, Classes, virtual methods, garbage collection, and many others. It took a very large step in helping abstract the complexities of the world into known items and simplified system decomposition. This paradigm alone is responsible for the most popular language in use today, C++. Thinking about C++, just how many other similar languages and constructs were invented or introduced?

There are many great languages that were introduced over the next couple of decades, languages that many of us use day-in and day-out. Some caught on while others faded into obscurity.  But it should be said that with the advent of development environments or IDEs, more code was written and generated and generally allowed the programmer using an environment to flourish. We are currently at a low-point for IDEs, but this too will most likely pass as new environments are introduced to remove or, at a very minimum, reduce the amount of code that needs to be written for the demanding customers of today.

Of course with the advent of Visual Basic, Delphi, C++, and Java, the world became a much easier place in which to program. Remember before Java, and way before .NET, the world was a much more diverse place in regards to programming languages. I have trade magazines from the early '90s where the discussion wasn't on Java or .NET but on the fastest compiler, the best GUIs, the best way to scale software. It was a different time.

The Land of the Mixers
Welcome to the land of mixers... what are mixers you might ask? Today we live in a world where one programming paradigm is not good enough for us to do our jobs. To be honest, there really has not been a new idea in programming since the early 1970s.

Most of the ideas were already thought of back in the 1960s. For a language to "catch" on today it has to, at a minimum, give a nod to the past or it will be labeled extreme and it needs to be somewhat familiar or it won't be understood. So languages like PHP, Ruby, Erlang, F#, and even GO really don't do anything that new or special.

I proclaim the current time, the land of mixers, because instead of coming up with something new, we now add from all different languages to create a new language. My current favorite example of a mixer language is Falcon (http://www.falconpl.org/). It states it is the following:

...an Open Source, simple, fast and powerful programming language, easy to learn and to feel comfortable with, and a scripting engine ready to empower mission-critical multithreaded applications.

Falcon provides six integrated programming paradigms: procedural, object oriented, prototype oriented, functional, tabular and message oriented. And you don't have to master all of them; you just need to pick the ingredients you prefer, and let the code to follow your inspiration.

Wow, I could not have said it better myself. Falcon is a true mixer language. There are dozens of other languages just like Falcon and many have less constraints, and Falcon has very few. On the one hand I can program any way I like, on the other I can program any way I like and that may not be good for the next person who will become responsible for my code someday. So this invariably leads to the next question...

What's Next?
Maybe a language that's different and based on Computational Theory is next, or maybe something completely off the wall is right around the corner and will change the way we develop software, change the way we think about software or maybe it will be another repackaging of the same things we do in other languages, just presented differently.

For over the past 50 years, we have been rehashing the same ideas over and over. Requirements are not shrinking and customer expectations are not withering, so whatever language you choose to complete a project, make sure you like it and it gets the job done.

Due to the size limitation of this piece, I had to leave out a lot of other languages. Some really cool ones, some really boring ones, and some I totally forgot to include. Keep an eye out as I plan on taking the presentation on the road to a conference here or there to get feedback, and most likely a recording of the full presentation in the future. I'm sure I forgot your favorite language, or I need to drop one of mine, but one thing is for sure, the history of programming is always morphing and that makes things really interesting.

More Stories By Mike Rozlog

Mike Rozlog is with Embarcadero Technologies. In this role, he is focused on ensuring the family of Delphi developer products being created by Embarcadero meets the expectations of developers around the world. Much of his time is dedicated to discussing and explaining the technical and business aspects of Embarcadero’s products and services to analysts and other audiences worldwide. Mike was formerly with CodeGear, a developer tools group that was acquired by Embarcadero in 2008. Previously, he spent more than eight years working for Borland in a number of positions, including a primary role as Chief Technical Architect. A reputed author, Mike has been published numerous times. His latest collaboration is Mastering JBuilder from John Wiley & Sons, Inc.

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
JulesLt 08/16/11 09:56:00 AM EDT

Few thoughts - I've always thought knitting patterns were an early form of programming language, complete with loops - and presumably pre-dating loops, which automated them with cards.

(And unlike, say, a recipe, it's a formal abstract language)

Secondly, we now know ENIAC was predated by work done throughout WW2, in both the US and UK, that was only declassified much later. But as far as I know, Manchester claims the title for the first computer to execute a program stored in memory - which was a major advance from calculating machines to computers.

Lastly - there was a good paper published in the 80s which made an interesting observation - which was that the leap from punched card/tape to VDU based programming was huge, but each additional leap (higher-level programming languages, interactive compilers, IDEs) has seen a smaller improvement in developer productivity.

He predicted that visual programming environments would not result in a massive leap forward - or enable non-programmers to program - because they were making a mistake about what the actual difficulty with programming was.

The author pointed out that most of the improvements have been around removing accidents (mistyping, referencing methods that do not exist) and in standardised code libraries - 15 years ago we wrote C at the TCP socket level - now we generate proxy objects against a WSDL and everything below that is taken care of.

In doing so, we get closer and closer to spending our time on the actual inherent complexity of the problem we are trying to solve. That the errors become increasingly errors in business logic or architectural, not code.

Or put another way - anything that can generate code IS a form of high-level programming language (and a general purpose CASE tool may be less productive that a DSL).

IoT & Smart Cities Stories
The deluge of IoT sensor data collected from connected devices and the powerful AI required to make that data actionable are giving rise to a hybrid ecosystem in which cloud, on-prem and edge processes become interweaved. Attendees will learn how emerging composable infrastructure solutions deliver the adaptive architecture needed to manage this new data reality. Machine learning algorithms can better anticipate data storms and automate resources to support surges, including fully scalable GPU-c...
Machine learning has taken residence at our cities' cores and now we can finally have "smart cities." Cities are a collection of buildings made to provide the structure and safety necessary for people to function, create and survive. Buildings are a pool of ever-changing performance data from large automated systems such as heating and cooling to the people that live and work within them. Through machine learning, buildings can optimize performance, reduce costs, and improve occupant comfort by ...
The explosion of new web/cloud/IoT-based applications and the data they generate are transforming our world right before our eyes. In this rush to adopt these new technologies, organizations are often ignoring fundamental questions concerning who owns the data and failing to ask for permission to conduct invasive surveillance of their customers. Organizations that are not transparent about how their systems gather data telemetry without offering shared data ownership risk product rejection, regu...
René Bostic is the Technical VP of the IBM Cloud Unit in North America. Enjoying her career with IBM during the modern millennial technological era, she is an expert in cloud computing, DevOps and emerging cloud technologies such as Blockchain. Her strengths and core competencies include a proven record of accomplishments in consensus building at all levels to assess, plan, and implement enterprise and cloud computing solutions. René is a member of the Society of Women Engineers (SWE) and a m...
Poor data quality and analytics drive down business value. In fact, Gartner estimated that the average financial impact of poor data quality on organizations is $9.7 million per year. But bad data is much more than a cost center. By eroding trust in information, analytics and the business decisions based on these, it is a serious impediment to digital transformation.
Digital Transformation: Preparing Cloud & IoT Security for the Age of Artificial Intelligence. As automation and artificial intelligence (AI) power solution development and delivery, many businesses need to build backend cloud capabilities. Well-poised organizations, marketing smart devices with AI and BlockChain capabilities prepare to refine compliance and regulatory capabilities in 2018. Volumes of health, financial, technical and privacy data, along with tightening compliance requirements by...
Predicting the future has never been more challenging - not because of the lack of data but because of the flood of ungoverned and risk laden information. Microsoft states that 2.5 exabytes of data are created every day. Expectations and reliance on data are being pushed to the limits, as demands around hybrid options continue to grow.
Digital Transformation and Disruption, Amazon Style - What You Can Learn. Chris Kocher is a co-founder of Grey Heron, a management and strategic marketing consulting firm. He has 25+ years in both strategic and hands-on operating experience helping executives and investors build revenues and shareholder value. He has consulted with over 130 companies on innovating with new business models, product strategies and monetization. Chris has held management positions at HP and Symantec in addition to ...
Enterprises have taken advantage of IoT to achieve important revenue and cost advantages. What is less apparent is how incumbent enterprises operating at scale have, following success with IoT, built analytic, operations management and software development capabilities - ranging from autonomous vehicles to manageable robotics installations. They have embraced these capabilities as if they were Silicon Valley startups.
As IoT continues to increase momentum, so does the associated risk. Secure Device Lifecycle Management (DLM) is ranked as one of the most important technology areas of IoT. Driving this trend is the realization that secure support for IoT devices provides companies the ability to deliver high-quality, reliable, secure offerings faster, create new revenue streams, and reduce support costs, all while building a competitive advantage in their markets. In this session, we will use customer use cases...