- 1
const double pi = acos(-1.0);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1000
const double pi = acos(-1.0);
В каждой посылке codeforces - участника shentianxiao.
P.S. Он - китаец
(ссылка на стандарт через часик)
Если кто-то думает что M_PI нет в MSVC++ то это неправда:
Как будто define точное значение задаёт.
ps В glibc M_PI тоже есть
А в военное время значение синуса может достигать четырёх.
Тем не менее.
Пункт 1. В этом коде ООП нет. и рассуждения про ООП в вашем тексте бессмысленны
Пункт 2. Далеко не всегда "толстая" стандартная библиотека - это хорошо. Скажем в качестве GUI в питоне есть tkiner - вещь неплохая но от Qt/GTK+ отстаёт и используется реже. Соответственно встаёт вопрос что она делает в стандартной поставке Python. Это только один пример. Стандарты де-факто зачастую удобнее. Особенно для таких языков как C/C++/Common Lisp, развитие которых регулируется ANSI/ISO - весьма нерасторопными организациями
Пункт 3. ООП в Java почти не отличается от такого в C++. Отличий три:
* Нет кейворда virtual зато есть final
* Всё наследуется от Object
* Нет множественного наследование
1 - е отличие - косметическое. Просто не надо жадничать время на виртуальные вызовы без надобности
2-е прекрасно компенсируется void * (я считаю что каст к Object и каст к void * одинаково ужасны)
3-е отличие делает OOP в Java более простым но не делает его иным принципиально
А про отсутвие в C++ больших стандартных библиотек - там есть зато более гибкие стандарты де-факто вроде Boost. Всё равно C++ для больших приложений где только стандартными библиотеками ни одного языка обойтись нельзя.
P.S. К тому же вы что, просто пришли в тему про C++ дабы обосрать C++. Толсто, толсто.
В С++ есть final как для класса, так и для виртуального метода. С++11.
Так что это даже не аргумент.
тут любой индус - дорогой заграничный гость
использование стандартной константы в принципе возможно оптимизировать компилятором, используя fldpi
любое расчетное или #define my_pi 3.14 это не позволяют в принципе.
int test(int a, int b){
return (++ a / b) + (a ++ % b);
}
если передать константы, то оно считает при компиляции и подставляет результат.
А если передать какие-то вводные значения, то в конечном коде выполняется только 1 операция деления.
а вообще я имел ввиду оптимизацию такого вида:
lea eax, pi
fld qword ptr [eax]
или
fldpi