Hacker News new | past | comments | ask | show | jobs | submit login

Python is very commonly recommended as the "gateway drug" to programming, and for good reason. It's extremely well used, sought after, and easy to get into.

When you feel comfortable with programming fundamentals in Python (everything from variables, functions, loops to classes and modules) I'd recommend looking into Go or Rust -- the latter is probably more of a challenge but it makes sense as a step up from Python.

My extremely personal opinions about the rest of the languages you mention, and these are my personal opinions so there's no need to tell me how wrong I am because personal opinions almost always are wrong (to someone else):

- Java: Highly sought after in the market but mostly found in legacy code bases, bloated (JVM) and not very well liked by developers apart from some scenarios where it's already used, or those that have been working with it for a decade.

- C++: Hated by everyone except those that are already very proficient in it and is quickly being surpassed by Rust, by no means a useless language but not one that makes sense to pick up from scratch in 2020 unless you have a specific reason to.




C++ is still used extensively, even for completely new projects, in computer graphics, databases, etc. Relatively new projects I’ve seen it used: TileDB, tensorstore, core Apache Arrow, etc. CUDA programming is C++ at the bleeding edge. I’m in the process of updating my C++ to C++17 and there’s definitely been a lot of changes over time in the language. I would agree that for many, they’d go with python and let others accelerate that python with underlying C/C++ they wouldn’t have to see.


The problems with Python are performance and tooling, especially dependency management and deployment. Figuring out the happy path is highly dependent on your particular circumstances. Someone might tell you that Pipenv worked well for them, but when you try it, every single pipenv operation takes 30 minutes. Others tell you that vanilla pip works for them, but you care about reproducibility and they usually respond with some variation of “reproducibility is unnecessary”. Similarly, if you want to deploy statically linked artifacts, you pretty much have to use Docker or one of the zip file solutions (the latter are nice, but they don’t bundle the runtime or .so files—at least in some cases) and these always end up being 10-100 times bigger than an equivalent Go binary (for non-toy programs, anyway) which is a big problem for things like AWS Lambda which has a 250MB limit on binaries. Python the language is easy enough, but all of the things surrounding the language are brutal and for whatever reason we handwave away those concerns as though they aren’t important.


I’m more into applications of technology, and security is a focus. For instance, doesn’t meterpreter use Ruby? That didn’t make the list, but I couldn’t say why. Maybe it’s not as easy to learn? I’m just grasping at this point.

Would you say it’s worth looking into C++ due to legacy codebases?


Sure, if you want to understand stuff written in C/C++ then that's an obvious use case for learning it. The same goes for any language. Ruby isn't worse than Python by any stretch but my personal view is that it got really popular due to "Ruby on Rails", on its own it's very similar to Python which seems more widely used.

If security is what you mainly care about though, maybe you'd just enjoy diving straight into rust rather than C++.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: