Finding the Best Programming Language
Strengths, Weaknesses and Desirable Features
Paul F. Watson
August 2019
Introduction: There are many programming languages that you might learn. Which ones will help you get a job? Which ones are best for creating that great computer game you have been dreaming about? Which ones are just too d**n hard for a hobbyist? If you are thinking about a project, I hope my comments below will help you identify the right language.
My Experience: I began my programming journey back when personal computers all used the 'Basic' programming language. I watched the takeover by powerful languages like Pascal, C, Java, PureBasic, Python and others. By day, I worked as an engineer. By night I studied computer programming. I learned Basic, C, PHP, PureBasic, Matlab and now I am working with Python. Below, I share my observations about these various languages.
Comments on Computer Languages: It is difficult to be objective when discussing all things. We are unavoidably influenced by what we like. What follows below are my personal observations about various computer languages.
Basic: There are many different versions of Basic, but they are all rather similar in that commands look very much like something from your high school Algebra class. Individual commands are simple to understand, but the language itself does not facilitate well organized programs. Its not great for larger projects. For Basic, the command set is fairly small.
When a computer runs an application, it must translate the program you write into its own machine language. This is done in one of two ways, depending on the language. Either:
- Your entire program is translated once (compiled into machine language) before it executes or
- Each line of code is translated (interpreted) and then that line of code is executed. Then, on to the next line!
Thus, all languages are either interpreted (Basic, Java & Python), or else they are compiled (C, PureBasic, Fortran). There are advantages to each method, but it is almost always true that compiled code executes programs very quickly. Interpreted code is far slower.
Most forms of Basic, are interpreted. Program execution is therefor slow. PureBasic is an exception because it is compiled & it is very, very fast. I personally consider Basic to be a good learning language because of its simplicity. Simply looking at a command, you will know what it does; but, basic programming skills are unlikely to get you a job. Versions of Basic (some modern & some not) currently available include:
- PureBasic from Fantaisie Software in France. PureBasic is blisteringly fast & designed to create computer games. Cross-platform compatible for Mac OS, Linux & Windows. The cost is moderate.
- FreeBasic for Windows & Linux based computers.
- Microsoft Small Basic for Windows computers
- Chipmonk Basic for Linux, windows and Mac OS. I have used Chipmonk basic & consider it a simple language for learning. My experience is that it is 'bug free' but not especially fast.
- There are probably many more versions available. I have PureBasic on my Mac. It is a lovely language for graphical programming & is discussed below.
PureBasic: PureBasic is an unusual language which pairs 'basic looking' commands with the incredible execution speed of C. It is intended for computer game development & hence the command set has increased to about 900 commands. The additional commands do things game developers need such as:
- Easy creation of Pull-Down Menus
- Easy creation of GUI Interfaces
- Graphic objects with transparent backgrounds
- Facility for animation, moving map displays etc.
- Some very nice variable types (e.g. structures)
- Lots of other things 'near & dear' to game creators.
I have included an overview of PureBasic along with my discussion of powerful languages because PureBasic has much in common with the powerful languages & little in common with traditional interpreter Basic. PureBasic documentation is very good, but limited. PureBasic has a great user community & an active forum. It is truly a pleasure to use but unfortunately it won't get you a job in the real world.
Python: Python is a free, open source language with cross platform compatibility. It is available to run on Mac OS, Linux, Windows and Raspberry Pi. In my experience, Python is 'rock solid' (no bugs). It is a powerful language with a large instruction set. Many libraries can be downloaded (for free) that add powerful graphics, GUI interface, advanced math, statistics & other capabilities. Python commands are simple to remember & Python code is pretty understandable to read. Python is an interpreted language & thus it does not result in fast execution speed. For most applications, I have found its speed to be quite acceptable. Documentation is widely available for Python & Mac users will find their computer has Python installed from the factory.
Java: I examined Java 5 years ago. It is an object oriented language designed to strictly enforce an object oriented approach. For large projects involving multiple developers, this may be beneficial. Java has cross platform compatibility & is available for Mac OS, Windows, Linux & Unix. Java has many commands & powerful "add-on" libraries. Like other interpreter languages (Python, Basic, Matlab & Pascal) Java is not especially fast. Documentation is widely available for Java. I personally found Java very logical but programming in Java felt like swimming in 'long john' under-ware. I did not enjoy the experience.
C: I programmed in C many years ago. Since that time, C has been replaced with C++ and C#. C appears to be the 'work horse' of the computer industry. It is very fast, has a large instruction set & many 'add on' libraries to meet special needs. It is available for Mac OS, Windows, Linux & Unix. Documentation is widely available for C in its various incarnations. Programming in C is very demanding, but knowing it well can get you a job.
All these good things aside, C commands tend to be 'obtuse' (command names do not clearly suggest what they do). Looking at a code listing, it is difficult to see where loops start & stop. When the argument of a command is another command & the meaning of neither obvious, the overall program becomes confusing. So the loop logic is difficult to see & commands are non descriptive. While C is critical for the computer industry & incredibly fast, I found it too demanding & confusing for an 'after hours' kind of guy.
Matlab: As part of my job, I programmed with Matlab for 3 years. It is a commercial language (expensive) that elegantly handles matrix objects, matrix math, scientific graphing & data analysis. Matlab code is not fast in execution; but, Matlab has a large number of very fast, very powerful command subroutines. A Matlab application thus consists of a minimal amount of 'sluggish' code that cements together extremely fast & powerful command routines. Overall, the result is good but not blistering speed.
Matlab has a strong place in industry. It is simple enough for practicing engineers & scientists to use in solving their day to day problems; but, it isn't that fun to use because of its reliance on many special purpose routines that have unhelpful names.
Conclusion: The programming language you need depends on the type of application you wish to program, how much time dedication you have & your personality. Do you want something blisteringly fast for game creation? If so, then PureBasic or C are your logical choices. Do you want a "do-anything" language with acceptable speed that is fairly easy to understand? Python is a good choice. Do you have a team of professional programmers who need to create very secure code (blocks spyware)? Java is a good choice. Or are you simply looking for an occasional afternoon of fun & maybe teaching your kids something? One of the available forms of Basic would do well.
I hope this brief article helps you choose a programming language that suits your needs and & is agreeable to your personality. Personally, I am an 'after hours' programmer who has limited time & specialised interests. For me, PureBasic and Python are the winners.
Contact the author
paul-watson@sbcglobal.net
by e-mail.
Copyright 2019 by Paul F. Watson
All Rights Reserved
Dionysus.biz Home Page