Contemporary Design Issues in Modern Programming Languages (Modern Programlama Dillerindeki Tasarım Sorunları)
Ahmet Alp Balkan tarafından 28 Şubat 2010 tarihinde yazılmıştır. (Bilgisayar & Teknoloji) 2 Yorum »Design Issues in Modern Programming Languages (Modern Programlama Dillerindeki Tasarım Sorunları)
Ahmet Alp Balkan <ahmet at ahmetalpbalkan.com>
Details of a programming language design is one the most controversial issue in the theory of programming languages. Many years ago, languages designed for programming computers have
a syntax such that only a machine can understand and translate. Such languages were called “low-level programming languages” and they were not providing any abstraction functionality while coding a new program using these languages. [1] These machine languages are evolved to assembler and many years later we have “high-level programming languages” which sometimes hide all details of computer architecture and language implementation details with abstracting many kinds of functionality.
People “create” something when they do need it. With evolution of computers and computer programming, many reasons triggered creation of new programming languages. Most of the time, these reasons are about efficiency, usability, style, functionality (capability) of usage of these programming languages. Let’s say if a company hires a software engineer and request a computer program does a particular job, if engineer would code this program in assembly language, it may take months; on the other side, most probably, it would take a few days using a new-generation programming language. That is about the efficiency and saving money for enterprise market in software engineering. To do particular jobs in computers, labs or people design new programming languages which developers can get rid of unnecessary parts of implementation.
Readability and ease of coding are also reasons behind appearance of new programming languages. Recall from low-level programming languages, the first languages i.e. FORTRAN, ALGOL, COBOL were not consist on good readable codes. This is a big deal since many software is created collaborated today, the code written on a language must be readable easily by other developers as well. However, major languages designed in last 15 years consist on a syntax which is human-friendly. In this issue, it is not all about programming language design but also developers’ coding style. [2] On the other hand language syntax is exactly a limiting factor for code readability. Any code written on a language may not be readable even it has been coded by a pretty good developer. Besides that, collaboration is limited by readability. When Hejlsberg released C# language, one of the important benefit was ease of coding and readability of code.[3]
The coding style factor has been another issue while designing new languages. Many language patterns and coding approaches needed to be evident in new languages. Such as object-oriented programming. Developers should not deal with infrastructure of a programming language; instead, they should code their programs with good programming practices and useful design patterns. For instance, some of languages do not have enumeration at all and enumeration makes code easy to understand and refactor. Some languages support inheritance, some do multiple inheritance, and some do not support inheritance at all. Some languages have strong typing style and some have weak-typing. This point becomes important when developing reliable programs such as military systems or computational systems etc. Robustness and safe conversion and type checking is important in such situations. Primitive languages does not have type checking at all, however with the evolution of languages, such features are evolved, too.[4] Scope rules also a rule in these cases. Some languages are “objective languages” and some are “functional languages”. Objective languages provide a good programming practive such as “divide and conquer”. This provides a reusable interface for written modules for a program. Encapsulation is important arguments of objective languages. Built-in or externally integrated libraries, APIs, data services (SOAP etc.) can work with objective languges. On the other hand, functional languages can do every functionality but they are not so flexible for developers and still coders should cope with innecessarily long implementations. In brief, many languages have convenient rules in type checking, scope rules and common language features etc. This makes languages easy to learn for developers.
Another contemporary issue in the programming language design is functionality. A language may handle processes and subroutines which are going to work on personal computer systems. However, there must be a need to adopt such languages when using different platforms such as mobile devices, while appliances and embedded systems. In these situations, primitive languages are not capable to handle such cases. Some languages may have scalability and feasibility problems on different disciplines of programming. For example, C language is not preferable for coding large-scale distributed systems. Many distributed systems such as Hive, Hadoop, SOLR uses Java or Scala programming languages because of granularity. Concurrency feature is an important feature for large-scaled reliable systems. Let’s say a telecommunication service uses C language and changing code on-the-fly may be impossible without interrupting service and making servers down for a while. On the other hand, languages such as Erlang are designed for full-support to concurrency. However, some languages run native threads with underlying C APIs. This is not an efficient way since embedding native-C codes bring redundancy and it is not a good programming practice. Concurrency and scalability issues are arised from map/reduce algorithms, usually. [5] Recently, Google released a programming language called Go, which supports concurrency. [6] “Real-time programming” is another discipline in programming languages concept which stands for guarantee of execution time and proper output or functionality. Some languages could not guarantee execution time of code snippets, however, in these days languages such as Java supports it. [7] Real-time computing become important issue in military software or space shuttle systems etc.
As said before, “need” is important for programming languages. Today we have many purposes of computing such as computer graphics, large-datasets computing, scientific computing, scripting, concurrent programming, logic programming, parallel programming, distributed programming, procedural programming, object-oriented programming and quantum programming etc. [8] or instance today we have many WEB Scripting languages such as Perl, Python, PHP, ASP (VBScript), ASP.NET, JSP, ColdFusion, Scala, Ruby etc. The needs invite people to invent new programming languages. For scientific computing we have such languages MATLAB, R, FORTRAN etc. [9] As the computer science and programming language design discipline goes further, new features will be adopted or new languages will be created in the next years.
FURTHER READING
- Sir C.A.R Hoare: Hints on the Design of Programming Languages; Stanford Report on Berkeley CS.
- The language list, contains 2500+ programming languages
- 10 Most Bizarre Programming Languages on nettuts+
REFERENCES
- “Low level programming language”, Wikipedia Article, retrieved on Dec 20, 2009.
- “What makes a good programming language”, David Chisnall, InformIT, retrieved on Dec 20, 2009.
- “C#”, Wikipedia Article,retrieved on Dec 20, 2009.
- “Type system in Programming Languages”, Wikipedia Article, retrieved on Dec 20, 2009.
- “Can Your Programming Language Do This?”, Joel Spolsky, JoelOnSoftware,retrieved on Dec 20, 2009.
- “Go : a new programming language”, Robert Griesemer, Google Code Blog, retrieved on Dec 20, 2009.
- “Real time computing”, Wikipedia Article, retrieved on Dec 20, 2009.
- “Computing paradigms”, Wikipedia Article, retrieved on Dec 20, 2009.
- “A big list of programming languages“, Programming for Scientists, retrieved on Dec 20, 2009.

Liked “Design Issues in Modern Programming Languages (Modern Programlama Dillerindeki Tasarım Sorunları)” http://ff.im/-gI0Tx
This comment was originally posted on Twitter
Liked “Design Issues in Modern Programming Languages (Modern Programlama Dillerindeki Tasarım Sorunları)” http://ff.im/-gI0Tx
Yorumun Kaynağı Twitter