KillerSites Blog

3 Categories of Programming Languages

August 2, 2006

I wrote my first script back in 1996 – some really simple JavaScript that validated HTML forms and presented users with ugly ‘alert’ boxes when errors occurred.

I always wondered why on Windows, ‘alert’ boxes looked so ugly?

… they probably looked good on Macs though.

Since then, I’ve written software for business purposes in perhaps 8-9 languages. Over the years, I’ve come across many ways in which people classify languages:

  • Object Oriented vs. Procedural vs. Prototype
  • Scripting vs. Programming
  • Compiled vs. dynamic

… and many more.

Recently a more practical way of classifying languages has come to my attention – classifying languages by problem-domain or in other words, context.

  • System Languages
  • Architectural Languages
  • Application Languages

I like this list, because it really conveys a sense of practical use for a language. I’ve hammered out the details below:

System Languages

… best used to build operating systems, hardware drivers etc. Fast and gives you low level (close to the core) access to the computer. These languages are used when speed is critical.

These languages include:

  • C
  • C++
  • Assembler

Architectural Languages

… best used to build frameworks that support (make easy) application building. Not as fast (at run-time) as system level languages, but they provide a higher level of abstraction that makes writing software quicker and more productive.

These languages include:

  • Java
  • C#

Application Languages

… best used to build the actual business applications like web shopping carts/stores, connecting to databases and creating the screens for users to interact with the database.

These languages include:

  • PHP
  • Ruby
  • Perl
  • Python

These language all allow for extremely fast development.

Programmers are freed from the low-level details that you have to contend with when working with architectural and system level languages.

The fact that they’re all scripting languages (that don’t need to be compiled,) adds to the ease of use and speed of development.


It makes for an interesting way to look at languages … and our choice of what language(s) to use for a given project.

Stefan Mischook