For the last few weeks I have been actively searching for a new programming language to learn. I was using AutoIt for nearly everything (including writing my GNU GPL freeware program ASCII GCTB - which is a NFO game cheat text builder), and wanted another option.
I have experience in several programming languages, so I tried anything that was freeware/open source/GNU. The only listed program that costs money is the professional/ultimate versions of Visual Studio - so feel free to try them all yourself.
The following languages I downloaded, tested, and have posted my results. I wanted a programming language that had a IDE, GUI builder, support to create 64-bit in the future/or currently, could access the Windows API interface, use Assembly language when I need to, and possible multiple platform support.
Another deciding factor was the language had to be able to compile small programs (for my trainers) but be able to handle larger tasks like creating my software programs as well.
I listed AutoIt as well, to list it's abilities before the other programming languages.
SciTE is the included IDE, and includes many added programs/options when downloaded with AutoIt. For example GUI windows are easily created with the Koda(FormDesigner), SciTE option ALT+M.
AutoIt uses a Basic syntax and easy to get started. Advanced features such as Windows API's can be used via the DllCall command. Help is available via the AutoIt forum, help file, and various tutorials online (including many forums).
Supports both 32 and 64-bit program creations. Compiled EXE files are at least 100 KB in size.
AutoIt is a scripting language, as such the written program is tacked on a EXE to run it. The script program can be extracted by anyone with a little effort.
Trainers are easily created with the NomadMemory.au3 library functions. Also software programs can be easily created, such as my ASCII GCTB.
Lua. It uses the same IDE as AutoIt, which is the SciTE program by default.
I did find a GUI builder for Lua, which is wxLua. After learning some more about the language, I created some small test programs.
After writing the test programs, I learned Lua does not create actual EXE programs.
Lua is a scripting language and to make a EXE, a program such as L-Bia or srlua is needed to convert/attach the Lua script.
Bottom line is that for me Lua is a bad version of AutoIt as it does not create EXE files of my programs. As Lua is a scripting language switching to it from AutoIt solves none of needs, and in fact subtracts some.
One thing is it has is a strong game developer base, and a custom set for game making called PyGame. I personally use other programs when I write games, so PyGame perked my interest.
Python for windows however requires a lot of extra programs to work, such as the Cygwin package. The interface seems to be very similar to that of Linux/Ubuntu commands and looks/acts like a cryptic DOS box.
I did find some IDE programs to use such as SciTE, Editra, and Pyscripter. For GUI creation another program such as wxGlade or wxFormBuilder is needed.
After playing around with it for awhile I discovered Python does not make EXE files of the programs either. Even though Python is not a scripting language per say it sure acts like one. I found I could create a EXE using the programs Py2EXE or CX_Freeze.
Once a "freeze" is done to the program script a EXE is created, along with additional required files and often additional required directories with files. All of which is required to run a simple test program, or to be copied for others to run it.
Sadly Python was not for me, so I kept looking.
Pascal & Lazarus
Free Pascal is a 32 and 64 bit programming language. When I loaded the main program the IDE is a console (DOS style window), and looks like QuickBasic/QBasic. In the end I opted to use another IDE and found the program Dev-Pascal (which was last updated in 2002).
While it may make modern Windows GUI programs I wanted easier GUI support, and I found Lazarus.
Lazarus is a Free Pascal IDE and is more than anyone could ask for. GUI windows are easily created with it as well. I found some trainer source code for the Pascal language and easily turned them into EXE programs.
After some programming I created my EXE files and was surprised at the huge file size. At nearly 3.5 MB it made the largest compiled EXE files of any language I tried.
There is a trick to the file size in Lazarus/Free Pascal though. By default Lazarus includes all debug symbols, which is why the EXE is so large. Removing the debug symbols with the strip command put the EXE's at about 500 KB.
I have found that Cheat Engine 6.0+ was built using Lazarus, so I know Lazarus can handle making my game trainers or other software programming needs.
It also can create programs for Linux, FreeBSD, Windows (32 or 64 bit), WinCE, PalmOS, MAC OS, and many more.
This is a language I will continue to experiment with and perhaps use in the future. If anyone else wants to learn a new language, Lazarus is worth the time to test for yourself.
MASM, FASM, GoASM - Assembly
Since I have been programming in one form or another (mainly as hobby) since about 1995, I have seen Assembly in many forms. Sometimes it is required to do a specific task, optimize code, or when debugging programs.
After looking around I found the FASM and MASM32 builds. FASM supports both 32 and 64 bit programs, and MASM32 is only 32-bit (obviously).
I played around mainly with MASM32 due to extensive documentation, available source code (many trainers), tutorials, and more. There is even a MASM Trainer Code Generator. MASM32 includes a IDE editor which is the QEditor (Quick Editor).
If you are a user of the Game Trainer Studio (GTS) trainer creation software it will output your generated trainer to MASM. This gives yet another head-start on making a trainer with MASM32.
The typical trainer EXE is 15 to 20 KB in file size, the smallest of any programming language.
Nearly all versions of Assembly use the same IDE tools and some of the most popular are RadASM and EasyCode - which also create the GUI windows (Dialog Editor). MasmED is another that is for MASM32 only.
Another version of Assembly is GoASM, which can create both 32 and 64 bit programs. The website includes tons of links to programs, help, tutorials, and more.
For me Assembly programming is simply too different than I am use to. For creating a trainer where all I change is the GUI and memory locations it might be fine; however, for creating software programs it is just too much for me.
I must say though if I had more free time to devote to learning a new language this would be a great one to learn. After all for raw power and the eliminated worries of the language becoming obsolete in time, it is the best.
Visual Basic, C#, etc. - Visual Studio
Anyway since that time everything changed with the language and I lost interest. Early on the main problem was users had to install the .Net framework to use any programs (as most did not have it then) - so it was a deal breaker. View the problems about the VB changes, it seems many other programmers have avoided it since.
I recently downloaded Visual Basic 2010 Express, and was surprised at everything. The complete download just for it was over 700 MB, and nothing was the same - It was like looking at a foreign language.
Viewing various source code examples showed that all the Visual Studio languages are very closely related and made me wonder what's the point.
Looking at the price tag for the Professional and Ultimate versions on the Microsoft site, the price ranges from about $600 to $4000 USD.
In VB .NET Microsoft seemed to stick my personal data onto everything. To be honest I felt that everything would have my user data, Windows info, hardware serial numbers, or something plastered inside anything created.
After a couple of hours I was more than happy to get the program off my computer and free up nearly a GB in space. As it also downloaded several additional programs/files I had to manually uninstall to remove them all.
Some users seem to swear that it is the best, of course many still simply swear at it instead. For my needs I simply feel that the Visual Studio fell short, contains bloated languages, and is overpriced for anyone besides a large programming studio.
As FreeBASIC is actively developed (last release 4 months ago), I imagine a 64-bit is in the works. In the meanwhile if I need to, I have other alternatives to create 64-bit programs (although I haven't yet).
The language is would you expect for a Basic version, and is easy enough to get started. Beyond that it allows the full use of the Windows API and using Assembly language inline with the code.
It gives me the programming power to do anything I need for my trainers or my software programs. To be honest I never worked directly with Windows API's, so it was a learning curve to get started.
An interesting note is that any compiled program has the option to directly output to Assembly code; allowing easy optimization and modification if needed. Or even taking the code and putting it into MASM32 or such.
My FB trainers are about 14 KB in size before I compress them with UPX. After using UPX the trainers are about 9 KB in size.
There are four feature rich IDE programs, the first two also do GUI building - FbEdit, FireFly, FBIde, and JellyFB. I personally use FbEdit and recommend it over the others.
Compiler warnings are common, but I think it has more to do with me as a new FB user. After working through my trainer memory code I finally squished all warnings/errors.
FreeBASIC also has a active forum with many posts to sort out any beginner problems, or ask for help.
I would recommend the language to anyone who wants a powerful language, and is not limited to writing 64-bit software. If nothing else it will give you the skills to use Windows API's and other programmings skills that you can use in another language.
For me FreeBASIC works for both trainers and my software programs. Lazarus or any of the Assembly languages such as FASM, MASM32, or GoASM - would work just as well. Given more time it is hard to say which I will prefer, but I am interested in learning Lazarus as well.
I will continue to experiment with different programming languages; after all, in time everything changes and I do not want to be locked into one language that may disappear in the future.
If your only goal is to create trainers, then nearly any programming language will work. The easiest to get started with would be AutoIt or Assembly (FASM, MASM32, GoASM) due to all the files/tutorials available on the subject.
The main points of a programming language to consider are what your needs, the time you have to learn a language, and what works best for you.
For a extensive list of programming languages available, Wikipedia has many in a category list, alphabetical list, and comparison list. A equally impressive list with many different programming languages, IDE's, Compilers, etc. is FreeByte's Guide to Free Programming.