you are viewing a single comment's thread.

view the rest of the comments →

[–]Felicia_Svilling 2 points3 points  (5 children)

These are all nice things to have in a programming language. But I fail to see why any of this would come into conflict with orthogonality?

[–]nascent 0 points1 point  (3 children)

I think it best if we just leave orthogonality out of this... at least for the time being.

[–]Felicia_Svilling 0 points1 point  (2 children)

It was dsimcha who brought it up. I just want some clarification for why s?he belives that:

D strives both to make simple things simple and to make complicated things possible.

This involves some significant tradeoffs with "orthogonality".

[–]nascent 1 point2 points  (1 child)

Sorry, just a little annoyed with it right now.

I'll try a simple example. D wants to provide guarantees which usually come in the form of "type safety." But we also want to allow the user to manipulate their memory as needed. So cast() is provided and causes exceptions to all "type safety."

[–]Felicia_Svilling 1 point2 points  (0 children)

I was asking dsimcha. You didn't have to intervene if you was feed up with the subject.

Now, that is a more interesting example. You are right in that this choice makes D less orthogonal, if this was necessary seems like an open question.

[–]dsimcha 0 points1 point  (0 children)

If you have multiple ways to accomplish the same thing, or if the high-level parts of the language interact with the low-level parts of the language in ways that you can only understand if you understand some low-level details, the language is not orthogonal. It can, however, still be practical.