ну, вот ROOT очень хорош для всего подобного, ну и scikit тоже неплох весьма. Тут тебе и графики и визуализация всего и вся. Не даром ученые питоном упарываются в последние года
Про ROOT почитал сейчас, я бы не когда в здравом уме такое не выбрал для работы. Это ж специфический мутант из CERN, какой-то скриптовый язык. Ну уж нет.
Ну, давай по порядку.
Начнем с определений:
- Scripting - (скриптование, скриптовое применение ЯП) - автоматизация рутины в некой среде, часто скрипты пишутся в стиле writeonly, читабельность не особо важна. Также, поскольку скрипты сами по себе не содержат реализацию каких-то сложных алгоритмов, а наборот просто связывают и вызывают различные функции данной среды, то нет жестких требований к производительности самого скрипта
- Command language - такой ЯП который предназначен в первую очередь для исполнения в command line interface. Вообще говоря, таковой язык не обязан даже быть полным по тьюрингу. Требования к производительности реализации ещё ниже чем в случае скриптинга, зато выше требования к компактности записи - часто хочется уложиться в одну строчку.
- REPL - Read–eval–print loop, специфический workflow для разработки ПО. Поскольку используется для разработки ПО, то REPL применяется к general purpose languages а не к command languages, однако оказывается, что если данный ЯП неплохо годится для REPL стиля разработки, то этот ЯП может быть использован как command language для какой-либо среды. Обычно он хуже чем специализированный command language для данной среды, но зато достигается универсанализация на всех уровнях - от cli до написания компонент для данной среды.
А теперь вот перечень того, чего не бывает:
- Скриптовый язык - написание скриптов это применение, а не свойство языка как такового. Правда обычно для скриптового применения данного ЯП в данной среде желательно иметь возможность засунуть исполнения скрипта в песочницу, чтобы криво написанный скрипт не нарушил работоспособность всей среды, но при этом обеспечить максимально прозрачное взаимодействие скрипта со средой. В песочницу засовывается абсолютно любой язык, хоть С++ хоть асм, хоть пролог, другое дело что для некоторых языков имеющиеся реализации уже сразу пригодны для организации песочницы.
- Интерпретируемый язык - это нюансы конкретной реализации, а не свойство языка
- Компилируемый язык - это опять нюансы конкретной реализации, а не свойство языка
Ну, а теперь разберемся: в ROOT используется обычный С++ (современный естественно, а не стандарта 98 или 2003 годов).
В качестве REPL для C++ там выступает cling, который базируется на clang и всё что ты там вводишь компилируется в нативный код на лету (так называемая jit-компиляция).
Итоговая производительность того, что крутится в REPL (и не было оформлено в виде либы) четко на уровне clang c опцией компиляции -O0 (но обещают допилить и высокие уровни оптимизации).
А чтобы в REPL веселее жилось, в cling добавили пару специфичных именно для REPL мелких расширений.
Это язык никак не меняет, и по сравнению с тем, что в Microsoft Visual Studio сделали с С++, это вообще фигня (причем фигня, которая используется и работает только в сеансе REPL).
Итого, в ROOT для написания модулей системы используется С++, для скриптинга используется C++ (без организации песочницы, скрипт может обрушить среду), разработка идет в стиле REPL, и в качестве command language опять используется C++. На всех этапах всё компилируется в машкод.
Таким образом, никаких мутантов, обычный чистый С++. А с учетом того, что современные С++ компиляторы легко умеют генерировать проверку выхода за границы массивов... :-)
Для сравнения в ББ проникновение КП не столь всеобъемлюще: в качестве языка для компонент используется КП, для скриптинга используется КП (без организации песочницы - скрипт может обрушить среду), а вот в качестве command language используется уже отдельный язык с реализацией в виде интерпретатора.
К тому-же лицензия GPL, значит придется открывать коды. Так дело не пойдет.
Насколько я помню, когда (долгое время) ББ был GPL only, это никому из русского сообщества не мешало :-)
Ну а на самом деле же, во-первых там только часть либ под GPL, остальное под LGPL (что, соответственно не принуждает что-либо раскрывать когда-либо). Во-вторых открывать исходники ты обязан только если ты кому-то отдаешь бинарь, и он попросил тебя ещё и исходники показать ему. Открывать исходники всему свету ты не обязан. И не обязан их показывать кому-то если ты просто используешь GPL-код и бинари не распространяешь.
Кроме того, в ROOT тебе же доступены абсолютно все либы на C и С++. Под всеми лицензиями (а всяких либ для окучивания экспериментальных данных на с++ написано мноого). Не нужно абсолютно никаких усилий, чтобы из cling их интерактивно дёргать. То же и с построениями графика и вообще работы с графикой. Я помнится из этого REPL с SDL работал. Написал строчку, ткнул Enter - появилось окошко. Еще написал и ткнул - в окошке что-то нарисовалось.
Про поголовное увлечение Питоном, среди моих коллег это только альтернатива Perl в силу хорошей поддержки регулярных выражений и хэштаблиц. Ну и всякие недоучки еще его любят, те кто не осилил ничего серьезного недоучился на первых курсах все время рассуждают про Питон, но при этом ничего не делают.
Я не знаю что там не так с твоими коллегами, но парни которые пишут scikit, scipy, numpy и так далее, явно знают как теорию, так и практику, и активно работают. Кроме того, мой знакомый по работе много и плодотворно занимался машинным обучением и подобными вещами, как в научной, так и в прикладной области - основной инструмент это таки питон с соответствующими либами и тулзами. В том же яндексе именно питон в основном используется для анализа данных.
Хотя, возможно, они все конечно недоучки :-)