Sign in to follow this  

Beginner-friendly language implementations with great portability, performance, AND actively developed?

This topic is 720 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I've read about many programming languages and don't like what I've found so far. For my personal project I'd greatly prefer a programming language with excellent performance potential and tooling/implementations with good enough documention and activity for anyone to learn to hack on. Is there any cross-platform programming language compiler/vm/runtime this good yet?

Would it be helpful to explain why LuaJIT, C#, etc. don't meet this criteria, or what I consider development practice red flags?

Share this post


Link to post
Share on other sites


C# and Python are frequently given as good languages for beginners. They have relatively shallow learning curves, plenty of documentation and learning materials, and are quite capable.

Lua is popular in games as a tool for people not trained as programmers to do some light programming and scripting.

What specifically about them don't you like?

I don't know if Pypy jit improvements will ever reach Cython and Numpy speed, but it's supposedly a well-written compiler.

LuaJIT also has to deal with costly dynamic abstractions, and development has slowed dramaticaly since its core developer is moving on without completing the new garbage collector.

While the parts of .NET and CLR that aren't closed-source have a couple cross-platform ports with decent community activity, there's the threat of Microsoft's patent promise changing.

 

There's always tradeoffs, so knowing what they are helps in adjusting language criteria. I'm not trying to be rigid or unrealistically demanding, just wanting to compare the best and learn about languages others here know about.

Share this post


Link to post
Share on other sites

I would recommend Python. It meats your criteria and more. 

 

I have boiled learning a programming language down into 5 phases:

 

  1. Learn a language
  2. Learn the syntax of the language
  3. Learn the built-in modules of the language.
  4. Learn popular libraries/modules made in the language
  5. Learn the popular frameworks written in the language

 

The modules of Python will lead you into all the other topics of computer programming you need. Everything from web development to databases. It will lead into regular expressions and networking. Python can do just about all of it. From Python I got more into html, css, and javascript, as well as SQL and learning about JSON. This is because Python has modules related to these subjects. 

 

I used Python to learn programming basics, and now I am looking to learn lower level stuff like C++ or C#. 

 

Thankfully, the structure of Python syntax was chosen for the Godot Game engine. So I learned GDscript in a day, and now I can practically use python to develop games!

 

Now I am thinking of using Ruby and learning Ruby on Rails.

 

I have been documenting my journeys as a tutorial. Maybe this link will help:

https://github.com/TutorialDoctor/Software_Development

 

P.S. The main thing that changes from one programming language to the next is purpose and syntax. Otherwise, some lower level languages just give you deeper access to the hardware of the computer. At the end of the day, it is all binary.

Edited by Tutorial Doctor

Share this post


Link to post
Share on other sites

I'd not recommend Python or any intepreted language to be your first language. It's very "nice" and friendly for beginners but doesn't mean it's better.

The new fashioned and popular interpreted languages of this era are very very high that is probably that you're not learning how to really code and how real programs work. I mean, you can do in 1 line of Python what a 15 lines of C++ can do. That's not good, that's terrible for beginners.

Better you learn how a really programming language works and then try a more high level language to develop something you need.

 

I recommend you to start with C++ (it's the most near to C and you'll learn object-oriented programming what is the best practice). If you dislike C++ for any reason then go with Java or C#.

Share this post


Link to post
Share on other sites
I'll just quote the well-written FAQ on this rather than trying to wordsmith it myself:


C++, although a popular language in the production of commercial games you'll see on store shelves, is generally considered to be an extremely poor choice for a first language, largely due to its advancing age, cumbersome nature, and most importantly its cultural design bias towards the idea that the programmer is always correct -- which is an assumption that is almost never true for a beginning programmer. Such traits can complicate the learning process, and while it is certainly possible to learn C++ first, it tends to be sub-optimal.

The amount of things you need to know in order to follow c++ idioms is rather large and highly technical. It is generally easier to learn the basics of programming in a language that is far more forgiving of errors.

Share this post


Link to post
Share on other sites

