Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Архив
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

Средство для программирования контроллера: Си или МЭК 61131?

 Ответить Ответить Страница  <1 45678 53>
Автор
Сообщение
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Средство для программирования контроллера: Си или МЭК 61131?
    Опубликовано: 12 Сентябрь 2003 04:03

Первоначально опубликовано TO: Владимир Е. Зюбин

Осмелюсь предположить, что Вы просто явились
свидетелем жарких дискуссий...

>>>>>>>>>>>>>>>>

Можно сказать даже участником. Так как по 65 комитету я из России был единственным представителем, то приходилось голосовать по всем вопросам.

 

Между тем, то, о
чем я говорю, не обязательно предполагает
ОСТРЫЕ "разборки"... Полистайте статью, гарантирую,
она Вам будет интересна.

>>>>>>>>>>>>>>>>>

Так Вы отсканируйте статью и разместите здесь в конференции. Все проще чем мне в ленинскую библиотеку бежать.

 

Что касается использования стандартов в конкурентной борьбе, то желающих то много,  да не так просто это сделать. Скажем в МЭКе агент транснациональной корпорации может убедить «свой» купленный национальный комитет по стандартизации выйти с предложением в МЭК создать карманный стандарт этой корпорации. Это предложение рассылается всем национальным комитетам МЭК. Только если это предложение странами одобряется, начинает формироваться рабочая группа. Приглашения участвовать в работе этой группы так же рассылаются по всем странам. После того как группа сформирована, она начинает работать и создает проект стандарта, этот проект рассылается по национальным комитетам для изучения и предложения поправок, поправки учитываются рабочей группой в новом проекте, который опять рассылается и так несколько раз (CDV1, CDV2 и т.п.). Если результат всем странам нравится, то после учета последних поправок стандарт направляется на окончательное голосование (FDIS). Стандарт считается принятым, если не менее 2/3 стран высказались «ЗА», и не более 25% стран высказались «ПРОТИВ» (страна может и воздержаться). Каждый этап длится месяцами и годами. Уже на этапе New Work Item Proposal агент другой транснациональной корпорации, сидящий в другом национальном комитете, поняв откуда уши растут, может забаллотировать стандарт в зародыше или выдвинуться в состав рабочей группы, где оба агента в кулуарах группы будут либо душить друг друга, либо в конце концов договорятся. В итоге же решающим с точки зрения содержания стандарта может оказаться мнение других членов рабочей группы, которых интересы этих корпораций совершенно не волнуют. А голосуют в конце концов национальные комитеты. И если Вы считаете, что какая то одна корпорация может  купить 75% национальных комитетов МЭК, то хотя бы назовите ее (а то ведь проспим появление супермонополии).

 

Если крупнейшие игроки рынка договариваются поддержать какое либо одно решение в качестве стандартного, то конечным пользователям только лучше. Договорились бы Сони с Филипсом о едином стндарте DVD и не было бы у обычных пользователей мороки с совместимостью.

 



 А самое главное то, что вся инновационная
деятельность
PLC Open крутится вокруг проблемы
переносимости... а вместо слов "
interoperability
и
platform" поищите слова "portability" и "reusability
"...
которых нет в стандарте, но которые в обилии встречаются на
сайте
PLCopen
... даже сейчас, после пяти лет "поумнения".

И, по моим ощущениям, "поумнение"
PLC Open
все-таки
ощущается, т.к., на мой взгляд, разговоров о
переносимости стало все-таки меньше, чем пять
лет назад... :-)

>>>>>>>>>>>>>>>>>>>>>>>

Я так и не понял чем PLCOpen провинилась. И что плохого в переносимости? Просто у переносимости есть несколько уровней: 1) Унификация синтаксиса и семантики используемых языков. 2) Переносимость проектов с помощью промежуточного формата представления проектных данных 3) двоичная совместимость проектных данных разных инструментальных средств.  PLCOpen пытается решить эти проблемы на уровне 1 и 2. Вы хотите сразу уровня 3, но так к сожалению не бывает (и по моему в обозримом будущем не предвидится).  Опять же если языки 61131 не нравятся, то просто не используйте их. Если Вы используете язык С, то там с переносимостью даже на первом уровне не все в порядке. Подсказали бы IEEE и ISO что с этим делать, а то ведь они то же все про portability талдычат.




К счастью у меня сохранились документы PLCopen
того времени. По этим документам я вижу, что
пять лет назад они много болтали о
FxF (File eXchange Format
)... им занимался
TC3-TF FxF... цель - "Portability Level

SFC, FBD and LD
"... а сейчас об этом ничего
не слышно... да и сам технический комитет №3,
по-видимому, издох...

>>>>>>>>>>>>>>>>>>>>>>>>>>

Этим разговорам даже больше 5 лет. Как говорится не получилось у них в тот раз. В МЭК кстати обычное явление, когда над стандартом работают несколько лет, а потом он не набирает нужное число голосов. Рабочая группа тогда обычно распускается, а результаты их работы публикуются как просто Technical Report.

 

Технологии на месте не стоят – появился XML, вот PLCOpen и пытается «подойти к весу» второй раз.



Так что, увы, должен Вас огорчить, факты говорят о том,
что процесс прямо противоположный:
работы по переносимости скорее сворачиваются, чем
разворачиваются... (могу отсканировать док и отправить
любому желающему)

>>>>>>>>>>>>>>>>>>>>>>>>>>>

А я по поводу PLCOpen и не радуюсь, и не огорчаюсь. Подобных клубов по интересам в сфере АСУ ТП несколько десятков. Я только не пойму что Вы хотите сказать. То у Вас PLCOpen только переносимостью и занимается, а когда я сказал, что этой проблемой занимается один комитет из шести, Вы меня «огорчаете», что эти работы сворачиваются. Что PLCOpen считает важным на данный момент, тем они и занимаются – никто им разнарядку сверху не спускает. Если Вам не нравится чем они занимаются, имеете полное право организовать свою некоммерческую организацию PLCClose и заниматься там всем чем заблогарассудится.

 

 


 Сергей Сорокин:
Я думаю Ваша статья висит в рамочке над рабочим

столом у всех членов PLCOpen J


Не уверен. Они же не знают русского... :-)
Но все положения, освещенные в статье прошли
апробацию в конференции
control.com
...
Дискуссия была достаточно горячей, поэтому,
уверен, что основные положения статьи
известны в
PLCopen
и так или иначе повлияли на
PLCopen сообщество.

>>>>>>>>>>>>>>>>>>>>>>

После того как Вы научили уму разуму все PLCOpen сообщество, я надеюсь многие из этих поумневших компаний вняли призыву «Я русский бы выучил только за то, что им разговаривал .....» и такую рамочку все таки повесили J.

 

С Уважением

 

Сергей Сорокин

 

 

 

 

 

 

Наверх
Сергей Гусев Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 16 Апрель 2003
Online Status: Offline
Публикации: 126
Свойства публикации Свойства публикации   Ответить, цитируя автора - Сергей Гусев Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Сентябрь 2003 15:11

Первоначально опубликовано evgen

Первоначально опубликовано Владимир Е. Зюбин


Это же просто проверяется... сейчас я опытным путем
получил, что один миллион операций взятия квадрата
из плавающей переменной равной двум занимает 100 секунд,
при затратах на организацию цикла в десять секунд...
(Борланд 3.5, 1ГГц Пентиум)... т.е. одна операция
взятия квадрата на Си занимает всего 90 нс...


Какие-то у вас пчелы неправильные
на P2-350 миллион раз выполняется за 0.256 секунды или 256нс.
Это без оптимизации, без MMX и прочих нововедений.

 

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

В качестве тестовой задачи мы занималисть непрерывным извлечением корня квадратного из "флоат" числа, с подсчетом количества циклов которое получалось за 2 секунды.

Причем - в качестве платформы мы выбрали "средний" 386 процессор, без сопроцессора. То что обычно встречается в промышленных контроллерах.

Текст на С этой незамысловатой программы выглядит так:

#include <stdio.h>
#include <math.h>
#include <time.h>

void main (void)
{
   float calc = 0.;
   float empty_time, calc_time;
   time_t t, t1, t2;
   time (&t);
   do
      time (&t2);
   while (t == t2);     // wait for start of second
   // phase2
   do {
      sqrt (10.0);
      time (&t);
      ++calc;
   }
   while (t - t2 < 2);
   printf ("Squrare root calculation on C, 80386, FP emulation\n");
   printf ("Cycles per 2 seconds: %g\n", calc);
};

Исходник можно взятьс  ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/test5.c

Скомпилируйте и запустиеи его под ДОС. Если запускать по Windows - то надо нажимать клавишу "Control" - иначе результаты будут крайне плохие...

Для "ленивых" - результат компиляции: ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/TEST5.EXE

Так вот, на моем Р4 (Win2000) этот C-шный тест дает ~ 170 000 циклов за две секунды. Хороший результат, но это для нас еще не главное. Главное - как это поведет сеты в реальном контроллере.

Так вот, на контроллере 6040 (Octagon Sysytems) результат - всего 2207 циклов за 2 сек. По моему - стоит задуматься...

Таперь попробуем сделать тот же алгоритм на UL. Владельцы UL могут скачать исходник с ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/test4.plc,

а остальные посмотреть графически:

(ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/test4.jpg)

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

 

Так как в этой программе пришлось делать вывод в консоль (однократную, в конце теста), то для этого в проекте используется внешняя функция, написанная на С следующего вида:

#include <stdio.h>

void _pascal comment (int *n)
{
   switch (*n)
   {
    case 7:
       printf ("Polynomial approximation on FBD, 80386, FP emulation\n");
       break;
     case 8:
       printf ("Cycles per 2 seconds: ");
       break;
   }
}

Исходник - на ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/comment.c

Для тех, у кого еще нет UL, привожу также результат компиляции проекта целиком:

ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/TEST4.EXE

Кстати, это как раз пример "правильного" использования внешней функции, напсанной на С внутри UL, ибо именно для таких задач эта возможность и была предусмотрена!!! Согласитесь, что писать аналог printf на FBD - это уже слишком. А то, что это работает медленно, это в данном случае не критично, поскольку это сообщение делается однократо и после основного цикла.

А теперь самое интересное. Запускаем test4.exe на моем Р4. Результат -

1 101 200 циклов за 2 секунды !!! Это более чем в 6 раз быстрее, чем SQRT на С!!! А что на "слабом" контроллере?

Резутьтат теста на 6040 (Octagon Sysyems) - 11 427 за 2 сек. Т.е. более чем в 5(!) раз быстрее, чем на С!

Результаты сводного теста:

 

Можно также скачать с ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/COMPARE.jpg

 

Таким образом, результаты тестирования предельно объективно показывают, насколько оптимальнее работает компилятор UltraLogik даже по сравнению со столь уважаемым многими Borland C версии 3.1.

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

Именно поэтому я и утверждал, как Вы помните, что если Вы хотите получит программу, (особенно если это не "ТЕТРИС", а программа с минимум консольных операций, и с максимум расчетов реального временм) выполняющуюся в Вашем контроллере МАКСИМАЛЬНО бысто, то быстрее, чем UltraLogik может быть токьло прямой Ассемблер.

По крайне мере, - изо всех известных мне компилирующих языков программирования. Не говоря уже о других широко известных "псевдо-компиляторах" формата IEC-61131.3, которые на самом деле являются либо интерпретаторами, либо "кросс-компиляторами" через С, Паскаль или Java. Производительность таких систем по сравнению с С ничуть не выше, а даже серьезно ниже.

Наверно, именно отсюда у многих есть предубеждение к самому стандарту 61131, как к чему-то "нехорошему". Надеюсь, что проимер UL позволит это предубеждение рассеить, и доказать, что и в рамказ МЭК-овского стандарта можно сделать хороший и быстрвй компилятор, причем, иногда даже более оптимальный чем С.

Все остальные материалы по теме я также выложил на ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/

С уважением.

Сергей Гусев
"Первая Миля", Authorized ICONICS Systems Integrator
Наверх
Сергей Гусев Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 16 Апрель 2003
Online Status: Offline
Публикации: 126
Свойства публикации Свойства публикации   Ответить, цитируя автора - Сергей Гусев Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 12 Сентябрь 2003 15:18

Вдогонку, результаты для WIN2000, P4-1700

ftp://ftp.prosoft.ru/pub/Software/ultralogik/SQRT_issue/Win2000.jpg

Сергей Гусев
"Первая Миля", Authorized ICONICS Systems Integrator
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 11:48
Сергей Гусев:
do {
                           sqrt (10.0);
                           time (&t);
                           ++calc;
                        }
                        while (t - t2 < 2);


Ребята, это несерьезно... Вы чужих баранов на sqrt
вешаете... :-) У Вас погрешность "эксперимента"
под 50% будет...

В итоге, за счет неверной организации "эксперимента",
Вы завышаете действительное время вычисления sqrt минимум
в два раза...

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

Так все, что угодно "обосновать" можно... :-)

Вот Вам приблизительный текст теста:

#include <stdio.h>
#include <MATH.h>


main () {
long i;
float data;

    data = 2.0;

printf("\n ============ START. ======");
    for (i = 0; i < 1000000000; i++) {
      sqrt(data);
    }

printf("\n ============ END OF PART 1 ======");

    for (i = 0; i < 1000000000; i++) {
    }
printf("\n ============ END OF PART 2 ======");


return(NULL);

}


Замеряйте время выполнения цикла с SQRT
(время между появлением на экране "START" и
"END OF PART 1") и время на накладные расходы...
(время между появлением на экране "END OF PART 1" и
"END OF PART 2"). Время замеряйте просто "ручками"...
10% погрешности тут, я вижу, что слону дробина...
чтобы снизить погрешность увеличивайте число в цикле...

Замерьте, а потом отнимите от первого времени второе...
можно и автоматом эти замеры и вычисления делать,
коль функцией time вы владеете...

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

Добавлю, что подобными "обоснованиями" ничего, кроме
подрыва имиджа UL, добиться нельзя...

P.S. я тут экспериментик поставил на основе ваших исходников
пока у Вас сайт "глючил"...
Так вот. У меня получилось, что
за 100 сек с sqrt исполняется -
18929185 циклов, а без sqrt (тот же самый цикл)-
19103533...

среднее время вычисления sqrt -
50 нс (НОНОСЕКУНД с учетом накладных расходов), и
50 мс (МИКРОСЕКУНД!) (если без учета)...

Резюме - вы завышаете время исполнения не в два раза, а в тысячу (sic!)
раз.

Вы что, ребята?! Надеюсь, все же, что ваш "тест" вы не специально
придумали, а просто по непониманию "сляпали"...
Совет: Вам имеет смысл хорошего консультанта для таких дел принять...
ну, чтобы не позориться прилюдно...

тексты на Си см. здесь:
               calc = 0L;
               time (&t);
               do
                  time (&t2);
               while (t == t2);     // wait for start of second
               // phase2
               do {
                  sqrt (data);
                  time (&t);
                  ++calc;
               }
               while ((t - t2) < TIME_VALUE);
               printf ("\nCycles per %d seconds: %ld", TIME_VALUE, calc);
               N1=(float)calc;


               calc = 0L;
               time (&t);
               do
                  time (&t2);
               while (t == t2);     // wait for start of second
               // phase2
               do {
//                  sqrt (data);
                  time (&t);
                  ++calc;
               } while ((t - t2) < TIME_VALUE);
               N2=(float)calc;
               printf ("\nCycles per %d seconds: %ld", TIME_VALUE, calc);
               printf ("\nseconds per SQRT: %g",
                      (float)(N2-N1)*(float)TIME_VALUE/(N1*N2));

Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 12:09
Сергей Сорокин:
Так Вы отсканируйте статью и разместите здесь в
конференции. Все проще чем мне в ленинскую библиотеку
бежать.


Увольте. Довольно будет, что я Вам ссылку дал.
Что я тут, насильно просвещать буду, что ль? :-)

Сергей Сорокин:
Я так и не понял чем PLCOpen провинилась. И что
плохого в переносимости? Просто у переносимости
есть несколько уровней...


Сергей, во-первых, не надо рассказывать очевидных вещей.
а, во-вторых, - читайте внимательно мою статью,
которую Вы критикуете, по-видимому, предварительно даже
не удосужившись прочитать...

Прочтите внимательно, и осознайте, что никто не
говорит, что переносимость - это плохо...

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


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

Если же желаете конструктивного диалога -
то действуйте общепринятым образом:
сначала внимательно прочтите статью,
убедитесь, что поняли все верно, а потом
критикуйте на здоровье, не забывая
при этом цитировать критикуемый оригинал...
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Mike_K Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Июль 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 140
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mike_K Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 13:39

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

Я согласен, что все языки если есть пользователи имеют право на существования, но С++ более универсален, быстр(если вы сомневаетесь в его прямом быстродействии, то уж за счет оптимального построения задачи с изменяющимися приоритетами тут спору нет). Может для кого то он и неудобен, но это его проблемы. Да и дешевле он.

 

www.sinat.ru
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 15:29
Mike_K:
Все зациклилились на скорости, я для себя уже решил и
ни кто меня не переубедит, все опробовано на реальных
системах, С++ лучше и не только скоростью но и
гибкостью.


Что касается подтемы UL и Си, то тут дело не в
скорости, а в корректности утверждений...

А если про контроллеры говорить, то Си++, он сам по себе
никакой методологии не представляет, а вот если его снабдить,
скажем библиотечками, то было б достаточно интересно...

Впрочем, подобные штуки вроде б имеются... см. например,
http://homepage.mac.com/pauljlucas/software/chsm/
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
evgen Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 178
Свойства публикации Свойства публикации   Ответить, цитируя автора - evgen Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 16:13
Я вам больше того скажу - приличный компилятор с приличной оптимизацией и с инлайнизацией из цикла
do {
      sqrt (10.0);
      time (&t);
      ++calc;
   }
sqrt уж точно должен выкинуть...
SY,
EK
Наверх
Владимир Е. Зюбин Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 09 Сентябрь 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 247
Свойства публикации Свойства публикации   Ответить, цитируя автора - Владимир Е. Зюбин Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Сентябрь 2003 16:33
evgen:
Я вам больше того скажу - приличный компилятор с
приличной оптимизацией и с инлайнизацией из цикла
sqrt уж точно должен выкинуть...


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

a = f(x);
a = b;

оптимизировал до a = b;

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

т.ч. в общем случае это философский вопрос...
но предупреждение приличный компилятор несомненно
должен сгенерить...
Владимир Е. Зюбин
Язык Рефлекс -- Си-подобный язык программирования ПЛК
http://reflex-language.narod.ru/
Наверх
Sergey Sorokin Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 27 Март 2003
Категория: Russian Federation
Online Status: Offline
Публикации: 240
Свойства публикации Свойства публикации   Ответить, цитируя автора - Sergey Sorokin Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Сентябрь 2003 02:40

>Увольте. Довольно будет, что я Вам ссылку дал.
>Что я тут, насильно просвещать буду, что ль? :-)

>>>>>>>>>>>>>>>>>>

Придется прозябать в темноте J.

>Сергей, во-первых, не надо рассказывать очевидных вещей.
>а, во-вторых, - читайте внимательно мою статью,
>которую Вы критикуете, по-видимому, предварительно даже
>не удосужившись прочитать...

>>>>>>>>>>>>>>>>>>>

Да читал я ee.

>Прочтите внимательно, и осознайте, что никто не
>говорит, что переносимость - это плохо...

>>>>>>>>>>>>>>>>>>>

Вы так же читайте внимательно. Моя реплика относится не к статье, а к Вашему предыдущему письму.



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

>>>>>>>>>>>>>>>>>>>>>

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

 

С Уважением,

 

Сергей Сорокин

 

Наверх
 Ответить Ответить Страница  <1 45678 53>

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz