The answer to this question is unequivocally "screwdrivers". The answer to the original question (if you find yourself asking it), is "Python."
The analogy is perfect for this situation, but the answer provided here is wrong.
The original question [1] is unqualified, so I will take a liberty or two here and assume that they're new to programming and want to learn more. And since there's no real dichotomy here, I'll infer they're really asking "should I learn C++ or Python [first]?"
Well, C++ is indeed a saw and while they're incredibly capable, injuries are included for free. Python, like a screwdriver offers maximum utility. Learn Python first.
> Do you think someone could be a top-flight carpenter knowing only one?
Who cares about being a top-flight carpenter? Just figure out how to open up the battery pack for your kids' toys and you will be a hero. Whether you're starting a career in CS or you just want to cleanup the data in the office's mega-spreadsheet-that-has-all-our-critical-info, start with Python. Get that productivity that enables a positive feedback loop of design/test.
I started with C/C++ before Python existed and it was just so easy to get stuck on several classes of failures that were difficult to understand without outside help. Python has some of those but IMO far fewer.
I would actually disagree if you're learning programming. C++ will teach you far more. Python, for all it's advantages, is C++, with all sorts of restrictions imposed on what you can do (e.g. shared_ptr for everything, with the pros and cons of that).
It'll be hard for a while, but you will have learned a lot when you get there.
Python is what everyone's switching to because it's easier. If that's your goal, just build stuff and don't care about how it works, then sure, go python. And I would encourage you to learn Python (and Java, and Go, and Haskell, and Prolog, ...) to get more tools in the toolbox eventually.
At many Universities and Colleges, Python is taken as their first programming course. Then for the second and/or third course you study Java and/or C++.
The answer to this question is unequivocally "screwdrivers". The answer to the original question (if you find yourself asking it), is "Python."
The analogy is perfect for this situation, but the answer provided here is wrong.
The original question [1] is unqualified, so I will take a liberty or two here and assume that they're new to programming and want to learn more. And since there's no real dichotomy here, I'll infer they're really asking "should I learn C++ or Python [first]?"
Well, C++ is indeed a saw and while they're incredibly capable, injuries are included for free. Python, like a screwdriver offers maximum utility. Learn Python first.
> Do you think someone could be a top-flight carpenter knowing only one?
Who cares about being a top-flight carpenter? Just figure out how to open up the battery pack for your kids' toys and you will be a hero. Whether you're starting a career in CS or you just want to cleanup the data in the office's mega-spreadsheet-that-has-all-our-critical-info, start with Python. Get that productivity that enables a positive feedback loop of design/test.
I started with C/C++ before Python existed and it was just so easy to get stuck on several classes of failures that were difficult to understand without outside help. Python has some of those but IMO far fewer.
[1] https://www.quora.com/Should-I-learn-C++-or-Python