Jump to content

  • Log In with Google      Sign In   
  • Create Account

Help Deciding On New Language

  • You cannot reply to this topic
10 replies to this topic

#1   Members   -  Reputation: 108


Posted 23 July 2016 - 04:20 PM

  Okay, first things first. I am new to the community and am looking to find a new programming language for making simple 2d games, mainly on windows but I would be open to mobile or browser if it was easy enough to get into. I have been programming in BASIC (qbasic and then QB64) for nearly a decade and am fairly efficient at it. I enjoy it, but I am looking to branch out to maybe something with a bit more "shelf life" moving forward. I don't really care much about speed or super powerful programming. Its just a hobby right now.


            Ideally I would like to learn a language that has:


*fairly easy/ simple syntax (preferably better than C++)

*simple ways to draw/print to screen without 50 import declarations or API's or whatever

*easily compiles to executable without jumping through hoops to make a stand-alone game.

*Not overly complicated file I/O commands (mainly for save games and whatnot, in QB64 it would be something like 'OPEN filename FOR INPUT/OUTPUT AS variable')


           Languages I have tried and did not care for:


- C/C++, I understand it is one of the best and most powerful languages, but I do not care for the syntax and don't plan on making a career out of simple game programming anytime soon

- Java, I actually like java quite a bit, but IMO its not very practical for simple game programming due to overly long disorganized feel and particularly strict OOP style.

- Objective C, same reasons as JAVA

- actionscript, I somewhat enjoy actionscript but it still feels a little disorganized to me, looking for something a little cleaner.


           Languages I am interested in but not sure about:


~Python: I like the syntax a lot, it seems pretty clean and versatile. basic graphics seem easy from what ive read. But, ive heard creating exe or stand alone games is pretty complicated, which is a bummer.

~Ruby: ive heard that Ruby is super simple to learn and actually pretty powerful for a high-level language, but I also heard its not very practical for game programming. Also, I wonder about compiling exe, etc.

~Lua: don't know much abut this? any comments?

~Other Basic-derivatives. Newer more developed basic-derived languages might be the answer, but there are a ton and I don't want to spend the next six years sorting through them all. Any help here is appreciated.


Any suggestions are appreciated but please add detail relevant to my information.

Thanks everyone!

Edited by blesseddisciple, 23 July 2016 - 04:28 PM.

#2   Crossbones+   -  Reputation: 10518


Posted 23 July 2016 - 04:50 PM

You might like C#, DarkBASIC, or maybe GameMaker.

Anyway, your best bet is to try each language-of-interest out for a while (a couple weeks or less). Create simple programs to test out each one of your requirements that you listed, and if the language doesn't fit, try the next one. After you've tried them all you'll be able to choose which one you think fits your style the best.

Edited by Nypyren, 23 July 2016 - 05:06 PM.

#3   Members   -  Reputation: 108


Posted 23 July 2016 - 06:05 PM

DarkBasic actually looks pretty sweet. Seems to be much more developed than QB64. I will definitely switch over, although I was hoping to learn a non-basic language moving forward. Gamemaker doesn't offer enough mechanical programming for my taste. I will look into C#, thanks

#4   Members   -  Reputation: 838


Posted 23 July 2016 - 07:27 PM

Lua is a blast! You can use love2d library they used Lua. Leadwerks engine on steam used Lua as well and it's an easy engine to make 3D games in too. Lua is one of the most embedded scripting languages around and used in a lot of AAA studios for game dev.

#5   Members   -  Reputation: 5887


Posted 24 July 2016 - 03:40 AM

Welcome here.


Wow, it has been a long time since I programmed anything in BASIC :)

I think it's a good step you try a different language, expand your horizon.


My path is mostly BASIC, C, assembly language, C++, Python, Java, Lua, and nowadays, just any language.

Let me run along your choices.


- C/C++. Powerful, yep. "best" is more difficult. Both languages live near the "bare metal". If you want the raw CPU power, this is where you have to be. C is very small. C++ is much better for writing applications. Both languages give you performance, in exchange for no limits, and no safety net. If you make an error, it just crashes without any message why or what happened. I think it's good you don't go there now.


- Java. A bit simple language to me, but I came from the big powerful C++ corner there :)

It's a simple language, quite powerful, and it tries to protect you from harming yourself, and gives useful reports on crashes. It likes long boiler-plate code, although a lot of it is more pushed by the community and the "learn Java" books, than by the language itself.


Classes do make a more fragmented code style, but that's general to anything OO-ish. That is however not all bad, this style of programming does have a lot of merit, but it takes time and experience to understand how and where to apply it (and how and where not).

I would say, this is one journey you should make, one day.


- Objective C. Don't know it at all, and as far as I know it's an outsider, as only Apple uses it. Unless you're programming apples, I wouldn't go there.


- C# (mentioned by Nypyren), is close to Java. It's mostly in Windows-country only (although Mono exists too). Never used the language, but it has more bells and whistles, since it's a main language by Microsoft.


- actionscript. Don't know any of it.



