Я люблю програмування мовами, які здаються орієнтованими на хардкор-програмістів. (Мої улюблені - Python and D.) MATLAB спрямований на інженерів, а R орієнтований на статистиків, і, схоже, ці мови були розроблені для людей, які не є хардкор-програмістами і не думають як хардкор-програмісти. Я завжди вважаю їх дещо незручними у використанні, і я певною мірою не можу поставити палець на чому. Ось деякі проблеми, які мені вдалося визначити:
- (Обидва): Надзвичайний наголос на векторах та матрицях настільки, що немає справжніх примітивів.
- (Обидва): Труднощі основної маніпуляції з рядком.
- (Обидва): Відсутність або незграбність у підтримці базових структур даних, таких як хеш-таблиці та "реальні", тобто тип-параметричні та нестабільні масиви.
- (Обидва): Вони дійсно дуже повільні навіть за тлумаченнями мовних стандартів, якщо ви не нахилитесь назад, щоб векторизувати свій код.
- (Обидва): Вони, здається, не розроблені для взаємодії із зовнішнім світом. Наприклад, обидві - досить громіздкі програми, які потребують певного часу, а запуск, здається, не призначений для спрощення запису простих програм з фільтруванням тексту. Крім того, відсутність хорошої обробки рядків робить введення / виведення файлів у будь-яких, крім дуже стандартних формах, майже неможливим.
- (Обидва): Орієнтація на об'єкт, здається, має дуже прикріплене відчуття. Так, ви можете це зробити, але це не набагато ідіоматичніше, ніж OO в C.
- (Обидва): Немає очевидного, простого способу отримання еталонного типу. Ні вказівників, ні посилань на клас. Наприклад, я не маю уявлення про те, як ви робите власний пов'язаний список на будь-якій з цих мов.
- (MATLAB): Ви не можете розмістити кілька функцій верхнього рівня в одному файлі, заохочуючи дуже довгі функції та кодування "вирізати та вставити".
- (MATLAB): Цілі особи, очевидно, не існують як тип першого класу.
- (R): Основні вбудовані структури даних здаються занадто високим рівнем і погано задокументовані, і, здається, ніколи не роблять те, що я очікую, враховуючи свій досвід роботи з подібними, але нижчими рівнями даних.
- (R): Документація розповсюджена по всьому світу і практично неможлива для перегляду чи пошуку. Наскільки я можу сказати, навіть D, який часто вибивається з-за поганої документації і все ще є досить альфа-іш, значно кращий.
- (R): Принаймні, наскільки я знаю, немає хорошого IDE для цього. Знову навіть, навіть D, досить альфа-мова з невеликою спільнотою, робить краще.
Загалом, я також вважаю, що MATLAB і R можуть бути легко замінені простими старими бібліотеками більш загальними мовами, якщо існували б достатньо всебічні бібліотеки. Особливо це стосується нових мов загального призначення, які містять безліч функцій для бібліотечних авторів.
Чому R і MATLAB здаються мені такими дивними? Чи є якісь основні проблеми, які ви помітили, які можуть зробити ці мови незвичайними для хардкор-програмістів? Коли їх використання необхідне, які хороші поради щодо виживання?
Редагувати: Я бачу одне питання з деяких відповідей, які я отримав. У мене є сильні особисті переваги, коли я аналізую дані, мати один сценарій, який включає весь конвеєр. Це означає, що потрібно використовувати мову загального призначення. Я ненавиджу писати сценарій, щоб "очистити" дані і виплюнути їх, потім інший, щоб прочитати їх назад у зовсім іншому середовищі і т. Д. Я вважаю, що тертя використання MATLAB / R для деяких моїх робіт і повністю інша мова з абсолютно іншим адресним простором і способом мислення для решти є величезним джерелом тертя. Крім того, я знаю, що існують шари клею, але вони завжди здаються страшенно складними та є джерелом тертя.