Software tools we use:
The C programming language
C is a compiled middle level programming language, that
despite its quirks, has been pressed into service in delivering the
broadest range of applications, from operating systems to gui
applications, and embedded controllers. Despite being a small language
with a limited number of reserved words, it is hard to master for
various reasons. A forth programmer once claimed it was like a cut
throat razor with a sharp edge on both sides of the blade. At
meadowlark, we resort to the c programming language when it is the most
appropriate choice, and that is not often. the reasons it can prove so
hard to master are as follows:
- There is no dynamic garbage collection. For this reason
the programmer must explicitly free memory used by the application when
- There is no bounds checking on arrays for example. This
can easily result in a pointer referencing or writing to a memory
location of another program with potentially disastrous consequences.
- C programmers must be prepared to indulge the
idiosynchracies of the language that will prove a stumbling block to
the unwary. Just because a C program compiles and sems to run does not
mean that under the hood the program is behaving exactly as planned.
The advantages of the C programming language
- C programs are compiled, and therefore run quickly.
- C programmers can use pointers which provides great
control over the hardware upon which the program runs.
- There is a great deal written, and understood about the c
- Decades of familiarity with the c programming language has resulted in some very efficient c compilation algorithms.
- The C language is one of the most popular programming languages in the world according to the tiobe index
The disadvantages of the C programming language
- C programs can be prone to memory management problems.
- C programmers can use memory pointers which - in the wrong
hands - can wreak havoc on an otherwise stable computer systems.
- It is perhaps easier to write a bad c program than a bad
What you can expect
from computer hardware in the future?
The really tough problems in computing are hard to address with conventional computer technology. There are some algorithms that just do not work well with a the computing tools we have. Any algorithm that needs to iterate over very large data sets, or large numbers of permutations may well be too slow to generate useful results in a reasonable time. Quantum computers may address these tricky computational problems.
Quantum computers abandon the binary yes/no state of storage in favour of storage with multiple states. As such complex problems can be addressed that are beyond the reasonable reach of conventional computer architecture. These quantum devices may only ever be for scientific applications, but they may provide answers to some of our most difficult questions.