If you really want a truly compiled language, I think this is mostly it. (Don't know about Ruby.) Java is already a bit edgy here, as well as C# afaik.

I am not sure why you want a compiled language though. If you just want to have fun programming games, you don't need a compiler. Why is a compiler important to you?




- Python. Definitely a good choice. It's a well designed language, easy to learn, has very sane ideas how to program, with a big community. Documentation is good and readily available. It is a full blown general purpose language. You can write real big things in it. Loads of libraries ("batteries included"), pygame is for writing 2D games. After 10 years, this is still my first choice of language, if there are no special requirements that need to be met.


- Ruby. Never programmed in it, but I read about it, but that was a lot of years ago. I think your estimate is about right, but I might base that on old information.


- Lua. Really really simple language. It's high level, and very minimal, and mostly aimed at embedding in another program (ie scripting) rather than as language to write applications in. Really fast to write code, but you don't get much help beyond that.




Other languages you may want to consider... I miss the Pascal-derived languages in your list. While Pascal fell off my radar before C++, it's bound to exist still. The design of the language was quite neat, although what I consider to be Pascal, is probably totally obsolete by now, as that was 20-25 years ago.


- JavaScript is also a language that I am told is quite nice. It has no relation with the Java language, except the 4 letters in its name. Used a lot in web browsers. Never done anything with it.



As Nypyren said, check the languages you're interested in. Find a tutorial that you like, look for game related libraries, and try it for a while, form an opinion about it.

We can talk all day, but nothing can replace actual experience with a language.

Edited by Alberth, 24 July 2016 - 03:40 AM.

#6   Members   -  Reputation: 108


Posted 24 July 2016 - 06:14 AM

Thanks for your reply, Alberth. I appreciate the information you provided. As far as compiled goes, I just want a language that doesn't make it overly complicated to create an executable. Basically, I want to know that if I make a cool game I can save it to a disk on pop it in a different PC 5 years from now and it will run with having to download a bunch of old outdated stuff. I want portability, not for commercial purposes, just more for personal archiving.

#7   Members   -  Reputation: 5887


Posted 24 July 2016 - 07:23 AM

Ah, ok. Yeah, I can see the purpose of that :)


I consider executables mostly as "throw away" data, and use the source code as archive.


An executable runs at the platform that you compiled it on. Microsoft takes an effort to keep old stuff running, so it mostly works there (at least it used to, as I am not  a Windows user, I don't know how that evolved to now). I use Linux instead, where I update to a new OS version about every 6 months, where libraries that you use are typically updated as well, and binaries of the previous version just fail to start (note that a Linux system provides pretty much every standard application that you need, and a lot more that you don't need, so it's not as bad as it sounds). Building your own programs from source is the normal thing to do. Having the source around also means you can just fix things, and rebuild, rather than being stuck with an old executable that you lost the source of.


Even at source level, you're not completely done though. Different languages have different ideas about backwards compatibility. Older C/C++ source code will continue to work, Java source will also continue to work (Java is extremely conservative, even to the point that it sacrifices some functionality of its own new features to stay compatible).

Python 2 lasted about 10 years, where Python 3 is now the newer version that everybody migrates to.


I don't know about the other languages.



Obviously, if you use a language, you read about it, which means you'll know that new versions are coming out, and you'll know what new features it brings. Generally they also state whether it's compatible with an older version of the language (at source level), so you know whether your source compiles on the new version.

#8   Members   -  Reputation: 504


Posted 24 July 2016 - 11:54 PM

Rust? It's the cool toy around these days, powerful language, compiles fast and safe code. There are some nice collections of libraries, which help starting from zero
(like piston).

Downside, you have to deal with complex things, like ownership, borrowing etc...

shaken, not stirred

#9   Members   -  Reputation: 5887


Posted 25 July 2016 - 01:02 AM

Don't know rust, but a concept like ownership is required anyway, if you scale up to larger programs and you don't want to go mad.


Basically, "ownership" expresses what object is responsible for what other objects. In languages without garbage collection, the owner is typically responsible for releasing the memory of its owned objects afterwards. It is often extended that owners can make changes in owned objects. Any other object that wants to make changes, has to either take ownership from its previous owner, or ask the current owner to make the changes. This is often also clearly defined.


Together, it makes it predictable what part of the variables may get changed if you make a call to some other object. If you are working on some modification, and you make calls to other code that may also make modifications in the same object as you're working on, nasty surprises are lurking around the corner. By making ownership and these rules explicit, you can predict in advance whether such problems may happen, and take counter measures.

#10   Members   -  Reputation: 3921


Posted 25 July 2016 - 02:10 AM

You could try Monkey which is very similar to BASIC:





Or also Haxe which is also a very easy language to get to grips with:

#11   Members   -  Reputation: 126


Posted 01 August 2016 - 09:14 PM



  So I'm not a complete expert but I'll give you my two cents for fun.   

Java is a great programming notation, although it has lots of outdated libraries, some of them are still useful.


  The answer to your question lies within what your goals are: If you want a programming notation that allows for

RAM addressing and copying of all objects by value, bit by bit, then obviously C++ is the way to go.  If you want

something maybe a little faster than Java and/or something that can compile to x64 then Python or Cython are

probably good choices.   If you want something that can be used to create internet applications, in browsers,

but has more organization and easier to use than the weaker notations, Javascript, then go with Java.


  My personal recommendation is Java+ Jython and C++.  Hopefully someday something a bit more ideal

than C++ will come around, but as of now there is only Python, Cython and C++ for using C libraries, which

are the root of OpenGL and Vulkan commands, as far as I know. Actually, on second thought I believe there

are a few more, maybe something like that lisp. There are also a few newer notations like Clojure and Kotlin,

but those both compile to Java Virtual Machine codes too. 


   Java is compiled, although it compiles to something that then gets run through an interpreter, but it is

thought to run nearly as fast as C++, at about 1.1x the speed.  I found this data in Killer Game Programming,

near the beginning of the book, its an O'rielly book with a wild cat on the cover.


   C++ is a bit less than perfect, as somethings require some extra lexicons compared juxtapose to other notations. but,

C++ is certainly the most prominent notation today, arguably the very most important of all. I believe this may change, but

for now that is how I see it.



Edited by KenDoll, 01 August 2016 - 09:18 PM.