Цитата:
Сообщение от Azagthtot
О нет, только не перегрузка операторов....
а то будет
Вот смотришь в книгу и думаешь то ли это
a.out(8) то ли (int)a << 8....
|
Ну тут проблема либо в особо выпендрежистом разработчике, который сует перегрузку куда только можно и нельзя не документируя ничего, либо в читателе кода, который не удосужился посмотреть документацию на библиотеку и не знает внутренних договоренностей команды разработчиков, но уж точно не в возможности перегрузки операторов.
В принципе, на любом ЯП, если постараться, можно написать абсолютно неоднозначный и нечитабельный код, и проблема не в языке как таковом.
А Вы попробуйте на яве и на С++ написать код для поиска, всего-то навсего, корней квадратного уравнения, если изначально известно, что числа будут большими (4кбита, скажем, чтоб точности хватило для запуска ракет

), а потом прочитать тот и другой код. Программирование, оно не только рисование окошек и вываливание строк текста в лог, там и математика встречается
Код:
Double4k *x1, *x2, *a, *b, *c, *d;
.....
d = b * b - 4. * a * c;
x1 = ( -b - Double4k::sqrt( d ) ) / 2. / a;
x2 = ( -b + Double4k::sqrt( d ) ) / 2. / a;
С++ оставляет запись оригинальной и читабельной, почти все записано на языке математики.
Код:
Double4k x1, x2, a, b, c, d;
......
d = b.mul( b ).sub( new Double4k( 4.0 ).mul( a ).mul( c ) );
x1 = new Double4k( 0. ).sub( Double4k::sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).sub( Double4k::sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
А вот ява явно пытается научить нас литературному языку. Имхо, заставлять писать такой код математика - это садизм.
И, кстати, add/mul/sub/div - это не совсем в канонах названия методов на яве, если называть как положено, то будет еще более не читабельно
ЗЫ: опечатался в формуле на яве, интересно, сколько времени уйдет на поиск опечатки (я 4 раза код прочитал, пока нашел, хотя ошибка наибанальнейшая).