DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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