Переписал git-parse-commits c Питона на Котлин. Теперь можно сравнить:
- python: https://github.com/stepin/git-parse-commits/blob/1.0.2/git-parse-commits
- kotlin: https://github.com/stepin/git-parse-commits/blob/2.0.0/git-parse-commits.main.kts
Размер получился примерно одинаковый (и по строкам, и по кол-ву байт).
Kotlin докер меньше (но не сильно):
- python: 1.05GB
- kotlin: 803MB
Преимущества Kotlin:
- строгая типизация: проще писать, читать и поддерживать
- лучше работа с коллекциями: проще писать, читать и поддерживать
- зависимости можно указывать в самом файле скрипта и они сами скачиваются (в Python это целая отдельная история с глобальными пакетами или venv)
Преимущества Python:
- есть по умолчанию практически во всех операционных системах Linux и macOS
- быстро стартует (моментально и 2 секунды на данном примере – это уже собранный и со скаченными зависимостями).
- есть ощущение, что знает большее кол-во людей, чем Kotlin. Соответственно, им будет комфортнее обновлять скрипт.
Временные недостатки Kotlin:
- все еще приходится весь скрипт держать в одном файле. Блокируется тем, что
@file:Import
еще не работает в Kotlin 2.0.0, ждем обновлений. - непонятно как писать unit-тесты. Аналогично зависит от
@file:Import
(чтобы в файл теста импортировать файл скрипта). Пока что интеграционные тести и отладка в IDEA. - потенциально можно собрать в native. Тогда будет запускаться быстро, но потеряется скриптовость (исходный код в самом файле – всегда можно посмотреть). Это хороший вариант для cli-утил. Сейчас опять же не работает со скриптами, только с обычным Kotlin-проектом, но, в целом, для cli обычный проект подойдет. Не ждем :).