Русский язык в программировании / Хабр
Судя по результатам голосований (на compiler.su и даже здесь на Хабре) идею программирования на русском поддерживает не так уж и мало людей.
В данной статье приводится мой краткий обзор некоторых языков программирования и решений, которые позволяют программировать на русском.
Язык 1С: Предприятия
Несмотря на то, что это самый популярный язык программирования с русскоязычным синтаксисом, я его рассматривать не буду, дабы не разводить холивар. По аналогичной причине я не буду рассматривать OneScript и Перфолента.Net (последний хотя и является самостоятельным языком программирования, но его синтаксис основан на встроенном языке 1С: Предприятия).
1C: Исполнитель
Какая-то странная смесь C# [с его Console.Write()
], Java [var obj = new Object()
] и наверное Julia[с ;
вместо end
].
Также, судя по всему, разработчики 1С: Исполнитель вдохновлялись Scala/Kotlin, выбрав ключевое слово знч
для неизменяемых переменных. ИМХО, слово пост
конст
уже занято).Кроме того, неудачно выбраны ключевые слова попытка
, поймать
, выбросить
.
Выбор ключевого слова метод
\method
для объявления функций также вызывает вопросы.
Впрочем, есть и хорошие решения, которые вопросов не вызывают. Например, создание массива записью [1, 2, 3]
, множества записью {1, 2, 3}
и соответствия (то бишь «словаря») записью {"a": 1, "b": 2}
. Совсем как в Python.
Но в целом язык подходит лишь для весьма ограниченного круга задач и его практическая ценность пока ещё под вопросом.
КуМир
Уже исходя из названия (Комплект Учебных МИРов) понятно, что область применения данного языка ограничена обучением. А это, как я считаю, тупиковый путь. Мало кто захочет серьёзно изучать язык, который кроме обучения программированию, ни для чего не пригоден/не используется.
Однако некоторые идеи и решения, принятые в КуМир-е, можно позаимствовать. Например то, что математические функции в нём оставлены на английском (sqrt, sin, abs, min, max и т.д.). И я считаю это вполне оправданным. На уроках математики мы же пишем sin x и ничего.
Компилятор C++ от Интерстрон
Русификация служебных/ключевых слов C++ выполнена автором легендарной статьи ‘‘Редкая профессия’’ Евгением Зуевым.
Евгением была проделана огромная работа, однако в этом и состоит главная проблема: переведённых слов слишком много, и специфика их такова, что запомнить русскоязычный эквивалент для них слишком трудно.
Глагол
Проблема Глагола в том, что он основан на непопулярном языке [Oberon-2], и к тому же использует достаточно нетрадиционную терминологию, например:
- «вид», а не «тип»;
- «ряд», а не «массив»;
- «задача», а не «процедура»/«функция»;
- «отдел», а не «модуль»;
- «ячцел», а не «байт»;
- «знак», а не «символ»;
- «кольцо», а не «цикл»/«повтор».
В этом отношении я согласен с Юрием [автором сайта compiler.su]:
ruscomp.bb24.ru/viewtopic.php?id=20#p411:То есть обычные русские слова уже не являются для вас «общепринятым» языком?Общепринятые – это те, которые я читаю в книгах, в том числе по программированию. Когда читаю «байт», мне всё понятно. Это общепринятое. Когда я прочитаю «запись размером 40 слогов» — я буду долго размышлять. А вот «файл размером 40 байтов» — мне сразу понятно, да и Вам тоже. Да, там заимствованные слова, но не я их заимствовал и не я их глубоко внедрил в наш язык. Чтобы быть понятым, я вынужден их использовать.
RuSL
RuSL (Russian Scripting Language) — новый скриптовый язык программирования с синтаксисом на русском языке. После беглого знакомства с языком я выделил несколько [возможно субъективных] недостатков:
- Для объявления переменных используется нетрадиционное ключевое слово
изм
. - Нет поддержки целых чисел (все числа вещественные).
- Операторы присваивания
+=
,-=
и т.д. записываются в обратном порядке (т.е.=+
,=-
и т.д.). Особенно забавно получается с записьюn=-n
, которая работает не какn = -n
, а какn-=n
, т.е.n = n - n
:)(: - Для стандартных функций
input()
иprint()
был выбран переводввести()
ивывести()
вместо более привычноговвод()
ивывод()
.
11l
Семантика 11l берёт за основу язык Python (самый популярный язык программирования на данный момент [согласно рейтингам TIOBE, PYPL, IEEE Spectrum]), а синтаксис разработан/спроектирован с учётом когнитивно-эргономического подхода таким образом, что забыть его [синтаксис 11l] практически невозможно (особенно если это первый изучаемый язык программирования).
Для перевода названия метода map
в 11l было выбрано слово применить
, т.к. как сказано в Википедии «в функциональной форме map
часто называется «применить-ко-всем»«.
Также слово «применяет»/«применение» используется в различных описаниях функции `map()` в Python
pyneng.readthedocs.io/ru/latest/book/10_useful_functions/map.html:
Функция map применяет функцию к каждому элементу последовательности и возвращает итератор с результатами.
Использование функции map в Python:
Встроенная в Python функцияmap()
используется для применения функции к каждому элементу итерируемого объекта
pythonist.ru/python-map-znakomstvo:
map() перебирает элементы итерируемого массива (или коллекции) и возвращает новый массив (или итерируемый объект), который является результатом применения функции преобразования к каждому элементу
Для бросания исключения в 11l используется слово исключение
по аналогии с переводом ключевого слова throw
Евгением Зуевым. Ключевые подслова исключение.контроль
и исключение.перехват
также взяты из перевода Зуева.
Для числовых типов используются вполне общепринятые (принятые в том числе в языке РАЯ) названия Цел
и Вещ
.
Вместо того чтобы выполнять перевод всех и каждой функции стандартной библиотеки языка, в 11l осуществлён перевод лишь тех возможностей языка, которые требуются для решения задач по спортивному программированию.
Вот примеры решения задач на русском 11l
Задача ‘Mocha и прогулка’ (на основе этого решения):
цикл 1..Цел(ввод()) пер n = Цел(ввод()) пер a = ввод().разделить(‘ ’).применить(Цел) пер ответ = (0 .< n).применить(н -> н + 1) // можно сократить до `пер ответ = Массив(1..n)` если a.послед == 0 вывод_эл(ответ [+] (n + 1)) иначе цикл(н) 0 .< a.длина если a[н] == 1 вывод_эл(ответ[0.<н] [+] (n + 1) [+] ответ[н..]) цикл.прервать
Задача ‘Запрещённая подпоследовательность’ (на основе этого решения):
цикл 1..Цел(ввод()) пер s = ввод() пер t = ввод() s = сортй(Массив(s)).соединить(‘’) если t == ‘abc’ & (‘a’ св s) & (‘b’ св s) & (‘c’ св s) s = s[0 . < s.найти_и(‘b’)]‘’(‘c’ * s.колво(‘c’))‘’(‘b’ * s.колво(‘b’))‘’s[s.об_найти_и(‘c’) + 1 ..] вывод(s)
Задача ‘Задача на доске’ (на основе этого решения):
цикл 1..Цел(ввод()) пер s = ввод() пер m = Цел(ввод()) пер b = ввод().разделить(‘ ’).применить(Цел) пер массив = сортй(Массив(Множество(Массив(s)))) пер ответ = [Символ("\0")] * m // как в Python (1-ый вариант решения) //пер ответ = "\0" * m // только в 11l (2-ой вариант решения) цикл сумма(b) != -m Множество[Цел] индексы цикл(i) 0 .< m если b[i] == 0 индексы.доб(i) b[i] = -1 цикл пер q = массив.извлечь() если индексы.длина <= s.колво(q) цикл(i) индексы ответ[i] = q // в 11l строки можно изменять цикл.прервать цикл(i) индексы цикл(j) 0 .< m если b[j] != -1 b[j] -= abs(i - j) вывод(ответ.соединить(‘’)) // (1-ый вариант решения) //вывод(ответ) // (2-ой вариант решения)
Кроме того, 11l поставляется со скриптом, который переводит код на русском в код на английском (в том числе переводит имена общеупотребимых переменных).
Несмотря на поддержку русских ключевых слов, названий функций и типов, я считаю, что имена коротких переменных в большинстве случаев целесообразно писать на английском.
Так принято и в учебном алгоритмическом языке:
ввод n; S:=0
А также в русских текстах задач по программированию используются английские/латинские буквы:
codeforces.com/contest/1559/problem/C?locale=ru:
В первой строке находится одно целое число t …
Первая строка набора входных данных содержит одно целое число n
И аналогично в книгах:
habr.com/ru/post/667022:
Напечатайте все возрастающие последовательности длины k, элементами которых являются натуральные числа от 1 до n.
На этом у меня всё. Спасибо за внимание.
Русский Язык Программирования / Хабр
Начал разработку русского языка программирования.
Сокращенно: РЯП.
РЯП напоминает язык КуМир, но будут существенные отличия и преимущества в сравнении с другими языками.
Переменные не надо объявлять, так как при первом обнаружении переменной в листинге программы интерпретатор автоматически создаст с таким именем переменную типа Double (вещественное число).
Интерпретатор пишу в 32-битной версии среды разработки «Lazarus» (язык программирования Паскаль).
В ряпе конечно же есть зарезервированные слова: начало, конец, если, цикл.
Но зарезервированные слова можно использовать в качестве имен переменных!
По ссылке можете скачать архив, в нем содержатся бинарник (версия 0.2), простые программы:
архив
Си и Паскаль уйдут, Питон утонет, Яву скурят!
Свободно скачивайте и распространяйте, пишите программки, пишите мне о глюках.
Только, пожалуйста, не делите на ноль! 🙂
ДОПОЛНЕНИЕ 1 (от 28 февраля 18:30 МСК):
1) Кто-то посмеялся над названием языка, предложил свои варианты. (возведение в степень),
% (процент), mod (остаток от деления на число), and (битовое И), xor (битовое исключающее ИЛИ),
or (битовое ИЛИ), >> (битовый сдвиг вправо).
Унарные команды: ЛИнверт (LInvert; логическое инвертирование переменной), округлить (round; округление вещественного числа до целого числа), показать (show; отобразить имя и значение переменной)
Вот код для вычисления простых чисел:
число = 3 конец = 60 начало цикл = число / 5 округлить цикл простое = 1 начало цикл2 = цикл + 1 остаток0 = число mod цикл2 остаток = остаток0 ЛИнверт остаток если остаток простое = 0 цикл = цикл - 1 если остаток цикл = 0 цикл цикл если простое показать число число = число + 2 конец = конец - 1 цикл конец
Результат:
число = 3 число = 5 число = 7 число = 11 число = 13 число = 17 число = 19 число = 23 число = 29 число = 31 число = 37 число = 41 число = 43 число = 47 число = 53 число = 59 число = 61 число = 67 число = 71 число = 73 число = 79 число = 83 число = 89 число = 97 число = 101 число = 103 число = 107 число = 109 число = 113
P. S. На перспективу:
— Механизм массивов.
— Вместо присвоения одной переменной можно написать формулу,
в левой части которой может стоять не только переменная, но и операция с другой переменной.
— Анализ кода.
Выдача подробных подсказок программисту.
— Автоматическое переформатирование кода в нужный стиль.
— Имя переменной можно сокращать.
Интерпретатор сам определит, какую переменную из объявленных имели в виду.
— Иногда допускается, что между конструкцией языка (цикл, если) и переменной нет пробела.
— Любой код можно записать в одну строку.
— Объединение нескольких файлов кода в одном файле.
— Любое количество букв в названии конструкции языка.
Алгол 68 – 25 лет в СССР. Российский виртуальный компьютерный музей
Главная → Статьи → Алгол 68 – 25 лет в СССР
Буленков М.А., Рар А.Ф., Терехов А.Н. Ершовым в 1966 г. Тогда в России возникли три очага, в которых внимательно наблюдали за текущей работой группы ван Вейнгардена. Это группа доктора Ершова в Новосибирске, доктора Лаврова в Подлипках Московской области, доктора Левинсона в Москве. В этих местах стали присылать многочисленные замечания по языку и учитывать его русскую терминологию. Процесс перевода отчета об Алголе 68 на русский язык настолько тесно следовал за процессом его обновления на английском языке, что и сам Отчет, и его русский перевод [1] были изданы в одном и том же 19-м году.69.
Еще до этого, в феврале 1968 г., первые лекции по новому языку были проведены в Бакуриани, Грузия, на специальной Зимней школе по алголу 68.
В дальнейшем распространение языка в СССР было заметным, но ограниченный. Группы ярых приверженцев Алгола 68 появились в Киеве, Харькове (Украина), Ижевске, Казани, Томске, Бердске и других городах России. Наиболее сильной и плодотворной из этих групп была группа Ленинградского государственного университета. В течение многих лет Алгол 68 был основным языком программирования, изучаемым на курсе информатики в Ленинградском университете. Ленинградские реализации Алгола 68 будут обсуждаться позже. Но все эти алгольские острова были редкостью в океане Фортрана, а позднее и в морях Паскаля, Модулы, Ады.
Начиная с 1976 г. начала действовать официальная национальная организация по Алголу 68, под чьим наблюдением находились перевод Пересмотренного отчета, издание литературы, тестирование и принятие на вооружение компиляторов. До 1982 г. этот орган назывался «Научно-техническая комиссия» и возглавлялся А. П. Ершовым. В последнее время он стал «Рабочей группой» во главе с Г. С. Цейтиным. Последняя сессия группы состоялась в 1988 году, на которой был принят национальный стандарт Алгола 68. С тех пор не было предпринято никаких попыток созвать новую сессию Группы.
Наша первая публикация Отчета, о которой говорилось выше, была двуязычной. В нем был весь текст Доклада со всеми прагматическими замечаниями и картинками Винни-Пуха. Работа над русским переводом и особенно кропотливая работа по преобразованию синтаксических и метасинтаксических правил в русскую форму породили соображения о том, как формализовать правила создания национальных вариантов Алгола 68. Методы построения синтаксических и метасинтаксических схем Алгола 68 также учитывались, и к публикации прилагались правильно оформленные диаграммы. Обе эти проблемы стали темами доклада, представленного на Рабочей конференции «Внедрение Алгола 68», которую ИФИП провел в Мюнхене 19 июля.70 [2]. Соображения по построению национальных вариантов были учтены авторами Доработанного отчета, и соответствующие предложения были частично включены в этот Отчет.
Перевод Доработанного отчета был выполнен не так быстро, как в случае с предыдущим Отчетом. Он постоянно и тщательно создавался одним автором, а не четырьмя, но под неусыпным надзором национальной комиссии по Алголу 68, и окончательный результат был опубликован только в 1980 [3].
После этого в нашей стране публикаций по Алголу 68 было немного. Можно упомянуть переводы «Неофициального введения» Ч. Х. Линдсея и С. Г. ван дер Меулена [4] и «Практического руководства» Ф. Г. Пагана [5]. Что касается оригинальных книг по языку, то можно упомянуть краткие описания А. Н. Маслова [6], В. А. Васильева [7], а также «Введение в Алгол 68» А. Н. Терехова. Последняя входит в состав книги. с описанием Ленинградского компилятора [8].
Как было сказано ранее, национальный Стандарт Алгола 68 был принят в 1988 году. Текст этого Стандарта был текстом русского перевода Пересмотренного Отчета с небольшими изменениями по форме, но не по существу. В то же время был принят другой национальный стандарт, а именно «Стандарт расширенного Алгола 68». В этом документе использованы предложения ИФИП по модулям и раздельной компиляции, а также предложения Г. С. Цейтина по обработке исключений.
Сложность Алгола 68, присущая ему, способствовала тому, что язык был вложен преимущественно в академическую и университетскую среду и не нашел большой поддержки в отрасли. Существовала опасность, что Алгол 68 мог стать объектом чисто математических исследований со всей присущей им тщательностью. Члены Рабочей группы ясно осознавали эту проблему и уделяли значительное внимание практической реализации Алгола 68 как основного пути его распространения. Не было ни одного заседания группы, на котором не были бы опущены проблемы языковой реализации.
Было несколько попыток внедрить Алгол 68 в СССР. По некоторым причинам, о которых будет кратко сказано ниже, уцелела только одна из них, а именно ленинградская, но она получила действительно широкое распространение.
Одна из первых реализаций Алгола 68 была сделана на Киевском компьютерном заводе в конце семидесятых годов для компьютеров Сименс. Его авторы — С. И. Штительман, М. Г. Штейнбух, Л. А. Макогон. Реализация была ориентирована на систему управления информацией под названием «СТАРТ», для которой Алгол 68 был единственным используемым языком. Авторов проекта Алгол 68 интересовал прежде всего как источник языка базы данных. Киевская реализация предвосхитили многие особенности современных языков такого типа: постоянные объекты, развитую систему типов, ортогональный дизайн, большую долю интерпретативности и т. д. Система типов и ортогональность были фактически обусловлены самим Алголом 68, но сохраняемость особенность потребовала некоторых исправлений языка, а именно введена «вечная блокировка», предназначенная для сохранения между выполнениями программы тех объектов, которые могут использоваться другими программами. Фактически это была база данных. Некоторые другие вариации также были сделаны без каких-либо усилий по стандартизации для Алгола 68: все массивы считались гибкими, управляющая переменная цикла была длинной int, а не int, комплексные значения отсутствовали и т.д. Принят Рабочей группой в 1979 этой системы больше не существует из-за замены оборудования на заводе.
В то же время Алгол 68 реализовывался на основе архитектуры DEC. Эта реализация выполнялась под руководством доктора М. Левинсона. Несмотря на незавершенность, он привнес в технику реализации несколько оригинальных идей. Основное отличие этой реализации заключалось в проверке области действия: время жизни любого объекта не ограничивалось временем выполнения блока, в котором объект был объявлен.
Реализация компилятора Алгола 68 для ЭВМ «Эльбрус» была разработана Бролем В.В., Гущиным В.М., Яковлевым В.Б. (Москва). Исходным языком является полный Алгол 68, определенный Ревизским отчетом и расширенный некоторыми средствами работа с модулями. Компилятор обеспечивает хорошее качество объектного кода, достаточно полную диагностику ошибок.Хорошо использует сходство между основными понятиями Алгола 68 и архитектуры и операционной системы «Эльбрус». Компилятор был принят национальной рабочей группой в 1985. Ленинградская группа активно участвовала в испытаниях этого компилятора. Около десяти крупных пакетов приложений, разработанных в Ленинградском университете, были почти без проблем перенесены на «Эльбрус». Но трагедия компилятора «Эльбруса» заключалась в том, что это были практически единственные живые программы, которые он обрабатывал.
Перспективный «проект БЕТА» в Новосибирске, в первую очередь разработанный докторами А. П. Ершовым, М. Шварцманом, А. А. Бэрсом, был предназначен для почти автоматического создания компиляторов на основе языковых описаний, и в его основе лежали Algol 68, PL/I и Simula 67. первые цели [9]. Система действительно создана, но не в том виде, о котором задумывалась изначально, а языки, которые она теперь охватывает, — это Simula 67, Pascal (эти языки реализуются Г. Г. Степановым и С. Б. Покровским), Modula 2 (Л. А. Захаров), подмножество Ada (S.V. Ten), но не Algol 68 или PL/I [10]. Тем не менее, концепции Алгола 68 были использованы в системе БЕТА для создания как универсальной схемы компиляции, так и внутреннего языка.
Наибольшее развитие получили работы по реализации Алгола 68 в Ленинградском университете, в группе под руководством д.б.н. Г.С. Цейтина и д.б.н. А.Н. Терехова. В первую очередь эти работы были согласованы с работой над системой БЕТА в рамках стратегии, разработанной Рабочей группой. Предполагалось, что ленинградская группа создаст отладочный компилятор, этакий авангард, призванный завоевать новые области приложения основных сил, а именно базовый компилятор, который будет построен в Новосибирске. Естественно было предположить, что любая прикладная программа, отлаживаемая ленинградским компилятором, должна работать на новосибирском компиляторе без необходимости модификации.
Как уже было сказано, ленинградский проект изначально был ориентирован на практическое применение, что и определило как его принципиальные решения, так и его историю.
Первая версия Ленинградского компилятора была завершена к 1976 году. Его анализирующая часть была написана на Алголе 60 и работала на ЭВМ ОДРА 1204. Его генераторная часть была написана на Макроассемблере и работала на мейнфрейме IBM.
После этого весь компилятор был переписан на Алголе 68 и расширен: каждая процедура компилятора (их более 1000) переведена на ODRA с Алгола 68 на промежуточный язык (IL), полученная перфолента ввода на компьютер IBM и переведены из IL в объектный код IBM. Перевод средней процедуры занимал 10 минут на ODRA и 20 минут на IBM. Поскольку отладка этих процедур требовала их повторной модификации и перекомпиляции, затраты времени были еще больше. Результатом этого процесса начальной загрузки стал резидентный компилятор, который компилировал каждую процедуру за 2-3 минуты.
В 1978 году была сделана первая начальная загрузка, и получившийся компилятор был предоставлен множеству пользователей в различных областях (математическая физика, радарная техника, моделирование). Сразу после этого началась вторая загрузка. В этот момент разработчики осознали необходимость библиотечных прелюдий и отдельной компиляции процедур. Поэтому в Algol 68 была добавлена новая конструкция, которая оказалась чем-то вроде гнезда, еще не известного авторам.
Потребовались большие усилия для оптимизации вызовов процедур. Размер кода уменьшен с 16 до 6 байт на вызов. Для сравнения, компилятор PL/I-F выполняет 150 команд за вызов, а оптимизирующий PL/I — 30 команд. Десять лет спустя возникла идея изменить направление стека, что обеспечило значительное сокращение кода для вызовов процедур.
Вторая загрузка была завершена до 1979 года, и эта версия просуществовала более 10 лет с минимальными изменениями. В то время проектировщики были заняты в основном технологией программирования, так как оказалось, что Алгол 68 слишком сложен для того, чтобы быть языком для простых задач, а для больших задач (например, реального времени) одних языковых возможностей не хватает. Но проблемы компиляции не были забыты: был собран десяток кросс-компиляторов для различных специализированных компьютеров, усовершенствована методика оптимизации, компилятор интегрировался с другими техническими средствами.
В этот момент стало ясно, что появление базового компилятора крайне маловероятно. Поэтому в компилятор Ленинград был включен новый проход, а именно проход оптимизации. В отличие от того, что было запланировано в проекте БЕТА, компилятор Ленинграда использовал только локальные оптимизации, потому что введение глобальной оптимизации потребовало бы значительного пересмотра структуры компилятора. Позже статистика показала, что даже среди всех локальных оптимизаций наиболее эффективными являются только две из них — для передачи параметров и для индексации массива.
В некотором смысле реализация Algol 68 подорвала социальную основу глобальной оптимизации: в большинстве случаев результаты глобальной оптимизации могут быть выражены на одном языке.
В 1980 году в Ленингардскую группу обратилось научно-производственное объединение «Красная Заря» (крупнейшее предприятие по производству телефонов в СССР) с предложением о сотрудничестве в программировании большого класса задач управления и связи и, в В частности, на разработку функционального программного обеспечения для телефонных станций, управляемых специализированными компьютерами. На то, чтобы вникнуть в специфику новой области, разработать опытные реализации и решить организационные вопросы, потребовалось несколько лет.Ленинградская группа убедилась в своих предыдущих опыта, что использование языков программирования высокого уровня абсолютно необходимо.Однако начинать их нужно было с повышения культуры программирования прикладных программистов.Это было вызвано тем, что традиционно в области встроенных компьютеров для разработки программного обеспечения реального времени с -используется стандартная архитектура, ориентированная на предметную область (на самом деле не очевидно, какой должна быть эта ориентация. Например, если специализированный компьютер хорошо выполняет некоторые специальные операции, но плохо работает с ветвлениями и вызовами процедур, которые встречаются в тысячи раз чаще, чем специализированные операции, то можно ли считать его ориентированным на эту прикладную область?). Нестандартная архитектура и небольшое количество специализированных компьютеров приводят к отсутствию достаточно развитых операционных систем, компиляторов, отладчиков и других общепринятых средств программирования. Так что группе пришлось иметь дело с перфокартами и коммутаторами.
В короткие сроки были разработаны новые кросс-ассемблер и интерпретатор, которые вместе с системой документации и некоторыми сервисными программами составили основу первой промышленной технологической системы на Алголе 68 и интенсивно использовались сотнями прикладных программистов. Естественно, технология была довольно ограниченной, но все же популярной по следующим объективным причинам:
- Вместо специализированных компьютеров использовался общедоступный мэйнфрейм с широким набором сервисов.
- Богатые средства отладки интерпретатора, невозможные на специализированном компьютере.
- Осознание прикладными программистами необходимости документации и простоты ее подготовки, исправления и копирования в новой среде.
- Практически неограниченные возможности развития технологии. Это было на удивление быстро принято прикладными программистами и дало обратную связь идеям и предложениям.
В настоящее время Ленинградская группа имеет большой опыт использования Алгола 68 в различных прикладных областях. Компилятор A68LGU, используемый в качестве средства реализации, имеет вполне удовлетворительные характеристики надежности, времени компиляции и качества объектного кода. Однако недавно авторы Алгола 68 предложили новые интересные расширения языка, касающиеся модульности, раздельной компиляции и обработки исключений. С другой стороны, оказалось, что компилятор A68LGU плохо подходит для включения новых технологических средств, которые не были предусмотрены проектом, т.е. отладка с точки зрения исходного текста. В ходе длительной эксплуатации компилятора были обнаружены и другие мелкие недостатки (например, слишком узкий диапазон целых чисел), а также более серьезные ошибки, такие как неправильное выделение памяти в некоторых случаях. Это привело к решению разработать новую систему программирования, которая получила название WBC.
Отличительными чертами новой системы программирования являются целостность и интерактивный стиль работы. Он имеет специальные средства для контроля конфигурации и поддержки разработки крупных проектов. Еще одной особенностью системы WBC является ее одновременная ориентация на несколько компьютеров (мейнфрейм IBM, архитектура DEC, CAMCOH, PS 1001, ПК-совместимые и некоторые специализированные компьютеры). На базе компилятора A68LGU реализовано несколько кросс-компиляторов. Был опыт портирования компилятора на разные компы. Сам факт того, что большая часть компилятора написана на Алголе 68, наводит на мысль о его переносимости. Однако реальное портирование оказалось намного сложнее. Необходимо было реорганизовать всю структуру компилятора и его динамического окружения, точно указать части, зависящие от аппаратного обеспечения или операционной системы, унифицировать механизмы связи. Интерфейс с таблицами компилятора был задан таким образом, чтобы различные блоки, реализующие интерфейс, были возможны даже на одном и том же компьютере в зависимости от задач конкретного компилятора.
Все компиляторы систем WBC имеют следующие общие компоненты и особенности:
- синтаксис промежуточных языков;
- структура таблиц компилятора и процедуры доступа;
- программ независимого и зависимого от режима анализа, фрагменты фазы оптимизации, генерации листинга, отладчика и монитора;
- алгоритмов распределения памяти и регистров;
- техника кодогенерации; Поддержка
- во время выполнения, включая процедуры ввода-вывода;
- способ выбора вариантов компиляции языковых конструкций;
- Algol 68 в качестве языка реализации.
Такая унификация делает систему открытой для расширения на другие компьютеры, и оправданием этому может служить прогресс на пути от мэйнфреймов IBM к архитектуре DEC, к CAMCOH, к IBM PC и т.д.
Литература
- Доклад об алгоритмическом языке Алгол 68, русский перевод А. А. Берса, А. П. Ершова, А. Ф. Рара и Л. Л. Змиевской. «Кибернетика», Киев, часть 6 из 1969 и часть 1 от 1970 г.
- А. А. Бэрс, А. П. Ершов, А. Ф. Рар. Об описании синтаксиса Алгола 68 и его национальных вариантов. В: «Реализация Алгола 68», под редакцией Дж. Э. Л. Пека, NH Publ. Co., Амстердам-Лондон, 1971.
- Пересмотренный отчет об алгоритмическом языке Algol 68. А. ван Вейнгаарден, Б. Дж. Майлу, Дж. Э. Л. Пек, Ч. А. Костер, М. Синцов, Ч. Х. Линдси, Л. Г. Л. Т. Меертенс и Р. Г. Фискерс (ред.). Русский перевод А. А. Берса, издательство «МИР», Москва, 1980.
- Ч. Х. Линдси и С. Г. ван дер Меулен. Неформальное введение в Алгол 68. Русский перевод Л. Лейфмана, Изд-во «МИР», Москва, 1977.
- Ф. Г. Паган. Практическое руководство по Алголу 68. Русский перевод А. Ф. Рара, Издательство «МИР», Москва, 1979.
- А. Н. Маслов. Алгол 68. Структура программ, Изд-во МГУ, 1978.
- В. А. Васильев. Язык Алгол 68. Основные понятия. Издательство «Наука», Москва, 1972 (на русском языке).
- Г. Дейкало, А.Н. Терехов и др. Новые инструменты программирования для ES EVM. Издательство «Финансы и статистика», Москва, 1984. .
- А. П. Ершов. Многоязычная система программирования, ориентированная на описание языка и универсальные алгоритмы оптимизации. В: «Реализация Алгола 68». .
- Захаров Л.А., Покровский С.Б., Степанов Г.Г., Тен С.В. Многоязычная система компиляции. Вычислительный центр СО АН СССР, Новосибирск, 1987 (на русском языке).
Рар Александр Федорович — Новосибирск, Институт системной информатики;
Терехов Андрей Николаевич — Санкт-Петербургский государственный университет
Visual Studio Code Display Language (Locale)
Редактировать
Visual Studio Code по умолчанию поставляется с английским языком в качестве языка отображения, а другие языки зависят от расширений языковых пакетов, доступных в Marketplace.
VS Code определяет язык пользовательского интерфейса операционной системы и предлагает установить соответствующий языковой пакет, если он доступен в Marketplace. Ниже приведен пример, рекомендующий языковой пакет для упрощенного китайского языка:
После установки расширения языкового пакета и запроса на перезагрузку VS Code будет использовать языковой пакет, соответствующий языку пользовательского интерфейса вашей операционной системы.
Примечание . В этом разделе объясняется, как изменить язык отображения в пользовательском интерфейсе VS Code с помощью языковых пакетов, таких как французский или китайский. Если вы хотите добавить поддержку языка программирования, например, для C++ или Java, обратитесь к разделу документации «Языки программирования».
Изменение языка отображения
Вы также можете переопределить язык пользовательского интерфейса по умолчанию, явно задав язык отображения VS Code с помощью команды Configure Display Language .
Нажмите ⇧⌘P (Windows, Linux Ctrl+Shift+P), чтобы вызвать палитру команд , затем начните вводить «display», чтобы отфильтровать и отобразить команду Configure Display Language .
Нажмите Enter, и отобразится список установленных языков по локали с текущими локаль
выделена.
Используйте опцию Установить дополнительные языки… , чтобы установить дополнительные языковые пакеты из Marketplace, или выберите другую локаль
из списка. Для изменения локали
требуется перезапуск VS Code. Вам будет предложено перезагрузиться, когда вы выберете локаль
.
Команда Configure Display Language записывает в файл аргументов конфигурации среды выполнения argv.json
в пользовательской папке VS Code ( .vscode
).
Языковой стандарт
также можно изменить, отредактировав файл argv. json
напрямую ( Preferences: Configure Runtime Arguments ) и перезапустив VS Code.
Доступные языки
Язык интерфейса | Регион |
---|---|
Английский (США) | и |
Упрощенный китайский | ж-сп |
Традиционный китайский | ж-тв |
Французский | передняя |
немецкий | от |
итальянский | это |
Испанский | ес |
Японский | и |
Корейский | ко |
Русский | ru |
Португальский (Бразилия) | пт-бр |
Турецкий | тр |
польский | стр. |
Чехия | кс |
Языковые пакеты Marketplace
Как описано выше, VS Code поставляется с английским языком интерфейса по умолчанию, но другие языки доступны через языковые пакеты Marketplace.
Вы можете искать языковые пакеты в представлении «Расширения» (⇧⌘X (Windows, Linux Ctrl+Shift+X)) путем ввода искомого языка вместе с категорией: «Языковые пакеты»
.
Вы можете установить несколько языковых пакетов и выбрать текущий язык интерфейса с помощью команды Configure Display Language .
Настройка языка
Если вы хотите использовать определенный язык для сеанса VS Code, вы можете использовать переключатель командной строки --locale
, чтобы указать локаль при запуске VS Code.
Ниже приведен пример использования параметра командной строки --locale
для установки французского языка отображения VS Code:
code . --locale=фр.
Примечание : у вас должен быть установлен соответствующий языковой пакет для языка, который вы укажете с помощью переключателя командной строки. Если соответствующий языковой пакет не установлен, VS Code будет отображать английский язык.
Общие вопросы
Невозможно записать в файл, так как файл грязный
Это уведомление может означать, что ваш файл argv.json
не был сохранен после предыдущего изменения. Проверьте, нет ли ошибок в файле ( Настройки: Настройка аргументов среды выполнения ), убедитесь, что файл сохранен, и попробуйте снова установить языковой пакет.
Могу ли я внести свой вклад в перевод языкового пакета?
Да, проект локализации сообщества Visual Studio Code открыт для всех, участники могут предоставлять новые переводы, голосовать за существующие переводы или предлагать улучшения процесса.