Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Русский язык программирования, был бы совсем другим 
:(
    Опции темы
ValeryLaptev
Дата 22.8.2010, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Препод



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.8.2010
Где: Астрахань

Репутация: нет
Всего: 1



Вообще-то русскоязычный ЯП может быть весьма полезен в школе при обучении программированию 5-6-классников. Опыт есть, описан на сайте Информатика-21. Рекомендую почитать, весьма интересное чтиво.
PM MAIL   Вверх
БелАмор
Дата 22.8.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: нет
Всего: 17



Есть ещё один минус: резкое увеличение ошибок в коде...
Вы когда-нибудь видели, чтобы русскоязычный программист (даже с жуткого бодуна) писал что-нибудь вроде такого:
Un known
Ab normal
Ab solute

А на русском - сколько угодно:
Цитата(Samotnik @  1.6.2009,  13:23 Найти цитируемый пост)
Было жутко не привычно и не уклюже

PM   Вверх
Vasay
Дата 22.8.2010, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: нет
Всего: 73



Пришлось тут за одЫн сЫ взяться. 

Сначала раздражает, но потом привыкаешь - и вполне нормально пишется и на русском.   


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Драконограф
Дата 23.8.2010, 05:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 23.8.2010

Репутация: нет
Всего: нет



Вроде идею изменяемости (по-моему, у лингвистов такие языки "флективными" называют) для прогязыка реализовал наш разработчик Паронджанов - только на графической базе. У него отдельные вершины-операторы графа алгоритма (программы) модифицируются добавлением других вершин (присоединением справа или слева). Свой язык граф-схем он описал в ряде публикаций, в частности, в этой книге, есть и другое описание в этом разделе. Язык активно обсуждается, например, на этом форуме ,уже пробуют делать среды под него, на этот счёт можно почитать, в частности, на этой странице.
В принципе конечная цель создания языка - "скрещивать" его (в части текста вершин) как с родным языком, так и с прогязыком, чтобы по графу генерировать текст алгоритма (программы).
PM MAIL   Вверх
bems
Дата 24.8.2010, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



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


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Shaggie
Дата 24.8.2010, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(bems @  24.8.2010,  11:35 Найти цитируемый пост)
А почему бы не программировать на клингонском? 


уже


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
bems
Дата 24.8.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Я должен был догадаться что я не первый smile


--------------------
Обижено школьников: 8
PM MAIL   Вверх
уни
Дата 6.10.2010, 18:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.8.2010

Репутация: -1
Всего: -2



Вот пример программирования на русском. Автору первого поста респект и уважуха smile хотя это одно и тоже. Действительно, когда я взялся писать на русском, то сами практика показала, что английский язык программирования - просто туп до безобразия и не может вместить русского языка. Эта его ограниченность, которая некоторым очень удобна smile и подкупает.

Ещё я заметил просто невероятную зомбированность программистов, которые привыкли писать на английском, а всё остальное - от сатаны smile как прям с промытыми мозгами... не иначе.
Вы почему не считаете время, которое каждое поколение наших программистов тратит на изучение английского? И самое смешное никто из них не мыслит в английских образах. Все (подавляющее большинство) программеры переводят в уме слова в русские образы и тем самым делают двойную работу. Это одна из причин нашего отставания в этой области. То время, что мы занимаемся переводами они используют для придумывания всё новых технологий. Вот и всё. Вы умножьте всю армию проргаммеров на эти 2 года и так каждые 5-8 лет. Цифра просто будет поражать сколько времени уходит в свисток. Они же перенимают знания от предков непосредственно. Я уж не говорю про нашу армию и оборонку вообще, где должны использоваться только русские языки программирования. Или тут кто-то вражина есть, которая хочет того, чтобы исходники наших секретных программ прям на английском писались? Сталин бы тут за это дело сразу сказал: "Растрелять..."

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

    public char Символ() {
        if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) )
            return ' ';
        return Текст.charAt( (int) ++Свойства.Позиция );
    }

    public int ПолучитьЭлемент() throws Exception {
        char Литера;

        do {
            if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
                Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
                return Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ;
            }
            Литера = Символ();
        } while ( ( Литера == ' ' )
                || ( Литера == '\t' )
                || ( Литера == '\r' )
                || ( Литера == '\n' ) );

        // Множество управляющих символов
        if ( Литера == ';' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
//            if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
//                return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ );
//            }
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ВЫВОД );
        }
        // Множество операций
        else if ( Литера == '*' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_УМНОЖИТЬ );
        }
        else if ( Литера == '/' ) {
            long врм = Свойства.Позиция;

            Литера = Символ();
            // Пропуск строчного комментария
            if ( Литера == '/' ) {
                do {
                    if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
                        Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
                        return Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ;
                    }
                    Литера = Символ();
                } while ( !( ( Литера == '\r' ) || ( Литера == '\n' ) ) );

                return ПолучитьЭлемент();
            } else {
                Свойства.Позиция = врм;
            }

            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ДЕЛИТЬ );
        }
        else if ( Литера == '+' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПЛЮС );
        }
        else if ( Литера == '-' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_МИНУС );
        }
        else if ( Литера == '^' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_СТЕПЕНЬ );
        }
        else if ( Литера == '!' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ФАКТОРИАЛ );
        }
        else if ( Литера == '(' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЛЕВАЯСКОБКА );
        }
        else if ( Литера == '[' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЛЕВАЯКВАДРСКОБКА );
        }
        else if ( Литера == ']' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРАВАЯКВАДРСКОБКА );
        }
        else if ( Литера == ')' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРАВАЯСКОБКА );
        }
        else if ( Литера == '=' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРИСВОИТЬ );
        }
        else if ( Литера == ',' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЗАПЯТАЯ );
        }

        // Строка текста, заключённая в кавычки
        else if ( Литера == '"' ) {
            Свойства.СтрокаЗначение = "";
            Литера = Символ();
            while ( Литера != '"' ) {
                Свойства.СтрокаЗначение += Литера;
                Литера = Символ();
            }
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ТЕКСТ );
        }

        // Множество целых чисел
        else if ( ( Литера >= '0' ) && ( Литера <= '9' ) ) {
            String Число = "" + Литера;
            Литера = Символ();

            while ( ( ( Литера >= '0' ) && ( Литера <= '9' ) ) ) {
                Число += Литера;
                Литера = Символ();
            }

            Свойства.ЧислоЗначение = Integer.parseInt( Число );
            Свойства.Позиция--; // возвращаем позицию на предыдущий символ
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЧИСЛО );
        }

        // Множество имён
        else if ( ( ( Литера >= 'a' ) && ( Литера <= 'z' ) ) 
                || ( ( Литера >= 'A' ) && ( Литера <= 'Z' ) )
                || ( ( Литера >= 'А' ) && ( Литера <= 'я' ) )
                || ( Литера == 'Ё' )
                || ( Литера == 'ё' )
                || ( Литера == '_' )
                ) {
            Свойства.ИмяЗначение = "" + Литера;
            Литера = Символ();

            while ( ( ( Литера >= 'a' ) && ( Литера <= 'z' ) ) 
                    || ( ( Литера >= 'A' ) && ( Литера <= 'Z' ) )
                    || ( ( Литера >= 'А' ) && ( Литера <= 'я' ) )
                    || ( Литера == 'Ё' )
                    || ( Литера == 'ё' )
                    || ( ( Литера >= '0' ) && ( Литера <= '9' ) )
                    || ( Литера == '.' )
                    || ( Литера == '_' )
                    ) {
                Свойства.ИмяЗначение += Литера;
                Литера = Символ();
            }
            Свойства.Позиция--; // возвращаем позицию на предыдущий символ
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            
            // Ключевые слова
            if ( ( Свойства.ИмяЗначение.equals( "true" )
                    || ( Свойства.ИмяЗначение.equals( "false" ) )
                    ) ) {
                return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КЛЮЧЕВОЕ_СЛОВО );               
            }

            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ИМЯ );
        }

        throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНЫЙ_СИМВОЛ );
    }

    public ОбразРезультата ОсновныеОперации( boolean продолжать ) throws Exception {
        ОбразРезультата Результат;
        if ( продолжать ) ПолучитьЭлемент();

        switch ( Свойства.ТекущийЭлемент ) {
            case ЭЛЕМЕНТ_КОНЕЦ:
            case ЭЛЕМЕНТ_ВЫВОД:
                return null;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЧИСЛО ) {
            Результат = new ОбразРезультата( Свойства.ЧислоЗначение );
            ПолучитьЭлемент();
            return Результат;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_КЛЮЧЕВОЕ_СЛОВО ) {
            if ( Свойства.ИмяЗначение.equals( "true" ) ) {
                Результат = new ОбразРезультата( true );
                ПолучитьЭлемент();
                return Результат;
            }
            else if ( Свойства.ИмяЗначение.equals( "false" ) ) {
                Результат = new ОбразРезультата( false );
                ПолучитьЭлемент();
                return Результат;
            }
            
            throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНОЕ_КЛЮЧЕВОЕ_СЛОВО );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
            ОбразСвойств врм;
            String имя = Свойства.ИмяЗначение;

            врм = Свойства;
            Свойства = new ОбразСвойств( врм );
            ПолучитьЭлемент();

            if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ПРИСВОИТЬ ) {
                Свойства = врм;
                return ОсновныеОперации( true );
            }
            Свойства = врм;

            if ( Переменные.ИмяВТаблице( имя ) ) {
                int свойство = Переменные.СвойствоЭлемента( имя );
                if ( ( свойство == СВОЙСТВО_КОНСТАНТА ) || ( свойство == СВОЙСТВО_ПЕРЕМЕННАЯ ) ) {
                    ОбразРезультата знач = Переменные.ЗначениеЭлемента( имя );
                    ПолучитьЭлемент();
                    return знач;
                }
            } else {
                throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНЫЙ_ИДЕНТИФИКАТОР );                
            }
            return ОсновныеОперации( true );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ПРИСВОИТЬ ) {
            ОбразСвойств врм;
            врм = Свойства;
            Свойства = new ОбразСвойств( врм );
            ПолучитьЭлемент();

            if ( ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ВЫВОД ) || ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_КОНЕЦ ) ) {
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ВЫВОД );
            }
            Свойства = врм;

            if ( Свойства.ПредыдущЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
                String имя = Свойства.ИмяЗначение;
                if ( Переменные.ИмяВТаблице( имя ) ) {
                    int свойство = Переменные.СвойствоЭлемента( имя );
                    if ( свойство == СВОЙСТВО_ПЕРЕМЕННАЯ ) {
                        ОбразРезультата знач = СложениеВычитание( true );
                        Переменные.ИзменитьЭлемент( имя, свойство, знач );
                        ПолучитьЭлемент();
                        return знач;
                    }
                    throw new ИсключениеРазборщика( ОШИБКА_ИЗМЕНИТЬ_НЕЛЬЗЯ );
                } else {
                    ОбразРезультата знач = СложениеВычитание( true );
                    Переменные.ДобавитьЭлемент( имя, СВОЙСТВО_ПЕРЕМЕННАЯ, знач );
                    ПолучитьЭлемент();
                    return знач;
                }
            }
            throw new ИсключениеРазборщика( ОШИБКА_ПРИ_ПРИСВОЕНИИ );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ТЕКСТ ) {
            Результат = new ОбразРезультата( Свойства.СтрокаЗначение );
            ПолучитьЭлемент();
            return Результат;
        }

        // Унарный минус
        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_МИНУС ) {
            return операторМИНУС( УмножениеДеление( true ) );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЛЕВАЯСКОБКА ) {
            if ( Свойства.ПредыдущЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
                String имя = Свойства.ИмяЗначение;
                int свойство = Переменные.СвойствоЭлемента( имя );
                if ( свойство == СВОЙСТВО_ФУНКЦИЯ ) {
                    ОбразРезультата знач = Список( true );
                    if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯСКОБКА )
                        throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_СКОБКА );
                    ПолучитьЭлемент();
                    return Функция( имя, знач );
                } else {
                    throw new ИсключениеРазборщика( ОШИБКА_НЕСООТВЕТСТВИЕ_ТИПА );
                }
            }
            Результат = СложениеВычитание( true );
            if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯСКОБКА )
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_СКОБКА );
            ПолучитьЭлемент();
            return Результат;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЛЕВАЯКВАДРСКОБКА ) {
            ОбразРезультата знач = Список( true );
            if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯКВАДРСКОБКА )
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_КВАДР_СКОБКА );
            ПолучитьЭлемент();
            Vector врм = ( Vector ) знач.Значение.elementAt(0);
            int строк = ( ( Integer ) знач.Размер.elementAt(0) ).intValue();
            return операторSTACK( new ОбразРезультата( строк, 1, врм ) );
        }

        return null;
    }

