Языки программирования с русским синтаксисом

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Языки программирования с русским синтаксисом » Зачем нужнен русский язык в программировании » Предкомпилятор "Русский С++ --> стандартный С++"


Предкомпилятор "Русский С++ --> стандартный С++"

Сообщений 1 страница 30 из 51

1

Добрый день!
Приветствую всех участников форума. Я программирую по-русски давно, с 2000-го года. Для этого сделал для себя предкомпилятор, который переписывает идентификаторы, записанные кириллицей, в транслит.  Т.е. если в исходном файле написано: «Обработать_строку (переменная1, переменная2);», то в файле «.cpp» будет записано: «Obrabotat_stroku (peremennaya1, peremennaya2);». Настолько к этому привык, что англоязычные идентификаторы теперь не перевариваю. Хотя английский знаю гораздо лучше, чем в среднем по стране: в свое время натаскал в английском свою жену так, что она успешно сдала кандидатский минимум по иностранному языку, хотя в школе учила французский.

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

Хотел бы уточнить: есть ли спрос на программы, подобные той, которую я сделал? Если да – мог бы её довести до такого состояния, что её не стыдно предложить коллегам по цеху. В принципе, этот предкомпилятор должен работать и с Пакалем, и с другими языками, только надо доработать парсер.

В свой «русский С++» я внёс, помимо транслитерации, и другие усовершествования.
1. Идентификаторы могут содержать одиночные пробелы. Согласитесь, что идентификатор «длина строки» выглядит предпочтительнее, чем «длина_строки». Одиночный пробел при транслитерации заменяется на символ «_». Но за все удобства приходится расплачиваться, поэтому одиночный пробел после этого не может служить разделителем идентификаторов, для этого нужен либо последовательность пробелов длиной от 2-х символов и более, либо табуляция и прочие обычные для С++ разделители. Т.е. сложность заключается в следующем: «int и» при транслитерации заменяется на «int_i», а это не то, что хотят в таких случаях; надо теперь писать «int  и» (с двумя пробелами), тогда будет корректно.
2. Идентификатором может служить вообще любая последовательность символов, обрамляемая таким образом: ``Пи * 2` или ``!@#$%^&*()_+` - предкомпилятор преобразует такие последовательности в приемлемый для компилятора вид.

Приведу примеры из написанных мною программ:

int получить число с плавающей точкой(char* откуда, char*  куда)
{
int  смещение в строке = 0;
int  число цифр = 0;
// пропустить пробелы
for (; смещение в строке < 32; смещение в строке ++)
{ if (откуда [смещение в строке] != ' ')
    break;
}
// скопировать все цифры
for (int  i=0; смещение в строке < 32; смещение в строке ++, i++)
{ if ((откуда [смещение в строке] < '0'  ||  откуда [смещение в строке] > '9') && откуда [смещение в строке] != '.')
    { куда [i] = 0;
    break;
    }
    куда [i] = откуда [смещение в строке];
    ++ число цифр;
}
return  число цифр;
};

Взялся недавно за PHP5, но меня печалила мысль, что не могу употреблять столь любимый мой русский язык. Начал думать, что надо бы доработать свою утилиту под синтаксис PHP… Но потом взял и попробовал вставить русские идентификаторы – решил поиздеваться над интерпретатором. Такая идиотская мысль могла прийти только мне. И что же? Работает!!! Имена переменных, имена функций – всё работает! В качестве доказательства привожу пример функций, реализующих «сумму прописью»:

