Penguin
Diff: HowToProgrammingLanguages
EditPageHistoryDiffInfoLikePages

Differences between current version and revision by previous author of HowToProgrammingLanguages.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 3 Last edited on Sunday, November 28, 2004 1:02:22 am by AristotlePagaltzis
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:21 am by perry Revert
@@ -1,594 +1 @@
-  
-  
-  
-Programming Languages mini-HOWTO  
-  
-  
-  
-----  
-  
-!!!Programming Languages mini-HOWTO  
-  
-!!Risto S . Varanka Jul 22nd 2000  
-  
-  
-----  
-''A brief comparison of major programming languages for  
-Linux and major libraries for creating graphical user interfaces  
-(GUIs) under Linux''  
-----  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-*1.1 Latest Version of the Document  
-  
-*1.2 Copyright  
-  
-*1.3 License  
-  
-*1.4 Disclaimer  
-  
-*1.5 Author  
-  
-*1.6 Credits  
-  
-*1.7 Links  
-  
-  
-  
-  
-  
-!!2. Programming Languages  
-  
-  
-*2.1 Concepts in the Table  
-  
-*2.2 Major Languages  
-  
-*2.3 Shell Programming  
-  
-*2.4 Other Languages  
-  
-*2.5 Links  
-  
-  
-  
-  
-  
-!!3. GUI Toolkits  
-  
-  
-*3.1 Concepts in the Table  
-  
-*3.2 Major GUI Toolkits  
-  
-*3.3 Links  
-  
-----  
-  
-!!1. Introduction  
-  
-  
-Linux is a fascinating operating system because it lets any  
-user participate in its development. The variety of available  
-languages, however, can be confusing to beginning Linux  
-developers. This document lists the most common options for  
-everyday development and states some key facts about them. (Well,  
-``most common'' and ``key'' as I perceive them.)  
-  
-  
-My aim is neither to review the languages nor to determine  
-which one is the best. Each language is a tool that fits some  
-jobs and some tastes. You can get further (often conflicting)  
-information easily, if you ask around or keep your ears open. The  
-Links sections in this document will give you some pointers for  
-your own research.  
-  
-  
-There is a plethora of languages and libraries for Linux, so  
-this document only covers the most common languages and GUI  
-(Graphical User Interface) toolkits at the moment. This document  
-is intended to be fairly neutral, but I haven't included all  
-languages available. Since my judgment is undoubtedly biased in  
-many ways, I advise serious developers to check out the sites that  
-do a better job in listing all languages and libraries. Also note  
-that only the Linux implementations of the languages and GUI  
-toolkits are covered, their features on other platforms are not  
-discussed or implied.  
-  
-  
-This document is a recent addition to the LDP, so there has not  
-been opportunity for much community feedback. However, it is  
-released in hopes that it will prove useful for people interested  
-in programming under Linux, especially beginners. A question mark  
-in the tables indicates lack of information. If you can fill it  
-in, please contact the author.  
-  
-!!1.1 Latest Version of the Document  
-  
-  
-  
-You can find the latest modifications at  
-http://www.helsinki.fi/~rvaranka/Computer/Linux/HOWTO/  
-!!1.2 Copyright  
-  
-  
-  
-Copyright (c) 2000 Risto Varanka.  
-  
-!!1.3 License  
-  
-  
-  
-The following license terms apply to all LDP documents, unless  
-otherwise stated in the document. The LDP documents may be  
-reproduced and distributed in whole or in part, in any medium  
-physical or electronic, provided that this license notice is  
-displayed in the reproduction. Commercial redistribution is  
-permitted and encouraged. Thirty days advance notice via email to  
-the author(s) of redistribution is appreciated, to give the  
-authors time to provide updated documents.  
-  
-!Requirements of Modified Works  
-  
-  
-All modified documents, including translations, anthologies,  
-and partial documents, must meet the following requirements:  
-  
-  
-  
-  
-  
-#The modified version must be labeled as such.  
-#  
-  
-#The person making the modifications must be identified.  
-#  
-  
-#Acknowledgement of the original author must be retained.  
-#  
-  
-#The location of the original unmodified document be identified.  
-#  
-  
-#The original author's (or authors') name(s) may not be used to  
-assert or imply endorsement of the resulting document without  
-the original author's (or authors') permission.  
-#  
-  
-  
-  
-In addition it is requested that:  
-  
-  
-  
-  
-  
-#The modifications (including deletions) be noted.  
-#  
-  
-#The author be notified by email of the modification in  
-advance of redistribution, if an email address is provided  
-in the document.  
-#  
-  
-  
-  
-As a special exception, anthologies of LDP documents may  
-include a single copy of these license terms in a conspicuous  
-location within the anthology and replace other copies of this  
-license with a reference to the single copy of the license without  
-the document being considered ``modified'' for the purposes of  
-this section.  
-  
-  
-Mere aggregation of LDP documents with other documents or  
-programs on the same media shall not cause this license to apply  
-to those other works.  
-  
-  
-All translations, derivative documents, or modified documents  
-that incorporate any LDP document may not have more restrictive  
-license terms than these, except that you may require distributors  
-to make the resulting document available in source format.  
-  
-!!1.4 Disclaimer  
-  
-  
-  
-THIS DOCUMENT COVERS A LARGE AND CONSTANTLY CHANGING  
-DOMAIN. THEREFORE, THE INFORMATION CONTAINED IN THIS DOCUMENT MAY  
-BE INCORRECT OR OUTDATED. ALL USE OF THIS DOCUMENT AND ALL  
-INFORMATION CONTAINED IN IT IS AT YOUR OWN RISK. THE AUTHOR DOES  
-NOT GIVE ANY WARRANTY OR GUARANTEE, EITHER EXPLICIT OR  
-IMPLIED.  
-  
-!!1.5 Author  
-  
-  
-  
-You are welcome to send feedback to the author at:  
-risto.varanka@helsinki.fi.  
-  
-  
-Author's web site can be found at  
-http://www.helsinki.fi/~rvaranka/.  
-  
-!!1.6 Credits  
-  
-  
-  
-I am thankful to several people who commented on language  
-issues. These conversations have given me a better view of the  
-different languages, and I hope future conversations will allow  
-this mini-HOWTO to mature over time. Especially I would like to  
-thank the people at the IRCNet channel #linux: Morphy, Bluesmurf,  
-Vadim, Zonk^, Rikkus and others whose names I have  
-forgotten. Thanks go also to Stig Erik Sandoe for helpful  
-comments.  
-  
-!!1.7 Links  
-  
-  
-  
-Exhaustive lists of Linux development libraries and tools:  
-  
-  
-  
-  
-  
-*  
-Freshmeat  
-*  
-  
-*  
-Linux Development Tools  
-*  
-  
-*  
-linuxprogramming.com  
-*  
-  
-  
-  
-The  
-Hacker FAQ by Eric S. Raymond is another interesting text  
-for novice Linux developers. It concentrates on some cultural and  
-psychological aspects of open source development.  
-  
-  
-Other  
-LDP documents  
-covering general programming subjects include the Reading List  
-HOWTO and the Linux Programmer's Guide - several more have been  
-written on specific subjects.  
-----  
-  
-!!2. Programming Languages  
-  
-  
-C, Lisp and Perl are traditional hacking languages in the  
-GNU/Linux culture; Python, PHP, Java and C++ have gained new  
-ground recently.  
-  
-!!2.1 Concepts in the Table  
-  
-  
-  
-  
-  
-  
-  
-  
-; __Language__:  
-  
-A common name of the language.  
-  
-  
-  
-; __Beginner__:  
-  
-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.  
-  
-  
-  
-; __Performance__:  
-  
-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?)  
-  
-  
-  
-; __OOP, Object-Oriented Programming vs. other paradigms__:  
-  
-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.  
-  
-  
-  
-; __RAD, Rapid Application Development__:  
-  
-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.  
-  
-  
-  
-; __Examples__:  
-  
-Mentions fields of programming the language is  
-most often used in. Other good (and bad) uses exist, but they are  
-less typical.  
-  
-  
-  
-  
-  
-  
-; __Comments__:  
-  
-Additional information on the language, like  
-capacities and dialects.  
-  
-  
-  
-  
-  
-!!2.2 Major Languages  
-  
-  
-  
-  
-  
-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:  
-  
-  
-!!2.3 Shell Programming  
-  
-  
-  
-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 ''man'' command, ''man bash'' for example.  
-  
-!!2.4 Other Languages  
-  
-  
-  
-Other languages of note: AWK, SED, Smalltalk, Eiffel, Ada,  
-Prolog, assembler, Objective C, Logo, Pascal (p2c converter)  
-  
-!!2.5 Links  
-  
-  
-  
-  
-  
-  
-*  
-A general info site on programming languages, lots of info  
-and opinions  
-*  
-  
-*  
-TCL  
-*  
-  
-*  
-Perl  
-*  
-  
-*  
-Python  
-*  
-  
-*  
-PHP  
-*  
-  
-*  
-Java  
-*  
-  
-*  
-clisp  
-*  
-  
-----  
-  
-!!3. GUI Toolkits  
-  
-  
-The standard graphical subsystem for UNIX and Linux, called X,  
-has its own libraries for GUI development. They provide a  
-low-level programming interface to X, but tend to be hard to  
-use. Old end-user applications and other toolkits of course make  
-good use of them. Nowadays the Linux GUI scene is dominated by  
-GTK+ and Qt, since two popular, complete user environments - GNOME  
-and KDE - are based on them.  
-  
-!!3.1 Concepts in the Table  
-  
-  
-  
-  
-  
-  
-  
-  
-; __Library__:  
-  
-Common name or abbreviation of the toolkit.  
-  
-  
-  
-; __Beginner__:  
-  
-Whether the toolkit is suitable for a newbie programmer.  
-  
-  
-  
-; __License__:  
-  
-Different licenses for different GUI toolkits have practical  
-significance. GTK+, TK and GNUstep licenses allow you to develop both open  
-source and closed source applications without paying for a  
-license. Motif license requires payment, while the QT license  
-requires payment only if you write closed source programs.  
-  
-  
-  
-  
-  
-  
-; __Language__:  
-  
-The language that is most often used with the toolkit.  
-  
-  
-  
-; __Bindings__:  
-  
-Other languages which can use the toolkit.  
-  
-  
-  
-; __Examples__:  
-  
-Applications that use the toolkit.  
-  
-  
-  
-; __Comments__:  
-  
-Additional information on the toolkit.  
-  
-  
-  
-  
-  
-!!3.2 Major GUI Toolkits  
-  
-  
-  
-  
-  
-  
-  
-!LibraryBeginnerLicenseLanguageBindingsExamplesComments  
-TKYesFreeTCLPerl, Python, othersmake xconfig, TKDesk  
-GTK+!NoFree (LGPL)CPerl, C++, Python, many othersGNOME, !GimpVery popular  
-QTNoFree for open sourceC++Python, Perl, C, others?KDEVery popular  
-!MotifNoNon-freeC/C++Python, others?Netscape, Wordperfect  
-Lesstif isa free replacement  
-GNUstepNoFree (LGPL)Objective CGuile, Java?None widely known, but see the  
-application listGNUstep is still under development  
-  
-  
-  
-  
-  
-!!3.3 Links  
-  
-  
-  
-  
-  
-  
-*  
-TK  
-*  
-  
-*  
-GTK+  
-*  
-  
-*  
-QT  
-*  
-  
-*  
-Motif  
-*  
-  
-*  
-GNUstep  
-*  
-  
-----  
+Describe [HowToProgrammingLanguages] here