Thread overview
Language Features for Management on Dr. Dobb's
Jul 15, 2008
Walter Bright
Jul 15, 2008
Markus Koskimies
Jul 20, 2008
Walter Bright
Jul 22, 2008
Jul 23, 2008
David Wilson
July 15, 2008
July 15, 2008
On Tue, 15 Jul 2008 15:42:02 -0700, Walter Bright wrote:


1) I agree, that programming languages are for programmers, not for management. That is the whole starting point! At my work, I use the languages, environments and coding standards the employer wants me to use; at freetime, I use Linux, Python, D and Java, in that order.

2) I disagree with the fundamental purpose of coding standard. Anyone being involved in a big project knows what they are for; they are not for being right or wrong, they are there just for psychological reasons.

The very definite basics of those psychological reasons are that currently humans make the code (whenever this changes, the rules change too). That sets up constrains, that you cannot solve at formal level. From compiler point of view, things like (a) indentations, (b) comments and (c) variable namings are just totally irrelevant.

The main purpose of coding standards are that when you have 100 programmers, all of them make similar code. What is the purpose of that? The main purpose is, that all the 100 programmers understand AS QUICKLY AS POSSIBLE the outcome of the other 99 programmers. There are of course other purposes of standards, e.g. you might have scripts that eat just a definite way of making things, and they normally hold "lessons-learned" - knowledge of the smartest programmers in the company, but the main purpose is still, that when you look the (foreign) code of those 99 other programmers, it is immediately familiar to you and it is something that you might have also written.

To understand this issue, consider two infinite loops (written in D-like pseudolanguage):

1) First one:

	for(;;) { ... }

2) Second one;

	long f(int x) { return (x*2) -2 + math.pow(x, 2); }
	for(; ((uint)-2) > f((2*2 + 1, true)) { ... }

Which one is easier to follow? From compiler point of view, they make no difference. Compiler easily detects - or at least smart compiler does - that the second one is formally equivalent to infinite loop. But humans does not really work that way.

As said the purpose of the programming standards is not to be perfect, not to be complete or not to be even good. Their fundamental purpose is that when you have learned it, every piece of (very large) code look like you have written it by yourself. You understand quickly what the code is expected to do and - mor eimportantly - you quickly recognize "odd" structures that require more time to think about! I personally think that there it is wasted time for me to try to understand programs that are more complex (at source level) than they should be. That all just tells to me that the one who made the program is not professional, and that the problem he/she tried to solve was too complex to him/her.

When at freetime, I occasionally amuse myself by writing obfuscated codes; I try to make some things happening in that way that it is very hard to understand. That is only playing around; normally, I want to make code that I myself understand one month later. Normally, I include "usage ()" function to my codes. Normally, I use safe variants of function calls to make my own precious program to halt before it makes some stupid (or does not do anything what is far more frustrating when you have forgot how to use your own program!). Normally I put my coins to compiler to optimize away structures that makes the code easier to understand but which are not optimal for processors. Normally, I put my coins to algorithmic optimizations, not to try to optimize one loop; I have done that, being there, and found it not profitable - not for me, not for others.
July 20, 2008
Walter Bright wrote:

Reddit link:
July 22, 2008
Walter Bright wrote:

> Reddit link:

Is the absence of comments from managers a hint for phb'edness?

Interestingly Borland just comes up with a so called Borland Management solution, BMS: management/index.html


Maybe some knowledge of some types of disagreeing and their relation can turn out to be useful:
July 23, 2008
On Tue, Jul 15, 2008 at 11:42 PM, Walter Bright <> wrote:


For anyone else who keeps missing Walter's articles amidst the .NET / Ruby dross that is the Code Talk feed, try this filtered one instead: