Проект ЯОС был как раз про сокращение/упрощение/безопасность/умеренную русификацию, исходники всё ещё открыты, и ввиду особенностей Оберона можно переводить код на русский по словарям даже с учётом наличия разных конфигураций. Код на Си на русский в общем случае автоматизированно перевести нельзя из-за препроцессора и способа сборки, поскольку количество возможных конфигураций бесконечно.. Я даже записал специальное видео про это: https://dzen.ru/video/watch/633de7ef67bfa13a96c9fc4e
Это - ещё одна причина, почему язык Си - плохой. Обычно в его защиту говорят, что это инструмент, так вот Си похож на инструмент. На тупой топор, слетающий с ручки. Тоже инструмент. Пользуйтесь, кому нравится такое.
Давайте рассмотрим примеры по обсуждаемому вопросу. Пусть мы пишем программу-переводчик. В ней есть понятия грамматики английского языка. Эти понятия наиболее адекватно выражаются именно на самом английском языке, ну, например, какое-нибудь "perfect continuos". Или же мы работаем на языке логического программирования и решаем задачку про john и maria, которую мы скопировали откуда-то извне. Да и вообще, любой пример кода, взятый извне, может содержать латиницу.
Дальше. Число пи. Конечно, можно допустить греческие буквы (и тогда будет та же проблема отличимости, что и в случае пары кириллица/латиница - совпадающих букв немало, например, буква омикрон - такой же кружочек). sin/cos. i, которое обозначает комплексную мнимую единицу. Формула E = mc^2.
Сами по себе латинские буквы в каком-нибудь лексере, т.е. например, буква_d = "d".
В том же переводчике понадобятся идентификаторы для особых слов, таких, как артикль the. Как лучше назвать такую сущность (класс или переменную)? АртикльThe или артикльТхе?
Запрет латиницы в одних только идентификаторах ничем не поможет, потому что ошибка в строковых литералах может иметь не менее тяжёлые последствия.
Реальный способ побороться с проблемой совпадения изображений букв - это сделать отличия видимыми. Я этот вопрос первый раз решил примерно 7 лет назад, путём добавления пункта меню "подчеркнуть латиницу" в своей тогдашней среде разработки clcon, на неё можно посмотреть вот в этом видео, хотя этот пункт там не демонстрируется.
https://dzen.ru/video/watch/66b6870069a32a2421151420
Также это решение внедрено в ЯОС, можно посмотреть тут:
https://dzen.ru/video/watch/63309e3a7820d94d2b11dc32
Другое решение (вполне рабочее) годится для любого шрифта и подразумевает смещение букв вверх или вниз от базовой линии. Текст получается "пьяным", но работать можно и ошибки ловятся чётко.
Далее, если языков более двух, то видимо нужна подсветка смен языка в тех случаях, когда эта смена не является самоочевидной. Т.е. в слове „еe“ подсветка нужна, а в слове „dд“ - нет. Это возможно реализовать чуть ли не на уровне самого шрифта, там есть какой-то хак для этого.
В этом году я наконец-то нарисовал шрифты, где кириллица отличается от латиницы и их можно применять вообще в любой системе и программе (и я такой шрифт поставил по умолчанию в консоли своего линукса)
https://tvoygit.ru/budden/dr_cyr
Да, они корявые, но я ими пользуюсь ежедневно и уже привык. Но ведь никто же не сделал лучше, все делают свои операционные системы, раскручивают ассемблеры, изобретают будущие языки программирования для всего света, строят стратегические планы, или, допустим, повторяют разработки, сделанные 50 лет назад, ради доказательства, что у них действительно есть яйца, а в голове - извилины. Есть извилины, есть, но маловато.
В общем, если подумать хоть чуть-чуть, то эта идея больше похожа на саботаж. Не знаю, кто это придумал, но явно с целью пародировать и довести до абсурда идею русификации.
Дальше у меня цензурные слова закончились, к сожалению, остались только матерные, поэтому я лучше закончу на этом.
Отредактировано БудДен (2024-10-17 11:25:37)