From aa451d9d84794afeef3fea7474eb039f8189e06e Mon Sep 17 00:00:00 2001
From: gferg <>
Date: Mon, 24 Jul 2000 15:32:43 +0000
Subject: [PATCH] new entry
---
LDP/howto/linuxdoc/LILO.sgml | 590 ++++++++++++++++++
LDP/howto/linuxdoc/Programming-Languages.sgml | 470 ++++++++++++++
2 files changed, 1060 insertions(+)
create mode 100644 LDP/howto/linuxdoc/LILO.sgml
create mode 100644 LDP/howto/linuxdoc/Programming-Languages.sgml
diff --git a/LDP/howto/linuxdoc/LILO.sgml b/LDP/howto/linuxdoc/LILO.sgml
new file mode 100644
index 00000000..27547a4d
--- /dev/null
+++ b/LDP/howto/linuxdoc/LILO.sgml
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+Lilo mini-Howto
+Miroslav Skoric (v3.00, 24 July 2000
+
+LILO is the most used
+This version of Lilo mini-HOWTO is based on work of Cameron Spitzer
+(
+
+
+
+
+
+
+Introduction
+
+Although the documentation found in Lilo's sources (the one installed
+in /usr/doc/lilo-version) is very comprehensive, most Linux
+users experience some trouble in building their own
+/etc/lilo.conf file. This document is meant to support them
+by giving the minimal information and by showing five sample
+installations:
+
+
+
+- The first example is the classical ``Linux and other'' installation.
+
+
- The next one shows how to install Lilo on a hard drive
+ connected as /dev/hdc that will boot as /dev/hda.
+ This is usually needed when you install a new Linux drive from
+ your own running system. This also tells how to boot from SCSI
+ disks when your BIOS is modern enough.
+
+
- The third example shows how to boot a Linux system whose root
+ partition can't be accessed by the BIOS.
+
+
- The next sample file is used to access huge disks, that neither the
+ BIOS nor DOS can access easily (this one is somehow outdated).
+
+
- The last example shows how to restore a damaged disk,
+ if the damage resulted from installing another
+ operating system).
+
+
+
+
+The last three examples are by Cameron, ,
+who wrote the original document. Alessandro
+doesn't run anything but Linux, so he can't check
+nor update them by himself. Needless to say, any feedback is welcome.
+
+Background Information and Standard Installation
+
+When Lilo boots the system, it uses BIOS calls to load the Linux
+kernel off the disk (IDE drive, floppy or whatever). Therefore, the
+kernel must live in some place that can be accessed by the bios.
+
+At boot time, Lilo is not able to read filesystem data, and any
+pathname you put in /etc/lilo.conf is resolved at
+installation time (when you invoke /sbin/lilo). Installation
+time is when the program builds the tables that list which sectors are
+used by the files used to load the operating system. As a consequence,
+all of these files must live in a partition that can be accessed by
+the BIOS (the files are usually located in the /boot
+directory, this means that only the root partition of your Linux
+system needs to be accessed via the BIOS).
+
+Another consequence of being BIOS-based is that you must reinstall the
+loader (i.e., you must reinvoke /sbin/lilo) any time you
+modify the Lilo setup. Whenever you recompile your kernel and
+overwrite your old image you must reinstall Lilo.
+
+Where Should I Install Lilo?
+
+The /etc/lilo.conf tells Lilo where
+it should place its primary boot loader. In general, you can either
+specify the master boot record (/dev/hda) or the root
+partition of your Linux installation (is usually is /dev/hda1
+or /dev/hda2).
+
+If you have another operating system installed in your hard drive,
+you'd better install Lilo to the root partition instead of the MBR. In
+this case, you must mark the partition as ``bootable'' using the ``a''
+command of fdisk or the ``b'' command of cfdisk. If
+you don't overwrite the master boot sector you'll find it easier to
+uninstall Linux and Lilo if needed.
+
+Of course, you always have a way to avoid some "rules" like above. Well,
+you may install Lilo to the MBR even if you already have another operating
+system installed there. For example, if you installed Windows NT 4.0 as the
+first operating system on your machine, then NT's boot loader was placed into
+the MBR so you were able to boot NT without problems. After you installed
+Linux and chose to install Lilo to the MBR, Lilo rewrote NT's boot loader.
+Next time you boot your machine, you won't be able to boot NT. But, there
+is no problem. You just should edit your /etc/lilo.conf and add a new entry
+for NT. Next time you re-boot your system, there will be the new added entry
+for NT under Lilo.
+How Should I Configure my IDE Hard Drives?
+
+I personally don't use LBA or LARGE settings in the BIOS (but I only
+run Linux); they are horrible kludges forced on by design deficiencies
+in the PC world. This requires that the kernel lives in the first 1024
+cylinders, but this is not a problem as long as you partition your
+hard drives and keep root small (as you should do anyways).
+
+If your hard disk already carries another operating system, you won't
+be able to modify the BIOS settings, or the old system won't work any
+more. All recent Lilo distribution are able to deal with LBA and LARGE
+disk settings.
+
+Note that the "/etc/lilo.conf can
+help in dealing with geometry problems. The keyword instructs Lilo to
+use linear sector addresses instead of sector/head/cylinder tuples.
+Conversion to 3D addresses is delayed to run-time, therefore making
+the setup more immune to geometry problems.
+
+If you have more than one hard disk and some of them are only used by
+Linux and are not involved in the boot process, you can tell your BIOS
+that they are not installed. Your system will boot more quickly and
+Linux will autodetect all the disks in no time. I often switch disks
+in my computers, but I never touch the BIOS configuration.
+
+How Can I Interact at Boot Time?
+
+When you see the Lilo prompt, you can hit the <Tab> key to show
+the list of possible choices. If Lilo is not configured to be
+interactive, press and hold the <Alt> or <Shift> key
+before the ``LILO'' message appears.
+
+If you choose to boot a Linux kernel, you can add command-line
+arguments after the name of the system you choose. The kernel accepts
+many command-line arguments. All the arguments are listed in the
+``BootPrompt-HOWTO'' by Paul Gortmaker, and I won't replicate it
+here. A few command line arguments, however, are particularly
+important and worth describing here:
+
+
+
+- /sbin/init, as specified
+ on the command line. If you experience bad problems
+ during the boot process, you can access the bare system by
+ specifying init=/bin/sh (when you are at the shell
+ prompt you most likely will need to mount your disks: try
+ ``mount -w -n -o remount /; mount -a'',
+ and remember to ``umount -a'' before turning off
+ the computer).
+
+
- A number: by specifying a number on the kernel command line, you
+ instruct init to enter a specific run-level (the
+ default is usually 3 or 2, according to the distribution you chose).
+ Refer to the init documentation, to /etc/inittab
+ and to /etc/rc*.d to probe further.
+
+
+
+How Can I Uninstall Lilo?
+
+When Lilo overwrites a boot sector, it saves a backup copy in
+/boot/boot.ls -l
+/dev/
/dev/hda (major 3, minor 0) will be saved in
+/boot/boot.0300, installing Lilo on /dev/fd0 creates
+/boot/boot.0200 and installing on /dev/sdb3 (major
+8, minor 19) creates /boot/boot.0813. Note that Lilo won't
+create the file if there is already one so you don't need to care about
+the backup copy whenever you reinstall Lilo (for example, after
+recompiling your kernel). The backup copies found in /boot/
+are always the snapshot of the situation before installing any Lilo.
+
+If you ever need to uninstall Lilo (for example, in the unfortunate
+case you need to uninstall Linux), you just need to restore the
+original boot sector. If Lilo is installed in /dev/hda, just
+do ``dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1'' (I
+personally just do ``cat /boot/boot.0300 > /dev/hda'', but
+this is not safe, as this will restore the original partition table as
+well, which you might have modified in the meanwhile). This command is
+much easier to run than trying ``fdisk /mbr'' from a DOS
+shell: it allows you to cleanly remove Linux from a disk without ever
+booting anything but Linux. After removing Lilo remember to run Linux'
+fdisk to destroy any Linux partition (DOS' fdisk is
+unable to remove non-dos partitions).
+
+If you installed Lilo on your root partition (e.g., /dev/hda2),
+nothing special needs to be done to uninstall Lilo. Just run Linux'
+fdisk to remove Linux partitions from the partition
+table. You must also mark the DOS partition as bootable.
+
+The Simple Configuration
+
+Most Lilo installations use a configuration file like the
+following one:
+
+
+boot = /dev/hda # or your root partition
+delay = 10 # delay, in tenth of a second (so you can interact)
+vga = 0 # optional. Use "vga=1" to get 80x50
+#linear # try "linear" in case of geometry problems.
+
+image = /boot/vmlinux # your zImage file
+ root = /dev/hda1 # your root partition
+ label = Linux # or any fancy name
+ read-only # mount root read-only
+
+other = /dev/hda4 # your dos partition, if any
+ table = /dev/hda # the current partition table
+ label = dos # or any non-fancy name
+
+
+You can have multiple ``image'' and ``other'' sections if you want. It's
+not uncommon to have several kernel images configured in your
+lilo.conf, at least if you keep up to date with kernel
+development.
+
+How to Deal with Big Kernels
+
+If you compile a ``zImage'' kernel and it is too big to fit in half a
+megabyte (this is commong with new 2.1 kernels), you should build a
+``big zImage'' instead: ``make bzImage''. To boot a big
+kernel image nothing special is needed, but you need version 18 or
+newer of Lilo. If your installation is older, you should upgrade your
+Lilo package.
+
+Other Sources of Information
+
+In addition to the Lilo docs, there are a number of mini-howto's that
+can be useful for your needs. All of them are called
+``Linux+How to Boot Windows NT from Lilo menu
+
+Here I will give you an order of routines you have to do if you want
+to have both Linux and NT entries under Lilo menu:
+
+
+
+- First of all, I would suggest you to install a fresh copy of
+ Windows NT 4.0 on your hard disk. I suppose that you already
+ made a backup of your important data, so the NT installation
+ shouldn't be a problem. During the NT installation, setup is
+ not going to ask you where to place NT's boot loader, so it
+ would be placed into the MBR (Master Boot Record) of your hard
+ disk. But, there is a possibility for a previous content of
+ the MBR to remain within the MBR (especially any previous
+ Lilo), so I would suggest you (befrre installation of NT) to
+ boot the computer with a DOS floppy diskette having DOS version
+ of FDISK. At the prompt a:\ just enter the command: fdisk /mbr
+ and restart the computer again (without that floppy).
+
+
- After you have successfully installed your NT, you will see that
+ it uses the whole hard disk or a specific partition of the hard
+ disk (depending on what you decided during the setup process).
+ So, it is advisible to 'shrink' the partition where NT resides
+ in order to make some free space on the disk. Onto that free space
+ you will install your Linux. After you have your NT configured
+ and running, you have to boot your computer using a floppy
+ diskette with Partition Magic utility by Power Quest. It is a
+ graphical tool able to see all partitions on all hard disks you
+ have. The best thing is that you can make some changes with your
+ partitions but not to destroy your existing data. One of the
+ available changes is to make your existing partition(s) smaller,
+ so to get some free space on the disk(s) for other purposes.
+ Although you are advised to make a backup before you make any
+ changes to the partitions, I usually practise to 'shrink' NT's
+ partition before I installed anything but NT itself (so, if
+ needed, a repetitive re-installation wouldn't be a problem).
+ Well, Partition Magic (or any other similar utility you are
+ familiar with) will shrink your NT's partition (either NTFS or
+ FAT) to a smaller measure and place it to either the beginning
+ or to the end of the previous measure. It means that you may
+ choose to have your 'shrinked' NT partition at the beginning
+ or at the end of your disk (I usually choose NT to be at the
+ beginning, so the ending part of the disk will become a 'free
+ space'). After the 'shrinkin' is finished, you may re-boot your
+ NT in order to check the new situation: you may use Windows
+ Explorer or Disk Administrator for that.
+
+
- So far so good. Next step is to install your Linux. Case you
+ are familiar with RedHat distribution (I hope with other distros
+ is the same or similar), you start by putting your installation
+ CD in the drive and re-boot the computer). Well, when you are about
+ to choose what type of installation it will be (Gnome or KDE
+ Workstation, Custom, etc.) you may choose whatever you planned
+ before, but I would suggest to install a Workstation at first.
+ This is good because Linux setup will find automatically the
+ free space on the (first) hard disk, make all partitions needed
+ for Linux, format them properly, make majority of option by
+ default so you won't have much pain during the setup (later, if
+ you want, you may either to add missing components or re-install
+ Linux as Custom over the existing linux partitions). Lilo should
+ go to the MBR.
+
+
- After it looks that Linux installation is finished, you are going
+ to re-start the computer and there there you will only see Lilo
+ with one Linux entry to boot (or maybe more than one Linux
+ entry, in case your hardware is multi-processor one). But, don't
+ panic! Your Windows NT is still there where you had installed it
+ before Linux. You should become some familiar with Linux as soon
+ as possible, in order to be able to find and edit your new
+ /etc/lilo.conf file. When you open this file for the first time,
+ you'll see that there is only one (or more) Linux entry. Well,
+ you should know the exact position (read: a partition) where
+ Windows NT has been installed, so you could add an appropriate
+ entry into /etc/lilo.conf file. After you do that, restart Lilo
+ and, after the next re-boot, you will have both 'linux' and 'nt'
+ entries under Lilo menu.
+
+
+Installing bios=
+
+Lilo allows to map the kernel image from one disk and instruct the
+BIOS to retrieve it from another disk. For example, it's common for me
+to install Linux on a disk I connect to chroot
in a virtual
+console to install
+The lilo.conf file I use to install Lilo looks like:
+
+
+# This file must be used from a system running off /dev/hdc
+boot = /dev/hdc # overwrite MBR of hdc
+disk = /dev/hdc # tell how hdc will look like:
+ bios = 0x80 # the bios will see it as first drive
+delay = 0
+vga = 0
+
+image = /boot/vmlinux # this is on /dev/hdc1
+ root = /dev/hda1 # but at boot it will be hda1
+ label = Linux
+ read-only
+
+
+This configuration file must be read by a Lilo running off
+/dev/hdc1. The Lilo maps that get written the boot sector
+(/dev/hdc) must refer to the files in /boot
+(currently installed as hdc); such files will be accessed under hda
+when this disk will be booted as a standalone system.
+
+I call this configuration file /mnt/etc/lilo.conf.hdc
+(/mnt is where hdc is mounted during the installation. I
+install Lilo by invoking ``cd /mnt; chroot . sbin/lilo -C
+/etc/lilo.conf.hdc''. Refer to the manual page for
+chroot if this looks magic.
+
+The ``bios='' directive in lilo.conf is used to tell
+Lilo what the BIOS thinks of your devices. BIOS calls identify floppy
+disks and hard drives with a number: 0x00 and 0x01 select the floppy
+drives, 0x80 and the following numbers select hard disks (old BIOSes
+can only access two disks). The meaning of ``bios = 0x80 in
+the previous sample file is therefore ``use 0x80 in your BIOS calls
+for /dev/hdc''.
+
+This Lilo directive can be handy in other situations, for example when
+your BIOS is able to boot from SCSI disks instead of IDE ones. When
+both IDE and SCSI devices are there, Lilo can't tell whether 0x80 will
+refer to one or the other because the user is able to choose it in the
+BIOS configuration menus, and the BIOS can't be accessed while Linux
+is running.
+
+By default, Lilo assumes that IDE drives are mapped first by the BIOS,
+but this can be overridden by using instructions like these in
+/etc/lilo.conf:
+
+
+disk = /dev/sda
+ bios = 0x80
+
+
+Using Lilo When the BIOS Can't See the Root Partition
+
+I have two IDE drives, and a SCSI drive. The SCSI drive can't be seen
+from BIOS. The Linux Loader, Lilo, uses BIOS calls and can only see
+drives that BIOS can see. My stupid AMI BIOS will only boot from "A:"
+or "C:" My root file system is on a partition on the SCSI drive.
+
+The solution consists in storing the kernel, map file, and chain
+loader in a Linux partition on the first IDE. Notice that it is not
+necessary to keep your kernel on your root partition.
+
+The second partition on my first IDE (/dev/hda2, the Linux
+partition used to boot the system) is mounted on /u2. Here
+is the /etc/lilo.conf file I used.
+
+
+# Install Lilo on the Master Boot Record
+# on the first IDE.
+#
+boot = /dev/hda
+# /sbin/lilo (the installer) copies the Lilo boot record
+# from the following file to the MBR location.
+install = /u2/etc/lilo/boot.b
+#
+# I wrote a verbose boot menu. Lilo finds it here.
+message = /u2/etc/lilo/message
+# The installer will build the following file. It tells
+# the boot-loader where the blocks of the kernels are.
+map = /u2/etc/lilo/map
+compact
+prompt
+# Wait 10 seconds, then boot the 1.2.1 kernel by default.
+timeout = 100
+# The kernel is stored where BIOS can see it by doing this:
+# cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1
+image = /u2/z1.2.1
+ label = 1.2.1
+# Lilo tells the kernel to mount the first SCSI partition
+# as root. BIOS does not have to be able to see it.
+ root = /dev/sda1
+# This partition will be checked and remounted by /etc/rc.d/rc.S
+ read-only
+# I kept an old Slackware kernel lying around in case I built a
+# kernel that doesn't work. I actually needed this once.
+image = /u2/z1.0.9
+ label = 1.0.9
+ root = /dev/sda1
+ read-only
+# My DR-DOS 6 partition.
+other = /dev/hda1
+ loader=/u2/etc/lilo/chain.b
+ label = dos
+ alias = m
+
+
+Accessing Huge Disks When the BIOS Can't
+
+The system in my office has a 1GB IDE drive. The BIOS can only see
+the first 504 MB of the IDE. (Where MB means 2**10 bytes, not 10**6
+bytes.) So I have MS-DOS on a 350 MB partition /dev/hda1 and
+my Linux root on a 120 MB partition /dev/hda2.
+
+MS-DOS was unable to install itself correctly when the drive was
+fresh. Novell DOS 7 had the same problem. Luckily for me, "Options
+by IBM" forgot to put the "OnTrack" diskette in the box with the
+drive. The drive was supposed to come with a product called "OnTrack
+Disk Manager." If you only have MSDOS, I guess you have to use it.
+
+So I made a partition table with Linux' fdisk. MSDOS-6.2 refused to
+install itself in /dev/hda1. It said something like ``this
+release of MS-DOS is for new installations. Your computer already has
+MS-DOS so you need to get an upgrade release from your dealer.''
+Actually, the disk was brand new.
+
+What a crock! So I ran Linux' fdisk again and deleted partition 1
+from the table. This satisfied MS-DOS 6.2 which proceeded to create
+the exact same partition 1 I had just deleted and installed itself.
+MS-DOS 6.2 wrote its Master Boot Record on the drive, but it couldn't
+boot.
+
+Luckily I had a Slackware kernel on floppy (made by the Slackware
+installation program "setup"), so I booted Linux and wrote Lilo over
+MS-DOS' broken MBR. This works. Here is the /etc/lilo.conf
+file I used:
+
+
+boot = /dev/hda
+map = /lilo-map
+delay = 100
+ramdisk = 0 # Turns off ramdisk in Slackware kernel
+timeout = 100
+prompt
+disk = /dev/hda # BIOS only sees first 500 MB.
+ bios = 0x80 # specifies the first IDE.
+ sectors = 63 # get the numbers from your drive's docs.
+ heads = 16
+ cylinders = 2100
+image = /vmlinuz
+ append = "hd=2100,16,63"
+ root = /dev/hda2
+ label = linux
+ read-only
+ vga = extended
+other = /dev/hda1
+ label = msdos
+ table = /dev/hda
+ loader = /boot/chain.b
+
+
+After I installed these systems, I verified that the partition
+containing the zImage, boot.b, map, chain.b, and message files can use
+an msdos file system, as long as it is not "stackered" or
+"doublespaced." So I could have made the DOS partition on
+/dev/hda1 500 MB.
+
+I have also learned that "OnTrack" would have written a partition
+table starting a few dozen bytes into the drive, instead of at the
+beginning, and it is possible to hack the Linux IDE driver to work
+around this problem. But installing would have been impossible with
+the precompiled Slackware kernel. Eventually, IBM sent me an
+"OnTrack" diskette. I called OnTrack's technical support. They told
+me Linux is broken because Linux doesn't use BIOS. I gave their
+diskette away.
+
+Booting from a Rescue Floppy
+
+Next, I installed Windows-95 on my office system. It blew away my nice
+Lilo MBR, but it left my Linux partitions alone. Kernels take a long
+time to load from floppy, so I made a floppy with a working Lilo setup
+on it, which could boot my kernel from the IDE.
+
+I made the lilo floppy like so:
+
+ fdformat /dev/fd0H1440 # lay tracks on virgin diskette
+ mkfs -t minix /dev/fd0 1440 # make file system of type minix
+ mount /dev/fd0 /mnt # mount in the standard tmp mount point
+ cp -p /boot/chain.b /mnt # copy the chain loader over
+ lilo -C /etc/lilo.flop # install Lilo and the map on the diskette.
+ umount /mnt
+
+
+Notice that the diskette must be mounted when you run the
+installer so that Lilo can write its map file properly.
+
+This file is /etc/lilo.flop. It's almost the same as the last one:
+
+
+# Makes a floppy that can boot kernels from HD.
+boot = /dev/fd0
+map = /mnt/lilo-map
+delay = 100
+ramdisk = 0
+timeout = 100
+prompt
+disk = /dev/hda # 1 GB IDE, BIOS only sees first 500 MB.
+ bios=0x80
+ sectors = 63
+ heads = 16
+ cylinders = 2100
+image = /vmlinuz
+ append = "hd=2100,16,63"
+ root = /dev/hda2
+ label = linux
+ read-only
+ vga = extended
+other = /dev/hda1
+ label = msdos
+ table = /dev/hda
+ loader = /mnt/chain.b
+
+
+Finally, I needed MS-DOS 6.2 on my office system, but I didn't
+want to touch the first drive. I added a SCSI controller and
+drive, made an msdos file system on it with Linux' mkdosfs, and
+Windows-95 sees it as "D:". But of course MSDOS will not boot
+off of D:. This is not a problem when you have Lilo. I added
+the following to the lilo.conf in Example 2.
+
+
+other = /dev/sda1
+ label = d6.2
+ table = /dev/sda
+ loader = /boot/any_d.b
+
+With this modification MSDOS-6.2 runs, and it thinks it is on C: and
+Windows-95 is on D:.
+
+
diff --git a/LDP/howto/linuxdoc/Programming-Languages.sgml b/LDP/howto/linuxdoc/Programming-Languages.sgml
new file mode 100644
index 00000000..072785d2
--- /dev/null
+++ b/LDP/howto/linuxdoc/Programming-Languages.sgml
@@ -0,0 +1,470 @@
+
+
+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
+
+
+
+
+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.
+
+Latest Version of the Document
+
+You can find the latest modifications at
+
+Copyright
+
+Copyright (c) 2000 Risto Varanka.
+
+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.
+
+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.
+
+Author
+
+You are welcome to send feedback to the author at: .
+
+Author's web site can be found at .
+
+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.
+
+Links
+
+Exhaustive lists of Linux development libraries and tools:
+
+
+
+-
+
-
+
-
+
+
+
+The 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
+covering general programming subjects include the Reading List
+HOWTO and the Linux Programmer's Guide - several more have been
+written on specific subjects.
+
+
+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.
+
+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.
+
+
+
+
+
+
+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:
+
+
+
+
+
+
+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.
+
+Other Languages
+
+Other languages of note: AWK, SED, Smalltalk, Eiffel, Ada,
+Prolog, assembler, Objective C, Logo, Pascal (p2c converter)
+
+Links
+
+
+
+
+
+- on programming languages, lots of info
+and opinions
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+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.
+
+
+
+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.
+
+
+
+
+Major GUI Toolkits
+
+
+
+
+
+Library|Beginner|License|Language|Bindings
+|Examples|Comments@
+
+TK|
+ Yes|
+ Free|
+ TCL|
+ Perl, Python, others|
+ make xconfig, TKDesk|
+ @
+
+GTK+|
+ No|
+ Free (LGPL)|
+ C|
+ Perl, C++, Python, many others|
+ GNOME, Gimp|
+ Very popular@
+
+QT|
+ No|
+ Free for open source|
+ C++|
+ Python, Perl, C, others?|
+ KDE|
+ Very popular@
+
+Motif|
+ No|
+ Non-free|
+ C/C++|
+ Python, others?|
+ Netscape, Wordperfect|
+ is
+ a free replacement@
+
+GNUstep|
+ No|
+ Free (LGPL)|
+ Objective C|
+ Guile, Java?|
+ None widely known, but see the
+ |
+ GNUstep is still under development@
+
+
+
+
+
+
+
+Links
+
+
+
+-
+
-
+
-
+
-
+
-
+
+
+
+
\ No newline at end of file