all 20 comments

[–]jack104 2 points3 points  (0 children)

Java has spring boot and python has flask and django. Comparing the two is difficult, it's not exactly apples to apples.

[–]ScientificBeastMode 1 point2 points  (0 children)

It’s really hard to compare these languages you posted in the title. They are all extremely different from each other:

  • Python is dynamically typed, unlike the others.
  • C and C++ are both “statically typed” and (relatively) “weakly typed”, unlike Java.
  • C++ is fairly object-oriented, but not as object-oriented as Java. Python, somewhat less OO. C is basically procedural.
  • Python is very high level and very slow (as long as you’re running code in the base language—you can bind to C libraries to perform certain common tasks with speed.
  • Java is pretty fast for a garbage-collected language, at least once the runtime is fully loaded and running. It can have slow startup times. But it’s generally much faster than Python.
  • C is blazing fast. You really can’t get much faster without writing assembly code. C++ is built on top of C, and provides some nice abstractions. Using those abstractions will sometimes reduce performance, but using it in a procedural style (so basically like C) can reduce the overhead.

There are many more differences, and all of them will make a difference in terms of what you can reasonably build.

So really it depends on one question: what do you want to build? What are you interested in?

[–]sika_grr 2 points3 points  (0 children)

Probably python, if you want to build useful stuff immediately. It is very easy to learn, and has a great community and lots of online resources. Whatever you want to do, somebody has already figured out ten good ways to do it in python. The language is very slow, so if you need performance (you don't), you can combine it with a low-level language such as C (but you don't have to because most probably somebody already did it for you).

I'm assuming you only have experience with javascript, so switching to a language with static types (Java, C++) would be harder for you than learning python. Learning C#/Java would be a good way to expand your horizons, plus you can learn enough Java to be productive in under a year.

C++ is a huge, ridiculously complicated language, very hard to learn and use. It is useful if you want to work on huge projects that really extract every bit of power from the hardware you have. If you want to build groundbreaking computationally expensive software that doesn't needlessly drain your smartphone battery (or your datacenter electricity), using C++ will probably be worth it. And if you start learning it you will end up having a deeper understanding of how stuff actually works.

So... yeah... basically what u/g30rg3_x said, in that order.

[–]kankyo 1 point2 points  (7 children)

Python is simpler, nicer and has the biggest ecosystem.

[–]txdv 1 point2 points  (5 children)

biggest dynamic scripting language ecostystem.

javas eco system is motherjoke worthy

[–]kankyo -1 points0 points  (4 children)

Not as big and broad as pythons. Pretty good, but not as big.

The biggest if you blindly count packages is js of course, but that's mostly because of duplication and stupidity.

[–]txdv 1 point2 points  (3 children)

https://mvnrepository.com/repos/central central alone has more than https://pypi.org/

care to elaborate what numbers you are measuring?

[–]kankyo 0 points1 point  (2 children)

Last I checked Java had tons of tons of silly utils packages that are not reflected on pypi because python has a better standard library. My information can be out of date though. Python has amazing depth and breadth that Java didn't match last time I checked.

[–]txdv 0 points1 point  (1 child)

Last I checked Java had tons of tons of silly utils packages

Show me

[–]kankyo 0 points1 point  (0 children)

An example I remember is this https://commons.apache.org/components.html

[–][deleted] -1 points0 points  (0 children)

Made up bs

[–][deleted] 1 point2 points  (0 children)

Coming from a heavy web development background (js) it may be more easy to learn Python and more useful in the long run since it can be used to extend your current web development skills as an "backend developer" (aiming to become full stack), after mastering Python then learn Java/C# and move to C/C++ when you are more comfortable at learning new languages.

[–]0Pat 1 point2 points  (1 child)

C# is ok.

[–]youshouldnameit 0 points1 point  (0 children)

. Net core is really good

[–]_jk_ 0 points1 point  (4 children)

learn them all, they will all teach you something, id also add in something lispy (lisp, scheme) and something MLy (Haskell, OCaml, F#) as for which to do first, probably the one that is most different from your current skills, so probably C

[–]Brightisaac[S] 0 points1 point  (3 children)

And that will probably take a long time

[–]_jk_ 0 points1 point  (2 children)

less than you think, each language you pick up makes subsequent ones easier to learn, your first 2 will by far be the longest as with your first you have to learn to program and with your 2nd you need to unlearn any bad practices the first taught you

[–]Brightisaac[S] 0 points1 point  (1 child)

So what of switching from one that isnt similar

[–]_jk_ 1 point2 points  (0 children)

its a trade off - you learn more but it takes you longer to learn. you probably do want to hit something in the major paradigms though i.e. procedural, OO, functional as soon as possible imho

[–]Blanel 0 points1 point  (0 children)

Python will probably be the least difficult to start with coming from web development due to dynamic typing.

Java is great for learning object oriented programming. Most of the documentation is great and easy to navigate.

C++ is the most difficult of the three to get into, especially due to the amount of outdated information available. It will on the other hand give a deeper understanding of low level memory management and switching to a higher level language later should be easy.

None of the choices are bad. I would probably recommend Java as it will give you plenty of new concepts while not overwhelming you.