Programming Languages

BASIC

FreeBASIC

FreeBASIC - A 32-bit BASIC Compiler for DOS, Windows and Linux.
Copyright (C) 2004-2005 Andre Victor T. Vicentini (av1ctor@yahoo.com.br).

http://www.freebasic.net

Released in late 2004 under GNU license, and now (July 2007) at Version 0.18 Beta, this is a serious, self compiling compiler built on the MinGW tool set, it has full pointer support, can create libraries and DLLs, has wide support for different data types and can interface with the Windows API. The latest versions have limited support for Object Oriented style coding. It is designed to interface easily with C libraries. It embeds BASIC source code in the debugging information and can be debugged using the command line debugger (gdb) that comes with the install, or with the GUI debugger Insight (I have also used the Ada GNAT debugger with FreeBASIC, and KDbg on Linux). FreeBASIC includes a resource compiler which the compiler will call directly if a resource file is included on the command line.

FreeBASIC has a limited set of keywords, in keeping with the design goal of avoiding name conflicts with popular C language libraries. It has no special GUI library, which might disappoint new users looking at the language for the first time (although it can use the Win32 API or popular C language GUI Libraries like the cross-platform Gtk). It does have an exceptional gfx graphics library built in, providing familiar QB type Graphics commands with DirectX speed, as well as built in OpenGL support.

With the addition of a small library of advanced string functions, FreeBASIC is a very usable and powerful compiler. FreeBASIC is a winner. Watch out for it (if you have not already found it).

BCX

Free open source Basic to C translator by Kevin Diggins. Actively developed.

http://www.bcxgurus.com/

This is a powerful implementation of BASIC. BCX has a very strong library of functions making programming very quick and easy, while still being a low level implementation of BASIC. DirectX libraries are currently under development, and COM has become a lot easier with the latest tools contributed. Weak areas for the newcomers will be the need to learn how to debug without a traditional debugger, and the need to adapt from traditional BASIC strings to the null terminated character arrays used in BCX (this is hidden from the new user, but it needs to be understood for more advanced programming). A major plus is that it is a great tool for learning C.

R

R is a programming lanaguage designed for statistical analysis.

www.r-project.org

The introduction page at r-project.org says that "R is a language and environment for statistical computing and graphics". The wikipedia article for R gives a nice overview. Beside the statistical functions, it has nice high level handling for spreadsheet type data-sets. I started using R because I needed to modify some existing scripts for my own use. I now find I am using it to automate many of the tasks I would previously have done in a spreadsheet or with a short BASIC script, but R has the advantage over BASIC in that it takes less lines of code.

Dialect PRO

Open source free BASIC interpreter, development discontinued.

http://dialect.sourceforge.net/

My favorite for a while, because it ran flawlessly on my Hand held Computer (MIPS processor), but I have not made any good use of it since I dropped my "Small Computer" on a concrete floor, and it did not work with my replacement, a Pocket PC. I have some good utilities made with this that still serve me well. Dialect is now freeware and open source, but at the time I purchased a full license for the PRO version. Syntax is mostly BASIC but with a strong Python influence in design. I wrote a program to download GPS data from my Garmin 12XL onto my Hand held Computer. It was discouragingly slow. I became more and more convinced that I should not be working in an interpreted language, and began to seriously think about C for the first time. I download Lcc-Win32 and saw a link to BCX on the same CD.

MoonRock Compiler

Basic compiler for MSDOS.

This tiny dos version of BASIC came to my rescue when I needed a small DOS utility. It can't do numbers, but it was just perfect for my needs. I downloaded it, learned the language, wrote my utility and was done in about two hours. I have a soft spot for this one.

O'BASIC

Free Basic Interpreter.

http://obasic.com/

A BASIC language that is really an OLE container. Simple to use, so I keep it in the tool box, but I never had a need to use it.

QB45

Commercial app by Microsoft, development discontinued.

Having at least some background in BASIC from reading computer magazines, and having access to a QB45 compiler, sealed my fate as a BASIC programmer. It was close enough to FORTRAN which I had learned in college a decade earlier, and was well documented in store books. I started with databases, found my way through computer games, printer graphics (in the dark old days of dos) etc, etc. I got to use this compiler first while in university, (it was used in some Engineering utilities).

The most advanced program I made with QB45 was a clone of FREECELL. Maew gets hooked on computer card games, and she told he she wanted FREECELL, which presented a problem since she had a DOS computer, and FREECELL came free with windows 3.1. I patiently made a clone in QB45, drawing the cards using the line draw and fill commands, and then presented it to her. It was even more advanced than the Window's version, it could record games and statistics. This time she was more specific, she told me she wanted Windows.

QBASIC

Interpreted BASIC language, distributed with MS DOS. Discontinued.

Probably the first language I used on my own (DOS) computer. I still keep a copy, carefully copied from computer to computer over the years. Now with the release of FreeBASIC I use it to refresh my QB syntax, and do some testing.

RapidQ

Free Basic Interpreter by William Yu, development discontinued.
Install files

http://www.mididesign.be/rapidq/rqinstall.exe

Discussion Forum

http://groups.yahoo.com/group/rapidq/

Excellent BASIC interpreter. My interest in it is mostly casual, as I initially dismissed it as an interpreted language at a time when I was looking for a compiled language, but thanks to the occasional look in at the Yahoo RapidQ group my interest perked in what is by all accounts a very easy to learn and still powerful programming language. I like the small distribution package of the compiler. Easy to put on a memory stick and take on holidays. If you get hooked on the syntax, Hot Basic, programmed by Doc. Electron is an upgrade option, but it is not free.

VBScript/JScript

Windows Script language built into MS Windows.

This is on every computer and I believe in making good use of it. I made nothing very advanced, just a few quick scripts. It is handy. And JScript, is not bad. I have used it while modifying scripts I found on the internet and I found myself quickly coming to like it, without needing to learn anything new.

Visual Basic 3.0

Interpreted Windows Programming Language. Now at VisualBasic.NET.

I learned how windows worked using VB3, and covered a lot of ground in programming books. I found myself using more and more API stuff, so I became interested in a lighter weight container to package it in. I never built a single install program because of the size of the package, and have lost the install discs by now. Although I learned a lot using Visual Basic, I never liked it.

C/C++

PellesC

Free C compiler for Professional use, by Pelle Orinius, active development.

http://www.smorgasbordet.com/pellesc/

Excellent IDE, resource editor and debugging tools. This is the compiler I use with BCX. It produces very fast applications, of reasonable size. Compile time is slow, presumably because of its strict type checking (which I find enforces good discipline in my code).

I now use the PellesC IDE exclusively for editing BCX code. Using the the new addin interface, it is possible to have BCX syntax highlighting and translation tools directly inside POIDE! Download the needed DLL here.

I have also used PellesC for Pocket PC programs.

Lcc-Win32

Free C compiler for non-commercial use, active development.

http://www.cs.virginia.edu/~lcc-win32/

I know the tool set of Lcc-Win32 better than PellesC, but I don't like the IDE. It would take time to grow into (and I gave it time, but it never took). I still use an old version as a command line compiler, and the exe's are tiny, perfect for small utilities. Until PellesC came along, I used this exclusively, and I purchased one of the email distributions for the examples.

Microsoft Embedded Visual C++ 3.0

Free Pocket PC development tools from Microsoft

Another free goodie from Microsoft. This one is a 300MB download. I went to a high speed internet café, slipped the 500MB memory card borrowed my Pocket PC into a memory card reader, and drank coffee for an hour while it downloaded. The package even included Visual Basic for the Pocket PC (which I did not install), and the Software Development Kit for Pocket PC 2002 and Smart Phone.

Finding this and getting it installed allowed me to complete my first full Pocket PC program. It also helped highlight bugs in PellesC Pocket PC compiler, which have since been rectified.

Microsoft VC++

Commercial C++ compiler from Microsoft, with fully functional free learning editions.

I keep this mostly for checking compatibility issues with downloaded C/C++ code. My copy is a learning edition, free to use, but with a notice that would prevent its use in a distributed application. It is still very useful.

Microsoft Visual C++ Toolkit

Free command line compiler from Microsoft.

This 30MB free download from Microsoft is to showcase the features and capabilities of Visual Studio .NET 2003. It is command line only, but you get the full C++ compiler free, and the licensing conditions are favorable. This is a quote from the documentation "In general, applications and components built using the Visual C++ Toolkit may be redistributed without restriction." The package includes the Microsoft .NET Framework Common Language Runtime, so you can optionally build for this platform. I made a few trivial console NET programs for testing, and I have set up the C++ compiler to work with BCX and experimented with writing Object Oriented code using BCX and this compiler. To get it to work with BCX you need to download the windows Programmers Software Development Kit (PSDK) from Microsoft (300+MB!) and install the CORE SDK and the MDAC SDK. This may be worth it anyway because you get an excellent help file resource covering all aspects of Window Programming. I use the 2003 version. More recent versions may produce code incompatible with older versions of windows so pay attention to what is on offer. You may also need to study the batch files used by others to get code to compile. Just ask on the BCX Yahoo site.

Thank you, Mr. Microsoft.

MinGW

Open source, GNU license C++ compiler. Excellent.

http://www.mingw.org

I installed MinGW to learn some C++, and made good use of it for a while, but then went back to BCX. Since then I have used it primarily for testing C++ code. I use this with the Quincy IDE and although it has a student like feel, everything works very well. I read the debugger with Quincy is very good, but I just realized I never even tried it. The error reporting from compiles have kept me on the straight and narrow. More recently I have used this compiler with the free Dev-C++ package. The download is less confusing than the options offered at the MinGW site. I have had more problems with difficult to understand error messages, but I think I am getting the hang of it now. I noticed that the exe's made using the Quincy IDE are smaller than those made using Dev-C++? Unfortunately the inner workings of Quincy are hidden from casual observation. The lesson here is that there is not much point in having a thousand options if you can't figure out how to use them.

