High Level vs. Low Level Languages


Thread Starter


Hi What is the difference between high level and low level programming languages. What are the features and what are the potential application areas.
We had a very long thread on this subject a few weeks ago regarding whehter ladder was high or low level and the only thing that was obvious is that there is a huge difference of opinion about what HIGH and LOW mean. My opinion is that the more distance a language puts between you and the hardware, the higher it is, regardless of how complex or simple the actual language is, or more generally: High level=less programmer work. Low Level=more programmer work. In theory the highest level language would be the simplest, as in "Computer, do what I want", so complexity <> level. The higher the language level the more complex the compiler is likely to be, and generally requiring a complex OS to implement, but these are tools of the programming language and can be regarded as separate from the syntax and definition of the language.
You might also look at it this way: The very first assembler was written in machine code. Subsequent assemblers were improved using a mix of assembly and machine code. The first compilers were written in assembly. Latter compilers were written in C and assembly. Each generation resulted in a higher level languge. But now if I wanted to write my own assembler, I would write it in C (using someone else's compiler and assembler). So does that make my assembler high? Of course not. So the confusion is understandable and hence I stick to the definition that higher level=less work.

Joko Purboyo

Hi. high level programming laguages is languages program than use languages or syntax which close to human languages so, it is easy to understanding the languages or syntax sunch as pascal or delphi language program. while the low languages programming is laguages that close to machine languages such as assembler languages.
between both of them there are several "intermediate" languages program such as C++ etc which stand beetwen hi 'n lo languages program
I agree with Mr. Connolly's definition. Machine language and assembler require detailed knowledge of every aspect of the computer's architecture, including processor register function, I/O details, memory layout and access methods, etc. Prior to C, the only way programmers could manipulate processor and device registers to the bit level was with machine or assembly code. These low-level languages provide fine-grained control of every function the machine can execute. They are therefore useful for writing high-performance, memory-stingy routines, since a good assembly programmer can optimize for speed and memory usage more effectively than comilers can. (This is less true today than a few years ago, though). When processors were slow and memory expensive (my first computer had 3K of magnetic-core memory) this sort of programming was invaluable. Programmers who write code for small, imbedded processors, (sometimes running without the benefit of an OS at all) probably use low-level languages more than anyone else. Development of high-performance compilers, gains in OS theory, fast processors and cheap, plentiful memory make high-level languages appropriate for most other applications. Freed from the complexity of having to operate at atomic levels, high-level programmers can focus their creative energies on development of power-ful software using familiar, real-world paradigms. Unless you have a compelling need to operate at the bit and register level, the benefit of becoming proficient at low-level programming is questionable, except for one thing - it's an excellent way to learn a great deal about how and why computers work the way they do and you'd become a better programmer/technician for it.

Vladimir E. Zyubin

Hello List,

High level language is a language that supports the human and the application sides of the programming (typical features: ability to logic structuring of the algorithm, cross-platform independence, problem-oriented syntax/semantic,

Low level language is a language that supports the machine side of the programming or does not provide human side of the programming (typical features: lack of identifiers, lack of cross-platform independence, full access to the processor architecture, etc.)

The words "low/high" have no much sense. Because it is a very common characteristic. The choice is depended on the problem under question. The main criteria of the choice is the economic affectivity. In some cases the right solution is a low level language, in other cases - high level.

In some cases it is very difficult to say "what kind of language we have".

I.e. the LD (ladder diagram).

1. problem with identifiers
2. lack of the structuring ability

1. reduced syntax (lack of full access to the processor architecture)
2. ability to provide more or less comfort debugging/monitoring

1. language supported by the big gays of the automation
2. there are enough programmers that know it.
3. problem-orientation - switch control from the relay-based control to the digital-based control
4. vendor-dependence

The LD has both the "low level" features and the "high level" features. I would like to say "it is low-level language", but, I am sure, here are list-members who would like to say "it is high level". Problem.

More constructive would be a short resume of the LD, e.g.:
The LD-usage gives good result in simple projects, when the task is to switch from old relay-based control to the PLC-based control. It is unfit for complex algorithms, in long terms it is undesirable for new projects, and it is unfit for the projects that demand modification,
flexibility... i.e. "active maintenance".

Regards. Vladimir.
Mr. Connolly's definition is OK.
My choice is C (not C++). It's the most
commonly-used language, and executes really quickly. The best reference to start off in C
is still the classic text by Kernighan and Ritchie.
You can learn how to exchange information with the outside world via serial ports and parallel ports.
High level language is like instructing a person with higher understanding of the task, while low level language is like instructing a person with no understanding of the task.

For example:
If a person understands how a computer works, you can easily instruct them to reboot the computer without having to worry whether the pc is fine, program crashed, program is "hanging", keyboard is locked, or monitor is functioning properly. If a person does not understand how a computer works, you will have to explain the instructions that the person can understand.

Why use low level then?
Let's say your employee is mentally challenged [slow processor speed, limited memory, and no hard drive (uses floppy)], You hired him because he is cheap and affordable. Let us just say his task is just to restart computers, it would be easier to just instruct him to push the power button, wait, and push button again. Simple, 3 instructions takes care of all exceptions.

Things to note in scenario:
How much you had to do.
How much you have to know yourself.
How effective was the process.
How much stress/relief.
How much it costs.

This is why you deal with the "lesser understanding" people around you everyday. Why have an $80/hr personnel distribute mail even though he can do a better job than the $5/hr personnel?

Low level languages are:
1 - Machine Language
2 - Assembly Language

High level languages are:
1 - Visual Basic
2 - Pascal
3 - Java
4 - C++
and many more.

masebo benjamini

low level language
1.machine language
2.assembly language

high level language
ii. C
iii. c++

Daniel MacAlevey

> pls. give me 3 example of low level & high level languages.

3 examples of high level languages:

<b>bbc basic
csf pascal
pearl </b>

low level languages are machine-oriented, the differ from one machine to another depending on the instruction set of the cpu.
In a high level language the functions do more and abstract a lot of the bit twiddling and relational stuff so that the user can deal with things on a higher level for example, you may say show (result) instead of printf (format, expression) with a lot of specifiers. The commands resemble the functions you would write yourself in a low level language.

Low level languages are what high level languages are written in :^). A language like C will let you do anything the hardware is capable of. With the greater power, comes greater complexity and the programmer has to mind details that higher level languages manage for you. If you work directly with hardware you will probably do so in a low level language. Very many high level languages are themselves written in C for example.

So frequently systems programming is done on a lower level language and applications are done in a higher level language. But the definition is a hazy one and somewhat imprecise.