Мне кажется, что языки программирования, предназначенные для использования в науке и технике, неизменно странны по сравнению с языками общего назначения. Несколько примеров из головы:
- В Matlab каждая функция должна быть помещена в отдельный файл
- В R <- оператор присвоения, в отличие от = почти во всех других языках
- Matlab, R, Julia и другие все 1-индексированы
- Matlab использует% для комментариев, а не стандартный # или //
Конечно, у всех этих языков есть несколько конструктивных особенностей, которые фактически упрощают их использование в научных приложениях, например, более естественная матричная запись. Тем не менее, все они необъяснимо делают все эти странные выборы, которые не делают ничего проще, и их легко можно было бы избежать, если бы разработчики языка только что сделали то, что делают 99% других языков. Является ли причина, почему поставщик заблокирован? Отсутствие контакта с более широким сообществом разработчиков программного обеспечения? Что-то другое?
Я прочитал эту ветку и не нашел объяснения удовлетворительными. Тот факт, что R были разработаны как научный язык, не означает, что он должен был полностью игнорировать соглашения и использовать <- вместо =.
источник
Ответы:
И даже если мы будем судить только по стандартам ИТ ... Извините, какие стандарты вы имеете в виду? Вы пытались написать прогу в APL или SNOBOL? Эти два языка, ИМХО, САМЫЕ мощные в соответствующих областях (подсчет и строки). Но синтаксис ОЧЕНЬ странный (и эффективный). Чтение строки кода APL может занять несколько дней. С другой стороны, такая линия - серьезный кусок SW. Вы вернетесь в Матлаб со слезами облегчения.
Что касается "=", у многих людей есть проблемы, которые нужно привыкнуть, что это не равенство, а назначение. Кстати, в Паскале это равенство и присваивание ": =".
И вы действительно думаете, что == для равенства более естественно? Напротив, смешивание = и == является НАИБОЛЕЕ распространенной ошибкой в программировании на C, это происходит очень часто даже в современных IDE с их автоматическим управлением.
Про индексирование от 1 - это единственное естественное. Когда вы были ребенком, вы выучили стихи и песни, где вы сосчитали: один, два, три ... А не 0,1,2 ... В школьной математике мы учились, что отсчет начинается с 1, а этот 0 не относится к натуральным / счетным числам. Только с определением функций приходят неестественные индексы. В конце концов, 0 был изобретен через много тысяч лет после того, как наш предок поднял палец вверх.
«0-старт» было проще реализовать, и сразу после появления в Си он попал в ИТ-практику. Но в Фортране, первом языке, используется 1-индексирование. То же самое с другими языками доиндустриальной эпохи.
И да, я прочитал статью Dyjkstra о естественности отсчета на основе 0. И совершенно не согласен с его аргументацией. Для музыкантов это естественно. И даже 0 энтузиастов, которые создают компиляторы C и Java, считают строки кода, начинающиеся с 1!
источник
Индексирование от 1 не странно, это совершенно нормально и ожидаемо, за исключением программистов , потому что они были обусловлены ожиданием отсчета на основе 0 от C (что было обусловлено свойствами архитектуры процессора).
Комментарии обозначаются по-разному, на многих языках; нет нет стандартного способа, каждый язык выбирает символ или орграф , который еще не принят.
Назначение также является странной и непонятной концепцией, за исключением программистов ; большинство людей не заботятся о том, является ли это
=
или,:=
или<-
, они изо всех сил пытаются понять значение (и для них, на самом деле, лучше не использовать=
, потому что это подчеркивает, что присваивание не является равенством - наиболее распространенным препятствием для непрограммистов понять код).Короче говоря, языки программирования, предназначенные для людей, отличных от профессиональных программистов, выглядят по-разному, потому что люди, которые их используют, больше всего хотят этого.
источник
Есть три проблемы:
Теперь к вашим конкретным моментам:
Я не знаю Matlab, поэтому я не могу комментировать требования организации файлов. Обратите внимание, что Java хочет, чтобы вы использовали один файл для публичного класса.
В R также
=
может использоваться как оператор присваивания. Обратите внимание, что ему нужно несколько операторов присваивания<-
и<<-
для работы с его концепцией области видимости (<<-
присваивает символ во внешнюю область вместо создания нового символа внутри функции). Стрелки могут быть использованы в другом направлении тоже, что делает потенциально более чистый кодcomplex_calculation() -> x
.Индексирование на основе 1 является стандартом в математике, и это то, что пользователям Matlab и R удобнее, чем C. Юлия следует за Matlab, чтобы иметь лучшую кривую обучения.
%
для комментариев также используется в TeX / LaTeX. Это#
соглашение только от языков сценариев Unix и их потомков.Вы также игнорируете, что «настоящие» языки программирования имеют много странных частей. Почему Схема не используется
=
? Вместо:Почему C использует
*
для разыменования, когда очевидно, что каретка^x
более распространена в других традициях?источник
Я думаю, это зависит от вашего знакомства с другими языками. С верхней части моей головы:
источник
<!-- ... -->
. Знак процента используется для кодирования URL:http://example.com/()
становитсяhttp://example.com/%28%29
.