old-www/HOWTO/Programming-Languages-2.html

175 lines
5.9 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>Programming Languages mini-HOWTO: Programming Languages</TITLE>
<LINK HREF="Programming-Languages-3.html" REL=next>
<LINK HREF="Programming-Languages-1.html" REL=previous>
<LINK HREF="Programming-Languages.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="Programming-Languages-3.html">Next</A>
<A HREF="Programming-Languages-1.html">Previous</A>
<A HREF="Programming-Languages.html#toc2">Contents</A>
<HR>
<H2><A NAME="s2">2. Programming Languages</A></H2>
<P>C, Lisp and Perl are traditional hacking languages in the
GNU/Linux culture; Python, PHP, Java and C++ have gained new
ground recently.
<H2><A NAME="ss2.1">2.1 Concepts in the Table</A>
</H2>
<P>
<DL>
<P>
<DT><B>Language</B><DD><P>A common name of the language.
<P>
<DT><B>Beginner</B><DD><P>Indicates how well suited the language is for
people with little programming experience. A language marked with
``yes'' should be viable for a beginner's first programming
language.
<P>
<DT><B>Performance</B><DD><P>How fast your applications are likely to
run when you put them into production use. Performance depends
more on your algorithmic programming skills than the actual
language. As a rule of thumb, C, C++ and Fortran are sometimes
necessary because they can offer better performance than other
languages - at other times they might be unwieldy for the desired
purpose. (One idea for unscientific ``benchmarking'' of the
languages would be to implement a simple sorting algorithm in all
of them and compare running times. This of course does not measure
the performance of the actual language - since that concept does
not make sense - but only the implementation. Of course it's also
not a very reliable or thorough method, but it would give an
example how running times in different languages can
differ. Anybody want to help me with this?)
<P>
<DT><B>OOP, Object-Oriented Programming vs. other paradigms</B><DD><P>Object-oriented programming is an important programming paradigm
that is gaining popularity. In object oriented programming, data
structures and algorithms are integrated into units, often called
classes. OOP is often contrasted with procedural programming
(which uses separate algorithms and data structures). It is not
strictly dependent on language: you can do OOP in languages not
listed as such (C for example), and program in the procedural
style in languages that are listed as OOP. I've listed as OOP
languages that have special features or add-ons to facilitate OOP.
Functional languages (Lisp for example) are a bit different breed
- among other things, functional programming is a superset of
OOP. Logic programming (Prolog), also called declarative
programming, on the other hand, is not related to the other types
of programming in a similar sense.
<P>
<DT><B>RAD, Rapid Application Development</B><DD><P>More dependent on
the tools you are using than the actual language. There is a
HOWTO on GUI development tools for Linux, although it's out of
date. With a good graphical tool you can do RAD. RAD can be
powerful when based on code reuse as well, so free software could
provide a good starting point.
<P>
<DT><B>Examples</B><DD><P>Mentions fields of programming the language is
most often used in. Other good (and bad) uses exist, but they are
less typical.
<P>
<P>
<DT><B>Comments</B><DD><P>Additional information on the language, like
capacities and dialects.
<P>
</DL>
<H2><A NAME="ss2.2">2.2 Major Languages</A>
</H2>
<P>
<PRE>
Perl
Beginner: Yes - OOP: Yes
Examples: Scripting, sysadmin, www
Comments: Powerful for handling text and strings
Python
Beginner: Yes - OOP: Yes
Examples: Scripting, application scripting, www
Comments:
TCL
Beginner: Yes - OOP: No
Examples: Scripting, sysadmin, applications
Comments:
PHP
Beginner: Yes - OOP: Yes
Examples: Www
Comments: Popular for web databases
Java
Beginner: Yes - OOP: Yes
Examples: Cross-platform applications, www
Comments: Spreading to new areas, eg. e-commerce infrastructure
Lisp
Beginner: Yes - OOP: Functional
Examples: Emacs modes (for Elisp), AI
Comments: Variants Elisp, Clisp and Scheme
Fortran
Beginner: No - OOP: No
Examples: Mathematical (scientific) applications
Comments: Variants f77 and f90/95
C
Beginner: No - OOP: No
Examples: System programming, applications
Comments:
C++
Beginner: No - OOP: Yes
Examples: Applications
Comments:
</PRE>
<H2><A NAME="ss2.3">2.3 Shell Programming</A>
</H2>
<P>Shells are an important programming environment, too. I haven't
covered them because I don't understand the field very thoroughly
yet. Knowledge of shells is important for anyone who works on
Linux regularly, more so for system administrators. There are
similarities between shell programming and other kinds of
scripting - often they can achieve the same goals, and you have
the option of choosing between native shell and a separate
scripting language. Among the most popular shells are bash, tcsh,
csh, ksh and zsh. You can get basic information on your shell with
the <EM>man</EM> command, <EM>man bash</EM> for example.
<H2><A NAME="ss2.4">2.4 Other Languages</A>
</H2>
<P>Other languages of note: AWK, SED, Smalltalk, Eiffel, Ada,
Prolog, assembler, Objective C, Logo, Pascal (p2c converter)
<H2><A NAME="ss2.5">2.5 Links</A>
</H2>
<P>
<UL>
<LI>
<A HREF="http://www.tunes.org/Review/Languages.html">A general info site</A> on programming languages, lots of info
and opinions</LI>
<LI>
<A HREF="http://dev.scriptics.com/">TCL</A></LI>
<LI>
<A HREF="http://www.perl.org/">Perl</A></LI>
<LI>
<A HREF="http://www.python.org/">Python</A></LI>
<LI>
<A HREF="http://www.php.net">PHP</A></LI>
<LI>
<A HREF="http://www.javasoft.com/">Java</A></LI>
<LI>
<A HREF="http://clisp.cons.org/~haible/packages-clisp.html">clisp</A></LI>
</UL>
<HR>
<A HREF="Programming-Languages-3.html">Next</A>
<A HREF="Programming-Languages-1.html">Previous</A>
<A HREF="Programming-Languages.html#toc2">Contents</A>
</BODY>
</HTML>