//-------------------------------------------
//   Перевод числа к виду 99-00 рубли-копейки
function Рубли_копейки($val)
{ return  Рублей ($val) . " " . Копеек($val);
}
//-------------------------------------------
// Получая строку с целым числом и род (0-мужской, 1 - женский), функция возвращает
// строку с соответствующими числительными (от единиц до миллардов)
function  Три_цифры_словами($входящее_значение, $женский_род=0)
{
if (strlen($входящее_значение) == 1)
    $входящее_значение = "0" . $входящее_значение;
if (strlen($входящее_значение) == 2)
    $входящее_значение = "0" . $входящее_значение;

$сотни = (int) substr ($входящее_значение, 0, 1);
$десятки = (int) substr ($входящее_значение, 1, 1);
$единицы = (int) substr ($входящее_значение, 2, 1);

static  $Сотни_словами = array (1 => " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот");
static  $Десятки_словами = array (2 => " двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто");
static  $Дцать_словами = array (10 => " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать",
    " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать");
static  $Единицы_словами = array (0 => " ноль", " один", " два", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять");

$строка = "";
if ($сотни >= 1)
    $строка = $Сотни_словами [$сотни];
if ($десятки >= 2)
{ $строка = $строка . $Десятки_словами [$десятки];
    if ($единицы > 0)
    { $строка_единиц = $Единицы_словами [$единицы];
    if ($женский_род == 1)
    { if ($единицы == 1)
        $строка_единиц = " одна";
        if ($единицы == 2)
        $строка_единиц = " две";
    }
    $строка = $строка . $строка_единиц;
    }
}
else
{
    if ($десятки == 1)
    { $десятки = 10 * $десятки + $единицы;
    $строка = $строка . $Дцать_словами [$десятки];
    }
    elseif ($десятки == 0)
    {
    $строка_единиц = $Единицы_словами [$единицы];
    if ($женский_род == 1)
    { if ($единицы == 1)
        $строка_единиц = " одна";
        if ($единицы == 2)
        $строка_единиц = " две";
    }
    $строка = $строка . $строка_единиц;
    }
}
return  $строка;
}
//-------------------------------------------
// Получая плавающее число, функция возвращает массив, где
// [0] - целое число, равное целой часть исходного числа
// [1] - целое числое, 2 цифрам дробной части (с округлением)
function  Целое_и_дробное($входящее_значение)
{
$входящее_значение = round ($входящее_значение, 2);
$целое = floor ($входящее_значение);
$входящее_значение = round (100 * ($входящее_значение - $целое));
$массив = array (0 => $целое, $входящее_значение);
return  $массив;
}
//-------------------------------------------
// Получая плавающее число, функция возвращает строку, в которой
// дробную часть числа выдаёт словами и приписывает "копейки" в нужном падеже
function Копеек($входящее_значение)
{
$массив = Целое_и_дробное($входящее_значение);
$Drobnoe = $массив [1];
if ($Drobnoe < 10)
    $tr = "0";
$tr = "$tr$Drobnoe";

if ($tr === "01")
    $kop = "йка";
elseif ($tr === "02" || $tr === "03" || $tr === "04")
    $kop = "йки";
else
    $kop = "ек";
$kop = Три_цифры_словами($tr, 1) . " копе" . $kop;

return  $kop;
}
//-------------------------------------------
// Получая плавающее число, функция возвращает строку, в которой
// целую часть числа выдаёт словами и приписывает "рубли" в нужном падеже
function Рублей($входящее_значение)
{
$массив = Целое_и_дробное($входящее_значение);
$целое = $массив [0];
$строка = (string) $целое;
$длина_строки = strlen ($строка);

$длина_части_строки = 3; // число цифр для единиц
if ($длина_строки <= 3)
    $длина_части_строки = $длина_строки;

$часть_строки = substr($входящее_значение, $длина_строки-$длина_части_строки, $длина_части_строки);
$результат = Три_цифры_словами($часть_строки) . " рубл";
$последний_символ = substr($часть_строки,2,1);
if ($последний_символ == "1")
    $результат = $результат . "ь";
elseif ($последний_символ == "2" || $последний_символ == "3" || $последний_символ == "4")
    $результат = $результат . "я";
else
    $результат = $результат . "ей";
$длина_строки -= $длина_части_строки;

if ($длина_строки > 0)
{
    $длина_части_строки = 3; // число цифр для тысяч
    if ($длина_строки <= 3)
    $длина_части_строки = $длина_строки;
   
    $часть_строки = substr($входящее_значение, $длина_строки-$длина_части_строки, $длина_части_строки);
       
    if ((int) $часть_строки > 0)
    {
    $последний_символ = substr($часть_строки,strlen($часть_строки)-1,1);
    if ($последний_символ == "1")
        $результат = "а " . $результат;
    elseif ($последний_символ == "2" || $последний_символ == "3" || $последний_символ == "4")
        $результат = "и " . $результат;
    else
        $результат = " " . $результат;
    $результат = Три_цифры_словами($часть_строки) . " тысяч" . $результат;
    }
    $длина_строки -= $длина_части_строки;
}

if ($длина_строки > 0)
{
    $длина_части_строки = 3; // число цифр для миллионов
    if ($длина_строки <= 3)
    $длина_части_строки = $длина_строки;
   
    $часть_строки = substr($входящее_значение, $длина_строки-$длина_части_строки, $длина_части_строки);
       
    if ((int) $часть_строки > 0)
    {
    $последний_символ = substr($часть_строки,strlen($часть_строки)-1,1);
    if ($последний_символ == "1")
        $результат = " " . $результат;
    elseif ($последний_символ == "2" || $последний_символ == "3" || $последний_символ == "4")
        $результат = "а " . $результат;
    else
        $результат = "ов " . $результат;
    $результат = Три_цифры_словами($часть_строки) . " миллион" . $результат;
    }
    $длина_строки -= $длина_части_строки;
}

if ($длина_строки > 0)
{
    $длина_части_строки = 3;
    if ($длина_строки <= 3)
    $длина_части_строки = $длина_строки;
   
    $часть_строки = substr($входящее_значение, $длина_строки-$длина_части_строки, $длина_части_строки);
    if ((int) $часть_строки > 0)
    {
            $последний_символ = substr($часть_строки,strlen($часть_строки)-1,1);
    if ($последний_символ == "1")
        $результат = " " . $результат;
    elseif ($последний_символ == "2" || $последний_символ == "3" || $последний_символ == "4")
        $результат = "а " . $результат;
    else
        $результат = "ов " . $результат;

    $результат = Три_цифры_словами($часть_строки) . " миллиард" . $результат;
    }
    $длина_строки -= $длина_части_строки;
}
$результат = ucfirst (trim ($результат));

return  $результат;
}
//-------------------------------------------

Сколько открытий чудных!

Отредактировано Юрий (10-03-2009 17:21:48)

0

2

У Вас неплохие наработки. Если Вы можете написать такой парсер, почему бы Вам не написать свой собственный компилятор со своего языка программирования? Такой который бы отражал Ваш стиль написания программ. Тем более, что некоторые концепции, например, я тоже использую. А это означает, что Ваш стиль программирования подойдет и для других.
Вы могли бы посмотреть и другие проекты и оценить некоторые их качества :). Выбрать лучшие и использовать так как Вам нравится в Вашем языке.

