Actually, I'll add, C++ and C# as well.
Well, I'm into Computer Science since 1996, so I understand a bit of everything plus a lot of different OSs, I study 10 hours per day every day. However back in the 90s we didn't have books or universities about programming, all were passed through if you knew somebody in that profession. Which I did and in that time, he showed me .NET and MySQL, and that offered a lot of jobs also Java. Today you have a lot of options but I'm already discarding new languages as I believe they will jot succeed.
My always dream was to create game, and software. I don't understand all programming concepts and I'm studying all languages at the same time, so I'm heavy loaded. But that keeps me more aware.
I made a choice: use Python for everything but if you want performance, apps, security, compatibility, Multiplatform. What should I choose? The real question here is: which language should I go 100% and that language will teach me all I need about programming BUT without getting lost in that language forever (I discard any Assembly possibility) and one that has full documentation, support and libraries.
In my experience: I found a lot of info for python and java. But hardly I have ever found anything for C lang, C++ and, what about C# (it's only for Windows, is it easy, I saw a lot of documentation). Thanks!!
All programming languages are cross platform except Java, but even that's not that bad. Performance: C(++), Go, Rust, Java, Ada, OCaml, Haskell, C# Apps: JS, TS, ReScript, Go, C(++), Java, Haskell, C#, Dart Security: Java, Go, Rust, COBOL, C(++), C# Compatibility: Java(due to it's VM), C(++), Go, C# Libraries: Java, Go, C(++), C# Documentation: Java, C(++) (since they are mature) What do you mean without getting lost in the language? I'd not advocate for C(or C++), considering it's hard to understand the memory, and it's for those into programming theory. You are looking for all you need. Go for Java, it has a library for everything, it has a reasonable learning curve, and pretty much you are going to encounter it everywhere- it's like a programming black hole you can't escape.
Java is wrong for Computer Science - slow coding 2-4 more code.
Python/C++ beats Java in all aspects. Python can be enough if you do not want to create commercial Desktop Application.
I think that is not target. Python support all paradigm of programming and have links to many C++ libraries which speed is not comparable to Java.
Speed of execution is nothing I give you example - I go to coder/hacker tournament.
I wrote Python solution for 5 complex problems in one day.
After this I found that they prefer C++ too much so I rewrite this in C++ in 2 days.
If I was start this problems in C++ I will be never finish my algorithms prototypes in 5 days (Python is extremely productive - 4x-8x times ...).
So if I want write some complex algorithm is much better to draw this in Python.
In most case it is not need to rewrite this and Python code is the most clear from all languages if you know how to code of course.
1 solution on 20 is need to be rewritten - no reason to write 2-4 more code in Java or 2-3 more code in C++ to get speed .25s instead 1s :)
I writing in Python application for telco doing more than 100 000 000 per year.
I use Java only to code Desktop Application or to get more money because someone like to pay.
Personally for me Java is very poor cousin of C++ and Python little slow and rich True Object Oriented Language.
Speed of coding == more money or more creation.
Speed of execution == 1$ of savings :)
Horses for courses.. If you need speed then C is only beaten by Assembler/Machine code and that is hard to use. If I don't need speed for efficiency then I generally Python. Replaced Perl for me and is a lot more readable.
Perl is way more productive than you think.. The most productive languages are the message-passing OOP family(smalltalk, eiffel, delphi, objective-c), then perl and julia, then the functional family(haskell, ocaml, elixir, erlang, f#, reasonml, sml), then the mainstreams(Python, C++, Java/C#, Go), then lisp/js, then the old languages. so if you exclude the "dead" languages(including perl), then julia/haskell is your only bet.
Python can be linked with C++ both language are similar in many places (using same libraries or concepts to build libraries) - except memory and static types. C++ is more assembler and have different syntax (need 3x-4x coding more).
If you do engineering it is perfect stack - Java is to slow in coding (4x more code) and little faster than Python - whatever it is hard to mix Java/C++ what is easy Python/C++.
In the most program you do not need super performance but if you need C++ is the best and have rich Object Language much richer than Java and more poor than Python. Python is true object language - everything is object.
Whatever sometimes more important is framework than language for specific use.
I mean C++ is a superset of C, so might as well use C, am I right? It's just a case of simple bike, automatic car or manual car. python is simple bike, used for town based biking, like for going to school, etc. java is automatic car(like the memory management), while c is manual car(oil changes, motor changing, etc.). It's like comparing honda civic to bugatti chevron. Bugatti chevron is fast and all, but it isn't general purpose, it's purpose is for racing. honda civic is general, and that's what this guy is looking for, i think.
You can use C++/C with Python. Current C++ is not the old one so memory management can be automated whatever memory management in Python and C++ is different. You need understand how both behaves. Pointers, references, stacks, core types - in Python it is simple. Same with int in Python is one type in C++ 8 types for int with overflows.
Everyone says Python is great but they also say that it doesn't cover all programming concepts which puts you down the road. What book can you recommend me to get out of the beginner? I have seen that most content only lets you in the beginner zone. I struggle to read Python's manual, I have to decipher it. For now, I know what is built-in commands, some web scrapping, and some libraries. What else am I missing here?
Great answers! It really unlocked many doubts. But to start 1. where can I find poper C++ manual and which is the best book/video/DVD to cover all programming concepts at once like the book "The Linux Programming Interface" which covers all about the kernel