I switched from Dev-C++ to MinGW Developer Studio, another IDE, and so far it has worked well for my limited needs. In Linux I use the same underlying compiler (gcc or the GNU Compiler Collection).

C#

Microsoft C#, Commercial C# compiler.

also:

Mono C#, Open source, GNU license C# compiler.

http://www.mono-project.com/Main_Page

C# is often regarded as the language that will replace VisualBASIC. It has a nice clean syntax, and coupled with a good GUI designer it is formidable indeed. There are too or three versions, the one that everybody knows is the Microsoft version. The Visual C# Express Edition is available free to download and use (you will need to search for it). As a major Microsoft project you can expect a polished implementation. There is also the mono C# available on Linux systems, which unfortunately suffers from a buggy IDE (monodevelop), but which shows much promise. So far I have only made test programs with both compilers. Because of different library requirements there is still a lot of work in getting any reasonably complex mono C# program to work with Microsoft.NET and vice versa. However a simple C# console program compiled on Linux will run unchanged in windows (without installing mono), so the underlying technology is the same, and we can look forward to improvements in compatibility. I am actively learning C# at the moment, because I think it is an interesting language, but it is still a baby compared to the giants of Java, C and C++.

ASSEMBLY

A86, D86

http://eji.com/a86/

I wrote a TSR calculator with A86 once. I had to really stretch myself to get it to do mathematics without a floating point library. I crashed my computer repeatedly during development. I finished it, but I decided to stick to higher level code after that. Then I switched to windows.

GOASM

http://www.godevtool.com/

Despite my promise to myself to avoid Assembly Language, I succumbed to the temptation, and was pleasantly surprised to see how much easier it was on a Win32 platform. I chose GOASM as my assembler because I had used the resource compiler from this package with FreeBASIC and liked the documentation. I was disappointed to see the debugger did not work with WinXP, (you need to pay $ to get the XP version), but I found that I could easily use OllyDbg as a replacement.

POASM

http://www.smorgasbordet.com/pellesc/

Part of the PellesC family of compiler tools, this is an interesting and promising new addition to the Assembly language scene. So far my usage has been to adapt the Iczelion's Win32asm tutorials to POASM and I have not had much difficulty finding my way. I am looking forward to learning more, just because knowing Assembly language is a useful skill when optimizing in any language.

OTHERS LANGUAGES

Ada

GNAT Compiler

http://gd.tuwien.ac.at/languages/ada/gnat/3.15p/winnt/

Ada is a programming language I became curious about after reading comments on how it is the language of choice for zero failure tolerance applications. The boast is that the language is so strongly typed, and so safety oriented, that bugs are generally found and fixed during development rather than in testing, resulting in reliable code for mission critical applications. I tried the GNAT GNU compiler and I can certainly see all the safety features, there are so many of them it is difficult to write any code! Still, it makes an interesting package. The syntax is attractive. Problems start if you wish to program platform specific software, because the whole language was designed for portability. So far I have written only one program in Ada, a change case utility for formatting Ada source code.

I tried one of the Ada interpreters, thinking it would be enough for learning purposes, but the packages did not support the full syntax of GNAT, so I had trouble with some of the tutorials I was following. You don't need "issues" when learning a language; GNAT if free, so you might as well start with the full package.

JAVA

When I first tried Java, I liked the Microsoft version producing stand a lone Win32 exe files, and hated the versions using byte code. I decided that Java was not for me, mostly because it did not seem worth spending the money on the Microsoft version that I liked. Now that I use Linux more I find myself using some programs written in Java so the SUN version does not seam so alien any more. I installed NetBeans and made a few sample programs to see what it was about, but never completed a non-trivial program.

LUA

Open source free embedded script language.

http://www.lua.org

This is Interesting to me, because it an open source embedded language coded in pure C. I built a command line interpreter based on it, embedded in BCX, but have not done much else with it. I was thinking of making a Pocket PC interpreter, but in truth I know I would not use it enough to justify the effort.

DELPHI

Free implementation distributed with a magazine. In installed it, built my first form, but could not get rid of the ugly close the door graphic on the exit button. It is funny how little details shape which language you work in, because I un-installed it after a few days.

Free Pascal

Open source, GNU license Pascal compiler.

www.freepascal.org/

I have translated Pascal code into BASIC and C, but never used the language in a project. In fact, the C program, and implementation of DES, was slower than the Pascal original! I have Dev Pascal installed, and have read through a beginners book of Delphi. Some day sooner or later, I will get to it.

PYTHON

http://www.python.org/

I investigated it, but my eyes had trouble getting around the indentation style structure. I did not like the huge install package that was necessary to run even the simplest utility. I bought one book, got half ways through the samples, then decided not to spend any more time on it.

I now have Python installed in Linux, and as a general purpose script language with which I at least have some familiarity I am finding it useful. Perhaps the reason I did not like it at first was because I was trying to use it for stand alone GUI apps and it really is not the best language for this purpose? Anyway I am still coding in Python from time to time.

I like the Python documentation style, and am surprised that others do not.