Putting the 'role' back in role-playing games since 2002.
Donate to Codex
Good Old Games
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Which programming language did you choose and why?

Arbiter

Scholar
Joined
Apr 22, 2020
Messages
2,523
Location
Poland
PERL is limited to scripting.

Hmm? So is Python, Ruby, JavaScript.

The thing is, there are a lot of non-compiled languages ("scripting languages") around. They're exceptionally convenient for coding in general but they are often looked down upon because they're a fair bit slower and memory-hungrier than compiled languages; and because your code is visible to all with them.

I honestly can't imagine using a compiled language when a scripting language is enough for the task. But I only write for myself, and not for others.

Most scripting languages, including Python, Ruby and Lua and most implementations of JavaScript are single threaded (Python supports threads but only one thread in a process can execute Python bytecode at a time so this is effectively time slicing). Newer implementations of JavaScript support concept of isolates, i.e. separate JS runtimes that can run in parallel in a single process but cannot share memory.

Scripting languages therefore severely limit developer's ability to implement parallel execution and take advantage of multiple CPU cores. You basically have two options:
- sacrifice performance and only use a single thread and therefore a single core to execute scripted logic
- use multiple JS isolates, multiple Lua contexts or multiple Python/Ruby processes to achieve parallelism, but any communication between them can only be implemented by passing immutable messages, which implies the cost of memory copying, serialization and (when using multiple processes) inter-process communication, all of which are more expensive than thread coordination.

Scripting languages might therefore be good enough for UI logic which is typically single threaded, but if your game engine supports parallel execution of game logic then scripting languages can seriously cripple its performance.

Scripting languages are also significantly slower, pure Python code can be 2 orders of magnitude slower than C/C++. Mixing C++ engine with a scripting language therefore requires difficult trade offs: the more logic you put in a scripting language, the more moddable your game is. The more logic you put in C++, the faster it runs.

Performance becomes even more important if you are building a technology for laptop friendly or mobile games: the more processing power your scripting language wastes the faster your code drains the battery.

I considered all of the above when designing an in-house engine for a 4X game that I am currently building. One of my requirements is to drain as little battery power as possible so that the game can be played on laptops when traveling.
 
Joined
Dec 17, 2013
Messages
5,183
C/C++ are super fast but you won't see them outside of very niche areas

In a context of a game development this is simply not true. First of all C != C++. Second, C++ is still dominant in game dev.

