Странно. В принципе, сильно заумный денежный тип делать смысла нет - все равно все варианты учесть не получиться. Хватило бы 64-битного целого деленного на степень десятки, как это в дельфи сделано, и точной арифметики, выражаемой операторами, а не методами. Но без перегрузки останется только надется, что архитекторы языка в sun слезут с иглы и сделают :)
Я видел гораздо более сложные денежные типы, например, биржевые котировки иногда нужно обображать как 5 3/4. Плюс, проценты ещё бывают сложные, тут по-любому точности не хватит. 64-битное целое - это просто детский сад.
Столько в Sun Microsystems не курят, чтобы ввести перегрузку операторов:) В этом вся соль языка, чтобы не было возможносте, которые сделали бы код непонятным.
Сложные проценты и прочие хитрости обычно для каждого проекта свои, их наверно на уровень языка вытаскивать не стоит. Но тот пример, что там приведен - потеря точности при вычитании двух чисел - встречаться должен очень часто, чтобы для таких случаев сделать отдельный тип.
Перегрузка операторов может и излишество, но язык без простого денежного типа - это какое-то безумие.
Универсальный язык должен предоставлять фундаментальные типы данных, денежный тип, безусловно, к таковым не относится.
Возможно, для Delphi это и имело смысл, чтобы быстро клепать бизнес-приложения. Но где сейчас Borland-то? А для любого серьёзного приложения лучше сразу свой тип для денег создавать.
> язык без простого денежного типа - это какое-то безумие
Есть такое понятие, как "виртуальная машина". В виртуальной машине только базовые понятия. Даже String это просто крутой объект.
Вы можете смеяться, но валюта -- это наворот и нужна далёким от бухгалтерии людям довольно редко. Люди пользуют или double, или long (при отображении делят на 100). Я в курсе о межгалактической проблеме округления копейки, но вообще-то западные люди жизнь тратят не на подобные долбоебизмы. В банках м.б. и тратят, но остальные нет.
Насчёт перегрузки операторов -- есть компилятор от Роджера Бэкона из ИБМ, там от много ништяков пореализовал. Закомпиляй в .class и тащись. Вообще Java не оптимальный уровень решения бухгалтерских задач, есть куча поверх него интерпретаторов с перегрузкой чего хошь. Перегрузку они принципиально отказываются делать, опыт C++ показал злоупотреблятство и чреватость.
no subject
Date: 2006-08-03 07:07 pm (UTC)Перегрузки, конечно, нет.
no subject
Date: 2006-08-03 07:16 pm (UTC)Но без перегрузки останется только надется, что архитекторы языка в sun слезут с иглы и сделают :)
no subject
Date: 2006-08-03 07:22 pm (UTC)Столько в Sun Microsystems не курят, чтобы ввести перегрузку операторов:) В этом вся соль языка, чтобы не было возможносте, которые сделали бы код непонятным.
no subject
Date: 2006-08-03 07:29 pm (UTC)Перегрузка операторов может и излишество, но язык без простого денежного типа - это какое-то безумие.
no subject
Date: 2006-08-03 07:43 pm (UTC)Возможно, для Delphi это и имело смысл, чтобы быстро клепать бизнес-приложения. Но где сейчас Borland-то? А для любого серьёзного приложения лучше сразу свой тип для денег создавать.
no subject
Date: 2006-08-03 11:23 pm (UTC)Есть такое понятие, как "виртуальная машина". В виртуальной машине только базовые понятия. Даже String это просто крутой объект.
Вы можете смеяться, но валюта -- это наворот и нужна далёким от бухгалтерии людям довольно редко. Люди пользуют или double, или long (при отображении делят на 100). Я в курсе о межгалактической проблеме округления копейки, но вообще-то западные люди жизнь тратят не на подобные долбоебизмы. В банках м.б. и тратят, но остальные нет.
Насчёт перегрузки операторов -- есть компилятор от Роджера Бэкона из ИБМ, там от много ништяков пореализовал. Закомпиляй в .class и тащись. Вообще Java не оптимальный уровень решения бухгалтерских задач, есть куча поверх него интерпретаторов с перегрузкой чего хошь. Перегрузку они принципиально отказываются делать, опыт C++ показал злоупотреблятство и чреватость.