PC programming information page

Programming information

Choice of programming languages can be considered a religious issue.Discussions of programming languages often become religious wars. There are nowadays very many languages to choose for.It is possible to write terrible code in any language. And it ispossible to write perfectly useful, very readable code in any language. The quality of a particular program is less a functionof the quality of the programming language than it is of the qulaityof the programmer. Some "better" languages though can make the writing good code easier for some type of applications.

How To Write Unmaintainable Code
- tips from the masters on how to write code that is so difficult to maintain, that the people who come after you will take years to make even the simplest changes, if you follow all these rules religiously, you will even guarantee yourself a lifetime of employment, since no one but you has a hope in hell of maintaining the code
Rate this link

Mathtools.net
- Mathtools.net is the technical computing portal for all scientific and engineering needs. The portal is provided as a free service to the scientific community and contains useful links for technical computing programmers.
Rate this link

TopCoder
- This site runs online computer programming competitions in the Java and C++ languages. By conducting these competitions, TopCoder attracts elite software developers. The attraction of competition, and the associate rewards, tries to create a powerful community.
Rate this link

Useful general skills

Regular expressions

A regular expression is a specially formatted pattern that can be used to find instances of one string in another. Several programming languages including Visual Basic, Perl, JavaScript and PHP support regular expressions, Regular expressions are a very powerful way of matching patterns in text. Regular expressions are generally usually used as find-replace tools. Regular expressions are similar to some find-replace operation in popular text edixtors, only better. Think of a regular expression as an extremely advanced find-replace tool that saves us the pain of having to write custom data validation routines to check e-mail addresses, make sure phone numbers are in the correct format, etc. Regular expressions ("regex's" for short) itself are sets of symbols and syntactic elements used to match patterns of text. Regular expressions figure into all kinds of text-manipulation tasks. Searching and search-and-replace are among the more common uses, but regular expressions can also be used to test for certain conditions in a text file or data stream. Unfortunately regular expressions are quite hard to understand at first.Regular expressions are one of those quirky features that popup in a variety of programming languages, but because they seem to be a difficult concept to grasp, many developers push them away into the corner, forgetting that they even exist.

The UNIX shell is most people's main access to the UNIX operating system.Whenever you login to a Unix system you are placed in a program called the shell. he shell acts as a command interpreter; it takes each command and passes it to the operating system kernel to be acted upon. It then displays the results of this operation on your screen. You can make shell scripts by placing a series of shell commands to a file which you then execure with aid of the the shell. Shell programming with scripts is very useful to automate repetitive tasks such as system administration, regression test, and rapid prototyping. The language syntax of conventional Unix shells such as Bourne shell, C shell, and Korn shell are somewhat awkward.Therefore, shell scripts written in Unix shell programming languages are usually hard to read and difficult to change and maintain. There are different versions of shells used in UNIX systems,Bourne, Korn, and C presents the three shells that are typically available on a UNIX system. There are many basic things which work in quite same way in many shells, but there are lots of differences in the more advanced operations in those different shells. In the near beginning there was the Bourne shell /bin/sh (written byS. R. Bourne). It had (and still does) a very strong powerfulsyntactical language built into it, with all the features that arecommonly considered to produce structured programs; it hasparticularly strong provisions for controlling input and output and inits expression matching facilities. Along came the people from UCB and the C-shell /bin/csh was born. Intothis shell they put several concepts which were new, (the majority ofthese being job control and aliasing) and managed to produce a shellthat was much better for interactive use. The new shell input language used in C-shell was to resemble C, the language in which UNIX itself was written. C-shell had problems(like bugs etc.) so new versions were developed.In came command lineediting, TENEX-style completion and several other features. Out wentmost of the bugs, but did the various UNIX operating systemmanufacturers start shipping tcsh instead of csh. Generally people have used Bourne shell for scriptingand the C shell for interactive use. Shell compatition is still going on. The Korn shell, a commercial implementation of "improved Bourne",has long been a part of System V. POSIX specified more orless the System V Bourne shell as shell standard.bash (the Bourne again shell) by GNU was born to be a POSIX compatiblefree shell. Rc is a small, simple and in most peoples opinion a much cleaner shellthan some other counterparts.The tcsh is an enhanced version of the C shell. It allows command line editing and filename completion.The search for the perfect shell still goes on and the latest entryinto this arena is zsh. It is based roughly on the bourne shell (although thereare some minor but important differences) and has so many additionalfeatures.

Shell Wrappers
- A "wrapper" is a shell script that embeds a system command or utility, that saves a set of parameters passed to to that command. Wrapping a script around a complex command line simplifies invoking it. This is expecially useful with sed and awk.
Rate this link

Awk is a text-processing programming language designed to search for, match patterns, and perform actions on files. AWK programs are generally quite small, and are interpreted. AWK is a suitable tool for manipulating data which is in text format. Awk makes it easy to select particular records in a file and perform operations upon them.

An Awk Tutorial
- he Awk text-processing programming language is a useful and (in general) simple tool for manipulating text. This document provides a quick overview of Awk.
Rate this link

REXX is a programming language designed by Michael Cowlishaw of IBM UK Laboratories. Rexx is an acronym which stands for "Restructured Extended Executor Language". In Mike's own words: "REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way." What makes REXX different from most other languages is that it is also designed to be used as a macro language by arbitrary application programs. The idea is that application developers don't have to design their own macro languages and interpreters. Instead they use REXX as the macro language and support the REXX programming interface. If a REXX macro comes across an expression or function call that it cannot resolve, it can ask the application to handle it instead. The application only has to support the features that are specific to it, freeing the developer from handling the mundane (and time-consuming) task of writing a language interpreter. Rexx language is standarddized.The American National Standard (ANSI Standard) for Rexx is called "Programming Language - REXX", and its number is X3.274-1996 The REXX language itself is independent of a specific operating system. But there always exists functions and services specific for a single operating system. The REXX Product family runs on host systems, such as VM/ESA, VSE/ESA, and MVS/ESA, and workstation environments, such as AIX, OS/2, Linux, and Windows.

NetRexx is a human-oriented programming language which makes writing and using Java classes quicker and easier than writing in Java. NetRexx is a programming and scripting language which has been designed to be a simple, effective, and complete alternative to the Java language. With NetRexx, you can create applications and applets for the Java environment faster and more easily than by programming in Java - and you can compile or interpret them, as appropriate. The new -prompt option allows very fast (usually sub-second) compilation or interpretation of most classes. Inspired by two very different programming languages, Rexx and Java, NetRexx blends the easy-to-learn syntax of Rexx with the robustness and portability of the Java environment. The result is a language which is tuned for both scripting and application development, and is therefore truly general-purpose.

Sed is a stream editor than can be used to perform basic text transformations on an input stream.Sed is a non-interactive editor that works from a command line; it's not a GUI Windows app. Sed changes blocks of text on the fly, without making you open up a screen, push a cursor around, and press DELETE or INSERT or ENTER or function keys.Sed is extremely powerful, and you can do things in sed that you can't do in any standard word processor. THe operating principle of sed is simple: You feed sed a script of editing commands (like, "change every line that begins with a colon to such-and-such") and sed sends your revised text to the screen. Sed has beeb originally written and designed for Unix, sed has been ported to MS-DOS, Windows, OS/2, and other operating systems.

Do-it-with-sed
- This is a little document to help people using sed. The examples gives in this document are intended to show real examples of sed, and to show also the power of sed, as well its weaknesses.
Rate this link

sed . . . the stream editor
- This page is an attempt to collect FAQ (Frequently Asked Questions) files and some sed utilities and introductions for novices. The text files are for any sed user; the binaries are for DOS/Windows users.
Rate this link

Tcl (Tool Command Language) is easy to learn and you can create a useful program in minutes! You are free to use it however you wish, even in commercial applications. Tcl (Tool Command Language) is used by over half a million developers worldwide and has become a critical component in thousands of corporations. It has a simple and programmable syntax and can be either used as a standalone application or embedded in application programs. Best of all, Tcl is open source so it's completely free. Tk is a graphical user interface toolkit that makes it possible to create powerful GUIs incredibly quickly. It proved so popular that it now ships with all distributions of Tcl. Tcl and Tk were created and developed by John Ousterhout. Developers all over the world followed his example and built their own Tcl extensions. Today, there are hundreds of Tcl extensions for all manner of applications.

Perl is short for 'Practical Extraction and Report Language'.
Perl is an iterpreted high-level programming language designed for processing text. Perl has become the premier scripting language of the Web, as most CGI programs are written in Perl. However, Perl is widely used as a rapid prototyping language and a language that makes it possible for different systems to work well together. Perl is popular with system administrators who use it for an infinite number of automation tasks. Because Perl is an interpreted language, Perl programs are highly portable across systems.

