Advertisement

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

Started by January 26, 2016 09:19 PM
19 comments, last by SeraphLance 8 years, 10 months ago
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.

Stephen M. Webb
Professional Free Software Developer

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.

Advertisement
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.

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.

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.

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.
Advertisement
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?

- Jason Astle-Adams

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.

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 :)

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.

This topic is closed to new replies.

Advertisement