How many games use Unreal Engine and C++ compared to how many games use Unity (C# scripting), Godot (Python-like scripting), in-house engines (e.g. Minecraft built in Java, Dwarf Fortress built in Visual Basic, etc)? I would imagine the balance is now heavily tilted toward the latter, though I could be wrong. I guess if you want to be an AAA studio programmer, C++ might be the way to go still, but it's a crappy job.

That's what I kind of meant by niche areas. The number of AAA game programmers (and OS programmers, and others like that) out there is dwarfed by the number of total programmers.
 
Joined
Dec 17, 2013
Messages
5,183
PERL is limited to scripting.

Hmm? So is Python, Ruby, JavaScript.

Python is a full fledged object oriented language, unlike PERL and JS (before frameworks), as far as I know. You can use it as a scripting language, but you can also code highly reusable OO code.

Btw, Porky's summary is highly debatable, sounds like it's coming from someone who hasn't used high-level languages in a professional capacity and is out of touch with current trends. For the record, I've learned assembly and C/C++ as a kid, then used C/C++, Python, JavaScript, TypeScript, PHP, Ruby, Java, C#, Scala and Kotlin professionally in the last 20 years, and the "suckiness" of Java is grossly overplayed by people who don't quite get its benefits; it's basically an uninformed meme at this point.

I've used most of those at one time or another (Assembly, C, Python, Java, JavaScript, Ruby...). Java is WWWWAAAAYYYY worse to use than Python. Sure, you can do all the same things in it, but the amount of work required to get the same task done is significantly higher. And because of this and the general elegance of Python, it feels like driving in a luxury performance car compared to Java's cheap jalopy.

JavaScript is rubbish, but very few people still use it directly for anything substantial.

Not sure what you mean, it's the second most popular and highest growing language after Python. The entire modern web is pretty much built in it in one way or another.

But then, who cares about "popularity"? It's like asking what is the most popular movie or book or game genre. Action movies, romance novels, and hidden-object mobile games. Huh, so what?

Actually, I feel like this is a bad comparison for a couple of reasons. One, language popularity is very important because it results in more libraries, which are the cornerstone of any good language. Being able to quickly find usable code for your problem exponentially improves your productivity and speed of development. Second, most real life programming, jokes aside, is like 75% googling solutions, explanations, guides, etc. Not talking about copy/pasting code, that's for bad programmers, but finding good short explanations on how stuff works or solutions to specific problems is key for effective development. And the more popular a language is, the easier it is to find those.

Also, since this is generally a professional endeavor, people tend to select good stuff at a higher rate than when they do so for personal consumption.


Godot game engine uses a scripting language which is basically exactly like Python but supports multiple threading. In general, Python is definitely not the best language for game development, but Minecraft was coded in Java and sold for 2.5 Billion, Dwarf Fortress coded in visual basic and might be the greatest game ever, and so on. Game design is way more important than the programming language, code in what you enjoy, vast majority of indie type games don't really need high end performance.
 

Rincewind

Magister
Patron
Joined
Feb 8, 2020
Messages
2,476
Location
down under
Codex+ Now Streaming!
Am I retarded for wanting to learn C? I'm just an amateur who's messed around with a couple different languages, but the idea of C and low-level coding in general really appeals to me.

I'd say, just do it if it appeals to you. You'll inevitably learn more about how the actual hardware and the OS works than if you started out with something high-level.

Not sure what you mean, it's the second most popular and highest growing language after Python. The entire modern web is pretty much built in it in one way or another.

Yeah, but many frontend guys use languages like TypeScript that *transpile* to JavaScript; they don't write JavaScript directly. Well, at least the ones who've seen the light. You can also use things like ClojureScript, or even Nim, that can compile to JavaScript, that's what I meant. Anyway, polls like these are always highly suspicious, who knows how they ended up with their rankings, whether they counted languages that transpile to JavaScript as JavaScript, etc.

Actually, I feel like this is a bad comparison for a couple of reasons. One, language popularity is very important because it results in more libraries, which are the cornerstone of any good language.

Sure, but here you're really talking *for* Java and JVM languages, you realise that? One of the main reasons why Java and JVM languages are virtually unkillable now is (partly) because of the vast, vast, vast amounts of really high-quality, battle-tested libraries available for it.

Java is WWWWAAAAYYYY worse to use than Python. Sure, you can do all the same things in it, but the amount of work required to get the same task done is significantly higher. And because of this and the general elegance of Python, it feels like driving in a luxury performance car compared to Java's cheap jalopy.

No, you can't do the "same things in it". If you need to deal with multithreading, or anything performance intensive, how exactly are you going to do that in *pure* Python? Even in medium sized codebases the lack of strong typing is a huge hindrance; even in some Python project of my own I worked on ~10 years ago things got really confusing as the project started growing in size. I ended up documenting the types of arguments for every function... well, how about making types part of the signature, so the compiler can do that work for you? Plus make 100% safe refactoring a possiblity.

My personal experience is (shared by many of my colleagues) that Python projects (or anything written in a dynamic language) are very hard to manage once they grew bigger than a few thousand lines. I cannot imagine the pain of working on a really large Python codebase in a team setting.

If you were to list them in a brief summary how would it look like?

I don't work in all industries :) but here's a few I'm aware of:
  • embedded system guys: still C/C++ most of the time
  • OS development: C/C++ almost exclusively
  • scientific computing: FORTRAN, C/C++, Scala, Python (with some number-crunching libs that do the actual heavy lifting)
  • data analysis / statistics: Scala, Python (with numeric libs), R
  • AI stuff: C/C++, Python (with numeric libs), or anything that's capable of compiling a bare-metal executable for ultimate speed (e.g. Rust, D, Nim, etc.), maybe LISP
  • web frontend dev: JavaScript/TypeScript/whatever that compiles to JavaScript
  • web backend dev: Java, Kotlin, Scala, TypeScript/NodeJS
  • mobile dev (Android): Kotlin, Java
  • mobile dev (Apple): Objective-C, Swift
  • financial software: Scala, Haskell, OCaml, LISP
  • all telco switches around the world: Erlang :M
Python is really just a glue language when used for anything calculation intensive; basically you're just calling high-performance C libraries in most such jobs. So yeah, because of that it might seem "popular", but I don't think it's really popular as a *general purpose programming language* for writing self-contained apps.

My point is: popularity doesn't matter if you want to become an Android dev; then you use Java or Kotlin. Popularity doesn't matter if you wanna become a Linux kernel dev; then you use C. And so on.

And usually the problems to solve pose far greater problems than using this or that language. Sure, you still need to choose a proper tool for the job, no disagreements there (you don't want to re-paint the Central Station with a toothbrush, for example, although it's certainly doable).
 
Last edited:

kepler

Novice
Joined
Jun 1, 2022
Messages
43
Location
Lechistan
How many games use Unreal Engine and C++ compared to how many games use Unity (C# scripting), Godot (Python-like scripting), in-house engines (e.g. Minecraft built in Java, Dwarf Fortress built in Visual Basic, etc)? I would imagine the balance is now heavily tilted toward the latter, though I could be wrong. I guess if you want to be an AAA studio programmer, C++ might be the way to go still, but it's a crappy job.

That's what I kind of meant by niche areas. The number of AAA game programmers (and OS programmers, and others like that) out there is dwarfed by the number of total programmers.

I don't know man. C++ is everything but niche language. You are clearly biased. Are you afraid of pointers? :cool:

Too add some value to this thread - according to TIOBE (https://www.tiobe.com/tiobe-index/) C++ is more popular then C# (but, to be fair, according to the latest post on TIOBE, C# is gaining popularity faster then C++). I know that TIOBE Index is not focused on game development, but 4th place of popularity of all programming languages is not a niche.

I personally would like to see C++ popular (in game dev) because C# (second most popular) is just not very good for games. Sure, it's more convenient for programmers but the end product will be worse in terms of performance. This is bad craftsmanship.
 

Rincewind

Magister
Patron
Joined
Feb 8, 2020
Messages
2,476
Location
down under
Codex+ Now Streaming!
Addendum: I'm no lover of Java myself, and I don't think I ever really loved it. But it gets lots of flak, and usually for the wrong reasons. These days I enjoy using Kotlin and Scala at work, and it would be extremely painful to go back to Java from those nice functional languages (Kotlin is "functional-lite", but still it's a great language). Then I use Nim and lately modern C++ (C++17) in my hobby projects (C++ only because I got into DOSBox hacking, and C++17 is actually better than I thought).
 

Krice

Arcane
Developer
Joined
May 29, 2010
Messages
1,334
How many games use Unreal Engine and C++ compared to how many games use Unity (C# scripting), Godot (Python-like scripting), in-house engines (e.g. Minecraft built in Java, Dwarf Fortress built in Visual Basic, etc)?

Unity and Godot are not languages if I'm correct. DF could be the only game in this universe that is programmed in VB. I think developers want to distance from C++, but it's just difficult, because if you build an engine from scratch you need it to be as fast as possible and other languages have problems with speed, the trade-off of safety and other advanced features. Besides, if we had a language better than C++ and it would still be fast enough I think a lot of people would use it.
 

TheDeveloperDude

MagicScreen Games
Developer
Joined
Jan 9, 2012
Messages
412
My games are programmed in Java.
One is using lwjgl2 and the other libgdx.
I chose Java because I already knew it.
 

Jasede

Arcane
Patron
Joined
Jan 4, 2005
Messages
24,793
Insert Title Here RPG Wokedex Codex Year of the Donut I'm very into cock and ball torture
Trying to discuss which language to learn is stupid anyway. You'll learn what you need and that's that. Developers are hired because they can learn new things quickly and you're expected to learn anything the job demands in a reasonable time frame.

That said you should learn C or C++ first because if pointers give you a headache the job isn't for you and we can just hire a chink to copy and paste from Stack Overflow.
 

Arbiter

Scholar
Joined
Apr 22, 2020
Messages
2,523
Location
Poland
Godot game engine uses a scripting language which is basically exactly like Python but supports multiple threading.

GDScript is interpreted and therefore likely slow. At first glance there is no documentation for embedding GDScript in other applications so it is likely restricted to Godot engine.

In general, Python is definitely not the best language for game development, but Minecraft was coded in Java and sold for 2.5 Billion

Minecraft developers got lucky but you cannot deny that 95% of commercial computer games boast much better visual and audio fidelity. Java, being garbage collected, is also a bad fit for action games.

Dwarf Fortress coded in visual basic
Source?

and might be the greatest game ever

99,99% of players would disagree with that strong statement.

Game design is way more important than the programming language, code in what you enjoy, vast majority of indie type games don't really need high end performance.

There are games that failed due to poor programming and resulting bugs so technology cannot be dismissed so easily. Most scripting languages are 1-2 orders of magnitude slower due to interpreted execution and dynamic typing (JITed implementations like JS V8 are closer to C/C++ performance, but I am not sure if V8 is portable to non-desktop platforms like consoles). If you combine that with restrictions on parallel execution (which V8 is also a subject to), a poorly chosen scripting language can make your game run several hundreds of time slower. That can easily make the difference between what features are or are not possible. Moreover, system requirements impact the size of your customer base. For example, it is not a secret that Blizzard in its early days deliberately implemented games with low requirements in mind so that they could be played even on some office computers. This is why Starcraft was a 2D game, even though competitors were already experimenting with 3D RTSes in that era.
 

Jasede

Arcane
Patron
Joined
Jan 4, 2005
Messages
24,793
Insert Title Here RPG Wokedex Codex Year of the Donut I'm very into cock and ball torture
Also Minecraft ran like shit.
And old Blizzard did it right. Was a great company.

I remember popping WC3 into an ancient machine and it ran smooth as butter even though it was well below the already low minimum requirements.

Big reason why D2/WC3/WoW were so huge. Anyone with a PC could run them. You can't do that shit with Unity which turns any PC into a space heater.
 
Last edited:

Gammer

Learned
Joined
Jul 21, 2021
Messages
316
Location
The End
I'm messing around with C and C++ for malware development projects, assembly in order to reverse engineer malware samples and using python for quick tools, web servers or API building.

Nim does seem like an interesting project but ultimately I think I'm going to concentrate on C# for nearly everything because it's easy to learn, and you can quickly build projects to get stuff going.

I think learn C and assembly first so you can understand how computers actually work, and then use whatever language makes most sense for developing projects/need for the job.
 

shywn

Savant
Joined
Feb 13, 2016
Messages
436
Python is a full fledged object oriented language, unlike PERL and JS (before frameworks), as far as I know. You can use it as a scripting language, but you can also code highly reusable OO code.

Not unlike Perl and JS. Like Perl and JS. Perl has had objects for thirty years now. And JavaScript has OO as well, with or without frameworks to the best of my knowledge; it's just a rather different type of object-orientation. (Please stop calling it PERL, btw. It is not an acronym.)

The old compiled vs scripted fallacy... What if the compiled version of your "script" compiles under 100ms? But it gives you type safety, 50-1000x times the execution speed, and a better designed language overall? If it's not a LISP so you can play with the code freely at runtime, while it's running, probably your scripted language is shit.

To me, the difference between a scripting language and a compiled language is the difference between 8 KB of code and 40 KB of code. One allows me to be creative and concise, other is just pain in its verboseness. But maybe I know the wrong programming languages *shrug*
 

Arbiter

Scholar
Joined
Apr 22, 2020
Messages
2,523
Location
Poland
Also Minecraft ran like shit.
Big reason why D2/WC3/WoW were so huge. Anyone with a PC could run them. You can't do that shit with Unity which turns any PC into a space heater.

In my opinion D2 was the first poorly optimized Blizzard game. It sported a seamless world without loading screens when transitioning between areas (with the exception of teleports) and somehow the implementation was flawed. The game could stutter on computers with 64 MB RAM which was standard at that time.

From my experience, WC3 ran well. It was impressive how much faster retail was compared to beta.

World of Warcraft had a reputation of being a demanding game, especially when it came to visiting main cities. Even today, some WoW veterans recall fighting their first raid bosses at 15 FPS and upgrading 1 or 2 years after that game was released.
 
Joined
Dec 17, 2013
Messages
5,183
Not sure what you mean, it's the second most popular and highest growing language after Python. The entire modern web is pretty much built in it in one way or another.

Yeah, but many frontend guys use languages like TypeScript that *transpile* to JavaScript; they don't write JavaScript directly. Well, at least the ones who've seen the light. You can also use things like ClojureScript, or even Nim, that can compile to JavaScript, that's what I meant. Anyway, polls like these are always highly suspicious, who knows how they ended up with their rankings, whether they counted languages that transpile to JavaScript as JavaScript, etc.

They compile the rankings based on number of job postings at some aggregate of job listing websites, so I would venture to guess it's fairly accurate. And it's fairly good at differentiating JS frameworks like React from other languages.

Actually, I feel like this is a bad comparison for a couple of reasons. One, language popularity is very important because it results in more libraries, which are the cornerstone of any good language.

Sure, but here you're really talking *for* Java and JVM languages, you realise that? One of the main reasons why Java and JVM languages are virtually unkillable now is (partly) because of the vast, vast, vast amounts of really high-quality, battle-tested libraries available for it.

I listed Java as one of the main modern languages, so not sure what you mean. Libraries are a wash between Python and Java, and other main languages, all of them have great libraries, my point here was more about you saying that popularity doesn't matter.

Java is WWWWAAAAYYYY worse to use than Python. Sure, you can do all the same things in it, but the amount of work required to get the same task done is significantly higher. And because of this and the general elegance of Python, it feels like driving in a luxury performance car compared to Java's cheap jalopy.

No, you can't do the "same things in it". If you need to deal with multithreading, or anything performance intensive, how exactly are you going to do that in *pure* Python? Even in medium sized codebases the lack of strong typing is a huge hindrance; even in some Python project of my own I worked on ~10 years ago things got really confusing as the project started growing in size. I ended up documenting the types of arguments for every function... well, how about making types part of the signature, so the compiler can do that work for you? Plus make 100% safe refactoring a possiblity.

My personal experience is (shared by many of my colleagues) that Python projects (or anything written in a dynamic language) are very hard to manage once they grew bigger than a few thousand lines. I cannot imagine the pain of working on a really large Python codebase in a team setting.

Performance and multi-threading are niche issues in programming. The vast majority of code today is web and business applications, which in most cases don't need cutting edge performance or multi-threading. There are some that do, of course, and in those cases, you might be better served with other languages (not Java usually either, which itself is not very fast), but for most programmers, Python is just fine.

As far as stuff like strong typing, Python has annotations for that if you really need it. So your manager could enforce the team using annotations to "strong type" arguments. But ultimately, Python gives the programmer a ton of freedom, flexibility, and power, which means good programmers can make the most of it, and bad programmers can drown in their own mistakes. Java is a lot more idiot-proof, as I mentioned in my original post here, and C# even more so, so yes, if you have low quality programmers/young programmers/outsourcing/etc, you would be better off with more restrictive languages, but if you are decent or better, Python will let you fly.

And if you claim that Python is not good for large projects, I would just list some of the behemoth applications out there using it as the main language (possibly with inserts from other languages where needed): Instagram, Quora, Youtube, DropBox, Pinterest, Spotify, Uber, Reddit, Netflix, Instacart, etc.

I don't know man. C++ is everything but niche language. You are clearly biased. Are you afraid of pointers? :cool:

Check any listing of popular languages based on job postings, don't recall when I last saw C++ on it. Nobody would choose C++ for most common programming jobs like business or web applications. It's reserved for high performance stuff like cutting edge game engines, low level OS, etc, which are always a very small percentage of overall programming jobs.

How many games use Unreal Engine and C++ compared to how many games use Unity (C# scripting), Godot (Python-like scripting), in-house engines (e.g. Minecraft built in Java, Dwarf Fortress built in Visual Basic, etc)?

Unity and Godot are not languages if I'm correct. DF could be the only game in this universe that is programmed in VB. I think developers want to distance from C++, but it's just difficult, because if you build an engine from scratch you need it to be as fast as possible and other languages have problems with speed, the trade-off of safety and other advanced features. Besides, if we had a language better than C++ and it would still be fast enough I think a lot of people would use it.

You guys are naturally focused on game development, since this is a gaming forum, but game dev jobs are a tiny % of overall programming jobs. And in most jobs, C++ is irrelevant in most cases.

Dwarf Fortress is in C++, isn't it ? What's the source about Visual Basic ?

Dwarf Fortress is in C++, isn't it ? What's the source about Visual Basic ?

It seems that you are right. According to wiki:

Dwarf Fortress is written in an "unsanctioned messy combination" of C and C++ using a free edition of Microsoft Visual Studio as the IDE.

Hhmm, could've sworn I saw Tarn Adams mention Visual Basic as the language, but googling it doesn't turn up anything, so ok, I was wrong on this one. :)

Godot game engine uses a scripting language which is basically exactly like Python but supports multiple threading.

GDScript is interpreted and therefore likely slow. At first glance there is no documentation for embedding GDScript in other applications so it is likely restricted to Godot engine.

GDScript = Python with multi-threading support, so you can just essentially code games in Python.

Minecraft developers got lucky but you cannot deny that 95% of commercial computer games boast much better visual and audio fidelity. Java, being garbage collected, is also a bad fit for action games.

I was making a point that game design is much more important than the language you choose.

Game design is way more important than the programming language, code in what you enjoy, vast majority of indie type games don't really need high end performance.

There are games that failed due to poor programming and resulting bugs so technology cannot be dismissed so easily.

Sure, but most games fail due to bad design, so... :)
 

Jasede

Arcane
Patron
Joined
Jan 4, 2005
Messages
24,793
Insert Title Here RPG Wokedex Codex Year of the Donut I'm very into cock and ball torture
They changed the WoW engine several times. The first one ran on a toaster. It wasn't as drastic as WC3 but with a bit of tweaking it was "good enough" - and you didn't exactly need good fps during the original patch.
After all the horrible "upgrades" though, it got worse and worse, not better.

I do remember D2 (and even D1) stuttering - but they ran. And that's what's important. They were playable. (imagine what kind of PC I had if D1 stuttered on it...)
 

Krice

Arcane
Developer
Joined
May 29, 2010
Messages
1,334
By the way if someone is using C# without Unity, what kind of library/program type you use for game dev?
 

kepler

Novice
Joined
Jun 1, 2022
Messages
43
Location
Lechistan
Check any listing of popular languages based on job postings, don't recall when I last saw C++ on it.

https://justjoin.it/?q=C++@skill


:nocountryforshitposters:


Nobody would choose C++ for most common programming jobs like business or web applications.

Obviously.

It's reserved for high performance stuff like cutting edge game engines, low level OS, etc, which are always a very small percentage of overall programming jobs.

And it's 4th on TIOBE Index for no reason.

At this point I'm assuming you are just trolling.
 

Rincewind

Magister
Patron
Joined
Feb 8, 2020
Messages
2,476
Location
down under
Codex+ Now Streaming!
But ultimately, Python gives the programmer a ton of freedom, flexibility, and power, which means good programmers can make the most of it, and bad programmers can drown in their own mistakes. Java is a lot more idiot-proof, as I mentioned in my original post here, and C# even more so, so yes, if you have low quality programmers/young programmers/outsourcing/etc, you would be better off with more restrictive languages, but if you are decent or better, Python will let you fly.

:hero:

I'm outta here...
 

Arbiter

Scholar
Joined
Apr 22, 2020
Messages
2,523
Location
Poland
Performance and multi-threading are niche issues in programming.

Why does Intel produce multi core CPUs then? Yes, you can use multi processing instead of multi threading but the cost of inter-process communication (i.e. serialization and memory copying) is much higher than the cost of thread coordination.

The vast majority of code today is web and business applications, which in most cases don't need cutting edge performance or multi-threading. There are some that do, of course, and in those cases, you might be better served with other languages (not Java usually either, which itself is not very fast), but for most programmers, Python is just fine.

Business applications are typically hosted in cloud and therefore hosting costs are proportional to resource consumption. Simple business apps are constrained by database performance so the choice of programming language may not be significant in many cases. As soon as you need to do anything more complex than storing and querying data in a DB, the choice of programming language directly translates to hosting costs. This will only get worse with increasing energy costs. And Python is the slowest mainstream language.

There are also studies indicating that website response time has direct impact on user retention (for example Google experimenting with the number of results in a single page, which in turn had impact on processing time).

Your claim that Java is slow is simply not true. Java is among the fastest JIT based languages. C/C++ are faster in some applications, mostly number crunching, but typically by not more 30%. Then again, Python is 2 orders of magnitude slower than C++ or Java in number crunching applications.

On Linux Mono is in fact slower than Java. I do not have opinion on .NET vs Java performance on Windows, but hardly anyone uses Windows for server side programming.

As far as stuff like strong typing, Python has annotations for that if you really need it. So your manager could enforce the team using annotations to "strong type" arguments. But ultimately, Python gives the programmer a ton of freedom, flexibility, and power, which means good programmers can make the most of it, and bad programmers can drown in their own mistakes.

Python does not even support multiline lambdas, unlike all other mainstream programmers.

If you look at mainstream compiled languages: Java (+ all other JVM languages), C#, C++, Go, Rust, all of them have native middleware libraries: database clients, message queue clients, message serialization libraries, math libraries. Python, on the other hand, does not even implement database clients, it just wraps C/C++ libraries. Even stuff like serialization is too slow for Python: Protocol Buffers library for Python has 2 modes: pure Python and C++ wrapper which is recommended for best performance (see here: https://github.com/protocolbuffers/protobuf/issues/10051). Can you name another language that is too slow for simple binary serialization?

Heck, Python even needs C Numpy code to efficiently handle arrays.

Java is a lot more idiot-proof, as I mentioned in my original post here, and C# even more so, so yes, if you have low quality programmers/young programmers/outsourcing/etc, you would be better off with more restrictive languages, but if you are decent or better, Python will let you fly.

It is the opposite: Python does not even support parallel execution of threads: only one thread can acquire GIL and execute Python bytecode at a time. If you want parallel execution you need to resort to calling native functions (which do not require GIL), like with everything in Python.

Complex projects that process large amounts of data are typically built in Java, Scala, Kotlin, sometimes Haskell (in financial domain). You can therefore hire developers with proper experience. Python on the other hand is typically used by small software houses and interactive agencies as a competitor for PHP and Node.js. If you hire Python developers, on the other hand, you risk working with people whose only experience is building websites for florists. To be fair, there are also super-smart data scientists who use Python as a wrapper for C++ ML and data processing libraries, but they cannot replace programmers.

And if you claim that Python is not good for large projects, I would just list some of the behemoth applications out there using it as the main language (possibly with inserts from other languages where needed): Instagram, Quora, Youtube, DropBox, Pinterest, Spotify, Uber, Reddit, Netflix, Instacart, etc.

According to this page https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites Python is rarely used as the primary language. It is more suitable for glue code.

Pintereset, Quora etc. were startups with millions of funding, they could afford not to care about performance.

Uber was originally implemented in Node.js and is now transitioning to Go.

Godot game engine uses a scripting language which is basically exactly like Python but supports multiple threading.

GDScript is interpreted and therefore likely slow. At first glance there is no documentation for embedding GDScript in other applications so it is likely restricted to Godot engine.

GDScript = Python with multi-threading support, so you can just essentially code games in Python.

You have not addressed my points. GDSCript is interpreted so it must be slow and it is not designed for embedding outside of Godot, so you cannot easily use it with different engines.

Minecraft developers got lucky but you cannot deny that 95% of commercial computer games boast much better visual and audio fidelity. Java, being garbage collected, is also a bad fit for action games.

I was making a point that game design is much more important than the language you choose.

A writer is only limited by his/her imagination and can put anything on paper. A game designer, on the other hand, is limited by technology. If it was not the case we would have proper AI and interactivity decades ago.

Game design is way more important than the programming language, code in what you enjoy, vast majority of indie type games don't really need high end performance.

There are games that failed due to poor programming and resulting bugs so technology cannot be dismissed so easily.

Sure, but most games fail due to bad design, so... :)

In reality, graphics have more impact on financial success than design. I am not saying I am happy with that, but that is the reality.

Edit: fixed nested quotes.
 
Last edited:

As an Amazon Associate, rpgcodex.net earns from qualifying purchases.
Back
Top Bottom