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'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?

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

Yes.

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?

Whatever you choose, recognize that there will be work involved. For some reason, most people balk when they discover that opportunity is dressed in overalls and looks like work.

Advertisement


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.

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.

They call me the Tutorial Doctor.

Beginner-friendly
great performance


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

What's your actual use case?
Good performance (in any language) relies on good programming skill -- C++, C#, Javascript, Lua all have terrible performance when the code is written badly, and excellent performance when the code is written excellently.
e.g. C# can do everything that C can do -- it's just extremely verbose and very ugly in C#, goes against all the language's standard idioms, and is beyond the abilities of a beginner.

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

At my old job, they used Lua for the entire gameplay codebase (game rules, UI, AI, controls, math, etc).

For experienced programmers, higher-level languages still offers productivity boosts over C++/etc. Plus LuaJIT is amazingly fast smile.png

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.

Despite that, it's still one of the fastest VM-based language implementations out there -- they claim to be the fastest dynamic language implementation. The abovementioned company has used it to build half a dozen console games (and actually did most of the PPC and x86-64 porting of LuaJIT for the consoles).

Advertisement

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

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.

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

This topic is closed to new replies.

Advertisement