GNU Info

Info Node: (standards.info)Source Language

(standards.info)Source Language


Next: Compatibility Up: Design Advice
Enter node , (file) or (file)node

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.


automatically generated by info2www version 1.2.2.9