Programming languages' milestones: An overview from 1960 - present (the last part)

Previously on Programming languages' milestones: An overview from 1960 - present :

Introduction: To make computers and electronic devices as successful as today, the development of programming languages is the most important precondition. This series is going to describe briefly about several milestones during the great history of general-purpose programming languages and about a brief introduction of domain-specific languages.

General-purpose programming languages’ milestones From early twentieth century to 1960: λ-calculus (1932), FORTRAN (1956), ALGOL 58 (1958), COBOL (1960) From 1960 - 1970: PL/I (1964) From 1970 - 1980: The period from late 1970s till 1980 brought a major flowering of programming languages. Most of the major language paradigms now being in use were invented in this period. Several notable general-purpose programming languages were developed during this period: Pascal (1970), C (1972) and Prolog (1972). From 1980 - 1990: Programming language developing trend in the 1980s was instead of inventing new paradigms, it elaborated on ideas invented in the previous decade. Some typical representatives include: C++ (1983), Ada (1983), Perl


General-purpose programming languages’ milestones (cont.)

4. From 1990 to 2000

The 1990s was the era of Internet blooming that we have never seen before. No one can alter the fact that this rapid development of Internet opened up the opportunity for new languages to be emerged and adopted. As a result, many historic programming languages whose existence has played a vital role to technology world until now were born. Several worth-noting languages during this period include:

  • 1990 – Haskell
  • 1991 – Python
  • 1991 – Visual Basic
  • 1993 – Ruby
  • 1993 – Lua
  • 1993 – R
  • 1995 – Java
  • 1995 – JavaScript
  • 1995 – PHP

Among these programming languages, Java, Python, R, PHP, Ruby and JavaScript are really popular nowadays. To be specific, on Language Ranking Chart 2016 taken by Cass from IEEE Spectrum Corp., Java and Python, in turn, took the second and the third place. R, PHP, JavaScript and Ruby ranked the fifth, seventh, eighth and ninth. Most of large project nowadays were created by one of these programming languages, some of them has changed the world significantly. To illustrate this point of view, Java and Python are two most appropriate examples. Think of Java, underneath the language is a piece of technology that has a legacy at least as important and powerful as Java itself: The Java Virtual Machine, or JVM. Basically, the JVM’s ultimate goal is to follow Sun Microsystems’ slogan for Java: “Write once, run anywhere” - Ensure the execution of a Java program regardless of being written in which Operating System or environment. This brilliant idea has opened up the release of many transpiling languages (languages that use JVM to convert its syntax into bytecode) because by utilizing the JVM's high speed and cross-platform deployment, programmers do not have to pay a lot of effort to create a runtime for their language from scratch. Java Code Snippet About Python, differ from Java, this is an interpreted language that was created by Guido van Rossum in 1991. Because of being an interpreted language, Python does not need a virtual machine like Java to compile its code into byte code. However, a virtual machine is needed with several implementations (for example CPython, Jython). The core philosophy of the language is summarized by the document The Zen of Python (PEP 20), which includes these below aphorisms:

Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

An empirical study implemented by Prechelt in 2000 to compare C, C++, Java, Perl, Python, Rexx, and Tcl found that scripting languages (i.e. Python) are more productive than conventional languages (i.e. C and Java) in terms of solving a programming problem on string manipulation and search in a dictionary. Memory consumption was often "better than Java and not much worse than C or C++". Because of these advantages, Python applications are various, including web applications, scientific computing, artificial intelligence and information security, etc. Large organizations make use of Python include Wikipedia, Google, Yahoo!, CERN, NASA and some smaller entities like ILM, ITA. The social news networking site Reddit is written entirely in Python.

5. From 2000 until now (2016)

Since 2000 until now, general-purpose programming languages continue to bloom significantly with the release of some notable languages listed below:

  • 2000 – ActionScript
  • 2001 – C#
  • 2003 – Apache Groovy
  • 2003 – Scala
  • 2005 – F#
  • 2006 – Windows PowerShell
  • 2007 – Clojure
  • 2009 – Go
  • 2010 – Rust
  • 2011 – Dart
  • 2012 – Julia
  • 2014 – Swift

In addition to these releases, the development of languages published in the 1990s also contributed to the evolution of programming languages during this period worldwide. Among those release mentioned above, C# and Swift are two most worth-noting languages.

Developed by Microsoft, C# was a general-purpose, object-oriented programming languages based on C++ and Java but includes some ideas from Delphi (Object-oriented Pascal) and Visual Basic (Sebesta, 2012). The purpose of this programming language is to provide a language for component-based software development, specifically for such development in the .NET Framework. Along with .NET languages (Visual Basic .NET, Managed C++, F#, and JScript .NET), C# use a common class library system called Common Type System (CTS). All those .NET languages s are compiled into the same intermediate form, Intermediate Language (IL). However, the IL is never interpreted like Java, it is translated into machine code before execution by a Just-in-time compiler. Compare with C++ and Java, C# was originally meant to be an improvement over both C++ and Java as a general-purpose programming language, in spite of the fact that many criticisms evaluated some features were a step backward (Sebesta, 2012). However, it was a successful programming languages after all by considering several large applications such as StackOverFlow, StackExchange, Visual Studio, Paint.NET, Reflector, Sharp Develop, tons of games in Unity3d, etc.

Developed parallel to the extraordinarily rise of Apple products since the late 2000s, in 2014, a new programming language for iOS, macOS, watchOS, and tvOS apps that builds on the best of C and Objective-C, without the constraints of C compatibility was released and named Swift. This language adopts the readability of Objective-C’s named parameters and the power of Objective-C’s dynamic object model. It provides seamless access to existing Cocoa frameworks and mix-and-match interoperability with Objective-C code. Building from this common ground, Swift introduces many new features and unifies the procedural and object-oriented portions of the language. Therefore, it is extremely familiar to Objective-C programmer.


A brief introduction to domain-specific languages

In contrast to general-purpose programming languages, domain-specific languages are tailored to a specific application domain, a particular problem representation technique, and/or a particular solution technique. This term has been specified for several decades (Hermans, Pinzger, Deursen, 2009), but it has become more popular due to the rise of domain-specific modeling (DSM). Nowadays, there are thousands of DSLs serving a wide range of problems, some popular domain-specific languages that most developers use today are:

  • HTML (Hyper Text Markup Language): For creating and displaying webpages or web applications.
  • SQL (Structured Query Language): For database creating and manipulating.
  • XML (Extensible Markup Language): For data representation in a simple, general, and useable manner across the Internet.
  • XAML (Extensible Application Markup Language): For designing layout of applications. Basically, XAML files are XML files that can be used to lay out an object structure.
  • Rake: An internal DSL in Ruby that allows developers to write the contents of the targets in a more seamless manner, but also to build larger abstractions more easily.
  • CSS (Cascading Style Sheets): For describing the presentation of a document written in a markup language.

THE END

References

  1. Cass, S. (2016). The 2016 Top Programming Languages. Retrieved April 8, 2017 from http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages
  2. Peters, T. (2004). The Zen of Python.
  3. Prechelt, L. (2000). An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl.
  4. Sebesta, W., R. (2012). Concepts of Programming Languages (10th ed).
  5. Hermans, F. & Pinzger, M. & Deursen, v., A. (2009). Domain-Specific Languages in Practice: A User Study on the Success Factors.