Объективно, версия 8.6 имеет массу недостатков. Части из них, к сожалению, не лишена и версия 8.5. Самая большая моя претензия - к скорости: в 8.6 они отказались от использования стэка вообще и пихают все в кучу. Естественно, это никоим образом положительно на скорости не сказалось. Встроенная команда [clock] еще с 8.5 написана наполовину на тикле, в 8.4 была на Си, естественно, это тоже отвратительно сказалось на производительности. В частности, было очень неприятно обнаружить одним прекрасным днем, что моя утилита разбора логов, активно использующая эту команду, стала работать примерно в 100(!) раз медленнее. Пришлось переписать все на обычную арифметику с unix timestamp и изменить формат логирования - т.е. они свой геморрой с портабельностью (позиционировалось это именно так), превратили в мой геморрой с оптимизацией. В 8.6 [tailcall] не оптимизирует хвостовую рекурсию, код с ним работает медленнее, чем без. Тут я вообще с трудом понимаю, почему нельзя было сделать оптимизацию хвостовой рекурсии на уровне компиляции в байткод, зачем для этого отдельный вызов. Что у них происходит с багзиллой - я уже запарился разбираться, каждый чертов год она какая-то новая и хрен поймешь, как туда завести баг (это касается в основном tcllib). Язык - изумительный; концепции год от года все больше эволюционируют; однако, реализация ряда features "оставляет желать". Коммьюнити небольшое, зато высокопрофессиональное - это плюс. Но то, что оно небольшое, отрицательно сказывается на количестве доступных библиотек. Часто приходится изобретать свою реализацию, и хорошо, если это что-то простое. И все же, другого насколько же гибкого языка я не знаю.
|