| |
| Posted by Abdulhaq in reply to Dukc | PermalinkReply |
|
Abdulhaq
| On Wednesday, 23 February 2022 at 08:56:21 UTC, Dukc wrote:
> I think the stumbling block for a C or D programmer is thinking the comparison operators as binary operators, so that 1 < 2 > 1 must mean op!">"(op!"<"(1, 2), 1) or op!"<"(1, op!">"(2, 1)) or illegal syntax as in D. To understand the Python/Math syntax, you must stop this. In them, the three operands are all handled in one operation: op!("<", ">")(1, 2, 1) . There is no right or left associativity.
This is right. This thread got me reflecting on why python has been so successful in the scientific/engineering/ML domain. I don't think GVR was some extraordinary genius, I think he did a great job of coming up with a dynamic interpreted language that truly was 'turtles all the way down' (use of dicts throughout, metaclasses etc.) and managed the expansion of the language really well. Then numpy and scipy came along (thanks to a number of extremely talented engineers) and python became a very easy way to crunch and analyse numbers. The inherent power of python made it easy to build various package managers. Tkl and then PyQt and wxWidgets made good quality cross-platform GUI apps easy to build, and all along GVR prevented python going off the rails. I also think the 2 -> 3 transition was well timed and a success, contrary to what many bystanders would have you believe.
I would like to see something similar for D (i.e., making it good for e.g. general engineering work) but it hasn't worked out like that. I'm wondering why that is. Is D being wedded to C both its great strength, and its great weakness at the same time?
|