Welcome!

Java IoT Authors: Liz McMillan, Elizabeth White, Carmen Gonzalez, Yeshim Deniz, Yakov Fain

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).

@ThingsExpo Stories
SYS-CON Events announced today the How to Create Angular 2 Clients for the Cloud Workshop, being held June 7, 2016, in conjunction with 18th Cloud Expo | @ThingsExpo, at the Javits Center in New York, NY. Angular 2 is a complete re-write of the popular framework AngularJS. Programming in Angular 2 is greatly simplified. Now it’s a component-based well-performing framework. The immersive one-day workshop led by Yakov Fain, a Java Champion and a co-founder of the IT consultancy Farata Systems and...
What a difference a year makes. Organizations aren’t just talking about IoT possibilities, it is now baked into their core business strategy. With IoT, billions of devices generating data from different companies on different networks around the globe need to interact. From efficiency to better customer insights to completely new business models, IoT will turn traditional business models upside down. In the new customer-centric age, the key to success is delivering critical services and apps wit...
Join us at Cloud Expo | @ThingsExpo 2016 – June 7-9 at the Javits Center in New York City and November 1-3 at the Santa Clara Convention Center in Santa Clara, CA – and deliver your unique message in a way that is striking and unforgettable by taking advantage of SYS-CON's unmatched high-impact, result-driven event / media packages.
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, will provide an overview of the evolution of the Internet and the Database and the future of their combination – the Blockchain. Andrew Keys is Co-Founder of ConsenSys Enterprise. He comes to ConsenSys Enterprise with capital markets, technology and entrepreneurial experience. Previously, he worked for UBS investment bank in equities analysis. Later, he was responsible for the creation and distribution of life ...
SYS-CON Events announced today that BMC Software has been named "Siver Sponsor" of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2015 at the Javits Center in New York, New York. BMC is a global leader in innovative software solutions that help businesses transform into digital enterprises for the ultimate competitive advantage. BMC Digital Enterprise Management is a set of innovative IT solutions designed to make digital business fast, seamless, and optimized from mainframe to mo...
SYS-CON Events announced today that MobiDev will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. MobiDev is a software company that develops and delivers turn-key mobile apps, websites, web services, and complex software systems for startups and enterprises. Since 2009 it has grown from a small group of passionate engineers and business managers to a full-scale mobile software company with over 200 develope...
As cloud and storage projections continue to rise, the number of organizations moving to the cloud is escalating and it is clear cloud storage is here to stay. However, is it secure? Data is the lifeblood for government entities, countries, cloud service providers and enterprises alike and losing or exposing that data can have disastrous results. There are new concepts for data storage on the horizon that will deliver secure solutions for storing and moving sensitive data around the world. ...
SoftLayer operates a global cloud infrastructure platform built for Internet scale. With a global footprint of data centers and network points of presence, SoftLayer provides infrastructure as a service to leading-edge customers ranging from Web startups to global enterprises. SoftLayer's modular architecture, full-featured API, and sophisticated automation provide unparalleled performance and control. Its flexible unified platform seamlessly spans physical and virtual devices linked via a world...
SYS-CON Events announced today that ContentMX, the marketing technology and services company with a singular mission to increase engagement and drive more conversations for enterprise, channel and SMB technology marketers, has been named “Sponsor & Exhibitor Lounge Sponsor” of SYS-CON's 18th Cloud Expo, which will take place on June 7-9, 2016, at the Javits Center in New York City, New York. “CloudExpo is a great opportunity to start a conversation with new prospects, but what happens after the...
Companies can harness IoT and predictive analytics to sustain business continuity; predict and manage site performance during emergencies; minimize expensive reactive maintenance; and forecast equipment and maintenance budgets and expenditures. Providing cost-effective, uninterrupted service is challenging, particularly for organizations with geographically dispersed operations.
The IoTs will challenge the status quo of how IT and development organizations operate. Or will it? Certainly the fog layer of IoT requires special insights about data ontology, security and transactional integrity. But the developmental challenges are the same: People, Process and Platform. In his session at @ThingsExpo, Craig Sproule, CEO of Metavine, will demonstrate how to move beyond today's coding paradigm and share the must-have mindsets for removing complexity from the development proc...
SYS-CON Events announced today TechTarget has been named “Media Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. TechTarget is the Web’s leading destination for serious technology buyers researching and making enterprise technology decisions. Its extensive global networ...
SYS-CON Events announced today that Commvault, a global leader in enterprise data protection and information management, has been named “Bronze Sponsor” of SYS-CON's 18th International Cloud Expo, which will take place on June 7–9, 2016, at the Javits Center in New York City, NY, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA. Commvault is a leading provider of data protection and information management...
The essence of data analysis involves setting up data pipelines that consist of several operations that are chained together – starting from data collection, data quality checks, data integration, data analysis and data visualization (including the setting up of interaction paths in that visualization). In our opinion, the challenges stem from the technology diversity at each stage of the data pipeline as well as the lack of process around the analysis.
A strange thing is happening along the way to the Internet of Things, namely far too many devices to work with and manage. It has become clear that we'll need much higher efficiency user experiences that can allow us to more easily and scalably work with the thousands of devices that will soon be in each of our lives. Enter the conversational interface revolution, combining bots we can literally talk with, gesture to, and even direct with our thoughts, with embedded artificial intelligence, wh...
Designing IoT applications is complex, but deploying them in a scalable fashion is even more complex. A scalable, API first IaaS cloud is a good start, but in order to understand the various components specific to deploying IoT applications, one needs to understand the architecture of these applications and figure out how to scale these components independently. In his session at @ThingsExpo, Nara Rajagopalan is CEO of Accelerite, will discuss the fundamental architecture of IoT applications, ...
SYS-CON Events announced today that Tintri Inc., a leading producer of VM-aware storage (VAS) for virtualization and cloud environments, will exhibit at the 18th International CloudExpo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, New York, and the 19th International Cloud Expo, which will take place on November 1–3, 2016, at the Santa Clara Convention Center in Santa Clara, CA.
SYS-CON Events announced today that MangoApps will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. MangoApps provides modern company intranets and team collaboration software, allowing workers to stay connected and productive from anywhere in the world and from any device. For more information, please visit https://www.mangoapps.com/.
SYS-CON Events announced today that Alert Logic, Inc., the leading provider of Security-as-a-Service solutions for the cloud, will exhibit at SYS-CON's 18th International Cloud Expo®, which will take place on June 7-9, 2016, at the Javits Center in New York City, NY. Alert Logic, Inc., provides Security-as-a-Service for on-premises, cloud, and hybrid infrastructures, delivering deep security insight and continuous protection for customers at a lower cost than traditional security solutions. Ful...
In his session at 18th Cloud Expo, Bruce Swann, Senior Product Marketing Manager at Adobe, will discuss how the Adobe Marketing Cloud can help marketers embrace opportunities for personalized, relevant and real-time customer engagement across offline (direct mail, point of sale, call center) and digital (email, website, SMS, mobile apps, social networks, connected objects). Bruce Swann has more than 15 years of experience working with digital marketing disciplines like web analytics, social med...