0

3

Юрий написал(а):

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

Неудобство в этом случае по-моему перевешивает возможное удобство. Лучше уж использовать знак подчёркивания.

0

4

Очень любопытно посмотреть на этот проект!!
Обратите внимание на стандарт перевода на русский язык операторов Си (Зуев Интерстрон), у них есть готовый компилятор который они положили в архив :(, - желательно чтобы всё было совместимо, + я попробую утрясти перевод Компонентного Паскаля на русский язык.

0

5

Сый написал(а):

> стандарт перевода на русский язык операторов Си
Где взять его текст?

могу выслать на емейл - но фактически всё уже выложено на этом форуме  - в разделе про Си

0

6

Сый написал(а):

Порой удачно составить язык не проще, чем написать компилятор. Да и будет ли этот язык превосходить имеющиеся?

Золотые слова! Уткин, Вы только вдумайтесь! :)
Кстати, зачем сразу кидаться писать свой интерпретатор, ведь даже язык Валентина можно было сделать как препроцессор, дающий на выходе тот-же Паскаль, например.
Только не стоит сразу флеймить про отличия компиляторов и интерпретаторов! Я об этом прекрасно знаю :)

Отредактировано Мудрец (12-03-2009 09:10:23)

0

7

Мудрец написал(а):

Золотые слова! Уткин, Вы только вдумайтесь! Кстати, зачем сразу кидаться писать свой интерпретатор, ведь даже язык Валентина можно было сделать как препроцессор, дающий на выходе тот-же Паскаль, например.Только не стоит сразу флеймить про отличия компиляторов и интерпретаторов! Я об этом прекрасно знаю

Я хотел заодно научиться составлять интерпретаторы :).  Слова действительно золотые, но Сый также пытается создать что-то полезное. Что полезное, применительно к общей теме форума, создаете Вы :)?

0

8

utkin295 написал(а):

Что полезное, применительно к общей теме форума, создаете Вы ?

1. Занимаюсь ДРАКОНом, абсолютно инваринтным по отношению к каким либо языкам человеков.
2. Занимаюсь чрезвычайно интересной ОСью A2.
3. Даю массу чрезвычайно полезных бесплатных советов :)
По отношению к русским языкам программирования думаю Вы мою позицию и так знаете.
У нас на Украине часто вспоминают слова великого кобзаря Тараса Григоровича Шевченко и как и полагается повсеместно "забивают" на них, к сожалению.
А сказал кобзарь очень мудрые слова "Свого навчайтесь та чужого не цурайтесь".
Так что толку от того, что мы отметём всё что можно и оставим только русское или украинское... Чему мы научимся, с чем останемся?
Другое дело, если всё полезное перенять. Языки программирования перевести, оставив обратную совместимость с оригиналом. Технологии взять на вооружение.
Я конечно не против чего-то нового, но нужно ещё хорошенько доказать что это новое лучше!

0

9

Мудрец написал(а):

1. Занимаюсь ДРАКОНом, абсолютно инваринтным по отношению к каким либо языкам человеков.2. Занимаюсь чрезвычайно интересной ОСью A2.3. Даю массу чрезвычайно полезных бесплатных советов По отношению к русским языкам программирования думаю Вы мою позицию и так знаете.У нас на Украине часто вспоминают слова великого кобзаря Тараса Григоровича Шевченко и как и полагается повсеместно "забивают" на них, к сожалению.А сказал кобзарь очень мудрые слова "Свого навчайтесь та чужого не цурайтесь".Так что толку от того, что мы отметём всё что можно и оставим только русское или украинское... Чему мы научимся, с чем останемся?Другое дело, если всё полезное перенять. Языки программирования перевести, оставив обратную совместимость с оригиналом. Технологии взять на вооружение.Я конечно не против чего-то нового, но нужно ещё хорошенько доказать что это новое лучше!

Я не против ДРАКОНа, поскольку предполагаю параллельное развитие в нескольких направлениях (даже если некоторые из них будут заведемо ложными). Почему бы Вам вместо критических замечаний не способствовать популяризации ДРАКОНа? Рассказать побольше об А2, например. За советы, конечно спасибо :). Я не против использования того что придумано в Паскале и прочих языках, можно оставить и оригинальные названия как в 1С, но зачем плодить простые клоны? Кстати человек предложил такую технологию. Возможно она имеет некоторые недостатки, но почему бы не помочь ему, вместо критики. Направьте его, дайте ссылки по аналогичным проектам, но избавленным его недостатков. Не нужно доказывать что новое обязательно лучше (тем более новое как правило далеко не новое, а очень даже старое :) ), здесь предлагаются идеи и варианты использования, только предлагается никто нникого не заставляет и не принуждает сразу использовать то что предложено.  Человек поделился опытом, и как мне кажется не напрасно, в его идеях имеется рациональное зерно. Если Вы видите это по-другому, это не означает, что все остальные должны поступать также. И конечно никто не заставляет Вас отказываться от имеющихся канонов.
И еще разница. Нужно не только перенимать, но и еще пытаться создать свое. Иначе всегда будем только перенимать за кем-то.

