Чё-то ввязался в
Advent of Code на Джулии. Ощущается почти как читинг -- Джулия идеально заточена именно под решать задачки. Ну или "задачи", если "задачки" кажется слишком пренебрежительным. Нет, совершенно не обязательно вычислительные (хотя да, для этого там есть всё и ещё немножко), комбинаторные тоже прекрасно идут (сегодняшняя была про покерные расклады). В отчуждаемый эксплуатируемый код этого, наверное, не надо, но вот решить (и поделиться решением с коллегой) -- лучше не бывает. Заодно убедился, что да, считать надо с единицы, как это живые люди делают. Точнее, осознал, почему аргументы за "считать с нуля" осмысленны, но ограниченны. Но об этом потом.
Основная претензия к языку (точнее, реализации) пока -- убогие сообщения об ошибках. Как в XX веке, блин! Давно же уже научились разумно угадывать, где именно программист опечатался, а не указывать самое дальнее место, до которого парсер ещё верил, что всё обойдётся (обычно несколько строками позже). Это про синтаксические. Про времени выполнения -- ну хотя бы строчка правильная и весь стектрейс, но "не один метод не подошёл из этих пятнадцати кандидатов (здесь список)" -- общая беда всех языков с перегрузкой, в плюсах и хаскеле точно так же.
Эта типа олимпиада устроена забавно: в день даётся две задачки, и, чтобы получить вторую, надо сначала решить первую. И вторая обычно "слегка" изменяет условия первой так, чтобы наивные решения работать перестали. Но это в теории, а на практике
смотрим статистику: золотые звёздочки -- те, кто решили обе задачи, серебряные -- только первую (со второй не справились). Серебряных довольно много в день пятый: там действительно надо было придумать алгоритм, не являющийся тупым аккуратным переписыванием условий задачи. Не то чтобы сложный, но всё-таки на подумать. А в день шестой -- наоборот. Автор явно думал, что перебрать восьмизначное число вариантов -- слишком долго, и надо придумать алгоритм получше (решить квадратное уравнение :-). Ага, щаз. Меньше секунды весь перебор на процессоре десятилетней давности. Это даже не "трясти", это "разок пнуть". Никто и не стал заморачиваться. :-)
... Я знаю, что так правильно, но это как-то неправильно ...