Понятное дело, что это мой личный блог, и потому этот дисклеймер в теории писать нет смысла, но на практике я всë равно напомню - всë, что я тут пишу, это мои личные мысли, если не указано обратное (что это факты или мысли кого-то другого, скажем).
Так вот, когда? TL;DR: никогда.
Длинный вариант: если вам прямо сейчас нужно что-то скомпилированное и ждать Rust 1.0 нет сил, а OCaml выучить нет времени, то ок, конечно же, right tool for the job и всë такое (впрочем, мне кажется, что вы себя обманываете).
Во всех остальных случаях - уже можно взять Rust, они перестали менять весь язык полностью, и он уже рабочий, либо возьмите уже OCaml, не настолько он отличается. Единственный плюс Go перед этими языками - что в нëм может разобраться Python-программист за один вечер.
Горутины с каналами? В Rust есть green
и std::comm
, в Ocaml’е есть Lwt
и
Async
. Типизация? Посмешище в Go типизацией назвать может только поклонник
Java 1.0. Даже архиконсервативная Джава обзавелась дженериками 10 лет
назад. Хендлинг ошибок? Одно из двух самых болезненных мест в Go, конечно. Не
сравнить с языками, где типизация позволяет их нормально хендлить и
обрабатывать, а не засорять весь код if err != nil
.
Что там еще про Go можно сказать? Что по скорости он не джава, конечно, и даже не кложура, но хотя бы памяти мало использует? Ну так и раст с окамлом тоже не самые прожорливые языки.
Можно вспомнить, что два из трëх моих самых популярных проекта на гитхабе - gostatic и goreplace - написаны на Go. Ну так это ошибка молодости, хех. Я программировал на питоне и окамл мне казался слишком страшным, а с го я разобрался за один вечер. Ну так я и пытаюсь предостеречь всех тех, кто может сделать ту же ошибку. Just don’t do it.
P.S. Почему OCaml, а не Haskell? Хаскель ленивый и сильно сложнее Окамла. Если есть желание, впрочем, тоже ок, наверное. Я не против Хаскеля, ни в коем случае, я против луддизма.