-----------------------------------------------    .-        main        -.
|  __    the   __ coding  .__    asylum     .___|   |=       wtf!?        =|
|_/  |_  ____ |  | __     |  |__   ____   __| _/|   |=  * programming *   =|
|\   __\/ __ \|  |/ /     |  |  \_/ __ \ / __ | |   |=   my  creations    =|
| |  | \  ___/|    <      |   Y  \  ___// /_/ | |   |= graphics creations =|
| |__|  \___  >__|_ \_____|___|  /\___  >____ | |   |=       links        =|
|           \/     \/_____/    \/     \/     \/ |   |=     about  me      =|
 - programming ---------------------------------    \______________________/
                                                                           \
             this is the programming section. it information about pro     /
             gramming languages, and about what the difference between     \
             compilers and interperters is.                                /
                                                                           \
             BASIC/QuickBASIC                                              /
                                                                           \
                A brief History                                            /
                      This  is a programming language made by Microsoft in \
                 the mid eighties.  It all  began in  about 1964  with the /
                 development of BASIC (Basic All Purpose Symbolic Code) by \
                 two  Dartmouth  College  students.  To make a long  story /
                 short,  Billy Gates decided to make his own version:  MS- \
                 BASIC. This was at first an interpreter that was supplied /
                 for the  8086 Genre.  When the  286  came out,  Microsoft \
                 renamed this package to  Microsoft  QuickBASIC, which was /
                 now a  compiler.  It has  been a  growing language  (with \
                 version  4.5  being  the  latest  and  7.1 as  the latest /
                 professional  development  edition)  that  later  in  the \
                 late 80's changed  into  VisualBASIC for DOS which inturn /
                 'morphed' into  VisualBASIC  for  Windows  as  we know it \
                 nowadays.                                                 /
                                                                           \
                 Companies that make BASIC Compilers/Interpreters          /
                 Microsoft: QuickBASIC 4.5, VisualBASIC 5.0                \
                 Powersoft: PowerBASIC  3.2                                /
                                                                           \
                 Example BASIC code:                                       /
                                                                           \
                 10 FOR a=1 to 10                                          /
                 20 PRINT "HELLO"                                          \
                 30 NEXT                                                   /
                                                                           \
                 Equivalent QuickBASIC code:                               /
                                                                           \
                 FOR a=1 TO 10                                             /
                 PRINT "HELLO"                                             \
                 NEXT                                                      /
                                                                           \
                  Note:   QuickBASIC  features  a  bit  more   advanced    /
                  programming techniques, that allow but do not require    \
                  line numbers. Originally  in BASIC, line numbers were    /
                  mandatory.                                               \
                                                                           /
             C/C++                                                         \
                                                                           /
                 A Brief History                                           \
                      Yes, The thrid letter of the alphabet. That's right! /
                 Believe  it or  not,  that's the name  of  a  programming \
                 language  (Just shows  how creative  programmers can be). /
                 Now back to C.  It all began  in the 1970's with the hope \
                 of creating a  programming language  with new  principles /
                 and  compatibility  between  different  platforms such as \
                 different UNIX systems. The original name (and it took me /
                 some time to research this) was A. With some major impro- \
                 vements it was  renamed to  B and then with even more im- /
                 provements, it was renamed to C.  It was created by Brian \
                 Kernighan and Dennis Ritchie (K&R) at Bell Laboratories.  /
                      As the years went by, a new style of programming has \
                 risen and now  basically conquers  the programming field. /
                 This is called Object Oriented Programming,  or OOP.  You \
                 may have heard of C/C++.  The C is the C language and the /
                 C++ is a flavour of C,  but with object oriented thingies \
                 built in. (I can't say to much about OOP because I myself /
                 am not very fluent with it)                               \
                                                                           /
                                     Companies that make C/C++ Compilers   \
                                                                           /
                 Microsoft Visual C++, QuickC                              \
                 Borland C++ 5.0                                           /
                 Watcom C/C++ 11.0  (this is really cool)                  \
                 Delorie Software DJGPP (Free! NOT shareware! Freeware!    /
                 id's Quake/QuakeČ is made in it!)                         \
                                                                           /
                 Example C code:                                           \
                                                                           /
                 #include "stdio.h"                                        \
                 void main(void)                                           /
                   {                                                       \
                     int a=5;                                              /
                     printf("This is the value of a:&i\n",a);              \
                   }                                                       /
                                                                           \
                 Equivalent QuickBASIC code:                               /
                                                                           \
                 a=5                                                       /
                 PRINT "This is the value of a:"; a                        \
                                                                           /
            Turing/OOT                                                    \
                                                                           /
                 A Brief History                                           \
                      This is a language made in the University of Toronto /
                 by a group of professors. It is basically a teaching lan- \
                 guage that gives you a way of  learning about programming /
                 concepts in general.  It is a really good language to be- \
                 gin programming in.  It was meant as  a replacements lan- /
                 guage  for the  more  complicated  PASCAL  language,  and \
                 therefore shares  many similarities with Pascal.  So far, /
                 this concept has worked,  with some 60% of the schools in \
                 southern Ontario using Turing as their language of educa- /
                 tion.  There is one thing I REALLY like about Turing,  it \
                 is (1) Mulitiplatform: UNIX, Macintosh, ICON, IBM PC etc. /
                 (2) it uses an auto-indent key -F2. This key allows for a \
                 long program with many of loop's and if's to be automati- /
                 cally indented  without you having to  press the  TAB key \
                 whenever an indentation should be made. This is extremely /
                 helpful at times with large and complicated programs.     \
                                                                           /
                                                                           \
                 Companies that make Turing Interpreters                   /
                  Holt Software and Associates. Turing 7.2, DOSOOT, WinOOT \
                                                                           /
                 Example Turing code:                                      \
                 var a : int                                               /
                 put "Enter a numerical value"..                           \
                 get a                                                     /
                 put "The value you entered plus one is:", a+1             \
                                                                           /
                 Equivalent QuickBASIC code:                               \
                 INPUT "Enter a numerical value"; a                        /
                 PRINT "The value you entered plus one is:"; a+1           \
                                                                           /
             Pascal                                                        \
                                                                           /
                 A Brief History                                           \
                     This language is named after Blaise Pascal,  a math-  /
                 ematician of the 17th century. Niklaus Wirth from Zurich, \
                 Switzerland created the  programming language in the late /
                 1960's at  ETH (Eidgenossiche Technische Hochschule).  It \
                 took about 10 years for it to get  recognized as a widely /
                 respected programming language.                           \
                                                                           /
                Companies that make Pascal Compilers/Interpreters          \
                 Borland TurboPascal 7.0                                   /
                 Watcom Pascal                                             \
                                                                           /
                 Example Pascal Code:                                      \
                 program main (output);                                    /
                   begin                                                   \
                     writeln ("test test");                                /
                   end.                                                    \
                                                                           /
                                                                           \
                 Equivalent QuickBASIC code:                               /
                 PRINT "test test"                                         \
                                                                           /
                                                                           \
             Assembly Language (Asm)                                       /
                                                                           \
                  The Facts and History                                    /
                       Asm controls what the CPU  does almost  electron by \
                  electron. It has total control over the CPU, and in turn /
                  the whole computer.  It can basically make anything, and \
                  has no limitations. Most High Level Languages (hll) will /
                  allow you to do  "anything"  but  will have their limit- \
                  ations divided into factors such as speed, size and ease /
                  of use.  Asm,  on  the other hand,  has  speed maximized \
                  (depending on the design of course),  but ease of use is /
                  rather low (meaning that it is hard.) As for size, well, \
                  that can be divided into seperate categories. The source /
                  code for asm can be rather lengthy. A  program writen in \
                  BASIC can take up only 1 line of source code,  while the /
                  asm version of  the program might  take  up some 5 to 10 \
                  lines. On the other hand, the  executable or binary ver- /
                  sion of a program done  in BASIC might be something like \
                  12Kb, while it's asm equivalent only 5 to 10 bytes. Yes, /
                  bytes! The size difference is enormous. This is the main \
                  reason most demos  are coded in asm,  because there is a /
                  size limit, and what can  be fit into 4,096 bytes amazes \
                  me almost everytime.                                     /
                       The language itself also  has  a  big disadvantage, \
                  once you learn it on an Intel 80x86 based processor, you /
                  will have to learn a  whole new batch  of commands  (op- \
                  codes) for the Motorola 68x000 CPU. In a language like C /
                  or BASIC, the program can almost always be translated by \
                  both Compilers/Interpreters  without any  complications. /
                                                                           \
                       Asm requires the knowledge of how the CPU operates. /
                  It is necessary to  understand  how memory is segmented, \
                  how the Stack operates, and what registers or interrupts /
                  are.  These are things that will probably unveil the in- \
                  nerworkings of your other programs created in a hll such /
                  as C or BASIC.  You will be able to optimize your source \
                  code in the hll and make it as "friendly" to the CPU and /
                  compiler as possible. It would be  pointless for  you to \
                  create a program  that converts  temperatures in Celcius /
                  to temperatures in  Farenheit in ASM for  optimum speed, \
                  because  if  it was  done in BASIC,  it would  run  with /
                  unnoticed speed loss,  and would cut development time by \
                  several  hundred. The bottom line is,if you want to have /
                  something squashed into as little space as possible, and \
                  want it to run with absolute maximum speed,  learn to do /
                  it in asm. Making a program in BASIC might be easy,  but \
                  being able to  make a program  in asm  that will work as /
                  fast  as possible,  is harder, but worthwhile.           \
                                                                           /
                  Companies that make Asm Compilers:                       \
                  Microsoft MASM (macro assembler)                         /
                  Borland TASM  (turbo assembler)                          \
                  Eric Isaacson's A86 (Shareware) and A386 (full version)  /
                                                                           \
                  Sample ASM source:                                       /
                                                                           \
                  .MODEL SMALL                                             /
                  .CODE                                                    \
                  MAIN PROC                                                /
                  Start:                                                   \
                      ASSUME CS:@CODE, DS:@CODE                            /
                      mov dx,OFFSET TheBeep                                \
                      mov ah,9                                             /
                      int 21h                                              \
                      mov ax, 4c00h                                        /
                      int 21h                                              \
                  Main ENDP                                                /
                  .DATA TheBeep DB 07h,"*Beep*$",0Dh,0Ah                   \
                                                                           /
                  Equivalent QuickBASIC source:                            \
                                                                           /
                  PRINT CHR$(7) + "*Beep*"                                 \
                                                                           /
                                                                           \
             Compiler? Interpreter? What's that?                           /
                                                                           \
                       Much like a language interpreter  in  real life, an /
                  interpreter  is  a program  that  can  take english like \
                  terms and convert them into terms understood directly by /
                  a CPU (Central Processing Unit). For example,it can take \
                  the instruction PRINT "HELLO" and convert it into some 3 /
                  lines of computer understood code. Remember, a  computer \
                  can only add  numbers.  That is all that  it can do.  It /
                  cannot possibly "understand" the command PRINT.          \
                                                                           /
                       But what is  the difference between an  interpreter \
                  and a compiler? Let's visualize this. If I were to tran- /
                  slate what  a person  was saying to  you in  a different \
                  language,  live in near real time,  I would get stressed /
                  and probably confused. This is what happens to an inter- \
                  preter.  It is slower and more CPU intensive.  Now, if I /
                  were to view a video tape of what that person was saying \
                  and was to  translate it into another language,  I could /
                  do that on my  own time,  look over certain parts of the \
                  tape, double-check things and then neatly type it up for /
                  you to understand easily.  This is what a compiler does. \
                  It takes a whole  program in one big chunk,  converts it /
                  to the "neatly typed instructions" for the CPU to under- \
                  stand, and then backs  away, as the  CPU deals with  the /
                  code.  The advantages over a compiler  are that interpr- \
                  eters tend to start to execute code  faster than compil- /
                  ers,  whereas compilers first  go through the whole list \
                  of  instructions,  and  then run it,  which  may be time /
                  consuming  with large  programs. This slow-down  in com- \
                  pilers is minimal with the average speed of  the current /
                  PC. If I were  to  recommend to you which one to use,  I \
                  would say to use a compiler.  The reason? Compilers make /
                  code a LOT faster and some of the new compilers can even \
                  Optimize your program for you.                           /
                                                                           \
                      this site is designed and created by Michal Guerquin /
                                        © 1997 by Michal Guerquin [e.mail] \