Date: Sun, 23 Sep 2018 07:09:37 +0200 From: Marko Ristin-Kaufmann firstname.lastname@example.org To: Python-Ideas email@example.com Subject: [Python-ideas] Why is design-by-contracts not widely adopted?
[ munch ]
*. *After properly reading about design-by-contract and getting deeper into the topic, there is no rational argument against it and the benefits are obvious. And still, people just wave their hand and continue without formalizing the contracts in the code and keep on writing them in the descriptions.
Firstly, I see a difference between rational arguments against Design By Contract (DbC) and against DbC in Python. Rejecting DbC for Python is not the same as rejecting DbC entirely.
Programming languages are different, obviously. Python is not the same as C is not the same as Lisp... To me this also means that different languages are used for different problem domains, and in different styles of development. I wouldn't use DbC in programming C or assembler because it's not really helpful for the kind of low level close to the machine stuff I use C or assembler for. And I wouldn't use DbC for Python because I wouldn't find it helpful for the kind of dynamic, exploratory development I do in Python. I don't write strict contracts for Python code because in a dynamically typed, and duck typed, programming language they just don't make sense to me. Which is not to say I think Design by Contract is bad, just that it isn't good for Python.
Secondly, these "obvious" benefits. If they're obvious, I want to know why aren't you using Eiffel? It's a programming language designed around DbC concepts. It's been around for three decades, at least as long as Python or longer. There's an existing base of compilers and support tools and libraries and textbooks and experienced programmers to work with.
Could it be that Python has better libraries, is faster to develop for, attracts more programmers? If so, I suggest it's worth considering that this might be *because* Python doesn't have DbC.
Or is this an updated version of the old saying "real programmers write FORTRAN in any language" ? If you are accustomed to Design by Contract, think of your time in the Python world as a trip to another country. Relax and try to program like the locals do. You might enjoy it.