Отредактировано utkin295 (12-03-2009 10:10:57)

0

10

И еще можно посмотреть это Миссия проекта ;-) . Возможно Вы и смотрели, но все же...

0

11

Неудобство в этом случае [пробелы в идентификаторах] по-моему перевешивает возможное удобство. Лучше уж использовать знак подчёркивания.

В моём предкомпиляторе есть опция, позволяющая отключить возможность применения одиночных пробелов в идентификаторах.

Обратите внимание на стандарт перевода на русский язык операторов Си (Зуев Интерстрон)

Я на него обратил внимание задолго до того, как появился этот сайт :)

у них есть готовый компилятор который они положили в архив

А вот с этого места, пожалуйста, поподробнее! Где, какой архив? Где посмотреть то? Я давно у них просил (по e-mail) хоть какой-нибудь вариант компилятора, но в ответ тишина. Насколько мне известно (со слов, прозвучавших из уст тов. Сергеева, тогдашнего директора «Интерстрона»), цены на этот компилятор (самый дешёвый из вариантов) начинаются от нескольких тысяч долларов. Когда-то я у них проходил собеседование на предмет трудоустройства на вакансию разработчика компиляторов.  Но оно не имело для меня положительного результата :)

Так что толку от того, что мы отметём всё что можно и оставим только русское или украинское... Чему мы научимся, с чем останемся?
Другое дело, если всё полезное перенять. Языки программирования перевести, оставив обратную совместимость с оригиналом.

По-моему мнению, программисты должны работать на том языке, который им удобен: на русском, английском, китайском, французском, хинди. И должны существовать мультиязычные словари, включающие в себя слова и фразы на всех языках. Программу, написанную китайцами можно тогда запросто читать на русском. Проблема машинного перевода для отдельных слов и фраз решается значительно проще, чем для обычного текста. Полноценные предложения в программах бывают только в комментариях.

Отчего бы не писать вместо «int», к примеру, «цел», а вместо «char» — «знак»?

А я так и делал! Пишу:
#define    ц32 unsigned  int    // значение занимает 32 бита
#define    ц31 int    // значение занимает 31 бит,
            // оставшийся бит – это знак
#define    ц16 unsigned  short
#define    ц15 short
#define    ц8 unsigned  char
#define    ц7 char
Так же менял ключевые слова и т.д. Но такая замена лично мне радостей не добавила. Английские «if» и «else» въелись достаточно глубоко и их менять на русское особого смысла нет. А вот поди ка ты запиши без запинки сразу по-английски: «соответствующий этому номеру платёжки номер счёта-фактуры». И вот тут сразу понимаешь пользу русских идентификаторов.

Отредактировано Юрий (12-03-2009 12:40:49)

0

12

Ещё о своём предкомпиляторе. Дело в том, что он не совместим с IDE. Работаю с ним так:
- редактирую текст,
- запускаю bat-ник, в котором предкомпилятор генерирует текст на стандартном С++, затем запускается компилятор.

Если использовать IDE, то не получится свой предкомпилятор "втиснуть" между редактированием и компиляцией!
Я предлагал его в одной конторе, которое пишет ПО для процессоров BlackFin, но они отказались, т.к. IDE предлагает массу удобств, например отладчик.

0

13

Юрий написал(а):

Ещё о своём предкомпиляторе. Дело в том, что он не совместим с IDE. Работаю с ним так:- редактирую текст,- запускаю bat-ник, в котором предкомпилятор генерирует текст на стандартном С++, затем запускается компилятор.
Если использовать IDE, то не получится свой предкомпилятор "втиснуть" между редактированием и компиляцией!Я предлагал его в одной конторе, которое пишет ПО для процессоров BlackFin, но они отказались, т.к. IDE предлагает массу удобств, например отладчик.

Вы уверены? Например в Делфи имеется возможность влезть между средой разработки и компилятором. Если компилятор не встроен в среду разработки, попробуйте обмануть ее, подсунув вместо компилятора свою программу :).

0

14

Английские «if» и «else» въелись достаточно глубоко и их менять на русское особого смысла нет

Вот тут не согласен. Их необходимо заменить прежде всего.

Знаете, все мы – свободные люди. Каждый выбирает то, что ему больше подходит. Главное – чтобы была возможность выбора. Её как раз часто не бывает. Моя утилита пытается устранить этот пробел.

Мне не нравится, что меня зачастую заставляют читать по-английски. Но скатываться к русскому софт-национализму тоже не стоит.

почему бы Вам не написать свой собственный компилятор со своего языка программирования?

Мысли о создании своего языка программирования не то, чтобы посещали, они меня одолевали и одолевают до сих пор! Думаю над этим несколько лет и идей на этот счёт много.

Чем этот язык будет отличаться? Прежде всего синтаксисом и визуальным представлением.

По синтаксису. С одной стороны, в нём будет масса знакомых конструкций. С другой стороны, синтаксис этих конструкции будет лишь слегка напоминать С/С++, а паскалевских begin-end там вообще не будет. Синтаксис будет ещё более минималистичен, чем С/С++, но наглядность от этого только выиграет.

