Комментарии 39
Ряд экспертов убежден, что организациям вообще стоит заменить Java на более современные технологии: Python, JavaScript и Node.js.
Такие вот эксперты пошли.
В мире около 10 млн Java программистов, среднее число 5 млн за последние 10 лет. Их суммарный зарплата около 500 млрд $. Даже если взять коэффициент 5 на переписывание и 5% от написанного кода, то получится 5 млрд $, никто такие деньги тратить в здравом уме не будет.
Если 100% переписывать, то 1 трлн :-)
“ заменить Java на более современные технологии: Python, JavaScript и Node.js.” Как сказал бы мой дедушка, не смешите мои носки.
Пусть один хотя бы нормально в мультипоточность сначала сможет
Ряд экспертов убежден, что организациям вообще стоит заменить Java на более современные технологии: Python, JavaScript и Node.js
Особенно финансовым организациям:
nodejs:
0.1 + 0.1 + 0.1 == 0.3 // false
python:
from decimal import Decimal
number = Decimal("0.1")
number = number + number + number
print(number) # 0.3
#good... so far
print(number + 0.1) #runtime error
Поясню свою мысль:
В js нет типов для работы с валютами.
В python есть, но могут нести сюрпризы.
В java, оба примера (с использованием BigDecimal) просто не скомпилируется (что гарантирует безопасность)
BigDecimal number = new BigDecimal(0.1);
number = number.add(number).add(number);
System.out.println(number);
System.out.println(number.add(0.1)); // incompatible types: double cannot be converted to BigDecimal
P.S.
Самый читабельный и безопасный вариант, угадайте на каком языке :)
Console.WriteLine(0.1m + 0.1m + 0.1m == 0.3m); // true
var number = 0.1m;
number = number + number + number;
// Console.WriteLine(number + 0.1); // compile error
Console.WriteLine(number + 0.1m); // 0.4
Помимо работы с валютами и безопасности так же не хватает парсинга, форматирования и сравнения строк/дат с учетом культуры, многопоточности
В чем проблема подключить библиотеку Dinero.js ?
Ok. Будете использовать Dinero.js , а там баг. Что тогда? Извольте заплатить за приватный репозиторий NPM, делать форк, переустанавливать пакеты в куче компонентов и поддерживать это все.
Искать альтернативы NPM?
Или может просить девушку из Франции, которая поддерживает этот проект, пофиксить баг и зависеть от ее настроение и занятости?
Что будет, если Евросоюз придумает новую валюту, а мэинтейнер в декретном отпуске и ей глубого наплевать на обновление проекта?
Вы готовы доверять стороннему NPM пакету денежный процессинг в организации? А ваш начальник?
Вы хотите использовать новый крутой модуль для бухгалтерии, но выясняется что он, в свою очередь зависит не от Dinero.js , а от decimal.js, а третий, нужный вам компонент от moneysafe.
Что тогда?
Вендоры, конечно тоже не идеальны, но, согласитесь, вероятность факапа гораздо ниже, когда главная зависимость в вашем проекте входит в стандартную библиотеку.
Как любят говорить на Хабре, инструмент надо выбирать под задачу, а не наоборот.
В DineroJs 78 файлов и 9 в папке src.
И добавлять их надо будет в каждый проект этой несчастной организации.
DineroJs использует import/export, не забываем, что NodeJS поддерживает модули экспериментально.
Так что нужно будет это собирать.
У вас старая версия Babel или вообщем его нет. что тогда?
И еще тесты тоже нужно будет добавлять.
И еще 29 зависимостей добавить в devDependencies.
проблема не в том, чтобы собрать, а том, чтобы вообще не иметь таких проблем
Стандартная библиотека, официальная библиотека от коммерческой компании и pet-project с гитхаба — все это, разные, с точки зрения надежности, библиотеки.
Выбор делается исходя из того, насколько критичный для бизнеса функционал разрабатывают.
Для финансовых организаций, валютные вычисления — это критичный функционал. Ошибки могут стоит репутации и больших денег.
Можно обрабатывать деньги в копейках просто
При сложении/вычитании целых чисел с ошибками округления, ошибки складываются
При умножении некоторого числа с ошибкой округления на некоторый коэффициент ошибка также умножается на этот коэффициент.
Например, если у вас сумма получается умножением цены на количество, при этом цена получена с ошибкой округления до 0,5 копеек, то после умножения ее на 1000 литров (считаем цену за бензин, например) ошибка округления в сумме может достичь 50 рублей.
А вообще Java и C# — технологии ориентированные именно на корпоративного заказчика.
Вот и я о том же. Когда был студентом тоже повелся на тренд, что Java говно. Потом начал работать на джаве, и понял это один из языков который идеален для корпоративного уровня разработки. Все библиотеки, портированость, build systems, и экспрессивность языка позволяют компаниям с тысячами программистов работать вместе и сообща + быстрая адаптация для джуниоров.
Поддержкой OpenJDK 8 и 11 займется новая компания — разбираемся в ситуации