| > Once you've written sufficient unit tests to prove your code works as well as a C++ equivalent does just by compiling You mean in the same way C++ dev write tests to prove that all their code has no memory error which you get in Python for free ? Except: - tests are way shorter to write in python than in C++ - C++ devs often write zero tests for their code, just like python devs - python duck typing + REPL means compiler checks are rarely necessary - if you need to be type checks, you use type hints in python, which even then is still less verbose than c++ > I'd also argue that operator overloading etc lets C++ be just as expressive as Python, the libraries just need to be designed with that in mind. Ok, let's say you have this json: [{
"name": "Kévin",
"age": 23,
"hired": "2005-06-03 02:12:33",
"emails": ["kevin@foo.com", "kevin@bar.com"]
}, {
}, {
"name": "Joël",
"age": 32,
"hired": "2003-01-02 12:32:11",
"emails": ["joel@foo.com", "joel@bar.com"]
},
... other entries
]
It's very simple. Very basic. There is no trick in there: it's standard utf8, well formed, no missing value.You want to print people details in alphabetical order this way: Joël (32) - 02/01/03:
- joel@foo.com
- joel@bar.com
Kévin (23) - 03/06/05:
- kevin@foo.com
- kevin@bar.com
... other entries
This is a 1rst year of college exercise. Nothing remotely complicated. I'm not choosing some fancy machine learning or data processing stuff for which Python has magic libs. Every language can do that easily.In Python 3.7, which is already 2 years old, the code would be: import json
import datetime as dt
with open("agenda.json") as fd:
agenda = sorted(json.load(fd), key=lambda people: people["name"])
for people in agenda:
hired = dt.datetime.fromisoformat(people["hired"])
print(f'{people["name"]} ({people["age"]}) - {hired:%d/%m/%y}:')
for email in people["emails"]:
print(f" - {email}")
The entire script is there. There is no trick. This is not a code golf version of of it; I could make it shorter. It really is standard Python. There is no 3rd party lib either.It's not specific to Python, you would get this expressiveness with Ruby or Perl. I don't see in which world you would get that in regular, honest to god, day to day, portable C++. You have to declare types, many includes, you'll have headers and a main function. You have the memory and references to manage. It doesn't make C++ a bad language. It doesn't make python a better language. The C++ version will take way less RAM than the Python version for example. It's just the nature of those languages implies that. |