По представлению программы: оно будет текстово-графическим. Для работы с текстом будет необходим специализированный редактор, который будет не только синтаксически раскрашивать, но дополнять графическими элементами.

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

0

15

Юрий написал(а):

Мысли о создании своего языка программирования не то, чтобы посещали, они меня одолевали и одолевают до сих пор! Думаю над этим несколько лет и идей на этот счёт много.
            Чем этот язык будет отличаться? Прежде всего синтаксисом и визуальным представлением.
            По синтаксису. С одной стороны, в нём будет масса знакомых конструкций. С другой стороны, синтаксис этих конструкции будет лишь слегка напоминать С/С++, а паскалевских begin-end там вообще не будет. Синтаксис будет ещё более минималистичен, чем С/С++, но наглядность от этого только выиграет.
            По представлению программы: оно будет текстово-графическим. Для работы с текстом будет необходим специализированный редактор, который будет не только синтаксически раскрашивать, но дополнять графическими элементами.
            Сейчас не готов описывать детали раньше времени. Не хочу, чтобы энергия уходила на гудок. Но через несколько месяцев представлю на ваш суд свои наработки и попрошу высказать своё мнение. Надеюсь на дискуссию и заинтересованное обсуждение. Может даже обращусь за помощью.

Begin-end или { } это всего лишь инструмент, особого значения это не имеет.
Я пошел аналогичным путем и пишу свою самостоятельную среду разработки (правда пока там нет ничего особенного, но надеюсь в будущем появится :) ).
По своему опыту могу сказать что детали лучше обговаривать заранее, иначе Вас позже могут не понять :).
Единственное условие этого форума это поддержка русского языка в Вашем языке.

0

16

Юрий написал(а):

По-моему мнению, программисты должны работать на том языке, который им удобен: на русском, английском, китайском, французском, хинди. И должны существовать мультиязычные словари, включающие в себя слова и фразы на всех языках. Программу, написанную китайцами можно тогда запросто читать на русском. Проблема машинного перевода для отдельных слов и фраз решается значительно проще, чем для обычного текста. Полноценные предложения в программах бывают только в комментариях.

Это очень близко концепциям которые я пытаюсь внести в своем языке программирования.

0

17

Мудрец
Я согласен, что можно оставить совместимость!!! Это пойдёт только на пользу!!! )))
Я сейчас подумал, может сделать два компилятора!.. )) Один будет транслитить например с С++ на русское положение, а второй адаптировать на отечественное ОС и наоборот!!! )))
Согласны? )))) Получается и совместимость и независимость от западной ОС!.. )))) И ещё конструктор.. простите универсальный компилятор на отечественную ОС надо сделать!.. )
Юрий
Молодец! Уважаю!! Жму руку и благословляю!!! )))
Как тебе моё выше изложенное предложение? ))

0

18

Да кто бы был против Вашего предложения? Но основная причина всех жизненных проблем - это то, что в сутках только 24 часа.