PM MAIL   Вверх
Vasay
Дата 6.10.2010, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: нет
Всего: 73



уни
Что это за бред?
Какой это нафиг русский язык программирования????    Он абсолютно английский с русскими переменными - нафиг такое, ни рыба ни мясо

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

Код

Функция ПолучитьПользователяДляОтправкиЭлектронныхСообщений()
    
    #Если Сервер Тогда
        // Выполнение отправки писем фоновым заданием
        Возврат Справочники.Пользователи.ПустаяСсылка();
    #Иначе
        Возврат ПараметрыСеанса.ТекущийПользователь;
    #КонецЕсли
    
КонецФункции


Функция ЗагрузитьИзмененияДляУзлаИзФайлаОбмена(УзелОбмена, КоличествоЭлементовВТранзакцииНаЗагрузкуДанных = 0, ЧтениеXML) Экспорт
    
    ЭтотУзелОбмена = ПланыОбмена[ПолучитьИмяПланаОбмена(УзелОбмена)].ЭтотУзел();
    // Загрузка из найденного файла
    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
    ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
    
    Если ЧтениеСообщения.Отправитель <> УзелОбмена Тогда
        // Сообщение предназначено не для этого узла
        ВызватьИсключение "Неверный узел в файле обмена данными";            
    КонецЕсли;
    
    // Удаляем регистрацию изменений для узла отправителя сообщения
    ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);
    
    // считаем сколько объектов прочитали
    КоличествоПрочитанныхОбъектов = 0;
    КоличествоЗаписанныхОбъектов = 0;
    
    // начинаем транзакцию
    НачатьТранзакцию(); 
    
    ЭтотУзелОбменаОбъект = Неопределено;
    
    Попытка
        
        // Читаем данные из сообщения
        Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
                    
            // Читаем очередное значение
            Данные = ПрочитатьXML(ЧтениеXML);
            
            КоличествоПрочитанныхОбъектов = КоличествоПрочитанныхОбъектов + 1;
            
            Если КоличествоПрочитанныхОбъектов % 100 = 0 Тогда
                #Если Клиент Тогда
                    Состояние("Чтение изменений от узла """ + УзелОбмена.Наименование + """. Считано объектов: " + Строка(КоличествоПрочитанныхОбъектов));
                #КонецЕсли
            КонецЕсли;
                    
            // по идее какие изменения принимать а какие откатывать должен определять сам план обмена
            Если ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
                        
                //Возник конфликт
                //И сами данные были изменены и в присланном файле содержится изменение этих данных
                Если ЭтотУзелОбменаОбъект = Неопределено Тогда
                    
                    ЭтотУзелОбменаОбъект = ЭтотУзелОбмена.ПолучитьОбъект();
                    
                КонецЕсли;
                
                ПрименятьИзменения = ЭтотУзелОбменаОбъект.ПрименитьИзменениеКИнформационнойБазе(ЧтениеСообщения.Отправитель, Данные); 
                Если Не ПрименятьИзменения Тогда
                    Продолжить;
                КонецЕсли;
                        
            КонецЕсли;
                    
            // Записываем перенесенные данные
            Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
            Данные.ОбменДанными.Загрузка = Истина;
            Данные.Записать();
            
            КоличествоЗаписанныхОбъектов = КоличествоЗаписанныхОбъектов + 1;
            
            Если (КоличествоЭлементовВТранзакцииНаЗагрузкуДанных > 0)
                И (КоличествоЗаписанныхОбъектов = КоличествоЭлементовВТранзакцииНаЗагрузкуДанных) Тогда
                
                // промежуточную транзакцию закрываем и открываем новую
                ЗафиксироватьТранзакцию();
                НачатьТранзакцию();
                
                КоличествоЗаписанныхОбъектов = 0;
            КонецЕсли;
                                    
        КонецЦикла;
        
        // фиксируем все изменения которые были записаны
        ЗафиксироватьТранзакцию();    
                    
        ЧтениеСообщения.ЗакончитьЧтение();
        ЧтениеXML.Закрыть();
        
    Исключение
        
        ОтменитьТранзакцию();
        
        #Если Клиент Тогда
            ОбщегоНазначения.СообщитьОбОшибке("" + ОписаниеОшибки());
        #КонецЕсли
        
        ЧтениеXML.Закрыть();
        Возврат Ложь;
        
    КонецПопытки;
        
    Возврат Истина;
        
КонецФункции // ПрочитатьИзмененияДляУзла



Добавлено @ 18:52
Единственно,  все же хочу сказать, что английский язык удобней. Вот меня жутко добивают такие конструкции:

Для Каждого пользователь Из пользователи Цикл
....
КонецЦикла;

Все время хочется написать:
Для Каждого пользователя

Но в коде цикла придется писать:

пользователя.имя smile (это уже похоже на какое-то таджикско-узбекское наречие: насяльника.задания)


Вот на английском выглядит логичней:

For Each user In users Do .....

Это сообщение отредактировал(а) Vasay - 6.10.2010, 18:56


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
smartov
Дата 6.10.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Vasay, одинсэ?
PM MAIL   Вверх
уни
Дата 6.10.2010, 19:09 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.8.2010

Репутация: -1
Всего: -2



Vasay, умник, сам ты бред. Язык программирования - это не только операторы.

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

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

Добавлено через 7 минут и 58 секунд


Это часть интерпретатора, который выполняет вот такие сценарии для конфигурирования программы:
Код

// Типовое расписание для музыкального программируемого
// школьного звонка "Школьник-3"
// Автор: Мезенцев В. Н.
// Дата создания: Чт 02.09.2010 г.
// Место: МОУ СШ №2 г.п. Излучинск Нижневартовского района

// Сделайте копию этого файла, т.к. при экспорте расписаний
// из программы комментарии исчезнут.

// [Описание]
// В файле описаны три расписания: Будни, Суббота и Пустое и один
// годовой план: "2010-2011 гг.".

// Задание от школы для составления файла расписаний:

// Пн-Пт
// 1. 8-00 8-45
// 2. 8-55 9-40
// 3. 9-55 10-40
// 4. 10-55 11-40
// 5. 12-00 12-45
// 6. 12-55 13-40
// 7. 13-50 14-35

// Сб
// 1. 8-00 8-45
// 2. 9-00 9-45
// 3. 10-00 10-45
// 4. 11-00 11-45
// 5. 11-55 12-40

// Предварительные звонки за 2 минуты до начала урока.
// Первый предварительный звонок за 5 минут до начала урока.

// ----------------------------------------------------------------

// [Константы]
// Примечание: Значения констант изменять нельзя, т.к. это приведёт
// к ошибкам при считывании файла

ЗВОНОК_СВОБОДНЫЙ = 0;
ЗВОНОК_НАЧАЛО = 1;
ЗВОНОК_ОКОНЧАНИЕ = 2;

Корень = 0;

ГРУППА_РАСПИСАНИЕ = 2;
ГРУППА_УРОК = 3;

// [Вспомогательные переменные]
// Ими можно пользоваться при ручном составлении расписания.
// Сокращение записи ускоряет загрузку файла.

Путь1 = "file:///root1/Мелодии/[Короткая] Время.mp3";
Путь2 = "file:///root1/Мелодии/Гостья из XXI.mp3";
Путь3 = "file:///root1/Мелодии/Гостья из XXI.mp3";

// [Расписания]

// Для добавления расписания нужно сделать запись вида:

// ид_расписания = ДобавитьГруппу( 0, 2, "имя_расписания" );

// ид_расписания - это вспомогательная переменная, которая используется
// только при считывании файла программой;
// имя_расписания - эта строка используется в программе для работы с расписанием.
// ид_расписания и имя_расписания не обязательно должны совпадать;
// 0 - это идентификатор родителя группы;
// 2 - это идентификатор группы-расписания.

Будни = ДобавитьГруппу( Корень, ГРУППА_РАСПИСАНИЕ, "Будни" );
Суббота = ДобавитьГруппу( Корень, ГРУППА_РАСПИСАНИЕ, "Суббота" );
Пустое = ДобавитьГруппу( Корень, ГРУППА_РАСПИСАНИЕ, "Пустое" );

// [Уроки]

// Для добавления урока нужно сделать запись вида:

// ид_урока = ДобавитьГруппу( ид_расписания, 3, "имя_урока" );

// ид_урока - это вспомогательная переменная, которая используется
// только при считывании файла программой;
// ид_расписания - идентификатор расписания, полученный при добавлении
// расписания выше;
// имя_урока - эта строка используется в программе для работы с уроком;
// ид_урока и имя_урока не обязательно должны совпадать;
// 3 - это идентификатор группы-урока.

Будни.Урок1 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок1" );
Будни.Урок2 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок2" );
Будни.Урок3 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок3" );
Будни.Урок4 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок4" );
Будни.Урок5 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок5" );
Будни.Урок6 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок6" );
Будни.Урок7 = ДобавитьГруппу( Будни, ГРУППА_УРОК, "Урок7" );

Суббота.Урок1 = ДобавитьГруппу( Суббота, ГРУППА_УРОК, "Урок1" );
Суббота.Урок2 = ДобавитьГруппу( Суббота, ГРУППА_УРОК, "Урок2" );
Суббота.Урок3 = ДобавитьГруппу( Суббота, ГРУППА_УРОК, "Урок3" );
Суббота.Урок4 = ДобавитьГруппу( Суббота, ГРУППА_УРОК, "Урок4" );
Суббота.Урок5 = ДобавитьГруппу( Суббота, ГРУППА_УРОК, "Урок5" );

// [Звонки]

// Для добавления урока нужно сделать запись вида:

// ид_звонка = ДобавитьЗвонок( ид_урока, час, минута, тип, путь1 , путь2 );
// или
// ДобавитьЗвонок( ид_урока, час, минута, тип, путь1 , путь2 );

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

ДобавитьЗвонок( Будни.Урок1, 7, 55, ЗВОНОК_СВОБОДНЫЙ, Путь1, "" );

ДобавитьЗвонок( Будни.Урок1, 8, 0, ЗВОНОК_НАЧАЛО, Путь2, "" );
ДобавитьЗвонок( Будни.Урок1, 8, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок2, 8, 55, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок2, 9, 40, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок3, 9, 55, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок3, 10, 40, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок4, 10, 55, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок4, 11, 40, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок5, 12, 0, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок5, 12, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок6, 12, 55, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок6, 13, 40, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Будни.Урок7, 13, 50, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Будни.Урок7, 14, 35, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Суббота.Урок1, 7, 55, ЗВОНОК_СВОБОДНЫЙ, Путь1, "" );

ДобавитьЗвонок( Суббота.Урок1, 8, 0, ЗВОНОК_НАЧАЛО, Путь2, "" );
ДобавитьЗвонок( Суббота.Урок1, 8, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Суббота.Урок2, 9, 0, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Суббота.Урок2, 9, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Суббота.Урок3, 10, 0, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Суббота.Урок3, 10, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Суббота.Урок4, 11, 0, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Суббота.Урок4, 11, 45, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

ДобавитьЗвонок( Суббота.Урок5, 11, 55, ЗВОНОК_НАЧАЛО, Путь2, Путь1 );
ДобавитьЗвонок( Суббота.Урок5, 12, 40, ЗВОНОК_ОКОНЧАНИЕ, Путь3, Путь1 );

// [Планы]

// Примечание: При составлении годового плана обязательно должно быть определено
// хотя бы одно расписание.

// [Вспомогательные переменные]
// Ими можно пользоваться при ручном составлении расписания.
// Сокращение записи ускоряет загрузку файла.

Р1 = Будни;
Р2 = Суббота;
Р3 = Пустое;

// Матрицы годовых планов создаются автоматизировано при помощи Планировщика,
// который входит в состав программы. Матрица имеет размер 12x31, т.е.
// 12 месяцев (строк) по 31 дню (столбцов). Каждый элемент матрицы является
// идентификатором расписания, которое было задано выше в файле.

ОсновнойПлан =
[
[Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1],
[Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р3,Р3,Р3],
[Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1],
[Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3],
[Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1],
[Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р3],
[Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3],
[Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р3],
[Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1,Р2,Р3,Р1,Р1,Р1,Р1,Р1]
];

ДополнительныйПлан =
[
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3],
[Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3,Р3]
];

ДобавитьПлан( "2010-2011 гг.", ОсновнойПлан, ДополнительныйПлан );



Vasay, как ты думаешь, тот кто пишет почти на русском лексический анализатор для русской грамматики, он чего-нить смыслит в ТЕМЕ? А? smile
PM MAIL   Вверх
Vasay
Дата 6.10.2010, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: нет
Всего: 73



Цитата(smartov @  6.10.2010,  19:04 Найти цитируемый пост)
Vasay, одинсэ?


 smile 


уни
Цитата(уни @  6.10.2010,  19:09 Найти цитируемый пост)
Vasay, умник, сам ты бред



А как назвать еще такой код:  return Текст.charAt( (int) ++Свойства.Позиция );

Пытаться писать на русском в английском языке программирования - бред. Да и все равно, нужно знать английский (так как вся документация на английском). Потому, если уж хочется писать на русском - все должно быть на русском (в том числе и документация к языку).

Добавлено через 4 минуты и 47 секунд
Цитата

1С - это внутренний рынок, поэтому правильно они выбрали русский язык. 


1с, кстати, двуязычен. Так что сама платформа готова к покорению буржуйских просторов ;-)


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
уни
Дата 6.10.2010, 19:32 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.8.2010

Репутация: -1
Всего: -2



"Пытаться писать на русском в английском языке программирования - бред."

ЭТО ТВОЁ личное мнение, забыл дописать smile

"Да и все равно, нужно знать английский (так как вся документация на английском). Потому, если уж хочется писать на русском - все должно быть на русском (в том числе и документация к языку)."

Дочитай до конца, если не понял. Потом перечитай и посмотри на МОЮ документацию по МОЕМУ языку в комментариях. Это внутренний рынок и моя квалификация позволяет мне не нагружать моих пользователей английским языком:
http://rapidshare.com/files/417645443/Scho...l_ver._0.5.8.7z

Вот в этом и смысл. А по поводу совмещения - это промежуточный вариант кодинга. Пока нет возможности писать всё на русском. Но всё идёт к тому, что скоро будет инструментарий для внутреннего потребления. Оборонка должна вложить туда деньги.


Это сообщение отредактировал(а) уни - 6.10.2010, 19:36
PM MAIL   Вверх
уни
Дата 6.10.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 4.8.2010

Репутация: -1
Всего: -2



И не сомневайтесь в моей квалификации smile
user posted image
PM MAIL   Вверх
Vasay
Дата 6.10.2010, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: нет
Всего: 73



Цитата

Дочитай до конца, если не понял. Потом перечитай и посмотри на МОЮ документацию по МОЕМУ языку в комментариях. Это внутренний рынок и моя квалификация позволяет мне не нагружать моих пользователей английским языком:


а это что такое (из вашего поста ):

Код

 public char Символ() {
        if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) )
            return ' ';
        return Текст.charAt( (int) ++Свойства.Позиция );
    }

    public int ПолучитьЭлемент() throws Exception {
        char Литера;

        do {
            if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
                Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
                return Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ;
            }
            Литера = Символ();
        } while ( ( Литера == ' ' )
                || ( Литера == '\t' )
                || ( Литера == '\r' )
                || ( Литера == '\n' ) );

        // Множество управляющих символов
        if ( Литера == ';' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
//            if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
//                return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ );
//            }
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ВЫВОД );
        }
        // Множество операций
        else if ( Литера == '*' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_УМНОЖИТЬ );
        }
        else if ( Литера == '/' ) {
            long врм = Свойства.Позиция;

            Литера = Символ();
            // Пропуск строчного комментария
            if ( Литера == '/' ) {
                do {
                    if ( Свойства.Позиция >= ( Свойства.Размер - 1 ) ) {
                        Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
                        return Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КОНЕЦ;
                    }
                    Литера = Символ();
                } while ( !( ( Литера == '\r' ) || ( Литера == '\n' ) ) );

                return ПолучитьЭлемент();
            } else {
                Свойства.Позиция = врм;
            }

            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ДЕЛИТЬ );
        }
        else if ( Литера == '+' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПЛЮС );
        }
        else if ( Литера == '-' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_МИНУС );
        }
        else if ( Литера == '^' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_СТЕПЕНЬ );
        }
        else if ( Литера == '!' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ФАКТОРИАЛ );
        }
        else if ( Литера == '(' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЛЕВАЯСКОБКА );
        }
        else if ( Литера == '[' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЛЕВАЯКВАДРСКОБКА );
        }
        else if ( Литера == ']' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРАВАЯКВАДРСКОБКА );
        }
        else if ( Литера == ')' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРАВАЯСКОБКА );
        }
        else if ( Литера == '=' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ПРИСВОИТЬ );
        }
        else if ( Литера == ',' ) {
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЗАПЯТАЯ );
        }

        // Строка текста, заключённая в кавычки
        else if ( Литера == '"' ) {
            Свойства.СтрокаЗначение = "";
            Литера = Символ();
            while ( Литера != '"' ) {
                Свойства.СтрокаЗначение += Литера;
                Литера = Символ();
            }
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ТЕКСТ );
        }

        // Множество целых чисел
        else if ( ( Литера >= '0' ) && ( Литера <= '9' ) ) {
            String Число = "" + Литера;
            Литера = Символ();

            while ( ( ( Литера >= '0' ) && ( Литера <= '9' ) ) ) {
                Число += Литера;
                Литера = Символ();
            }

            Свойства.ЧислоЗначение = Integer.parseInt( Число );
            Свойства.Позиция--; // возвращаем позицию на предыдущий символ
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            
            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ЧИСЛО );
        }

        // Множество имён
        else if ( ( ( Литера >= 'a' ) && ( Литера <= 'z' ) ) 
                || ( ( Литера >= 'A' ) && ( Литера <= 'Z' ) )
                || ( ( Литера >= 'А' ) && ( Литера <= 'я' ) )
                || ( Литера == 'Ё' )
                || ( Литера == 'ё' )
                || ( Литера == '_' )
                ) {
            Свойства.ИмяЗначение = "" + Литера;
            Литера = Символ();

            while ( ( ( Литера >= 'a' ) && ( Литера <= 'z' ) ) 
                    || ( ( Литера >= 'A' ) && ( Литера <= 'Z' ) )
                    || ( ( Литера >= 'А' ) && ( Литера <= 'я' ) )
                    || ( Литера == 'Ё' )
                    || ( Литера == 'ё' )
                    || ( ( Литера >= '0' ) && ( Литера <= '9' ) )
                    || ( Литера == '.' )
                    || ( Литера == '_' )
                    ) {
                Свойства.ИмяЗначение += Литера;
                Литера = Символ();
            }
            Свойства.Позиция--; // возвращаем позицию на предыдущий символ
            Свойства.ПредыдущЭлемент = Свойства.ТекущийЭлемент;
            
            // Ключевые слова
            if ( ( Свойства.ИмяЗначение.equals( "true" )
                    || ( Свойства.ИмяЗначение.equals( "false" ) )
                    ) ) {
                return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_КЛЮЧЕВОЕ_СЛОВО );               
            }

            return ( Свойства.ТекущийЭлемент = ЭЛЕМЕНТ_ИМЯ );
        }

        throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНЫЙ_СИМВОЛ );
    }

    public ОбразРезультата ОсновныеОперации( boolean продолжать ) throws Exception {
        ОбразРезультата Результат;
        if ( продолжать ) ПолучитьЭлемент();

        switch ( Свойства.ТекущийЭлемент ) {
            case ЭЛЕМЕНТ_КОНЕЦ:
            case ЭЛЕМЕНТ_ВЫВОД:
                return null;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЧИСЛО ) {
            Результат = new ОбразРезультата( Свойства.ЧислоЗначение );
            ПолучитьЭлемент();
            return Результат;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_КЛЮЧЕВОЕ_СЛОВО ) {
            if ( Свойства.ИмяЗначение.equals( "true" ) ) {
                Результат = new ОбразРезультата( true );
                ПолучитьЭлемент();
                return Результат;
            }
            else if ( Свойства.ИмяЗначение.equals( "false" ) ) {
                Результат = new ОбразРезультата( false );
                ПолучитьЭлемент();
                return Результат;
            }
            
            throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНОЕ_КЛЮЧЕВОЕ_СЛОВО );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
            ОбразСвойств врм;
            String имя = Свойства.ИмяЗначение;

            врм = Свойства;
            Свойства = new ОбразСвойств( врм );
            ПолучитьЭлемент();

            if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ПРИСВОИТЬ ) {
                Свойства = врм;
                return ОсновныеОперации( true );
            }
            Свойства = врм;

            if ( Переменные.ИмяВТаблице( имя ) ) {
                int свойство = Переменные.СвойствоЭлемента( имя );
                if ( ( свойство == СВОЙСТВО_КОНСТАНТА ) || ( свойство == СВОЙСТВО_ПЕРЕМЕННАЯ ) ) {
                    ОбразРезультата знач = Переменные.ЗначениеЭлемента( имя );
                    ПолучитьЭлемент();
                    return знач;
                }
            } else {
                throw new ИсключениеРазборщика( ОШИБКА_НЕИЗВЕСТНЫЙ_ИДЕНТИФИКАТОР );                
            }
            return ОсновныеОперации( true );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ПРИСВОИТЬ ) {
            ОбразСвойств врм;
            врм = Свойства;
            Свойства = new ОбразСвойств( врм );
            ПолучитьЭлемент();

            if ( ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ВЫВОД ) || ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_КОНЕЦ ) ) {
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ВЫВОД );
            }
            Свойства = врм;

            if ( Свойства.ПредыдущЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
                String имя = Свойства.ИмяЗначение;
                if ( Переменные.ИмяВТаблице( имя ) ) {
                    int свойство = Переменные.СвойствоЭлемента( имя );
                    if ( свойство == СВОЙСТВО_ПЕРЕМЕННАЯ ) {
                        ОбразРезультата знач = СложениеВычитание( true );
                        Переменные.ИзменитьЭлемент( имя, свойство, знач );
                        ПолучитьЭлемент();
                        return знач;
                    }
                    throw new ИсключениеРазборщика( ОШИБКА_ИЗМЕНИТЬ_НЕЛЬЗЯ );
                } else {
                    ОбразРезультата знач = СложениеВычитание( true );
                    Переменные.ДобавитьЭлемент( имя, СВОЙСТВО_ПЕРЕМЕННАЯ, знач );
                    ПолучитьЭлемент();
                    return знач;
                }
            }
            throw new ИсключениеРазборщика( ОШИБКА_ПРИ_ПРИСВОЕНИИ );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ТЕКСТ ) {
            Результат = new ОбразРезультата( Свойства.СтрокаЗначение );
            ПолучитьЭлемент();
            return Результат;
        }

        // Унарный минус
        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_МИНУС ) {
            return операторМИНУС( УмножениеДеление( true ) );
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЛЕВАЯСКОБКА ) {
            if ( Свойства.ПредыдущЭлемент == ЭЛЕМЕНТ_ИМЯ ) {
                String имя = Свойства.ИмяЗначение;
                int свойство = Переменные.СвойствоЭлемента( имя );
                if ( свойство == СВОЙСТВО_ФУНКЦИЯ ) {
                    ОбразРезультата знач = Список( true );
                    if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯСКОБКА )
                        throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_СКОБКА );
                    ПолучитьЭлемент();
                    return Функция( имя, знач );
                } else {
                    throw new ИсключениеРазборщика( ОШИБКА_НЕСООТВЕТСТВИЕ_ТИПА );
                }
            }
            Результат = СложениеВычитание( true );
            if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯСКОБКА )
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_СКОБКА );
            ПолучитьЭлемент();
            return Результат;
        }

        if ( Свойства.ТекущийЭлемент == ЭЛЕМЕНТ_ЛЕВАЯКВАДРСКОБКА ) {
            ОбразРезультата знач = Список( true );
            if ( Свойства.ТекущийЭлемент != ЭЛЕМЕНТ_ПРАВАЯКВАДРСКОБКА )
                throw new ИсключениеРазборщика( ОШИБКА_ОЖИДАЕТСЯ_ПРАВАЯ_КВАДР_СКОБКА );
            ПолучитьЭлемент();
            Vector врм = ( Vector ) знач.Значение.elementAt(0);
            int строк = ( ( Integer ) знач.Размер.elementAt(0) ).intValue();
            return операторSTACK( new ОбразРезультата( строк, 1, врм ) );
        }

        return null;
    }



Я ничего не имею против полностью русского языка программирования, но Java с русскими переменными - бред. 


Это сообщение отредактировал(а) Vasay - 6.10.2010, 19:52


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.2480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.