Pull to refresh

Comments 39

Ряд экспертов убежден, что организациям вообще стоит заменить Java на более современные технологии: Python, JavaScript и Node.js.
Такие вот эксперты пошли.

Тут скорее перевод такой, в оригинале там по-другому написано

UFO landed and left these words here
Спасибо, что хоть PHP не предложили.
Не знаю, как там через 20-30 лет, но сегодня мы имеем дело с килотоннами легаси кода на java на самых разных корпоративных и не очень службах и приложениях. Какой же титанический труд надо вложить чтобы все это переписать под что-то другое?
Через 10 лет будут гигатонны кода.

В мире около 10 млн Java программистов, среднее число 5 млн за последние 10 лет. Их суммарный зарплата около 500 млрд $. Даже если взять коэффициент 5 на переписывание и 5% от написанного кода, то получится 5 млрд $, никто такие деньги тратить в здравом уме не будет.
UFO landed and left these words here
10 млн программистов * 50 000 тыс доларов * 10 лет писали ПО / 5 раз быстрее * 5% переписываем = 50 млрд.

Если 100% переписывать, то 1 трлн :-)
UFO landed and left these words here
У меня есть 2 проекта один на 9 месяцев, второй 1.5 года. Имея код, получалось ускориться где-то в 5-10 раз, осуществлялся перенос с С++ -> Java, Java -> C++.

Кажется просто, но есть нюансы платформы и всегда, что-то нужно улучшить.

“ заменить Java на более современные технологии: Python, JavaScript и Node.js.” Как сказал бы мой дедушка, не смешите мои носки.


Пусть один хотя бы нормально в мультипоточность сначала сможет

Питон более или менее может. Но там свои тараканы

И как часто многопоточность нужна? В Django на каждого клиента по процессу создается.
Ряд экспертов убежден, что организациям вообще стоит заменить 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
UFO landed and left these words here

Поясню свою мысль:
В 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

Помимо работы с валютами и безопасности так же не хватает парсинга, форматирования и сравнения строк/дат с учетом культуры, многопоточности

UFO landed and left these words here
В чем проблема подключить библиотеку Dinero.js ? Pythob тоже можно скомпилировать, для js можно инструмент проверки синтаксиса использовать.
В чем проблема подключить библиотеку Dinero.js ?

Ok. Будете использовать Dinero.js , а там баг. Что тогда? Извольте заплатить за приватный репозиторий NPM, делать форк, переустанавливать пакеты в куче компонентов и поддерживать это все.


Искать альтернативы NPM?


Или может просить девушку из Франции, которая поддерживает этот проект, пофиксить баг и зависеть от ее настроение и занятости?


Что будет, если Евросоюз придумает новую валюту, а мэинтейнер в декретном отпуске и ей глубого наплевать на обновление проекта?


Вы готовы доверять стороннему NPM пакету денежный процессинг в организации? А ваш начальник?


Вы хотите использовать новый крутой модуль для бухгалтерии, но выясняется что он, в свою очередь зависит не от Dinero.js , а от decimal.js, а третий, нужный вам компонент от moneysafe.


Что тогда?


Вендоры, конечно тоже не идеальны, но, согласитесь, вероятность факапа гораздо ниже, когда главная зависимость в вашем проекте входит в стандартную библиотеку.


Как любят говорить на Хабре, инструмент надо выбирать под задачу, а не наоборот.

Можно вручную js файл положить без npm. Можно обрабатывать деньги в копейках просто.

В DineroJs 78 файлов и 9 в папке src.
И добавлять их надо будет в каждый проект этой несчастной организации.
DineroJs использует import/export, не забываем, что NodeJS поддерживает модули экспериментально.
Так что нужно будет это собирать.
У вас старая версия Babel или вообщем его нет. что тогда?
И еще тесты тоже нужно будет добавлять.
И еще 29 зависимостей добавить в devDependencies.

В чем проблема собрать?

проблема не в том, чтобы собрать, а том, чтобы вообще не иметь таких проблем

Как будто в Java сторонние библиотеки вообще не используются.

Стандартная библиотека, официальная библиотека от коммерческой компании и pet-project с гитхаба — все это, разные, с точки зрения надежности, библиотеки.
Выбор делается исходя из того, насколько критичный для бизнеса функционал разрабатывают.
Для финансовых организаций, валютные вычисления — это критичный функционал. Ошибки могут стоит репутации и больших денег.

UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
Можно обрабатывать деньги в копейках просто

  1. При сложении/вычитании целых чисел с ошибками округления, ошибки складываются


  2. При умножении некоторого числа с ошибкой округления на некоторый коэффициент ошибка также умножается на этот коэффициент.



Например, если у вас сумма получается умножением цены на количество, при этом цена получена с ошибкой округления до 0,5 копеек, то после умножения ее на 1000 литров (считаем цену за бензин, например) ошибка округления в сумме может достичь 50 рублей.

И еще, используя копейки вместо рублей, вы снижаете диапазон допустимых значений на 2 порядка. Ошибки переполнения в отчетах за 5, 10 лет? Легко!

UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
Судя по тому что Javа хоронят каждый год, можно сделать вывод, что Java — это клевая технология.

А вообще Java и C# — технологии ориентированные именно на корпоративного заказчика.

Вот и я о том же. Когда был студентом тоже повелся на тренд, что Java говно. Потом начал работать на джаве, и понял это один из языков который идеален для корпоративного уровня разработки. Все библиотеки, портированость, build systems, и экспрессивность языка позволяют компаниям с тысячами программистов работать вместе и сообща + быстрая адаптация для джуниоров.

Насчёт экспрессивности(выразительность?) это вы погорячились.

Согласен, выразительность по сравнению с Kotlin и Swift слабее, но явно лучше, чем у C/C++ и прочих C-подобных языков.


С Java8, стало намного лучше, а если мигрировать на Kotlin вообще можно о всех недостоинствах забыть.

Можно сделать вывод, что на Java только старые проекты поддерживают.
Sign up to leave a comment.

Information

Website
1cloud.ru
Registered
Founded
Employees
31–50 employees
Location
Россия