По поводу ОС... Я давно с нетерпением ожидаю более-менее устойчивой работы ReactOS... Это ОС, которую хотят сделать полностью совместимой с WinNT, она разрабатывается по тем же принципам, что и Linux (почитать можно здесь: http://www.reactos.org/ru/index.html и http://www.computerra.ru/focus/332964/). Проект интернационален, русских там немного, но координатор - наш, Алексей Брагин. Вот это был бы прорыв!

0

19

Считаю необходимым и востребованным направление по русификации языков программирования.
На мой взгляд перспективны направления:
во-первых, офисное программирование (в том числе макрокоманды в Excel, Word, Access и др.), для людей, не знающих английский и не программистов  (начинающих),
во-вторых, в промышленном производстве,
в-третьих, для чисто национальных проектов.

Я немного программирую на VBA в Excel, Word, Access, Outlook, автоматизирую некоторые офисные задачи. VBA доступнее, т.к. идет с офисом в комплекте. VBA позволяет писать имена переменных на русском языке. Я этим пользуюсь. Но... все ключевые слова, свойства и методы - на английском, справка - вся на английском. В книгах нет полной информации...
Многие пишут про то, как якобы коряво выглядели бы на русском ключевые слова, конструкции, типа If...Then...Else или For...Next и т.д. Или говорят только о возможности писать переменные кириллицей. Как раз это не самая большая проблема. Проблемы возникают, например здесь:

Пример - часть кода VBA по импорту текстового файла в Excel:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & Путь & Имя, Destination:=Range("$A$1"))
        .Name = Имя
        .FieldNames = True
        .RowNumbers = False
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1251
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileOtherDelimiter = "|"
        .TextFileColumnDataTypes = Array(2, 4, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
End With

Без английского туговато изучение идет. Какие-то слова уже знаю, но не все. Уж больно много времени уходит на перевод слов кода и справки, - на мой взгляд - лишнего времени!

МОЙ ВАРИАНТ (ПРЕДЛОЖЕНИЕ) - касается и VBA и C, C++ (не важно):
Надо сделать словари к программной оболочке - редактору кода (Visual Studio или др.) так, чтобы иметь возможность переводить код на-лету на тот язык, который подключен. Оригинал кода программы - на английском. Подключил русский словарь - видишь тот же код на русском, подключил китайский словарь - видишь код на китайском и т.д. Если пишешь программу на русском - ключевые слова переводятся по словарю, имена переменных - транслитерируются в английский (или переводятся, если понятно написаны).

Машинный перевод, думаю, не проблема. В таком случае убиваем двух зайцев сразу:
1. кто как хочет, на таком разговорном языке и пишет/читает код, и
2. обмениваться исходниками с коллегами из-за границы можно, а равно править чужой код.

А по поводу читаемости русских слов... Одно из преимуществ языка SQL в том, что он больше похож на разговорный английский язык!

0

20

Согласен с Вами, всё верно.

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

0

21

А почему бы на первых порах не взять и переделать C/C++ на русский. Взять скажем тот же Linux  ведь он под GPL и просто все ядро и необходимые исходники перевести на русский .. Создать копии компиляторов  C  и заставить их принимать русский в качестве основного.. и таким образом создать полностью русскую операционку .. Тем более что юникс  выглядит куда солиднее нежели делать клон виндовс.. Это на первых порах . А потом можно будет и озаботиться написанием независимого клона ого же линукс но уже с нашими идеями и разработками.. Это походу будет проще реализовать и тем более что сейчас в России на Линукс и СПО бум..

0

22

Согласен. Осталось только разработать русскую версию самого языка и заняться переписыванием компилятора. А для этого нужны люди, имеющие желание что-то делать во славу Родины.

0

23

Юникс выглядит солиднее Винды (или её клона)? По объёму коды, традициям и проч. - да, солидно. А вот по объёму приложений, особенно ориентированных на конечного пользователя, да и по предпочтениям самих пользователей - Винда далеко впереди. ReactOS, клон Винды, значительно уступает по объёму кода Линуксу. Да и по стабильности, и проч. тоже уступает. Но какая перспектива - полная совместимость по драйверам и приложениям!

Не стоит забывать, что в основе Юниксов лежит устаревшая парадигма "всё есть файл". Парадигмой Винды является "всё есть объект". Согласитесь, это более современно. Можно упрекнуть Винду в глючности, дырявости - это всё справедливо. Но это вопрос реализации, а не идеологии. Реализуя ReactOS, можно избежать недостатков Винды. Это как с коммунизмом в России - в основе самые добрые идеи, а на практике - тюремный срок за 3 колоска и плановая экономика.

Кстати, координатор сообщества разработчиков ReactOS - наш соотечественник Алексей Брагин. Русскую версию С/С++ разрабатывать даже и не надо, она есть у Microsoft.

"Это походу будет проще..." - не надо так писать! Не коверкайте наш родной язык! В этих случаях надо писать "похоже". Наш язык и так под большим давлением - иностранные словечнки тут и там, мат и блатная "феня". И обычная безграмотность, к сожалению. Любите русский язык и очищайте его от мусора.

0

24

Интересную темы Вы, однако, подняли.

> Это как с коммунизмом в России - в основе самые добрые идеи, а на практике - тюремный срок за 3 колоска и плановая экономика.
Три колоска, говорите? А подумайте, какой бы пришла страна к моменту начала ВОВ, если бы вместо жёсткого контроля основных сфер людской деятельности был бы "свободный рынок и либерализм". Плановая экономика? Это та, которая обеспечивает при правильном управлении эффективность в разы выше рыночной? Та, про которую западные же экономисты писали: "Плановая экономика может опуститься по уровню эффективности до рыночной, но рыночкая подняться до плановой - никогда"? Я так понимаю, Вы не очень приветствуете процветание России, Вам приятнее её видеть сырьевым придатком Запада, а русский народ вымирающим.

0

25

> Русскую версию С/С++ разрабатывать даже и не надо, она есть у Microsoft.
Где?!

0

26

Вот где: MS Visual Studio 2008 Rus, там написано:

Все языки программирования (из этого пакета - моё примечание) позволяют давать русские имена переменным, обектам и процедурам, методам. Операторы не переведены

В этой ветке Вы являетесь модератором.

Да, этот пакет неполноценен в поддержке русского языка, как и мой предкомпилятор, про который написано в этой ветке. Чтобы рассмотреть большую часть проблем, связанных с программированием на русском языке, нужно эту тему вынести в отдельную ветку. Отмечу только, что на эту тему написана статья в журнале «ПРОграммист» №15, называется "Русский язык и программирование". К сожалению, только в PDF. Если у Вас иные соображения - выскажите их, там статьи обсуждаются на форуме.

0

27

Спасибо за информацию, Юрий.

Про пакет Visual Studio могу сказать, что это там х**** собачья, а не русский язык. И называть это русским языком у меня бы язык не повернулся. Тупо поддержка Уникода. Причём тут вообще русский язык?

0

28

Про Visual Studio – а я и не говорил, что там всё хорошо. Я лишь говорил, что желающие программировать на русском языке могут это делать. При использовании уже написанных библиотек всё равно придётся использовать латиницу. Новые же классы, объекты можно именовать по-русски. Да, это не полноценно. Но если потрудиться, то можно сделать так:

#define русское_имя  enlish_name

И т.д. Чтобы полноценно программировать по-русски, нужно ещё много что сделать и предусмотреть. Вы прочитали статью, про которую вам сказал? Там большая часть проблем описана. Но, может, у вас есть что добавить.

Вы глубоко ошибаетесь, что я в восторге от сегодняшней России, от прохвостов во власти и экономике. Но оглядываясь в прошлое, я вижу как тёмные, так и светлые стороны.
Светлые: коллективизм, взаимовыручка, воспитание в людях самых добрых качеств. Пощрение тяги к знаниям, культуре. Энтузиазм и стремление сделать жизнь вокруг себя лучше.  Уважение к старшим, «лишних людей» тогда не было.

А теперь о тёмных сторонах. Прадед моей жены сгнил на Соловках, потому как поп. Его сын всю жизнь озирался по сторонам, боясь, что его заберут и стыдился своего поповского происхождения. Скажите, кому так сильно помешал прадед? Если бы он остался жив, немцы бы нас победили, разве он был за Гитлера?
А ещё вспоминаю картины детства у бабушки. Все колхозники имели свой скот. Но так как абсолютно вся земля распахана под колхозные поля, то сена для коров не заготовишь – косить негде. Поэтому ВСЕ воровали колхозное. Начальство на это всё закрывало глаза. Но один дедушка почему-то не воровал, он каждое утро на своей лошадке уезжал куда-то далеко, а вечером возвращался с накошенным сеном. Он косил в лесопосадках вдоль полей. «Какой неумный дед», - думалось. «Ведь он может просто стащить в колхозе. Но даже если ему нравится помахать косой на свежем воздухе, то косил бы не в лесопосадке рядом с полем, а на самом поле. Там за час можно накосить целую телегу!» Потом оказалось, что этот дед отсидел 25 лет как раз по закону о 3 колосках: стоял голод, а дети хотели есть. Это и привело его в тюрьму. Дед надолго запомнил урок.

А ещё вспоминается уборка урожая в колхозе. Дороги, покрытые слоем зерна, потому что борта автомашин были дырявые – но никому до этого не было дела. На мой вопрос «почему?» моя мама ответила: «Потому что хозяина нет». Тогда мне это показалось крамольным, нас воспитывали в школе, что у земли не может быть хозяина… После уборки хлеба поля поджигали. Вроде бы для того, чтобы солома и сорняки сгорели и стали бы удобрением для следующего урожая. И чтобы сгорели вредители и болезни, которые могли бы помешать будущему урожаю. Но колхозники говорили, чтобы скрыть безхозяйственность, ибо слишком много зерна лежало на земле. Сейчас, много лет спустя на многих полях работают американские комбайны «Джон Дир». Поля, убранные ими, дают среднюю урожайность 80 центнеров с гектара. А вот поля, убранные комбайнами «Ростсельмаша», дают по 30-35 ц/га, как и в советское время.

Советский строй проиграл идеологическую битву в магазине. Почему джинсы можно было купить только на чёрном рынке за 120 рублей?  Это целая зарплата! Мы летали в космос, но технология производства джинсовой ткани оказалась не по зубам нашей науке. А как молодёжь охотилась за этими джинсами! Родившись на всесоюзной житнице, я попробовал, что такое сыр только в 15 лет – это произошло потому, что я перешёл на «казённые харчи». Зато мы помогали братским странам Африки. Именно в этом суть плановой экономики, именно такие строились планы, чтобы не дать советскому школьнику простого сыра, но накормить Африку? А в начале 80-х годов портовые грузчики г. Ленинграда устроили забастовку, о которой не написали в газетах. Они должны были грузить масло на корабли для отправку в забастовавшую Польшу (там как раз была «Солидарность» и Лех Валенса – но об этом мы узнали значительно позже). Но у нас у самих в СССР масло было в дефиците, вот рабочие и возмутились. Вместо рабочих масло пришлось грузить мне и моим товарищам: нас просто построили и «Равняйсь. Смирно. Шагом марш».
Плановая экономика эффективна в условиях войны, в оборонной промышленности, в крупных проектах государственного масштаба. А вот потребительский рынок плановая экономика проиграла. Простите за пример, но подтирались все газетками – туалетной бумаги не было.

Довелось работать на текстильном предприятии. В 1999 году там работало 900 человек, но продукции выпускали больше, чем в советское время, когда работников было 2500 человек. Вот такая эффективность экономики в реальной живой жизни. Своими глазами, а не с чужих слов.

Если Вы думаете, что я продам Родину за 30 сортов колбасы, то заблуждаетесь. Меня звали работать в США, но я по-прежнему живу здесь. Если не я, то кто будет жить и работать здесь и исправлять существующие несправедливости? Я хочу, чтобы в России жили мои дети, а не дети гастарбайтеров. Я для России воспитываю троих детей, а Вы, г-н Сый, сколько детей имеете? Кого Вы оставите после себя?

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

0

29

Про "Visual Studio" повторяю - ничего общего с идеей русского программования оно не имеет.

Про советскую власть. Я ведь нигде не писал, что всё было идеально, и страна не знала проблем. Отнюдь. И то, что Вы написали, - яркое тому подтверждение. Но возмутило меня то, что положительные стороны советского общественного устройства Вы хотели выдать как его недостатки. Я рад, что предыдущее Ваше сообщение было мною просто не правильно понято, но, тем не менее, не следует всё обобщать. Никто ведь не спорит, что были и необоснованно жестокие наказания, и несправедливость, и непродуманная политика местной власти, были и совсем уж нелепые и никому ненужные действия во внешней политике. Порой это носило характер преступного попустительства и расточительства народных ресурсов. Это всё выглядит ужасно, но если сопоставить это с РФ и прилегающими "государствами", то все эти недостатки померкнут среди того, что творится в стране последние 20 лет.

А в магазине мы войну проиграли или нет, не в том суть. А суть в том, что эта война была идеологическая. Людям подсунули фетиш в виде западных товаров, но им и других фетишей понаделали, вроде западной "свободы", рыночной экономики, гражданского общества и т. п. Люди не понимали, что это такое, но им внушили, что это хорошо. В том, что это допустили, и состояло наше поражение.

Советский план обеспечивал общество необходимым для жизни. Страна не знала ни голода, ни большинства проблем нынешнего общества РФ. А если вспомнить, что до этого страна пережила, то это кажется чудом. То, что экономика стала неэффективной, в результате чего остановился экономический рост и начался дефицит товаров, - это не показатель того, что плановая экономика плохая. Это показатель того, что ею надо управлять с умом, а не как попало: это не рынок. Тут, скорее, в пример надо приводить послевоенную пятилетку.

Про мат. Я считаю мат неотъемлемой частью русского лексикона и языка в целом. Его можно употреблять к месту и в меру. Но каким ещё эпитетом можно обозначить это "Visual Studio" в контексте идеи русского программования, нежели как "х****"?

0

30

Знаете, мне довелось изучать такую науку, как научный коммунизм и сдавать гос. экзамен по нему. Раньше, изучая общественные науки, нам всё время говорили, что коммунизм – это общество, где «от каждого – по способностям, каждому - по потребностям». Нередко вокруг этого «закона коммунизма» разворачивались диспуты и споры. Это ж какая экономика должна быть, чтобы дать людям то, что каждый из них хочет. А что если все захотят на выходные летать на море – это какая экономика с этим справится? А если всем вдруг понадобились золотые унитазы – где ж золота столько возьмут? Но однажды в учебнике научного коммунизма я прочитал то, что всё объяснило: «от каждого – по способностям, каждому - по научно обоснованным потребностям». Захотелось покататься на лыжах с Эльбруса – всё, до свидания, потому что у твоих желаний нет научного обоснования, партком не даст тебе туда путёвку. Наука в руках партработников – она такая, классово чуткая. Скажет наука, что подтираться газеткой – вполне допустимо с научной точки зрения, и будешь жить по науке.

Выполнить все (даже научно необоснованные) потребности человека невозможно. Это утопия. Вот так рухнул коммунизм в отдельно взятом идивидууме.

Советский план обеспечивал общество необходимым для жизни

А вот и не так. Вот вы пишите из дома на компьютере, да ещё и находитесь во всемирной информационной системе. А Госплан, между прочим, не планировал, что каждая семья будет иметь компьютер. И КГБ не планировал, что Вы будете в Интернете.

По моим убеждениям, на власть в стране нужно смотреть в совсем в другом разрезе. Нам навязывают выбор идеологический – коммунист или капиталист, либерал или консерватор. Это неправильно, надо смотреть на всё в нравственном разрезе, с точки зрения совести. Любой строй, хоть советский, хоть капиталистический, хоть фашистский преступен, если у власти стоят бессовестные люди и поступают с людьми бессовестно. Не важно, какую цель вы перед собой ставите, какие лозунги произносите, но если вы убиваете, если люди от вас бедствуют, то это обесценивает любые ваши красивые слова, любую вашу прекрасную идеологию. Почему после революции миллионы погибли, а миллионы вынуждены были уехать? Отгородил бы товарищ Ленин кусок земли для несогласных и пусть бы они там жили. Для немцев не жалко территориальных уступок, а для своих пожалел. А зачем Гитлеру надо было уничтожать евреев? Если ему так припекло, если они ему так ненавистны, то посадил бы их в поезда, дал бы подъёмные, произнёс напутственное слово – и вперёд, на новую-старую родину, в Палестину. И Чубайс мог бы реально раздать собственность, а не вручить бумажки…

эти недостатки померкнут среди того, что творится в стране последние 20 лет

Я не готов подвести итоги так глобально. Я вам не скажу за всю Одессу, но скажу по своим родственникам. Загибаю пальцы: «погиб в Соловках», «умерла от голода» - это потери советского времени. Потери современности: «спился, но пока не умер». Счёт 2-1.

Использование мата считается неприемлемым в приличном обществе и в литературе.

Статья 20.1 кодекса об административных правонарушениях Российской Федерации:
1. Мелкое хулиганство, то есть нарушение общественного порядка, выражающее явное неуважение к обществу, сопровождающееся нецензурной бранью в общественных местах, оскорбительным приставанием к гражданам, а равно уничтожением или повреждением чужого имущества, — влечёт наложение административного штрафа в размере от пятисот до одной тысячи рублей или административный арест на срок до пятнадцати суток.

0


Вы здесь » Языки программирования с русским синтаксисом » Зачем нужнен русский язык в программировании » Предкомпилятор "Русский С++ --> стандартный С++"