|
|
|
|
Chapter: Lower
Level Languages and Higher Level Languages
Lower Level Languages and Higher Level
Languages
Generally speaking higher level programming languages are closer to
human spoken languages and lower level programming languages are closer
to machine code, or binary. However this classification might not
always be so clear. C++ is one language that some might argue challenge
this programming language stereo type. C++ is a programming language
that has all the features that one would expect from a higher level
language such as an easy to read syntax, object oriented programming
and extensive collections of libraries to add to the language's
capabilities but also has other features that are not commonly found in
higher level languages such as memory management, user defined operator
overloading, six different integer datatypes and a plethora of
compilers to choose from. As a result many refer to C++ as a mid-level
programming language.
For Processing this distinction is currently not so difficult to make.
Processing is a high level language, meaning it has an easy to read
syntax, supports modern day programming concepts such as Object
Oriented Programming, has it's own IDE (Integrated Development
Environment something we will become more familiar with throughout this
guide) and fundamentally it abstracts a lot of machine specific
interactions for us making the code more readable for humans.
However, it's worth considering that the terms “higher” and “lower”
level programming languages are relative to the time period in which
they are used. For example when the programming language C (that C++ is
based on) was first introduced in the early 1970's it was considered to
be a high level language as it supported such features as expression
evaluation and datatyping, both of which are programming concepts
common to most modern day programming languages. As technology
progresses, new concepts become common place and rapidly replace older
more cumbersome programming designs, till we get to the point where
there are far less people that would refer to an older language such as
C as being a high level language and a lot more people that would refer
to it as a low level language, lacking modern abstractions and less
direct hardware interactions. Processing might one day, also be
subjected to such a topic of discussion.
Following is the C version of a “Hello World” Program:
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
The level of abstraction that is needed in order for a language to
qualify as a higher level programming language does not come without
it's penalties. Lower level languages, because they are conceptually
closer to machine code are considered to produce more efficient machine
readable code, of course this is largely dependent on the programmer
creating the code. As mentioned before the greater the level of
abstraction of the code, the more stress that is placed on the machine
interpreting the code, and subsequently more system resources are
required. As a result of this cycle higher level programming languages
generally cannot run on systems where resources are limited. Initially,
this might not seem like such a big issue to you, but have you ever
considered the amount of technology running on limited resources like a
television, fridge, GPS, mobile phone, remote-controlled
air-conditioner, electronic toys, media players and the list goes
on...? In fact if you were to think about it there are not many devices
like computer workstations, laptops or computer servers that are
designed to have their resources, available to the software that runs
on these machines, extended. Yet, even these machines have their
limitations.
Ultimately software, whether it is designed with a high level or low
level programming language, should always take into consideration the
possible limitations of available system resources.
|
|
|
|
|
|