metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2006-08-03 10:01 pm

Java

Это что, получается, в Java нет денежного типа с математическими операторами, и перегрузки операторов тоже нет?
Они там в Sun норкоманы что ле все?

[identity profile] yakov-sirotkin.livejournal.com 2006-08-03 07:07 pm (UTC)(link)
Денежный тип очень сложным может быть: разные валюты, округление и всё такое...

Перегрузки, конечно, нет.

[identity profile] metaclass.livejournal.com 2006-08-03 07:16 pm (UTC)(link)
Странно. В принципе, сильно заумный денежный тип делать смысла нет - все равно все варианты учесть не получиться. Хватило бы 64-битного целого деленного на степень десятки, как это в дельфи сделано, и точной арифметики, выражаемой операторами, а не методами.
Но без перегрузки останется только надется, что архитекторы языка в sun слезут с иглы и сделают :)

[identity profile] yakov-sirotkin.livejournal.com 2006-08-03 07:22 pm (UTC)(link)
Я видел гораздо более сложные денежные типы, например, биржевые котировки иногда нужно обображать как 5 3/4. Плюс, проценты ещё бывают сложные, тут по-любому точности не хватит. 64-битное целое - это просто детский сад.

Столько в Sun Microsystems не курят, чтобы ввести перегрузку операторов:) В этом вся соль языка, чтобы не было возможносте, которые сделали бы код непонятным.

[identity profile] metaclass.livejournal.com 2006-08-03 07:29 pm (UTC)(link)
Сложные проценты и прочие хитрости обычно для каждого проекта свои, их наверно на уровень языка вытаскивать не стоит. Но тот пример, что там приведен - потеря точности при вычитании двух чисел - встречаться должен очень часто, чтобы для таких случаев сделать отдельный тип.

Перегрузка операторов может и излишество, но язык без простого денежного типа - это какое-то безумие.

[identity profile] yakov-sirotkin.livejournal.com 2006-08-03 07:43 pm (UTC)(link)
Универсальный язык должен предоставлять фундаментальные типы данных, денежный тип, безусловно, к таковым не относится.

Возможно, для Delphi это и имело смысл, чтобы быстро клепать бизнес-приложения. Но где сейчас Borland-то? А для любого серьёзного приложения лучше сразу свой тип для денег создавать.

[identity profile] volodymir-k.livejournal.com 2006-08-03 11:23 pm (UTC)(link)
> язык без простого денежного типа - это какое-то безумие

Есть такое понятие, как "виртуальная машина". В виртуальной машине только базовые понятия. Даже String это просто крутой объект.

Вы можете смеяться, но валюта -- это наворот и нужна далёким от бухгалтерии людям довольно редко. Люди пользуют или double, или long (при отображении делят на 100). Я в курсе о межгалактической проблеме округления копейки, но вообще-то западные люди жизнь тратят не на подобные долбоебизмы. В банках м.б. и тратят, но остальные нет.

Насчёт перегрузки операторов -- есть компилятор от Роджера Бэкона из ИБМ, там от много ништяков пореализовал. Закомпиляй в .class и тащись. Вообще Java не оптимальный уровень решения бухгалтерских задач, есть куча поверх него интерпретаторов с перегрузкой чего хошь. Перегрузку они принципиально отказываются делать, опыт C++ показал злоупотреблятство и чреватость.