Previously on Programming languages' milestones: An overview from 1960 - present :
- Part 1 : (Full article is provided on this url: https://viblo.asia/p/programming-languages-milestones-an-overview-from-1960-present-part-1-yMnKMq2rK7P )
- Part 2 : (Full article is provided on this url: https://viblo.asia/p/programming-languages-milestones-an-overview-from-1960-present-part-2-V3m5W28xlO7 )
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 – PHP
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.
- Cass, S. (2016). The 2016 Top Programming Languages. Retrieved April 8, 2017 from http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages
- Peters, T. (2004). The Zen of Python.
- Prechelt, L. (2000). An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl.
- Sebesta, W., R. (2012). Concepts of Programming Languages (10th ed).
- Hermans, F. & Pinzger, M. & Deursen, v., A. (2009). Domain-Specific Languages in Practice: A User Study on the Success Factors.