For my personal project I'd greatly prefer a programming language with excellent performance potential and tooling/implementations with good enough documention and activity for anyone to learn to hack on. Is there any cross-platform programming language compiler/vm/runtime this good yet?
Everyone is looking for this ultimate language, so please let us know when you found it.

 

I found that performance is mostly a non-problem in programming. A far bigger problem is understanding how to tell a computer what you want it to do. This is where everybody is spending their time on. If you don't make big mistakes there, performance comes by itself. Except for rare cases, I would even say it the other way around. If you have a performance problem, you're doing something wrong. At that time, more than often, the solution is not a faster language.

 

For the rare exceptions, the normal step is to switch to a different programming language. As you found out, there is no universal best language. Each one has different weak and strong points. Good programmers know several languages, use the right one for the job, and then combine them. Most languages even have standard facilities for that.

 

I would suggest you learn a high level language like Python, and at a later stage, a low level language like C. That will give you a proper foundation in programming.

Share this post


Link to post
Share on other sites

 

Beginner-friendly
great performance


No such language exists, and even if it did, beginners don't have experience needed to achieve great performance.

 

It used to.  Pascal had excellent performance and was very beginner friendly.  Unfortunately people went with C++.

Share this post


Link to post
Share on other sites
I'd recommend Python. It's fairly beginner-friendly (except that invisible-scope-delimiter design decision, but that doesn't seem to be a problem beginners complain about) and is performant enough.

Just remember, perfect is the enemy of good enough. The biggest barrier to finishing you first game is usually getting started.

Share this post


Link to post
Share on other sites

Thank you all for trying to help, but Java, C#, C++, and Python are far from the only languages out there, and I know three of them. I've researched (not used) more esoteric stuff like Erlang, Nim, Purescript, OCaml, Pony, Haskell... The implementation, not just the syntax and semantics, are relevant to my question. I understand if this is the wrong forum to ask, though.

Share this post


Link to post
Share on other sites
I understand if this is the wrong forum to ask, though.

 

 

It's not the wrong forum to ask, per se, but unless you're going to actually respond to the questions about your actual use cases and the details of the shortcomings you've found in the languages already suggested, there's nothing else to really discuss. The one post you made referencing the "Microsoft patent promise" was far from illuminating.

Share this post


Link to post
Share on other sites
Programming languages are (so far) designed to do literally what you tell them to do, and therefore depend on your ability to tell them to do the right things in the right ways. If you had a system you could feed ideas to and have it intelligently write the program for you, taking performance, portability, etc. into account, that would be your ideal experience.

Rejoice; such a thing exists already: You hire a team of programmers and tell them what you want.

If you say you want it to be free, then you'll have to wait until we have AI programmers. This will come eventually, but don't hold your breath yet.

Share this post


Link to post
Share on other sites
 

While the parts of .NET and CLR that aren't closed-source have a couple cross-platform ports with decent community activity, there's the threat of Microsoft's patent promise changing.

 

Actually I would argue that MS is actually a transformed company. They have even open sourced the C# compiler. .NET core (The new cross platform .NET is open source and they are busy pushing more and more code out to github to back up .NET Core. They also are now playing nice with the OS community. They have opened their JS engine and adding support to NODE.JS. 

 

Most of the code they push out now has MIT or Apache licence so there is not the copy left tie found in GPL and there is the .NET foundation that manages project http://www.dotnetfoundation.org/projects

 

The list goes on and no, in fact github and nuget are now an integral part of development in VS in VS2015

Your view is stuck in the past, strangely enough it is MS who has become the most open out of Apple, Google and MS. People will argue it is Google but while Android is open it is useless without Play and Google servives and that is where the massive restrictions bite.

Share this post


Link to post
Share on other sites

Thank you all for trying to help, but Java, C#, C++, and Python are far from the only languages out there, and I know three of them. I've researched (not used) more esoteric stuff like Erlang, Nim, Purescript, OCaml, Pony, Haskell... The implementation, not just the syntax and semantics, are relevant to my question. I understand if this is the wrong forum to ask, though.


I don't think it's a good idea to learn to program with an esoteric language.

If you really want a high-performance language that's widely used (not for games), well-documented, easy to learn, and available on many platforms, and that isn't listed here already, here's one for you: Fortran.

Share this post


Link to post
Share on other sites
I suspect C# is probably the language you want - do you have any objections to it other than some vague idea that MS might at some point go back on their patent promise?

Share this post


Link to post
Share on other sites

Try removing a condition, or defining what you mean by 'good documentation' as something specific to the Developer of the language, or 'good activity' as the developers' support of the language rather than those being factors of Popularity and generated by other users.

Otherwise, the answers you have been given are .. simply put, the only ones you can get, because you're asking a group largely comprised of Programmers to filter a data set through a series of conditions.
Condition : excellent performance potential // limits the range to about two dozen languages.
Condition : good documentation // limits the range to those already given, maybe a handful of others.
Condition : good activity // removes those others, and IMO one or two of those listed.

There is also the problem with the reason other languages tend to be less popular, which is often their Limited Scope.  That means that without knowing specifically what the language is to be used for, one cannot select which language(s) fit.
COBOL isn't going to do any good if you're building a 3D engine, for example.

The more information you provide, the more help you will find.

Share this post


Link to post
Share on other sites

I would also like to highlight that performance is not native to a language, it is down to code design, memory usage and many other factors all in your control.

 

Take the C# compiler for instance. This used to be written in C++, with roslyn it was re-tooled into C# and written in a functional style. This means everything immutable and hence more object churn than normal OO as you rebuild object trees if you want to change values etc.

 

The result is that the new C# compiler is actually far faster than the old C++ one. Speed is not always about the language, code quality is actually the key  smile.png

 

Don't expect to pick a language like C++ and get massive performance gains if you are learning, what you will get is headaches, hard to find bugs and memory leaks :)

Pick C#, the tools and support are second to none. If you want more esoteric pick a functional language like F#, same cross platform abilities as any other .NET language and all the fun of functional at the same time :)

Edited by WozNZ

Share this post


Link to post
Share on other sites

I'd not recommend Python or any intepreted language to be your first language. It's very "nice" and friendly for beginners but doesn't mean it's better.

The new fashioned and popular interpreted languages of this era are very very high that is probably that you're not learning how to really code and how real programs work. I mean, you can do in 1 line of Python what a 15 lines of C++ can do. That's not good, that's terrible for beginners.

Better you learn how a really programming language works and then try a more high level language to develop something you need.

 

I recommend you to start with C++ (it's the most near to C and you'll learn object-oriented programming what is the best practice). If you dislike C++ for any reason then go with Java or C#.

I completely disagree. My first language was BASIC in 7th & 8th grade computer classes. I started learning C++ in 9th grade, self taught. Every time I ran into issues I picked up other languages (Python, Perl, Ruby, Lua, Java, C#, Javascript, etc.) C++ is trying to get to where things can be done with fewer lines of code; so that argument doesn't have much merit. Fact is that Python, Perl, Ruby, Lua, Java, and C# (with some recommending D) are the better beginner languages for getting started into programming. Stressing over low level/high level languages is also kind of pointless due to the advancements we have experienced in technology, but it is still fun to learn C or even Assembly just for the experience of playing with them (but not as a beginner language). Throwing a beginner into learning C++ as their first language is kind of like throwing them into the lion's den some might get lucky and survive it, but most will get frustrated, depressed, and give up.

 

The times of having to learn Assembler and C before C++ are long gone. Learn Python, Perl, Ruby, Java, or C# and wait on C++ until you are completely comfortable with one of the other languages.

Edited by BHXSpecter

Share this post


Link to post
Share on other sites


For some reason, most people balk when they discover that opportunity is dressed in overalls and looks like work.


I want to frame this.

 

Anyway, to actually contribute to the discussion at hand, I think you're falling into the trap of analysis paralysis.  Stop worrying about what language you'll use and just pick one.  You can spend more time looking for the perfect beginner-friendly language than you will actually being a beginner, and that's no good.  In fact, if you're still reading this unsure of what language to use, you've already wasted far too much time.

Share this post


Link to post
Share on other sites
Sign in to follow this