Comments 45
Другое дело, что, как правило, для записи используется латиница.
Во-вторых, заимствованные слова в естественных языках приспосабливаются к уже существующей грамматике и фонетике. Если же язык искусственный, создающийся с нуля, то нет никакой необходимости в приспособлении.
В-третьих, само выражение «основной код программы пишется на английском языке» будет истинным только в том случае, если кто-нибудь напишет компилятор английского языка.
Здесь все-таки не гуманитарии собрались, поэтому стоит использовать более строгие и точные выражения.
Программа пишется на языке программирования, но в программном коде идентификаторы (переменные, функции, классы) в подавляющем большинстве коллективов принято называть именно на английском. Или, точнее сказать, используя лексику английского языка, поскольку правила грамматики, артикли и т.п. часто игнорируются.
Например, пишем class IncomingCurrencyPayment {}, а не class ВходящийВалютныйПлатеж {}
Я готов принять, что ограниченный закрытый список неизменных ключевых слов языка типа if, then – это заимствования из английского. Но, с моей точки зрения, было бы лукавством утверждать, что слово IncomingCurrencyPayment – это слово языка JavaScript, а не английское словосочетание. Можно сказать это, наплевав на семантику, но тогда вы утрачиваете полезное различение, затрудняя самому себе обсуждение вопроса.
но ведь у вас они тоже не могут быть на другом языке.
На каком «другом языке» не могут быть команды SPL? Другом по сравнению с каким? Я подробно описал, что в SPL ключевых слов нет совсем, ни на каком языке. Поэтому что вы имеете в виду под «другим языком»?
- Python (и многие другие) тоже позволяет избежать микса — используйте только ланиницу и микса не будет;
- вы избегаете микса ценой замены слов известных довольно солидной части человечества на понятные только избранным закарючки.
«Особенность» — это очень хороше слово, чтобы описать данную ситуацию.
Я вам показал, что Python здесь не сравнить с SPL, потому что в SPL это возможно, а в Python — нет.
Итого что мы имеем:
- Python со своей невозможностью отойти от одного из самых широко распространенных в мире языков;
- SPL с невозможностью отойти от одного из самых нероспрастраненных в мире языков.
В вашем языке можно создать микс из закорючек и любого другого языка, в Python можно создать микс из английского и любого другого языка. В чем принципиальная разница? Вы одну невозможность заменили другой и что дальше-то?
Вряд-ли в моей статье вы найдете осуждение чего-либо. Наоборот в ней описаны возможности.
Итого в остатке мы имеем просто замену слов известных большей части человечества, на непонятные знаки со смыслом не известным большей части человечаства только из соображения «избегания латино-иностранного микса».
Почему это не в "ненормальном программировании"? ;)
А еще есть куча похожих символов. Русская и латинская 'a' например. И что если кому-то придет светлая мысль смещать символы разных языков в коде?
А еще есть куча спецсимволов. Математических, технических, смайлики наконец.
А еще есть управляющие символы, есть всякие хитрые пробелы и прочая муть.
Короче, я глубоко убежден, что использование юникода в идентификаторах языков программирования должно быть запрещено специальной резолюцией Организации Объединенных Наций.
А еще есть куча похожих символов. Русская и латинская 'a' например. И что если кому-то придет светлая мысль смещать символы разных языков в коде?
Уже сталкивался с таким, будучи студентом, кстати) Не вспомню сходу сайт, но там был фрагмент кода на C#, который после copy-paste упорно не компилировался с неадекватными ошибками. Оказалось, что буквы 'о' и 'а' рандомно то кириллица, то латиница.
До сих пор не пришел к выводу, это было сделано сеошниками для соблюдения уникальности, где-то прошло через ПО для обхода антиплагиат-систем, или просто следствие специфического чувства юмора автора
Однако, смею добавить, что делать так нужно только в самом крайнем случае.
Поддержу. В моей практике разрабатывал приложение на тему статистики населения, где все крутилось вокруг 4-х гиганстких структур данных по 100+ полей с глубоким вложением. Все поля в ТЗ именовались в соответствии с нормативной базой в виде многословного русского канцелярита, но который всем знакомым с предметной областью знаком и понятен.
И мы для каждого поля пытались придумать перевод на английский. Перевод многих полей оказался неочевидный и/или непривлекательный. По итогу, пришел к выводу, что смысла этот перевод не принес никакого. Пожалуй, стоило оставлять кириллицу (ну или на худой конец транслит).
Еще со школы мы приучены писать
Ещё со школы мы приучены, что sin(x) — это латынь =) Сюда же стороны треугольника А(а) B(б) С (ц)
«Add».Length == «Add».Length
Забавно. Как только сообщество некоего языка узнаёт, что в нём нельзя использовать юникод в идентификаторах, начинаются дикие вопли. При этом то же сообщество считает плохим код с не-английскими идентификаторами, и даже транслит.
Вообще же, как по мне, ключевые слова и идентификаторы должны быть только латиницей, чувствительные к регистру, но при этом с запретом иметь два идентификатора, отличающиеся только регистром букв. А в идеале ещё и линт иметь, считающий расстояние Хэмминга.
Можно использовать шрифты с явно различающимися нулями, 1/l/I, но это всё равно не поможет в условиях русского o на месте английского, так что тест будет разумным.
Постороннее замечание: господа программисты, прежде чем назвать что-либо трехбуквенным сокращением, трижды подумайте, не будет ли коллизии с уже существующими аббревиатурами!
Кажется, я только что доказал, что P ⊂ NP
UPD: Но хабр мои эмодзи злобно изуродовал, доказывая, что поддержки unicode до сих пор нет.
А ведь там было доказательство…
Не используйте юникод для важных вещей.
Кстати нужно отметить, что хабр хорошо отобразил код и на русском, и на китайском языке.
Применение национальных языков в программировании на SPL