New language after BlitzMax

Community Forums/General Help/New language after BlitzMax

Jur(Posted 2013) [#1]
I have been using BlitzMax for years but it is getting clear to me that I will have to move on. Plethora of mobile platforms, consoles are getting more and more friendly to indies, new platforms are coming... and with BlitzMax one has no hope to follow all that. I have learned to program with BlitzMax, built a big library over time and now I am feeling very comfortable working in BlitzMax. I will need to make a smart decision where to go next. The thing is that I don't know any other language (apart of some PHP and tinny bit of C) so I will also have to invest time in learning it.
Monkey? Well, transition from BlitzMax would be the most easy in Monkey. Some people are using BlitzMax for desktop platforms and Monkey for mobiles. The problem is that it is not really suitable for serious desktop applications. I have on such in work and if I ever rewrite it, it would need to be into a more "serious" language (pointers are a must) with a good GUI library available. Another problem I have with Monkey is that its future may well resemble that of BlitzMax and I would rather go with something more mainstream.
So what other language would you think is most suitable for going into after BlitzMax. The most important things to consider are:
- easy to get into if you know BlitzMax (managed memory is a must)
- established libraries which would make Max2d functionality easy to replicate
- available on most platforms
- supported in various SDKs like Marmelade which would make porting to different platforms easy
- supported in established 3D engines

C#? Java? Something less "big" but well established (Phytoon? ...?) Could you please explain a little your decision and mention strong and weak points.


andy_mc(Posted 2013) [#2]
Java if you're wanting to develop for Android and desktop OS's.


Yasha(Posted 2013) [#3]
You should get to know C in depth. You likely won't build a project completely out of it, but you need to be fluent in it to understand what other languages have built on top; it is the programming lingua franca, the rock on which the world is built etc. etc. Since you want to work with some low-level stuff, C idioms will be what you use to get at that.

Then you can interface to a language of your choice. Some will be easier than others, but anything that takes itself seriously works with C.


Suggestions:

In the scripting world:
-- Lua. Lua runs anywhere, and on the platforms where LuaJIT is supported, it's fast too (faster than BlitzMax!). Lua is the industry-standard scripting language for apps that don't use JS. Interfacing with C is easy and builtin, and there are several dedicated Lua frameworks as well for the user who wants to work Monkey-style. Syntactically, Lua is probably the closest thing you'll find to BASIC.

-- You could always suck it up and use JavaScript. Yeah, I know. Works everywhere though.


In the managed world:
-- If you want to work on the JVM, consider Scala.
-- If you want to work on .NET/Mono, consider F#.

Both of these are first-class (anything Java/C# can do, they can do too), but are much higher-level than anything you'd be used to so far. You will learn superior techniques, and have to write significantly less code with these languages with a high level of reliability. They are generally considered "hard", though. You can use F# on mobiles through Xamarin.


Do-something-different world:
-- Consider Scheme.

It's a mindbender if you haven't tried it before but it's second to none as a learning language (read SICP!), and has very fast workflow. The "Chicken" compiler has a large and thriving community, lots of modules, and dead-easy C/++ interop (you can just import C++ directly and it works).


Things to note:
-- basically all mainstream languages except C use managed memory now. No GC? No uptake. C++ and Objective-C don't technically have real GC, but they do have automated refcounting techniques so you don't need to release most things manually.
-- even "niche" languages like the Lisps actually have a community at least an order of magnitude bigger than BlitzMax.
-- outside of BRL, it is not normal to consider a language to be connected to a graphics library or app framework. There might be one big library everyone uses, but to the rest of the world languages aren't graphics. Every mainstream language will expect you to manually import this stuff, even if it's a one-liner to do so.


Who was John Galt?(Posted 2013) [#4]
Yup, agree what you learn with C gives you a better feeling for any language, even assembly!

I would say Java fits the bill but I kind of despise it for reasons that aren't totally apparent to me.


Jur(Posted 2013) [#5]
Thanks. I knew Yasha will provide the most comprehensive answer. :)
I will investigate all suggestions (and more) before I go with any of them.


SLotman(Posted 2013) [#6]
Look at Monkey... very similar to blitzmax, and can export to probably anything under the sun ^_^


*(Posted 2013) [#7]
In all honesty as yasha said i would look at c before monkey, for one not sticking all ya eggs in one basket as such (brl) and broadening ya horizons :)