Можно ли написать программу на русском языке?

Можно ли написать программу на русском языке?

Можно, но с ограничениями

Рубрика странных вопросов. Отвечаем серьёзно: да, можно, но в этом нет большого смысла.

Всё дело в интерпретаторе

На самом деле компьютеру неважно, на каком языке написан код. Главное — чтобы существовал интерпретатор, который может перевести программный код, написанный человеком, в команды, понятные компьютеру.

В теории, можно взять любой язык программирования, перевести все его команды на русский язык и потом написать интерпретатор для этого языка. Работать вся конструкция будет так:

  1. Берём код на русском языке.
  2. Переводим каждую команду обратно в исходный вид в оригинальном языке.
  3. Так делаем с каждой командой.
  4. Получившийся код запускаем с помощью оригинального компилятора или интерпретатора.

Видно, что с таким подходом больше мороки, чем пользы:

  • нужно написать отдельный новый интерпретатор;
  • научить его проверять ошибки;
  • научить его переводить код в оригинальные команды другого языка;
  • по возможности, чтобы это не падало и не тормозило;
  • написать документацию и обучающие материалы.

В общем, работы много, но непонятно, зачем её делать. Гораздо проще сразу писать на нормальном языке программирования, а не изобретать свой собственный.

Другой вариант — использовать директивы вроде #define в языке C и C++. Смысл #define в том, что перед компиляцией все слова, которые мы таким образом определили, заменяются на изначальные. И тогда можно написать что-то такое: 

#define ЕСЛИ if

#define ДА true

#define НЕТ false

#define АНЕТО else

#define ВЫВОД printf

#define ОТДАЛ return

И получится что-то такое (не вдаваясь в подробности): 

ЕСЛИ(...) {

ВЫВОД (...) ;

}

АНЕТО ЕСЛИ(...)

ВЫВОД (...);

АНЕТО ВЫВОД (...);

ОТДАЛ...;

}

Ради искусства такое сделать можно, но долго эксплуатировать такой код вам будет неудобно, даже если вы сами его написали. Сначала нужно запомнить все свои дефайны, потом не перепутать их при употреблении. А потом другой разработчик придёт в ваш код и проклянёт вас.

А ещё есть два известных языка программирования, где весь синтаксис изначально реализован на русском: КуМир и язык программирования 1С. 

КуМир

КуМир — это сокращение от Комплект Учебных МИРов. Его разработал советский математик Анатолий Кушниренко, но придумал его академик Андрей Ершов.

КуМир — это специальный язык для обучения школьников и студентов, которые до этого не изучали программирование. В КуМире есть исполнители — Робот, Чертёжник, Кукарача и другие. У каждого из этих исполнителей есть свой язык команд, которыми можно ими управлять. Например, Робот может двигать ячейки по полю, а Чертёжник — что-то рисовать на холсте.

Главный плюс КуМира — простота для детей, чтобы им было легче разобраться с основными понятиями. Например, ЭТО Бегемот задаёт переменную «Бегемот», ПОВТОРИ — это цикл, а «ЭТО…КОНЕЦ» позволяет организовать функцию. 

Можно ли написать программу на русском языке?
Код для Кукарачи

Ещё есть обычные команды языка, не привязанные к исполнителю — они похожи на команды JavaScript, которые мы использовали для простых консольных проектов. Например, можно организовывать циклы, работать с массивами, запрашивать и вводить числа и писать почти полноценный алгоритмический код.

Можно ли написать программу на русском языке?
Алгоритм подсчёта чётных чисел с нечётными порядковыми номерами

Язык программирования 1С

Программирование под 1С — это отдельный мир, в котором 1С-программисты свысока смотрят на своих коллег, потому что никто кроме них не может разобраться в их коде, хотя он и написан по-русски. 

С простыми программами всё понятно:

Процедура ПриветМир()
       Сообщить("Привет, мир! Это журнал Код!");
 КонецПроцедуры

Но если нам нужно что-то более сложное, начинается программистский ад: команды — это существительные, прилагательные и глаголы на русском языке, которые пишутся слитно и с больших букв в середине. При этом язык 1С — полноценный язык программирования высокого уровня, с ООП, классами и динамической типизацией. Например, вот фрагмент программы, которая формирует отчёт для бухгалтера:

&НаСервере
Процедура СформироватьНаСервере()
	
	ТабДок = Новый ТабличныйДокумент;
	
	ДатаС = ПериодОтчета.ДатаНачала;
	ДатаПо = ПериодОтчета.ДатаОкончания;
	
	Выборка = Документы.СчетФактураВыданный.Выбрать(ДатаС, ДатаПо, , "Дата");
	
	ЭтотОтчет = РеквизитФормыВЗначение("Отчет");
	Макет = ЭтотОтчет.ПолучитьМакет("Реестр");
	
	ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
	ТабДок.Вывести(ОбластьШапка);
	
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	
	Пока Выборка.Следующий() Цикл
		
		Если ЗначениеЗаполнено(Организация)
			И Выборка.Организация <> Организация Тогда
			Продолжить;
		КонецЕсли;
		
		ОбластьСтрока.Параметры.Дата = Выборка.Дата;
		ОбластьСтрока.Параметры.Номер = Выборка.Номер;
		ОбластьСтрока.Параметры.Контрагент = Выборка.Контрагент;
		ОбластьСтрока.Параметры.Сумма = Выборка.Сумма;
		
		ТабДок.Вывести(ОбластьСтрока);
		
	КонецЦикла;
	
	ПолеОтчета = ТабДок;
	
КонецПроцедуры

А можно просто рассказать компьютеру по-русски, что нужно сделать?

Можно, но компьютер ничего не сделает.

Более того — даже если вы напишете это на английском языке, то всё равно ничего не получится. Сейчас есть нейросети, которые умеют разбирать естественный текст и предлагать какой-то фрагмент кода, но задачи сложнее «Попроси у пользователя два числа и выведи их сумму» нейронка сделать пока не может.

А раз так — в ближайшие десятилетия у программистов будет много работы: и код писать, и обучать нейронки делать это самостоятельно. Хотите так же — приходите в Практикум, найдите направление по душе.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
easy