jump to navigation

The evolution of computing practice as reflected by programming languages. December 18, 2017

Posted by mmcmunigle in Programming Languages.
trackback

This course provided a diverse overview of programming languages extending from the 1950’s through more modern concepts such as object oriented programming. We started our journey with some of the earliest programming languages that gave us high level languages that were quite dependent on the hardware machines they were running on.

Early Programming Languages:

It is interesting that each of these early programming languages had their own unique purpose and group that was driving them. They seemed quite independent of each other and were not necessarily trying to compete in their usage and features.

FORTRAN was one of the very first languages to have a formally defined grammar, and, along with other early languages, became known as general purpose high-level language. The focus of FORTRAN was primarily around mathematical and scientific computation. It was extremely successful and has been an important language for decades after it’s creation.

The next high-level programming language to come along was LISP. LISP was developed as a practical mathematical notation for programs. LISP was designed to work with an IBM computer to support programming for artificial intelligence research. A newer machine was eventually developed specifically for Lisp that had more power and memory for artificial intelligence programming.

The third early high level language that we researched, Cobol, was created for business use. It was created to help businesses efficiently handle large amounts of data. It’s development was influenced by multiple groups including the US Department of Defense.

General-Purpose Programming Languages:

While it was presented in the group of general-purpose languages, ALGOL is often considered part of the main four high-level languages with FORTRAN, LISP and COBOL. ALGOL gets it’s name from being an algorithmic language and looked to address some of the problems that existed with other languages at the time, such as FORTRAN. ALGOL has been a big influence on many other languages including C. I have the most experience working with C. I started with assembly, then transitioned to C so I have plenty of experience with the low level register/memory management. Much of C’s continued success today is due to it’s use as an implementation language for UNIX. It is a very efficient language and but may not be suitable for large scale systems. Later C++ will be discussed which is an extension of the C programming language.

PL/1 was another general purpose language that included concepts such as recursion and linked data structures. It was developed to be compatible with current and future hardware by having no reserved keywords and allowing hardware independent data types. However, it did not have the same long term adoption and success as C.

Programming Language Research:

Out of our programming languages we studied there were some very unique languages with their own purpose and implementation. SIMULA stuck out to me due to it’s use of object oriented programming and simulation package. Based on AGOL, Simula had a goal to be human readable and easily understood as a process description. We explored a few different simulation examples and I was impressed with the OO features and coroutines’s that were used in Simula.

APL is unique in terms of it’s development because the stakeholders did not worry about hardware, and instead were free to focus on the language itself. This is quite the opposite of some of the earlier languages we looked at where the machine architecture drove a lot of the teams’ development. Once there was sufficient/compatible hardware for APL, the language became popular for mathematical programming and using a special character set.

The other languages in this set introduced topics such as grouping sets into units (Modula), automatic type assignment and type safety (ML), and lazy evaluation (SCALA). To me, I find it amazing that these development groups are willing to spend so much time and effort into creating a “new” or “better” way to solve their problems. I’m sure it would have been much easier to use an existing language and work with what was available, but their vision and implementations led to all of the amazing features and efficiencies we take for granted today.

Object Oriented Languages:

Out of the three Object Oriented languages I have the most experience working with C++. C++ is an extension of C and tries to retain it’s simple design and efficiency in compilation. In contrast, Java was developed from the ground up to be an object based development language. The most interesting part of Java is that it runs in a Java virtual machine allowing it to be executed on any machine. C++ needs to be compiled for a target platform using a specific set of libraries. Another difference is that Java and Smalltalk include automatic garbage collection where C++ does not depending on how the objects/memory is created. Smalltalk is loved by it’s loyal users, placing second in the “most loved programming language” Stack Overflow 2017 survey. Smalltalk provides great flexibility in interactions between objects since everything is considered an object.

Education Languages:

Programming education is a topic that I am somewhat passionate about since I did not have any exposure in my schooling/club actives until I went to college. I believe it’s important to expose everyone early on in their school to programming concepts. Not only will this help the computer science community, but I believe it helps with a lot of other skills such as problem solving, organization, creativity and optimization. LEGO appears to be a cool solution to getting students excited about programming by using something that they are already likely familiar with. This is a great innovative way to teach a difficult topic using interactive methods other than a just a typical computer.

Dartmouth wisely realized that it wasn’t just computer scientists that should understand programming basics, but the managers and business focused individuals need to as well. However, learning a typical programming would be too complex and time consuming. To solve this problem BASIC (Beginner’s All-purpose Symbolic Instruction Code) was developed as a high-level programming language that focused around ease of use.

Pascal is more of a traditional programming language influenced by ALGOL. It focused on being efficient in compilation and runtime while being useful for teaching students structured programing. Pascal ended up being very popular language in the 80’s and early 90’s but eventually it’s shortcomings prevented it from continued popularity outside of teaching.

 

Comments»

No comments yet — be the first.

Leave a comment