Who decided, and basing on what concepts, that `switch` construction (in many languages) has to be, like it is? Why do we have to use `break` in each statement? Why do we have to write something like this:

 switch(a)
 {
 case 1:
 result = 'one';
 break;
 case 2:
 result = 'two';
 break;
 default:
 result = 'not determined';
 break;
 }

I've noticed this construction in PHP and JS, but there are probably many other languages that uses it.

If `switch` is an alternative of `if`, why we can't use the same construction for `switch`, as for `if`? I.e.:

 switch(a)
 {
 case 1:
 {
 result = 'one';
 }
 case 2:
 {
 result = 'two';
 }
 default:
 {
 result = 'not determined';
 }
 }

It is said, that `break` prevents execotion of a blocks following current one. But, does someone really run into situation, where there was any need for execution of current block and following ones? I didn't. For me, `break` is always there. In every block. In every code.