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

Поиск:

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


Новичок



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

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



"Java с русскими переменными - бред. "

Скажите это тем, кто ввёл ключ компилятора encoding для входных файлов и изобретателям уникода:
Код

[C:\Program Files\Java\jdk1.6.0_18\bin]$ javac.exe
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files and annotation processors
  -cp <path>                 Specify where to find user class files and annotation processors
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -proc:{none,only}          Control whether annotation processing and/or compilation is done.
  -processor <class1>[,<class2>,<class3>...]Names of the annotation processors to run; bypasses default discovery process
  -processorpath <path>      Specify where to find annotation processors
  -d <directory>             Specify where to place generated class files
  -s <directory>             Specify where to place generated source files
  -implicit:{none,class}     Specify whether or not to generate class files for implicitly referenced files
  -encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -Akey[=value]              Options to pass to annotation processors
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system


Добавлено через 12 минут и 36 секунд
Только не надо думать, что ява одна такая smile

Вот пример такой русификации для C# (мои эксперименты). Это для КПК код, не пугайтесь:
Код

using System;

using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;
using HANDLE = System.IntPtr;

namespace SchollBell {
    public partial class ФормаМеню: Form {
        const bool РЕЖИМ_СИМУЛЯТОРА = true;

        const byte ЭЛЕМЕНТ_МОНИТОР = 0;
        const byte ЭЛЕМЕНТ_НАСТРОЙКИ = 1;
        const byte ЭЛЕМЕНТ_ПЛАНЫ = 2;
        const byte ЭЛЕМЕНТ_РАСПИСАНИЯ = 3;
        const byte ЭЛЕМЕНТ_ПРОВОДНИК = 4;
        const byte ЭЛЕМЕНТ_ОПРОГРАММЕ = 5;

        const UInt32 INFINITE = 0xFFFFFFFF;
        const UInt32 WAIT_ABANDONED = 0x00000080;
        const UInt32 WAIT_OBJECT_0 = 0x00000000;
        const UInt32 WAIT_TIMEOUT = 0x00000102;

        //@flag CNT_EVENT  | System event notification
        const byte CNT_EVENT = 1;     
        //@flag CNT_TIME   | Time-based notification
        const byte CNT_TIME = 2;           
        //@flag CNT_PERIOD | Time-based notification is active for
        // time period between stStart and stEnd
        const byte CNT_PERIOD = 3;              
        //@flag CNT_CLASSICTIME | equivalent to using (obsolete)
        // CeSetUserNotification function - standard command line is
        // supplied. lpszArguments must be NULL
        const byte CNT_CLASSICTIME = 4;

        const string ТЕКСТ_ПРЕФИКСА_ИМЕНОВАННОГО_СОБЫТИЯ = "\\\\.\\Notifications\\NamedEvents\\";

        private static Thread ПотокОжиданияСобытия;
        private static HANDLE Событие;
        private static IntPtr Уведомление;

        // Описание обёрток API функций операционной системы
        [ DllImport( "coredll.dll", SetLastError = true, EntryPoint = "CreateEvent", 
            CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Auto ) ]
        public static extern HANDLE СоздатьСобытие( HANDLE Атрибуты, 
            [In, MarshalAs( UnmanagedType.Bool ) ] bool СбросВручную, 
            [In, MarshalAs( UnmanagedType.Bool ) ] bool НачальноеСостояние, 
            [In, MarshalAs( UnmanagedType.BStr ) ] string Имя
            );

        [ DllImport( "coredll.dll", EntryPoint = "CeRunAppAtTime", SetLastError = true ) ]   
        private static extern bool CeRunAppAtTime( string ИмяПриложения, byte[] Время );

        [ DllImport( "coredll.dll", EntryPoint = "CeSetUserNotification", SetLastError = true ) ]
        private static extern int УстановПользовУведомление( int Уведомление, 
            string ИмяПриложения, byte[] Время, byte[] ПользовУведомление );

        [DllImport("coredll.dll", EntryPoint = "CeClearUserNotification", SetLastError = true)]
        private static extern bool СнятьПользовУведомление( int Уведомление );

        [ DllImport( "coredll.dll", EntryPoint = "CeSetUserNotificationEx", SetLastError = true ) ]
        private static extern IntPtr УстановРасшПользовУведомление( IntPtr Уведомление, 
            CE_NOTIFICATION_TRIGGER ТриггерУведомления, CE_USER_NOTIFICATION ПользовУведомление );

        [ DllImport( "coredll.dll", EntryPoint = "WaitForSingleObject", SetLastError = true ) ]
        private static extern UInt32 WaitForSingleObject( IntPtr Описатель, UInt32 Миллисек );

        public ФормаМеню() {
            InitializeComponent();
        }

        public static void ОжиданиеСобытия() {
            while ( true ) {
                // waiting for activity signal, will block the thread, works globally.
                if ( WaitForSingleObject( Событие, INFINITE ) == WAIT_OBJECT_0 ) {
                    MessageBox.Show( "Сработало!!!" );
                    break;
                } else {
                    MessageBox.Show( "Время вышло" );
                    break;
                }
                
                Thread.Sleep( 5000 );
            }
        }

        // Запуск движка таймеров
        public void Запуск() {
            string ИмяПриложения = ТЕКСТ_ПРЕФИКСА_ИМЕНОВАННОГО_СОБЫТИЯ + "MyTestEvent";
            string Параметры = "";

            System.DateTime ВремяЗапуска = System.DateTime.Now.AddSeconds( 60 );

            CE_NOTIFICATION_TRIGGER Триггер = new CE_NOTIFICATION_TRIGGER();
            Триггер.Размер = ( UInt32 ) Marshal.SizeOf( typeof( CE_NOTIFICATION_TRIGGER ) );
            Триггер.Тип = CNT_TIME;
            Триггер.ИмяПриложения = ИмяПриложения;
            Триггер.Параметры = Параметры;
            Триггер.Событие = 0;
            Триггер.ВремяНачала = new SYSTEMTIME( ВремяЗапуска );
            Триггер.ВремяОкончания = new SYSTEMTIME();

            // Создаём событие
            Событие = СоздатьСобытие( HANDLE.Zero, false, false, "MyTestEvent" );

            // Если событие создано, то устанавливаем уведомление
            if ( Событие != IntPtr.Zero ) {
                Уведомление = УстановРасшПользовУведомление( IntPtr.Zero, Триггер, null ); 
                ПотокОжиданияСобытия.Start();
            }
        }

        private void Меню_KeyPress( object Отправитель, KeyPressEventArgs ПарамСобытияНажатКлавиши ) {
            switch ( ( Отправитель as ListBox ).SelectedIndex ) {
                case ЭЛЕМЕНТ_МОНИТОР:
                    Запуск();
                    break;

                case ЭЛЕМЕНТ_НАСТРОЙКИ:
                    break;

                case ЭЛЕМЕНТ_ПЛАНЫ:
                    break;

                case ЭЛЕМЕНТ_РАСПИСАНИЯ:
                    break;

                case ЭЛЕМЕНТ_ПРОВОДНИК:
                    break;

                case ЭЛЕМЕНТ_ОПРОГРАММЕ:
                    break;
            }
        }

        private void ФормаМеню_Load( object Отправитель, EventArgs ПараметрыСобытия ) {
            if ( РЕЖИМ_СИМУЛЯТОРА == true ) {
                Text = "Школьник-3 [симулятор]";
            } else {
                Text = "Школьник-3";
            }
            
            Меню.Items.Add( "Монитор" );
            Меню.Items.Add( "Настройки" );
            Меню.Items.Add( "Планы" );
            Меню.Items.Add( "Расписания" );
            Меню.Items.Add( "Проводник" );
            Меню.Items.Add( "О программе" );

            ПотокОжиданияСобытия = new Thread(new ThreadStart( ОжиданиеСобытия ) );
        }

        private void КомандаВыход_Click( object Отправитель, EventArgs ПараметрыСобытия ) {
            Close();
        }
    }
    
    [ StructLayout( LayoutKind.Sequential ) ]
    
    public struct SYSTEMTIME {
        [ MarshalAs( UnmanagedType.U2 ) ] public short Год;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Месяц;
        [ MarshalAs( UnmanagedType.U2 ) ] public short ДеньНедели;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Число;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Часы;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Минуты;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Секунды;
        [ MarshalAs( UnmanagedType.U2 ) ] public short Миллисек;

        public SYSTEMTIME( DateTime Календарь ) {
            Календарь = Календарь.ToUniversalTime();  // SetSystemTime expects the SYSTEMTIME in UTC
            
            Год = ( short ) Календарь.Year;
            Месяц = ( short ) Календарь.Month;
            ДеньНедели = ( short ) Календарь.DayOfWeek;
            Число = ( short ) Календарь.Day;
            Часы = ( short ) Календарь.Hour;
            Минуты = ( short ) Календарь.Minute;
            Секунды = ( short ) Календарь.Second;
            Миллисек = ( short ) Календарь.Millisecond;
        }
    }

    public class CE_NOTIFICATION_TRIGGER {
        public UInt32 Размер = 0;
        public UInt32 Тип = 0;
        public UInt32 Событие = 0;
        [ MarshalAs( UnmanagedType.LPWStr ) ]
        public string ИмяПриложения;
        [ MarshalAs( UnmanagedType.LPWStr ) ]
        public string Параметры;
        public SYSTEMTIME ВремяНачала;
        public SYSTEMTIME ВремяОкончания;
    }

    public class CE_USER_NOTIFICATION {
        public UInt32 ФлагиДействия;
        [ MarshalAs( UnmanagedType.LPWStr ) ]
        public string ЗаголовокДиалога;
        [ MarshalAs( UnmanagedType.LPWStr ) ]
        public string ТекстДиалога;
        [ MarshalAs( UnmanagedType.LPWStr ) ]
        public string Звук;
        public UInt32 МаксГромкость;
        public UInt32 Резерв;
    }
}

PM MAIL   Вверх
bems
Дата 6.10.2010, 20:16 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



уни, Сталин бы расстрелял, да, но без него и отставания в отрасли не было бы.
А про бред это объективная реальность.

Добавлено через 2 минуты и 9 секунд
уни, 72 часа. Сила, да smile)

И да, переводом в уме занимаются только люди, пытающиеся программировать первый месяц.


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


Новичок



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

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



bems, я эмбеддер - специалист по встроенным системам. Для таких людей как я норма изучения чего-то нового - это 2 месяца. За два месяца я не только яву освоил, но и продукт целый сделал.
По основной специальности я радиоинженер. Всё остальное - самообучение.

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

"И да, переводом в уме занимаются только люди, пытающиеся программировать первый месяц."
Это не правда. Большинство программистов занимаются переводами постоянно. Переводами с русского на английский. Если вы работаете в русской фирме, то ТЗ вам выдаётся на русском.

Могу вам показать что это означает. Я полиглот в смысле языков программирования. Когда-то мне нужно было по заказу написать программу для компании Роспайп для гидравлического расчета и статического расчёта труб. Я тогда ещё не мог написать интерпретатора (сэкономил бы кучу времени и нервов). Так вот, все термины и расчёты нужно делать по нашим ГОСТам, а там всё на русском.

Вот результат программинга, если вы такой знаток английского, то попробуйте с ходу найти эквивалент терминам области на английском языке без подсматривания в словарь smile А потом уж и комменте тут по поводу "бреда":
Код

  TCalcVariables = class(TObject)
  public                                                        
// --= / [ Начало списка параметров] / =--
// --= / [ Общие параметры ] / =--
    MinerDiameter                                  : TVariable; // Dвнутр - Внутренний диаметр трубопровода
    ExternalDiameter                               : TVariable; // Dнаруж - Наружный диаметр трубопровода

// --= / [ Параметры статического расчёта ] / =--
    ShellDepth                                     : TVariable; // s      - Толщина оболочки
    CorrugationWidth                               : TVariable; // Lв     - Ширина гофра
    CorrugationStep                                : TVariable; // Lш     - Шаг гофра
    PipelineDepthFilling                           : TVariable; // Hтр    - Глубина засыпки трубопровода, считается от поверхности земли до уровня горизонтального диаметра
    ShortlivedElongationModulusOnPipelineEndLife   : TVariable; // Eo     - Кратковременный модуль упругости при растяжении материала трубы на конец срока службы эксплуатации трубопровода
    LongtimeElongationModulusOnPipelineEndLife     : TVariable; // Etau   - Долговременный модуль упругости при растяжении материала трубы на конец срока службы эксплуатации трубопровода
    PoissonConstantTubeStuff                       : TVariable; // Mu     - Коэффициент Пуассона материала трубы, приводится в норматив-ной документации
    ShortlivedStrengthAtTubeStuffStretching        : TVariable; // Sigmao - Кратковременная расчётная прочность при растяжении материала трубы
    SoilSpecificWeigth                             : TVariable; // Gamma  - Удельный вес грунта
    SoilDeformationModuleInTrenchSinuses           : TVariable; // Eгр    - Модуль деформации грунта в пазухах траншеи
    WeigthOnOneAxis                                : TVariable; // m      - Масса в тоннах на одну ось
    WheelLeanArea                                  : TVariable; // F      - Площадь опирания колеса
    InternalWaterPressureInPipeline                : TVariable; // P      - Перевод массы транспорта в давление на поверхности грунта
    GroundWaterLevelAltitude                       : TVariable; // Hв     - Высота грунтовых вод
    StrengthCondition                              : TVariable; //        - Условие прочности
    PipelineMaterial                               : TVariable; //        - Материал трубопровода
    PipelineMaterialMark                           : TVariable; //        - Марка материала трубопровода
    SoilType                                       : TVariable; //        - Тип грунта засыпки
    CorrugationHeight                              : TVariable; // e      - Высота гофра "e"
    GravityCenterYCoordinate                       : TVariable; // y      - Координата y центра тяжести
    TubeAreaSecondMoment                           : TVariable; // I      - Момент инерции поперечного сечения кольца относительно центральной оси
    RingCrossSectionArea                           : TVariable; // A      - Площадь поперечного сечения кольца
    ConditionalDiameter                            : TVariable; // D      - Диаметр окружной центральной линии кольца
    GeneralExternalVerticalLoading                 : TVariable; // qc     - Суммарная внешняя вертикальная нагрузка
    ShortlivedRingtypeShellRigidity                : TVariable; // Go     - Кратковременная кольцевая жесткость оболочки трубы
    RLSVDTGroundLoad                               : TVariable; // Psi_гр - Относительное укорочение вертикального диаметра трубы под действием грунтовой нагрузки
    RLSVDTTransportLoads                           : TVariable; // Psi_Т  - Относительное укорочение вертикального диаметра трубы под действием транспортных нагрузок
    RLSVDTWarehouseing                             : TVariable; // Psi_М  - Относительное укорочение вертикального диаметра трубы, образовавшееся в процессе складирования, транспортировки и монтажа
    GeneralRLSVDTInSoil                            : TVariable; // Psi    - Суммарное относительное укорочение вертикального диаметра трубы в грунте
    MaxRatingDeformationWallStuff                  : TVariable; // Eps_p  - Максимальное значение деформации материала в стенке трубы из-за овальности поперечного сечения трубы под действием грунтов и транспортных нагрузок
    CompressionRatioWallStuff                      : TVariable; // Eps_c  - Степень сжатия материала стенки трубы от воздействия внешних нагрузок на трубопровод
    MVTDSWStressRrelaxations                       : TVariable; // Eps_pp - Предельно допустимое значение деформации растяжения материала в стенке трубы, происходящей в условиях релаксаций напряжений
    MVTDSWTCreep                                   : TVariable; // Eps_pn - Предельно допустимая деформация растяжения материала в стенке трубы в условиях ползучести
    GroundLoad                                     : TVariable; // qгр    - Грунтовая нагрузка
    TransportLoad                                  : TVariable; // qt     - Транспортная нагрузка, принимаемая по справочным данным для гусеничного, колёсного и другого вида транспорта
    GroundwatersExternalPressure                   : TVariable; // Qгв    - внешнее давление грунтовых вод на уровне горизонтального диаметра трубы
    GeneralExternalPressureOnTube                  : TVariable; // qвш    - суммарное внешнее давление на трубу
    ExtPressureFromStabilityCondWithTransportLoad  : TVariable; // qвш    - суммарное внешнее давление на трубу при учёте транспортной нагрузки
    ExternalPressureFromStabilityCondition         : TVariable; // qуст   - допускаемое значение внешнего давления из условия устойчивости
    DepthLocationFactor                            : TVariable; // n      - Коэффициент, учитывающий глубину заложения трубопровода
    SoilWeightFluidizedInWater                     : TVariable; // Gammav - Вес взвешенного в воде грунта
    LonglivedRingtypeRigidity                      : TVariable; // Gtau   - Длительная кольцевая жесткость на единицу длины трубы

// --= / [ Параметры гидравлического расчёта ] / =--
    HydraulicRadius                                : TVariable; // Rs     - Гидравлический радиус потока
    EmpiricalExponent                              : TVariable; // a      - Эмпирический показатель степени
    HydraulicFrictionCoeff                         : TVariable; // Ls     - Коэффициент гидравлического трения по длине трубопровода
    SelfflowPipeSlop                               : TVariable; // is     - Уклон самотечного трубопровода
    PipeFilling                                    : TVariable; // hs_d   - Наполнение трубопровода
    DimlessExponentBeg                             : TVariable; // bs     - Безразмерный показатель степени
    DimlessExponentEnd                             : TVariable; // Beg    - начальное, End - конечное значение
    Acceleration                                   : TVariable; // g      - Ускорение свободного падения
    FluidFlowAverSpeed                             : TVariable; // u      - Средняя скорость потока жидкости
    ReinoldsNumQuad                                : TVariable; // Requ   - Число Рейнольдса
    ReinoldsNumPhi                                 : TVariable; // Rephi  - Число Рейнольдса
    NotFillFluidFlowAverSpeed                      : TVariable; // Vnf    - Средняя скорость течения жидкости при неполном заполнении трубопровода
    FillFluidFlowAverSpeedBeg                      : TVariable; // Vf     - Средняя скорость течения жидкости при полном заполнении трубопровода
    FillFluidFlowAverSpeedEnd                      : TVariable; // Beg    - начальное, End - конечное значение
    KinematicsToughCoef                            : TVariable; // v      - Коэффициент кинематической вязкости
    RsnfRsfCoef                                    : TVariable; // Rsnf_Rsf - Табличное отношение
    FluidConsumption                               : TVariable; // qs     - Расход жидкости

// --= / [ Коэффициенты ] / =--
    KwCoef                                         : TVariable; // Kw     - Табличный коэффициент
    AssuranceFactorOnStability                     : TVariable; // Kzu    - Коэффициент запаса на устойчивость
    TubeRoundoffProcessFactor                      : TVariable; // Kok    - коэффициент, учитывающий процесс округления овализованной трубы под действием внутреннего давления воды в водопроводе
    CrossSectionOvalityDelay                       : TVariable; // Ktau   - Коэффициент, учитывающий запаздывание овальности поперечного сечения трубы во времени и зависящий от типа грунта, степени его уплотнения, гидрогеологических условий, геометрии траншеи
    TroughFactor                                   : TVariable; // Kw     - Коэффициент прогиба, учитывающий качество подготовки ложа и уплотнения
    CrossSectionBottomEffectFactor                 : TVariable; // Kgr    - Коэффициент, учитывающий влияние грунта засыпки на овальность поперечного сечения трубопровода
    RingTypeRigidityFactor                         : TVariable; // Kg     - Коэффициент, учитывающий влияние кольцевой жёсткости оболочки трубы на овальность поперечного сечения трубопровода
    SandbedSoilFactorForFlexuralStresses           : TVariable; // Ksigma - Коэффициент постели грунта для изгибающих напряжений, учитывающий качество уплотнения
    AssuranceFactorOnOvalityTubeCrossSection       : TVariable; // Kzpsi  - Коэффициент запаса на овальность поперечного сечения трубы
    AssuranceFactor                                : TVariable; // Kz     - Коэффициент запаса, должен приводиться в нормативных документах
    SoilBulkFactor                                 : TVariable; // Ku     - Коэффициент уплотнения грунта
    RoughnessCoef                                  : TVariable; // Ke     - Коэффициент эквивалентной шероховатости
    InfluencingSoilFillingShellStabilityFactor     : TVariable; // Куг    - коэффициент, учитывающий влияние засыпки грунта на устойчивость оболочки
    TubeOvalityFactor                              : TVariable; // Ков    - коэффициент, учитывающий овальность трубы
// --= / [ Конец списка параметров] / =--

    CurrentCalc: TCalcType;
   public
    DBMaterialId: Integer;
    DBSoilId: Integer;

    procedure InitializeVars;

    constructor Create;
    destructor Destroy;
  end;


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


Эксперт
****


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

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



уни
Цитата

И не сомневайтесь в моей квалификации 


Наличие диплома (непонятно какой организации) не подтверждает квалификацию. 

Цитата

Оборонка должна вложить туда деньги.

Куда? В проект музыкального звонка для школы?


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


Эксперт
****


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

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



smartov, а вот 1С как раз трогать не надо. Там контингент учитывали при создании, и предметную область


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


Эксперт
****


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

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



Цитата(уни @  6.10.2010,  20:36 Найти цитируемый пост)
я эмбеддер - специалист по встроенным системам. Для таких людей как я норма изучения чего-то нового - это 2 месяца. За два месяца я не только яву освоил, но и продукт целый сделал.
Понятно. Ну это твоё право, только не говори вслух слова "квалификация" после этого.

Цитата(уни @  6.10.2010,  20:36 Найти цитируемый пост)
Вот результат программинга, если вы такой знаток английского, то попробуйте с ходу найти эквивалент терминам области на английском языке без подсматривания в словарь
Разрешите приступать? лол



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


Новичок



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

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



bems, вы я вижу не поняли smile
Я знаю как устроены все стандартные языки программирования (кроме промышленных и экспертных систем). В силу своей профессии я уже освоил наверное с сотню средств разработки - для меня они все на одно лицо smile

Вообще, для того, чтобы разобраться в любом языке достаточно знать всего два: ассемблер (не IL) и какой-нить современный ЯВУ на выбор. Всё остальное - одинаково (кроме экспертных систем и промышленных языков, которые стандартизированы МЭКом).

bems, вы я вижу, пребываете у узком кругозоре. Давайте я вам его ещё расширю.

По теме опять же. Работал я в одной фирме по специальности (эмбеддером), которая занимается проектированием модулей АСУТП. Моя задача была поддержка и доработка модуля ввода-вывода. Он состоит из блока на AVR'ке и конфигуратора. Ядро разрабатывается на EC++ (это специальный C++ для микроконтроллеров). Конфигуратор писан в билдере на C++, конечно.

Так вот. Как Вы тут все видимо вообще не в теме. В России, как и в СССР, существуют ГОСТы и ГОСТ Ры - это такие документы, без которых вам не получить лицензию на свой продукт, я уж не говорю про всё остальное. Так вот при разработке таких устройств тоже приходится постоянно переписывать ТЕРМИНЫ русского языка на английский.

Вот зацените, специалисты smile (там листинг в несколько раз больше... не влезет) :
Код

CMVA8::CMVA8(void) : IDevice((DWORD*)&InitMVA8Settings, sizeof(SMVA8Settings)/sizeof(DWORD))
{
        // 16 разрядные регистры
        FMIPID = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Код прибора", DeviceTagsID::MIPID, DEV_READ, 0xFF, 1, 3, 0x005, 3, 0, 0);
        FMIPVersionPO = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Версия ПО", DeviceTagsID::MIPVersionPO, DEV_READ, 0xFF, 1, 3, 0x006, 0, 0, 0);
        FMIPAnalogChannelCount = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Количество аналоговых каналов", DeviceTagsID::MIPAnalogChannelCount, DEV_READ, 0xFF, 1, 3, 0x007, 0, 0, 0);
        FMIPDigitalInputCount = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Количество цифровых каналов", DeviceTagsID::MIPDigitalInputCount, DEV_READ, 0xFF, 1, 3, 0x007, 0, 0, 0);
        FMIPRelayCount = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Количество релейных выходов", DeviceTagsID::MIPRelayCount, DEV_READ, 0xFF, 1, 3, 0x008, 0, 0, 0);
        FMIPRelayType = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Тип релейных выходов", DeviceTagsID::MIPRelayType, DEV_READ, 0xFF, 1, 3, 0x009, 0, 0, 0);
        FMIPSerialNumber = new CDeviceStandartTags<unsigned long>(static_cast<IDevice*>(this), "Серийный номер", DeviceTagsID::MIPSerialNumber, DEV_READ, 0xFF, 1, 3, 0x00a, 0, 0, 0);

        FMIPDateTime = new CDeviceDateTimeTags(static_cast<IDevice*>(this), "Дата и время", DeviceTagsID::MIPDateTime, DEV_RDWR);
        FMIPState = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Регистр состояния МИП", DeviceTagsID::MIPState, DEV_READ, 0xFF, 1, 3, 0x103, 0, 0, 0);
        FArchiveIndex = new CDeviceStandartTags<unsigned long>(static_cast<IDevice*>(this), "Номер текущей записи архива", DeviceTagsID::ArchiveIndex, DEV_READ, 0xFF, 1, 3, 0x104, 0, 0, 0);
        FArchiveDamageIndex = new CDeviceStandartTags<unsigned long>(static_cast<IDevice*>(this), "Номер текущей записи архива аварий", DeviceTagsID::ArchiveDamageIndex, DEV_READ, 0xFF, 1, 3, 0x105, 0, 0, 0);
        FArchiveCalibrationIndex = new CDeviceStandartTags<unsigned long>(static_cast<IDevice*>(this), "Номер текущей записи архива калибровок", DeviceTagsID::ArchiveCalibrationIndex, DEV_READ, 0xFF, 1, 3, 0x106, 0, 0, 0);
        FArchiveWorkPeriod = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Период архивирования", DeviceTagsID::ArchiveWorkPeriod, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x107, 0, 0, 12);
        FArchiveDeviation = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Максимальное отклонение архива", DeviceTagsID::ArchiveDeviation, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x109, 0, 0, 10);
        FArchiveDamagePeriod = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Период архивирования аварий", DeviceTagsID::ArchiveDamagePeriod, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x10b, 0, 0, 12);
        FArchiveDamageDeviation = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Максимальное отклонение архива аварий", DeviceTagsID::ArchiveDamageDeviation, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x10d, 0, 0, 10);
        FMIPDefaultKXC = new CDeviceStandartTags<signed short>(static_cast<IDevice*>(this), "Температура КХС по умолчанию", DeviceTagsID::MIPDefaultKXC, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x10f, 0, -45, 55);
        FLinkAddress = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Магистральный адрес", DeviceTagsID::LinkAddress, DEV_RDWR, 0xFF, 1, 3, 0x110, 1, 1, 255);
        FLinkSpeed = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Скорость обмена", DeviceTagsID::LinkSpeed, DEV_RDWR | DEV_FILE, 0xFF, 1, 3, 0x111, 0, 0, 1);
        FMIPUserPassword = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Пароль на уставки", DeviceTagsID::MIPUserPassword, DEV_RDWR, 0xFF, 1, 3, 0x112, 0, 0, 9999);
        FMIPAdminPassword = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Общий пароль", DeviceTagsID::MIPAdminPassword, DEV_RDWR, 0xFF, 1, 3, 0x113, 0, 0, 9999);

        FChannelSensorType = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Типы датчиков аналоговых каналов", DeviceTagsID::ChannelSensorType, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x210, 0, 0, 43);
        FChannelCommaPosition = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Позиции запятых аналоговых каналов", DeviceTagsID::ChannelCommaPosition, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x220, 0, 0, 3);
        FChannelCoefDigitalFiltration = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Цифровая фильтрация аналоговых каналов", DeviceTagsID::ChannelCoefDigitalFiltration, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x230, 0, 0, 2);
        FChannelRelay1Charter[0] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Первое реле первой уставки", DeviceTagsID::ChannelRelay1Charter1, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x2c0, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay1Charter[1] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Первое реле второй уставки", DeviceTagsID::ChannelRelay1Charter2, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x2e0, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay1Charter[2] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Первое реле третьей уставки", DeviceTagsID::ChannelRelay1Charter3, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x300, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay1Charter[3] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Первое реле четвёртой уставки", DeviceTagsID::ChannelRelay1Charter4, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x320, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay2Charter[0] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Второе реле первой уставки", DeviceTagsID::ChannelRelay2Charter1, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x2d0, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay2Charter[1] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Второе реле второй уставки", DeviceTagsID::ChannelRelay2Charter2, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x2f0, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay2Charter[2] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Второе реле третьей уставки", DeviceTagsID::ChannelRelay2Charter3, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x310, 0, 0, InitMVA8Settings.CountRelay);
        FChannelRelay2Charter[3] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Второе реле четвёртой уставки", DeviceTagsID::ChannelRelay2Charter4, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x330, 0, 0, InitMVA8Settings.CountRelay);
//        FChannelRelayCharterNDAT[0] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Логика реле первой уставки при не норме датчика", DeviceTagsID::FChannelRelayCharter1NDAT, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x340, 0, 0, 3);
//        FChannelRelayCharterNDAT[1] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Логика реле второй уставки при не норме датчика", DeviceTagsID::FChannelRelayCharter2NDAT, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x350, 0, 0, 3);
//        FChannelRelayCharterNDAT[2] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Логика реле третьей уставки при не норме датчика", DeviceTagsID::FChannelRelayCharter3NDAT, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x360, 0, 0, 3);
//        FChannelRelayCharterNDAT[3] = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Логика реле четвёртой уставки при не норме датчика", DeviceTagsID::FChannelRelayCharter4NDAT, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x370, 0, 0, 3);
        FChannelRelayNDAT = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Реле не нормы датчика аналоговых каналов", DeviceTagsID::ChannelRelayNDAT, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x380, 0, 0, InitMVA8Settings.CountRelay);
        FCurrentAnalogChannelValue = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Текущие значения аналоговых каналов", DeviceTagsID::CurrentAnalogChannelValue, DEV_READ, 0, 0, 3, 0x390, 0, -32768, 25000);
        FChannelPhizicalValueMin = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Нижняя граница физических значений аналоговых каналов", DeviceTagsID::ChannelPhizicalValueMin, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3a0, 0, -1999, 9999);
        FChannelPhizicalValueMax = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Верхняя граница физических значений аналоговых каналов", DeviceTagsID::ChannelPhizicalValueMax, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3b0, 0, -1999, 9999);
        FChannelCharterValue[0] = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Значения первых уставок", DeviceTagsID::ChannelCharter1Value, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3c0, -1999, -1999, 9999);
        FChannelCharterValue[1] = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Значения вторых уставок", DeviceTagsID::ChannelCharter2Value, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3d0, -1999, -1999, 9999);
        FChannelCharterValue[2] = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Значения третьих уставок", DeviceTagsID::ChannelCharter3Value, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3e0, 9999, -1999, 9999);
        FChannelCharterValue[3] = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Значения четвёртых уставок", DeviceTagsID::ChannelCharter4Value, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x3f0, 9999, -1999, 9999);
        FChannelCharterHistoresist = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Гистерезис срабатывания уставок", DeviceTagsID::ChannelCharterHistoresist, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x400, 0, 0, 10);
        FChannelMaxSpeed = new CDeviceStandartTags<float>(static_cast<IDevice*>(this), "Максимальная скорость изменения аналоговых каналов", DeviceTagsID::ChannelMaxSpeed, DEV_RDWR | DEV_ALL | DEV_FILE, 0, 0, 3, 0x410, 0, 0, 10);
#if 0
        FMIPDigitalInputCount = new CDeviceStandartTags<unsigned short>(static_cast<IDevice*>(this), "Количество цифровых входов", DeviceTagsID::MIPDigitalInputCount, DEV_READ, 0xFF, 1, 3, 0x0A, 0, 0, 0);
        FMIPNMIPRelay = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Реле не нормы прибора", DeviceTagsID::MIPNMIPRelay, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x194, 0, 0, InitSh9329KCSettings.CountRelay);
        FMIPFilterNMIPRelay = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Фильтр реле не нормы прибора", DeviceTagsID::MIPFilterNMIPRelay, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x195, 0, 0, InitSh9329KCSettings.CountRelay);
        FMIPTypeAutoList = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Тип авто пролистывания", DeviceTagsID::MIPTypeAutoList, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x198, 0, 0, 2);
        // NetSettings
        FNetWORDConvert = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Преобразование WORD", DeviceTagsID::NetWORDConvert, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x182, 0, 0, 1);
        FNetDWORDConvert = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Преобразование DWORD", DeviceTagsID::NetDWORDConvert, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x183, 0, 0, 3);
        FNetFLOATConvert = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Преобразование FLOAT", DeviceTagsID::NetFLOATConvert, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x184, 0, 0, 3);
        FNetDOUBLEConvert = new CDeviceStandartTags<unsigned char>(static_cast<IDevice*>(this), "Преобразование DOUBLE", DeviceTagsID::NetDOUBLEConvert, DEV_RDWR | DEV_ALL | DEV_FILE, 0xFF, 1, 3, 0x185, 0, 0, 7);


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


Эксперт
****


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

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



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

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


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


Новичок



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

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



Vasay, я то за свои слова отвечаю и они вес имеют smile 
Специально для вас:
user posted image

bems Этот непонятный код - это ТА САМАЯ объективная реальность, про которую видимо Вы мало что знаете.

Вот этот модуль с этим "непонятным" для вас кодом (см в дереве):
Модуль ввода аналоговых сигналов ВА 8

Предназначен для преобразования постоянного напряжения, тока, сигналов датчиков температуры, давления и др. в цифровой код по интерфейсу RS-485, а также для формирования управляющих команд для модулей релейных выходов (РВ 4 или РВ 16).

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


Эксперт
****


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

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



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


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


Эксперт
****


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

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



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


Цитата(уни @  6.10.2010,  21:15 Найти цитируемый пост)
Vasay, я то за свои слова отвечаю и они вес имеют
Специально для вас:



Бумажки в РФ мало что значат.

А вот это код, многое говорит о Ваших знаниях Java (и культуре разработке) И дело не только в использование русского языка:
Код

   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   Вверх
уни
Дата 6.10.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чё спорите тогда? Я же сказал, что делите рынки на внутренний и внешние. Тогда проблем с понимаем не будет. Мои примеры - это чисто внутренний российский рынок: 
- программа для расчётов внутри компании Роспайп;
- музыкальный программируемый школьный звонок;
- конфигуратор для модуля аналогового ввода и ядро модуля;

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

Люди, которые кроме веб-программирования и около-интернетного программирования больше ничего не видели - вот они и не понимают smile про внутренний рынок.

Добавлено через 2 минуты и 13 секунд
"Бумажки в РФ мало что значат."
Vasay, ага, особенно, когда их у вас нет smile

"А вот это код, многое говорит о Ваших знаниях Java (и культуре разработке) И дело не только в использование русского языка:"
Да неужели? Имейте в виду smile что я читал книжку "Совершенный код" и применил эти знания в этом коде.
PM MAIL   Вверх
Vasay
Дата 6.10.2010, 22:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Да неужели? Имейте в виду  что я читал книжку "Совершенный код" и применил эти знания в этом коде.


Одного "читал", похоже,  недостаточно... 

Цитата(уни @  6.10.2010,  21:48 Найти цитируемый пост)
Vasay, ага, особенно, когда их у вас нет 


А может есть   smile  и даже без троек  smile 


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


Агент алкомафии
****


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

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



кстате, а по идее можно же просто файлик распарсить? (и название переменных и т.д. в том числе)

только что пример сочинил, работает smile

Код

$i = 5;
печатаем "666" если ($i>4);


Код

#!/usr/bin/perl


sub open_data {
    my $handle = shift;
    local $/ = '';    # Включить режим чтения абзацев
    return <$handle>;
}


sub rus {

 for (@_[0]) {
    s{печатаем}{print}ig; 
    s{если}{if}ig;
 }
 return @_[0];
}


eval rus open_data(*DATA);

die "Exception error: $!" if $@;

# real code:
__DATA__

$i = 5;
печатаем "666" если ($i>4);



Это сообщение отредактировал(а) gcc - 7.10.2010, 11:13
PM WWW ICQ Skype GTalk Jabber   Вверх
smartov
Дата 7.10.2010, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



bems
Цитата(bems @  6.10.2010,  20:39 Найти цитируемый пост)
а вот 1С как раз трогать не надо

Да что ты! Я его боюсь трогать даже трёхметровой палкой! 
Хотя каюсь, было дело кодил. Прямо вот на русском smile Ощущения яркие. Хотя потом пофиг становится. Не лучше и не хуже чем на английском. Читабельность не повышается.

Добавлено через 5 минут и 3 секунды
уни, при всём уважении к вашим бумажкам, по-моему вы слишком откровенно хвастаетесь. Мы объективно не можем оценить ваши наработки. Чтобы оценить встроенные системы, нужно её пощупать изнутри или попользоваться. Я сам разрабатывал подобное. Стороннему человеку потом очень сложно объяснить, сколько проблем пришлось решить, и что проблемы были серьезного уровня. А иногда такие, которые никто не решал.

Что же до темы, то не могу найти у вас хорших аргументов за русскоязычную нотацию, кроме как "авторитетные заяления", что это лучше и востребовано.
PM MAIL   Вверх
Google
  Дата 23.5.2019, 21:07 (ссылка)  





  Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

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

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

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


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

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


 




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


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

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