Я люблю программирование на языках, которые, похоже, ориентированы на хардкорных программистов. (Мои любимые - Python и D.) MATLAB ориентирован на инженеров, а R - на статистиков, и кажется, что эти языки были разработаны для людей, которые не являются хардкорными программистами и не думают, как хардкорные программисты. Я всегда нахожу их несколько неудобными в использовании, и в какой-то степени я не могу понять, почему. Вот некоторые проблемы, которые мне удалось выявить:
- (Оба): крайний акцент на векторах и матрицах в той степени, в которой нет настоящих примитивов.
- (Оба): сложность базовых манипуляций со строками.
- (Оба): Отсутствие или неудобство в поддержке базовых структур данных, таких как хеш-таблицы и «реальные», то есть параметрические и вложенные массивы.
- (Оба): Они действительно очень медленные даже по интерпретированным языковым стандартам, если только вы не наклонитесь назад, чтобы векторизовать свой код.
- (Оба): Кажется, они не предназначены для взаимодействия с внешним миром. Например, обе являются довольно громоздкими программами, для запуска которых требуется некоторое время, и, похоже, они не предназначены для облегчения написания простых программ с текстовым фильтром. Кроме того, отсутствие хорошей обработки строк делает файловый ввод-вывод практически невозможным, кроме очень стандартных форм.
- (Оба): кажется, что объектная ориентация имеет очень сильное впечатление. Да, вы можете сделать это, но это не кажется намного более идиоматическим, чем ОО в C.
- (Оба): Нет очевидного, простого способа получить ссылочный тип. Нет указателей или ссылок на классы. Например, я понятия не имею, как вы создадите свой собственный связанный список на любом из этих языков.
- (MATLAB): Вы не можете поместить несколько функций верхнего уровня в один файл, поощряя очень длинные функции и кодирование «вырезать и вставить».
- (MATLAB): Целые числа, очевидно, не существуют как тип первого класса.
- (R): Базовые встроенные структуры данных кажутся слишком высокоуровневыми и плохо документированными, и, кажется, никогда не выполняют то, что я ожидаю, учитывая мой опыт работы с подобными, но низкоуровневыми структурами данных.
- (R): документация распространена повсеместно и практически невозможна для просмотра или поиска. Насколько я могу судить, даже D, который часто выбрасывается за плохую документацию и все еще довольно альфа-иш, значительно лучше.
- (R): По крайней мере, насколько я знаю, для этого нет хорошей IDE. Опять же, даже D, довольно альфа-иш-язык с небольшим сообществом, справляется лучше.
В общем, я также чувствую, что MATLAB и R могут быть легко заменены простыми старыми библиотеками на более универсальных языках, если бы существовали достаточно полные библиотеки. Это особенно актуально в новых языках общего назначения, которые включают множество функций для авторов библиотек.
Почему R и MATLAB кажутся мне такими странными? Есть ли еще какие-то серьезные проблемы, которые могут сделать эти языки странными для программистов? Когда их использование необходимо, каковы некоторые хорошие советы по выживанию?
Изменить: я вижу одну проблему из некоторых ответов, которые я получил. У меня есть сильное личное предпочтение, когда я анализирую данные, чтобы у меня был один сценарий, включающий весь конвейер. Это подразумевает необходимость использования языка общего назначения. Я ненавижу писать сценарий, чтобы «очистить» данные и выплюнуть их, потом другой, чтобы прочитать их обратно в совершенно другой среде и т. Д. Я нахожу трения использования MATLAB / R для некоторых моих работ и полностью другой язык с совершенно другим адресным пространством и мышлением для остальных, чтобы быть огромным источником трений. Кроме того, я знаю, что существуют слои клея, но они всегда кажутся ужасно сложными и источником трения.