Regex - A Modest Proposal
- Regular expressions (or regexes as they're fondly known) have long been a mainstay of the Perl world. Perl is a hotbed of regex innovation, giving reluctant (non-greedy) quantifiers and zero-width assertions to the world, to name only two.
Rate this link

Python is an interpreted, interactive, object-oriented programming language. It is often compared to Tcl, Perl, Scheme or Java. Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems. Python is also usable as an extension language for applications that need a programmable interface. The Python implementation is portable: it runs on many brands of UNIX, Windows, DOS, OS/2, Mac, Amiga, etc. Python is copyrighted but freely usable and distributable, even for commercial use, and of course the download is FREE.

Python for Lisp Programmers
- This is a brief introduction to Python for Lisp programmers. Basically, Python can be seen as a dialect of Lisp with "traditional" syntax (what Lisp people call "infix" or "m-lisp" syntax). Python supports all of Lisp's essential features except macros, and you don't miss macros all that much because it does have eval, and operator overloading, and regular expression parsing, so you can create custom languages that way.
Rate this link

Dive Into Python
- Dive Into Python is a free Python tutorial for experienced programmers. You can read the book on-line, or download it in a variety of formats.
Rate this link

PHP is a server-side, cross-platform, HTML embedded scripting language. PHP is a simple scripting language to implement server side fuctionalityto web servers which support that scripting language.PHP, which stands for PHP Hypertext Preprocessor, is a server-side embedded scripting language. In non-technical terms: a PHP processor is run on the server (Windows, or a flavor of UNIX). When a page is requested that contains PHP, the processor translates and executes all the commands in the page, and then outputs the result to the browser as regular HTML. Because this translation occurs on the server, a page written with PHP is viewable with any browser, on any operation system.PHP can be embedded directly into HTML. PHP code is separated from HTML by Start and End entities. When a document is parsed, the PHP processor only interprets the demarked areas, and outputs the results in the same position. PHP also includes the ability to almost completely separate code from HTML.

PHP is intended for and excels at processing text, a range of math
functions, and interaction with databases, with a limited amount of fuss on
the part of the coder. It also is a natural for building web pages
requiring the coder to do nothing special to get their output to the
browser.

JavaScript is the Netscape-developed object scripting language used in millions of web pages and server applications worldwide.JavaScript is Netscape's cross-platform, object-based scripting language for client and server applications. JavaScript is most commonly used to add code to web page which is executed by the web browser in the client computer. In this use Netscape Navigator, Internet Explorer or some other Javascript capable web browser interprets Client-Side JavaScript statements embedded in an HTML page.Netscape's JavaScript is a superset of the ECMA-262 Revision 3 (ECMAScript) standard scripting language, with only mild differences from the published standard. Microsoft's implementation is somewhat different subset of that standard. Both Netscape and MSIE support JavaScript, with newer browsers supporting later versions of JavaScript (support for some other brosers exist or is coming).Client side Javascript can be used to implement menus, clocks, dynamic HTML, interactive web pages, some limited search engines, it is used in web advertising (some banners) etc.JavaScript can also be used to make server side scripts on Netscape web server.Server-Side JavaScript is compiled into platform-independent bytecode and used by Netscape Enterprise Server, enabling you to create server-based applications similar to Common Gateway Interface (CGI) programs.Even though the name is quite similar to to Sun's Java, the JavaScript iscompletely different technology than Java. Contrary to popular misconception, JavaScript is not "Interpretive Java". JavaScript and Java are similar in some ways but fundamentally different in others. In a nutshell, JavaScript is a dynamic scripting language supporting prototype based object construction. The basic syntax is intentionally similar to both Java and C++ to reduce the number of new concepts required to learn the language. JavaScript can function as both a procedural and an object oriented language.

Javascript tutorials

How to Steal JavaScript
- "Borrowing" JavaScript code is easy. Making it work on your own pages, however, can prove difficult. Nadav reveals what you need to know to make those pirated scripts sail.
Rate this link

Javascrit books

DevGuru JavaScript Quick Reference
- This is an extensive 214 page reference source that explains and gives comprehensive, working examples of code in a definitive manner for the JavaScript language (and hence, for the ECMAScript and JScript languages). All elements of the language are covered, including the events, functions, methods, objects, operators, properties, statements, and values.
Rate this link

ABC is an interactive programming language and environment for personal computing, originally intended as a good replacement for BASIC. ABC is easy to learn (an hour or so for someone who has already programmed), and yet easy to use. Originally intended as a language for beginners, it has evolved into a powerful tool for beginners and experts alike.

Ruby is the interpreted scripting language for quick and easy object-oriented programming. Ruby can be considered as an object oriented scripting language.Ruby is a fairly new language out of Japan that apparently is very popular there. Ruby has full reflection mechanisms and a fairly simple syntax. Ruby combines a lot of smalltalkism and perlisms which makes it very ituitive to use.It has many features to process text files and to do system management tasks (as in Perl).

Online Ruby Cookbook
- This is an effort to bring an organized and complete set of recipes to the ruby community so that beginning and advanced ruby programmers can benefit from having one. This an on-going book project.
Rate this link

REBOL is an advanced interpreted language that lets you access and control the resources of the Internet with such ease that you might start thinking of the Internet as your own personal operating system. You're already familiar with how web browsers let you surf the Internet. With REBOL you script the Internet.

Java is Sun's cross-platform, object-based programmign languagewhich can be used for wide variety of applications. In web environmentJava is most often used as applets which are included to webpages andthen run by the client web browser Java virtual machine. Java can alsobe used to make server side web server extensions called servlets.

General

J2EETM Technologies
- JavaTM 2 Platform, Enterprise Edition (J2EE), is a standard architecture to define and support a multitiered programming model where thin-client applications invoke business logic that executes on an application server.
Rate this link

PostScript is a page description programming language. It is perhaps the most versatile and loved language for printers, being used in printers world-wide. It is capable of drawing to computer screens and any kind of drawing device. Postscript langauge most often used as laser printer controlling laguager, but is a complete programming language. PostScript is interpreted, stack based and has latent typing. It somewhat resembles the computer language FORTH. However, PostScript programs are usually documents meant to be printed that have been generated by a program written in some compiled language.

Color Postscript tutorial
- Color PostScript is trivial. For black & white pictures, you specify shades of gray with the command "setgray". "0 setgray" is black and "1 setgray" is white. For color PostScript, you can specify the color with the command "setrgbcolor". You give that command 3 numbers, the red, green, and blue levels.
Rate this link

The 'C' programming language was originally developed for and implemented on the UNIX operating system, on a DEC PDP-11 by Dennis Ritchie. One of the best features of C is that it is not tied to any particular hardware or system. This makes it easy for a user to write programs that will run without any changes on practically all machines. C is often called a middle-level computer language as it combines the elements of high-level languages with the functionalism of assembly language. C allows the manipulation of bits, bytes and addresses- the basic elements with which the computer functions. Another good point about C is its portability which makes it possible to adapt software written for one type of computer to another. C offers the speed of assembly language (or quite near to it) and the extensibility of FORTH, but few of the restrictions of Pascal and Modula-2. At the time that C appeared many languages were in use (many still are).There was a demand for a truly transportable language that would run on all platforms. C was in may ways "good enough" for this. Originally C was described by itsauthors as "portable assembly language" in that it was small, simple,close to the hardware, and without very much in the way of behind-the-scenes magic. C was originally designed to produce very easy conversion (translation) toPDP-11 machine code which would compete well with hand-writtenassembly. The principal reason for major OSs being written in C nowadays appears to be thatthe software manufacturers already have their own libraries of C routinesthat they want to reuse simply because they don't want to pay out to getthem in a different format. They now hold copyright over what they have,and are not going to relinquish it. Thus there is a demand for Cprogrammers.The reason that they put any time, money and effort at all intoproducing the libraries in the first place was that C was being touted as"the way to go" because of its so-called transportability betweenplatforms. This portability is not such tha tyou can just take any C program and compile it in a new system.Many programs and libraries had turned to be more or less platform specific, unless pecifically written for portability in mind in the first place. The C source is usually"mostly" compatible between compilers at best - and that is when only themost rudimentary routines are being written. Very many C programs in real life have more or less platform specific features in them, so porting takes almost always lots of time. In C programming language world there is one book more known and referenced that anything else. The name of this wondrous tome is "The C Programming Language, Second Edition", and it was written by the twopeople to whom the entire world owes a debt of gratitude for the veryexistence of the language: Brian W. Kernighan, and Dennis M. Ritchie.Practically every C book, tutorial, pamphlet, website, or college course everpublished/taught by anyone with even the slightest amount of competencewill eventually refer you back to "K&R", as this book is commonly known.Short of going to the ANSI/IEEE standard, there is no more definitivework on the language, and no more authoritative information source thanthe very creators of the language you're trying to learn.If you want to learn C well, get a copy of this book C Programming Language, Second edition by by Brian W. Kernighan and Dennis M. Ritchie. The book is published by Prentice Hall of Englewood Cliffs, NJ, it wears an ISBN number of 0-13-110362-8. The C programming language simply cannot be learned even halfway effectively without it. C is like a surgeon's scalpel: just a handle and an edge. It can cutpractically anything and in the right hands it can perform miracles.However, use it carelessly and you'll cut your own hands off.

Source code

Fast Square Root in C
- This application note describes a solution for a fast square root routine in C. Both the parameter and the result are 16-bit unsigned ints. Even though it is not 100% precise, the result can be used with many applications in the real world running in real time.
Rate this link

GCC
- GCC (GNU Compiler Collection) GCC development is a part of the GNU Project, aiming to improve the compiler used in the GNU system including the GNU/Linux variant. Currently GCC contains front ends for C, C++, Objective C, Chill, Fortran, and Java as well as libraries for these languages (libstdc++, libgcj,...).
Rate this link

DJGPP
- DJGPP is a complete 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS. It includes ports of many GNU development utilities. The development tools require a 80386 or newer computer to run, as do the programs they produce.
Rate this link

OpenWatcom
- Open Watcom is a joint effort between SciTech Software, Sybase?, and a select team of developers, which brings the Sybase Watcom C/C++ and Fortran compiler products to the Open Source community.
Rate this link

Pacific C MS-DOS Compiler (freeware version)
- Pacific C is a freeware C compiler for DOS. Included is the HI-TECH Professional Development environment, an IDE allowing you to edit source code and manage projects with ease. Pacific C's text-based GUI makes it a good teaching package, while ANSI-compliance and tight code generation provide a powerful development tool.
Rate this link

Borland C compiler information

Borland C compilers used to be very well known and widely used compilers. Inprise has issued free versions of several Borland C and Pascal compilers.Users can download the Borland C++ Compiler 5.5. Users can also download Turbo Pascal 1.0, 3.02, and 5.5 and Turbo C 1.01 and 2.01 from the Borland Community Museum if they first register as Borland Community members.

GCC information

GCC (GNU Compiler Collection) GCC development is a part of the GNU Project, aiming to improve the compiler used in the GNU system including the GNU/Linux variant. Currently GCC contains front ends for C, C++, Objective C, Chill, Fortran, and Java as well as libraries for these languages (libstdc++, libgcj,...).

DJGPP information

GPP is an open source C compiler developed by GNU project for UNIX systems. GPP is an open source C++ compiler developed by GNU project for UNIX systems. DJGPP is a DOS/Windows port fo GCC and GPP tools.

Watcom C compiler information

C checkers

Checker
- Checker is a tool which finds memory errors at runtime. Its primary function is to emit a warning when the program reads an uninitialized variable or memory area, or when the program accesses an unallocated memory area. The Malloc library of Checker is very robust, though a bit slower than the usual GNU Malloc.
Rate this link

LCLint
- LCLint is a tool for statically checking C programs. With minimal effort, LCLint can be used as a better lint.
Rate this link

C++ is an enhanced version of the C language. C++ includes everything that is part of C and adds support for object-oriented programming (OOP). In addition, C++ also contains many improvements and features that make it a "better C", independent of object oriented programming. C++ is actually an extendible language since we can define new types in such a way that they act just like the predefined types which are part of the standard language.

A Tutorial on creating DLLs with VC++
- Visual basic is very fast and easy tool for developing applications with high degree of user friendliness , but it lacks some important functionalities like direct access to hardware, multythreading(Activex servers allows some type of multythreading !). The easy and effective solution for this problem is to write a DLL. But beginners experiance problems in understanding how to write a dll. .Here is a simple tutorial on writing DLLs with Visual C++. I assume that you know a little bit Visual Basic and C programming.
Rate this link

C++ Annotations
- This document is intended for knowledgeable users of C (or any other language using a C-like grammar, like Perl or Java) who would like to know more about, or make the transition to, C++. This document is the main textbook for Frank's C++ programming courses, which are yearly organized at the University of Groningen. The C++ Annotations do not cover all aspects of C++, though. In particular, C++'s basic grammar, which is, for all practical purposes, equal to C's grammar, is not covered. For this part of the C++ language, the reader should consult other texts, like a book covering the C programming language.
Rate this link

C# is a modern, object-oriented language introduced in Microsoft .NET development environment.C# is designed to bring rapid development to the C/C++ programmer, so that the people whi know those languages shoudl be able to easily adapt to C# programming.C# is designed for architecting a wide range of components-from high-level business objects to system-level applications.C# includes built-in support to turn any component into an XML Web service that can be invoked over the Internet-from any application running on any platform.This is what Microsoft proposes as a good Internet programming tool for applications which involve XML and Web Services. C# includes versioning support in the language.

C# Version 2.0 Specification
- Microsoft released the design specifications document for C# 2.0 (codenamed 'Whidbey') to be released early 2004. New features of the language include generics similar to those found in Eiffel and Ada, anonymous methods similar to lambda functions in Lisp, iterators, and partial types.
Rate this link

Ada is an internationally standardized object-oriented language. It was originally designed in the early '80s and updated in the mid '90s.It was designed for programming large, long-lived systems, especially those with stringent reliability requirements. Ada was specifically intended to meet the needs of embedded and real-time applications, which must be reliable as well as efficient. Typical examples are aircraft avionics, command and control, and transportation systems. Ada can be used as a procedural programming language with built-in support for multitasking and hardware control and as an object-oriented programming language.Ada is a strongly typed language with a Pascal-like syntax. Ada offers structured control statements; procedures and functions; data type-definition facilities; pointers to dynamically allocated objects, declared objects, and subprograms; block structure; exception handling; and a set of standard libraries. Ada has a traditional run-time data model comprising static storage, stack space for local variables and formal parameters, and a heap for dynamically allocated objects. Ada does not have garbage collection, but does include several mechanisms by which the programmer can prevent memory leaks. Ada's secure underpinnings (strong typing, and so on) as well as specialized functionality, such as mechanisms to promote traceability between source and object code, make the language applicable to systems that must be certified against safety standards such as DO-178B. The Ada 95 standard contains features for interfacing with native (non-Ada) code and data: An Ada program can import subprograms or global data from other languages.

BASIC, which stands for Beginner's All-purpose Symbolic Instruction Code, is an easily-learned computer language that was developed in the 1960's. It is still important because of its adoption by the influential industry giant MicroSoft as the basis for their Visual Basic language and of the macro language in version 5 of their Excel spreadsheet (VBA, Visual Basic for Applications).QBasic is a popular variant of the Basic programming language designed by Microsoft. The QBasic interpreter used to come with every version of MS-DOS and Windows 3.1 opearting system. QBasic is not installed by default when installing Windows 95 / Windows 98, however is still on the CD for support with older programs. QBasic is not included with Windows 2000 (if you need to run QBasic in Windows 2000, you can copy it from a Microsoft Windows NT 4.0-based computer).

Really really basic BASIC
- Even if you don't have the foggiest idea how to write or even run a program, then this section is just for you. In a matter of a few minutes, you will actually be writing a program of your own.
Rate this link

Assembler is an ASCII presentation of the native microprocessoroptocodes (the codes with which it operates).High-level languages offer great advantages in general by hiding many mundane and repetitive details from programmers, allowing them to concentrate on their goals. However, sometimes programmers must use a lower-level language, such as when writing code that deals directly with hardware or that is extremely performance sensitive. Assembly language is the programming language closest to the hardware, which makes it a natural last resort in such situations.

Visual Assembler
- Visual Assembler is an IDE for assembly language program that incorporates Rapid Application Development (RAD) features. Direct support is provided for win32 assembly programming on the Intel x86 processors, using the Masm, Nasm, or Tasm assemblers.
Rate this link

NASM (Netwide Assembler)
- The Netwide Assembler, NASM, is an 80x86 assembler designed for portability and modularity. It supports a range of object file formats, including Linux a.out and ELF, NetBSD/FreeBSD, COFF, Microsoft 16-bit OBJ and Win32. It will also output plain binary files. Its syntax is designed to be simple and easy to understand, similar to Intel's but less complex. It supports Pentium, P6 and MMX opcodes, and has macro capability.
Rate this link

Visual Assembler
- Visual Assembler is an IDE for assembly language program that incorporates Rapid Application Development (RAD) features. Direct support is provided for win32 assembly programming on the Intel x86 processors, using the Masm, Nasm, or Tasm assemblers.
Rate this link

Win32 + Assembler Source Page
- If you are interested in 32-bit programming for Windows 95/98/ME or NT/2000 using assembler, you will find everything you need here including an Editor, Assembler, Resource Compiler, Linker, Symbolic Debugger, Help Compiler, Information, Sample code and demos and Links.
Rate this link

DEBUG/ASSEMBLY TUTORIAL by Fran Golden
- This is a debug tutorial to assist the student who needs to know the inner-workings of the Intel based computer. The objective of this material is to instruct the student in observing the contents of the microprocessor and all of the memory locations that the processor can address. After you become familiar with debug and how it looks at addresses, You will be introduced to machine level programming, using debug as an assembler. At the end of this tutorial you should have a good understanding of the IBM system board and low level programming. Debug is a small utility program that uses one letter commands followed by several parameters needed on the command line.
Rate this link

The programming language Pascal was originally designed by Professor Niklaus Wirth, and named after a French 17th mathematician and philosopher Blaise Pascal widely admired for the clear and direct nature of his ideas. Wirth set out two principal aims for the design of Pascal: that it should be systematic and coherent, so far as possible avoiding arbitrary restrictions, and that it should be suitable for efficient implementation on the currently available machines. The Pascal language was originally designed to be a a teaching language that highlights concepts common to all computer languages and standardizes the language in such a way that it makes programs easy to write. Pascal has strict programming rules, because it is thought that strict rules make it difficult for the programmer to write bad code!

Pascal has also been standardized. Closely-related but not identical standards were published in 1983 by ISO (originally a BSI standard) and ANSI.
The standards were ISO 7185:1983 & ANSI/IEEE 770X3.97-1983, which were in effect identical in most respects, but did contain some differences. The former was revised in 1990 as ISO 7185:1990, and this version was adopted by ANSI in 1993.

Turbo Pascal is very well known and widely used Pascal compiler for DOS. Turbo Pascal has somewhat less strict rules than original Pascal and added some special additions to the language. Turbo Pascal made the Pascal language a good programming tool for making DOS programs. Turbo Pascal was easy to program and very quick to compile.Inprise has issued free versions of several Borland C and Pascal compilers.You can download Turbo Pascal 1.0, 3.02, and 5.5 and Turbo C 1.01 and 2.01 from the Borland Community Museum if you first register as Borland Community members.

The modern use of Pascal language is the Borland Delphi development environment for Windows.

General information

Essential Pascal
- "Essential Pascal" is a free online introduction to the Pascal programming language. This book has been written by Marco Cant? and covers the language form the perspective of Borland's Delphi development environment.
Rate this link

Turbo Pascal / Borland Pascal Information

Antique Software: Turbo Pascal v3.02
- Turbo Pascal 3 was the first Turbo Pascal version to support the Intel 8087 math co-processor (16-bit PC version). It also included support for Binary Coded Decimal (BCD) math to eliminate round off errors in business applications. Turbo Pascal 3 also allowed you to build larger programs (> 64k bytes) using overlays. The PC version also supported Turtle Graphics, Color, Sound, Window Routines, and more. This historical version is provided to the Borland community free of charge. They may be downloaded and used "as is" for personal use only.
Rate this link

Antique Software: Turbo Pascal v5.5
- Turbo Pascal 5.5, the world-standard Pascal compiler turbo-charged with object-oriented features. This historical version is provided to the Borland community free of charge. They may be downloaded and used "as is" for personal use only.
Rate this link

Other Pascal compilers

Free Pascal
- Free Pascal (aka FPK Pascal) is a 32 bit pascal compiler. It is available for different processors (i386+ and 680x0) and operating systems (Linux, FreeBSD, DOS, Win32, OS/2, AmigaOS). The packages comes under a modified GNU Public License to allow the use of static libraries when creating applications. The sources are available, the complete compiler is written in Pascal
Rate this link

Free Pascal
- Free Pascal (aka FPK Pascal) is a 32 bit pascal compiler. It is available for different processors (Intel 80386 and compatibles and Motorola 680x0) and operating systems (Linux, FreeBSD, DOS, Win32, OS/2, BeOS and Classic Amiga. The language syntax is semanticly compatible with TP 7.0, some extensions used by Delphi (classes, rtti, exceptions, ansistrings) are also supported. Furthermore Free Pascal supports function overloading and other such features.
Rate this link

LISP is understood as the model of a functional programming language today. For many programmers Lisp really is different form what they have been used to. When you consider that the Lisp language has almost no syntax, and only a couple of dozen primitive language elements (called special forms), then Lisp starts to look like a very small language.
Lisp has a long, rich history dating back more than forty years. It has survived all of the programming "revolutions" that have rendered lesser langauges obsolete. Despite its being taught as a curiosity, new generations of programmers continue to seek out Lisp as a tool to solve some of the most difficult problems in the world of computing.
You will find Lisp in products that must reason about and control complex systems and processes, where the ability to reliably arrive at useful conclusions based upon complex relationships among multiple sources and kinds of data is more important than lightning-fast numerical calculations or spiffy graphics. Lisp gets used for big projects that have to be tackled by one or a few programmers, usually for tasks that are not well defined, or that require some experimentation to find the proper solution. As it turns out, artificial intelligence meets all of these criteria. Lisp is also used as an extension language because of its simple, consistent syntax and the ability for system designers to add new functions to Lisp without writing an entire new language. The Emacs editor and the AutoCAD drafting program are two of the best examples of this use of Lisp.

There are many variations of Lisp in use.
The most standardized Lisp version is called "Common Lisp" that is defined by ANSI Standard X3.226: Programming Language Common Lisp standard.
Elisp (emacs lisp) is the language used to extend emacs, the customizable text editor of choice.

Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme. Scheme was one of the first programming languages to incorporate first class procedures as in the lambda calculus, thereby proving the usefulness of static scope rules and block structure in a dynamically typed language. Scheme was the first major dialect of Lisp to distinguish procedures from lambda expressions and symbols, to use a single lexical environment for all variables, and to evaluate the operator position of a procedure call in the same way as an operand position.

Guile: Project GNU's extension language
- Guile is an interpreter for the Scheme programming language, packaged as a library which can be incorporated into your programs. Your users have full access to the interpreter, so Guile itself can be extended, based on the needs of the user. The result is a scripting language tailored to your application.
Rate this link

LISP Primer
- This text has been written to provide a quick introduction to the basic elements of Common LISP for both experienced and novice programmers.
Rate this link

Programming in Emacs Lisp
- Most of the GNU Emacs integrated environment is written in the programming language called Emacs Lisp. Emacs is designed so that you can write new code in Emacs Lisp and easily install it as an extension to the editor.
Rate this link

Common Lisp Hypermedia Server
- CL-HTTP is a full-featured server for the Internet Hypertext Transfer Protocol (HTTP 1.1, HTML 2.0, HTML 3.2 & pre-HTML 4.0) that comes complete with source code. The server has been proven in major production systems and applied in a number of Artificial Intelligence systems.
Rate this link

ML (which stands for Meta-Language) is a family of advanced programming languages with [usually] functional control structures, strict semantics, a strict polymorphic type system, and parametrized modules. It includes Standard ML, Lazy ML, CAML, CAML Light, and various research languages. Implementations are available on many platforms, including PCs, mainframes, most models of workstation, multi-processors and supercomputers. ML has many thousands of users, is taught at many universities (and is the first programming language taught at some).

SQL is a tool for organizing, managing, and retrieving data from a computer database. The SQL language is essentially a programming language for relational databases. SQL is independent of the underlying database structure and many vendors offer SQL implementations for their database systems. SQL is often cited as being the lingua franca of relational database management systems. Certainly no other database language has found such wide acceptance among such a broad range of products. SQL is also an ANSI standard language (ANSI SQL-92) for accessing databases. According to ANSI (the only legitimate arbiter here), it SQL stands for S-Q-L and nothing more. Structured Query Language (also known as SQL) allows users to access data in relational database management systems, such as Oracle, Sybase, Informix, Microsoft SQL Server, Access, and others, by allowing users to describe the data the user wishes to see. SQL also allows users to define the data in a database, and manipulate that data. SQL is not, however, a complete programming language. First, it lacks conditional tests (IF) and flow control (GOTO, DO, and FOR) statements. Some database vendors may offer extensions to the SQL language to accomplish these functions, but they are not part of the SQL92 standard. SQL can however be integrated into other programming languages. SQL allows users to access data in relational database management systems, such as Oracle, Sybase, Informix, Microsoft SQL Server, Access, and others, by allowing users to describe the data the user wishes to see. SQL also allows users to define the data in a database, and manipulate that data. A relational model is strongly liked to SQL. In the relational model, data is separated from application programs. Relational model deals exclusively with how data was seen from the user's point of view.In the relational model, a relation is represented as a table of information. It has one or more attributes, which correspond to the columns of the table, and zero or more instances of data with those attributes (called n-tuples or simply tuples), which correspond to the rows. Thanks to the World Wide Web, databases of all kinds have found themselves in the spotlight as the technology emerges as quite an effective means for storing and managing data.

The Relational Data Model, Normalisation and effective Database Design
- It may not seem obvious to a lot of people, but the design of the database is the heart of any system. If the design is wrong then the whole application will be wrong, either in effectiveness or performance, or even both. No amount of clever coding can compensate for a bad database design. You can expect problems when the database design and software development are handled by different teams. This article will provide you with some tips on designing a database in the hope that you may learn something useful.
Rate this link

An Introduction to MySQL
- This article is the first in an educational series offered by MySQL AB aimed towards providing the reader with valuable insight into the MySQL database server.
Rate this link

Introductory Database Theory: Systems And Design
- Databases are the primary form of storage in both today's online and offline worlds. Databases are used to store millions of different types/combinations of information including product details, employees, personal address books, news, etc. Before you can begin to design a database however, you must understand the underlying concepts and theories of why databases are used and how they are created. This article will explain all of this and more.
Rate this link

Introduction to Structured Query Language
- This page is a tutorial of the Structured Query Language (also known as SQL) and is a pioneering effort on the World Wide Web, as this is the first comprehensive SQL tutorial available on the Internet. This page will describe how to use SQL, and give examples. The SQL used in this document is "ANSI", or standard SQL. There is also a "Nonstandard SQL" section.
Rate this link

Multimedia

Delphi

Delphi is a visual development tool for Windows developed by Borland.Delphi is based on Pascal programming language. Delphi is very similar to Microsoft Visual Basic and is designed to be compatible with the OCX family of controls that support VB. Delphi is that it creates completely stand-alone EXE files which you can run withtout any extra libraries.

Visual Basic is a Microsoft tool for programming user interfaces and simple applications. Usually as much as 80% of a programmer's time was spent writing code to create the user interface to his applications (the visual interface). To eliminate this huge drain on a programmer's time, Microsoft has provided Visual Basic with the built-in capability to create the user interface using nothing more than a mouse! With Visual Basic you can combine visual creation of user interface using mouse with power of BASIC programming language.Visual Basic is not the nest tool for stand-alone applications.The downside is that distributing VB program requires the distribution of a huge number of supporting files for even the smallest of applications.

Understanding and Using Visual Basic
- This series of articles by Jared Hoylman will walk you through a few of the basic concepts, and then move on to the more advanced areas of communicating with your hardware, and having your hardware communicate back to the PC. Examples for RS-232 serial communication to microcontroller board.
Rate this link

Borland C Windows programming

Visual C/C++

Visual C is Microsoft's combination of visual programming and C programming language. The visual part of Visual C is virtually identical with VB in terms of the ease of creating Windows/NT programs. The underlying difficulty of the C coding process in Windows system is what that keeps users away. It's in the details of coding that new users find themselves bogged down with questions that give the most difficulty.

A Tutorial on creating DLLs with VC++
- Visual basic is very fast and easy tool for developing applications with high degree of user friendliness , but it lacks some important functionalities like direct access to hardware, multythreading(Activex servers allows some type of multythreading !). The easy and effective solution for this problem is to write a DLL. But beginners experiance problems in understanding how to write a dll. .Here is a simple tutorial on writing DLLs with Visual C++. I assume that you know a little bit Visual Basic and C programming.
Rate this link

Hardware controlling under Windows

Windows tries to hide the actual hardware away from the application programs. Normal applications which need to control hardware normally use high level Windows API for the controlling or call the hardware drivers. Sometimes there is need to control hardware directly, and there is where some tricks are needed.

Windows Driver Development Kit: Overview
- The Microsoft? Windows? Driver Development Kit (DDK) is a consolidated driver development kit that provides a build environment, tools, driver samples, and documentation to support driver development for the Windows family of operating systems.
Rate this link

Debugging

A debugger is a program that runs other programs, allowing the user to exercise control over these programs, and to examine variables whenproblems arise. The most popular debugger for UNIX systems is GDB, the GNU debugger.