(standards.info.gz) Source Language
Info Catalog
(standards.info.gz) Design Advice
(standards.info.gz) Compatibility
Which Languages to Use
======================
When you want to use a language that gets compiled and runs at high
speed, the best language to use is C. Using another language is like
using a non-standard feature: it will cause trouble for users. Even if
GCC supports the other language, users may find it inconvenient to have
to install the compiler for that other language in order to build your
program. For example, if you write your program in C++, people will
have to install the GNU C++ compiler in order to compile your program.
C has one other advantage over C++ and other compiled languages: more
people know C, so more people will find it easy to read and modify the
program if it is written in C.
So in general it is much better to use C, rather than the comparable
alternatives.
But there are two exceptions to that conclusion:
* It is no problem to use another language to write a tool
specifically intended for use with that language. That is because
the only people who want to build the tool will be those who have
installed the other language anyway.
* If an application is of interest only to a narrow part of the
community, then the question of which language it is written in
has less effect on other people, so you may as well please
yourself.
Many programs are designed to be extensible: they include an
interpreter for a language that is higher level than C. Often much of
the program is written in that language, too. The Emacs editor
pioneered this technique.
The standard extensibility interpreter for GNU software is GUILE,
which implements the language Scheme (an especially clean and simple
dialect of Lisp). `http://www.gnu.org/software/guile/'. We don't
reject programs written in other "scripting languages" such as Perl and
Python, but using GUILE is very important for the overall consistency of
the GNU system.
Info Catalog
(standards.info.gz) Design Advice
(standards.info.gz) Compatibility
automatically generated byinfo2html