как втянуть данные в ПК? - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Re: как втянуть данные в ПК?
25-Mar-05 20:21 Alexander Derazhne wrote to Oleksandr Redchuk:

OR>> "Вы будете смеяться", но я полез туда именно с этой целью - "другие
OR>> желающие" будут сидеть на другой карточке.
OR>> Мне нужен быстрый канал точка-точка (относительно, 100Mbit ethernet
OR>> это, вообще говоря, довольно медленный интерфейс :-).

AD>     А тогда зачем, собственно, ip-стек?
 MAC-raw - пакетами кидаться? Можно, конечно, и даже скорость повыше
будет, но хочется удобства и стандартизации, по портам развести
управление, передачу данных, отладку. Не выдумывать очередной велосипед.
Ведь унутре тех raw-пакетов всё равно свои придётся делать. Ну будет на
каое-то количество байт меньше заголовок, ну и что?
В перспективе всё равно захочется вплоть до уё, пардон, web-интерфейса
для сервисников - не лепить же отдельный ком-порт на устройстве для
терминалки или не писать же спецсофтину, которая теми своими пакетами
достучаться может до настроек внутри устройства. Выигрыш
от отказа от стека будет сомнителен, возни меньше не станет, в итоге
выйдет что-то нестандартное, с которым ещё придётся нахлебаться.

OR>> На lvds serdes-ах раньше получил 320мегабит на 15 метров, думаю,
OR>> можно и дальше на такой низкой (минимально возможной для serdes-ов)
OR>> скорости, но мне для текущей задачи столько не надо, а захватчики
OR>> такие в PCI - дорого.

AD>     А кто такие serdes-ы ?
 serializer/deserializer.
Они разные бывают, я пользуюсь теми, которые FlatLink/CameraLink.
DS90CR285/286, sn75lvds82/83
Берут 21 или 28 бит параллельно в темпе от 20 до 60-80MHz и выбрасывают
их в 4 или 5 витых пар соответственно, приёмная часть вываливает
опять параллельные данные и синхросигнал. мультиплексирование 7:1.
ЖКИ-панели большого размера в этом виде получают данные.
21 бит - это RGB 6:6:6 + vsync + hsync + blank :-)
28 - RGB 8:8:8 + vsync + hsync + blank + reserved


OR>> Про "прозрачные" удлиннители USB2.0 через UTP-5kat знаю, но это
OR>> лишние деньги, которые можно было бы потратить, если бы USB2.0

AD>  Может сразу на оптику стоит смотреть?
 Стоит, но не сразу. Точнее, *смотреть* стоит сразу, но *делать*
надо более простым и быстрым путём.

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

wbr,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: как втянуть данные в ПК?
Hello, Oleksandr!
05:39:15 +0000 (UTC):

 OR>>> "Вы будете смеяться", но я полез туда именно с этой целью -
 OR>>> "другие желающие" будут сидеть на другой карточке.
 OR>>> Мне нужен быстрый канал точка-точка (относительно, 100Mbit
 OR>>> ethernet это, вообще говоря, довольно медленный интерфейс :-).

 AD>>     А тогда зачем, собственно, ip-стек?
 OR>  MAC-raw - пакетами кидаться? Можно, конечно, и даже скорость повыше
 OR> будет, но хочется удобства и стандартизации, по портам развести
 OR> управление, передачу данных, отладку. Не выдумывать очередной
 OR> велосипед.
 OR> Ведь унутре тех raw-пакетов всё равно свои придётся делать. Ну будет
 OR> на каое-то количество байт меньше заголовок, ну и что?
 OR> В перспективе всё равно захочется вплоть до уё, пардон,
 OR> web-интерфейса для сервисников - не лепить же отдельный ком-порт на
 OR> устройстве для терминалки или не писать же спецсофтину, которая теми
 OR> своими пакетами достучаться может до настроек внутри устройства.
 OR> Выигрыш от отказа от стека будет сомнителен, возни меньше не станет,
 OR> в итоге выйдет что-то нестандартное, с которым ещё придётся
 OR> нахлебаться.

    Выиграш будет только один - отсутствие игр со стеком. Насколько я понял
из контекста - некий покупной девайс может обменяться с 100М сеткой парой
пакетов, но не способен обработать их поток при полном использовании полосы,
так?
    Развести пару-тройку потоков можно и по одному байтику-заголовку в
пакете, зато куча стекового сервиса оказывается не нужной: соединение
радиальное, короткое, роутинга нет - следовательно, никаких коллизий,
недоставок, несовпадений контрольных сумм, нарушений последовательности
пакетов и т.д.
    Что касается web-интерфейса, то по опыту - на предидущей работе ARM7
(20МГц/4М ОЗУ + 2М флешки) только этим и занимался. И проблем с организацией
такого динамического сервера - выше крыши. Отладка и сопровождение этого
средства отладки быстро превратится в отдельный проект. Оно тебе надо?
:-)))) Если нет задачи роутить этот интерфейс через инет для удалённого
обслуживания/администрирования/обновления, то сервисный DB9 - самое оно,
IMHO. Кстати, в упомянутом устройстве без него также не обходилось (ну
никак). Т.е. вэб вэбом, а RS232 рулит :-))).

 AD>>     А кто такие serdes-ы ?
 OR>  serializer/deserializer.
 OR> Они разные бывают, я пользуюсь теми, которые FlatLink/CameraLink.
 OR> DS90CR285/286, sn75lvds82/83
 OR> Берут 21 или 28 бит параллельно в темпе от 20 до 60-80MHz и
 OR> выбрасывают их в 4 или 5 витых пар соответственно, приёмная часть
 OR> вываливает опять параллельные данные и синхросигнал.
 OR> мультиплексирование 7:1.
 OR> ЖКИ-панели большого размера в этом виде получают данные.
 OR> 21 бит - это RGB 6:6:6 + vsync + hsync + blank :-)
 OR> 28 - RGB 8:8:8 + vsync + hsync + blank + reserved

    Ага. Сенкс, буду знать, что такое бывает.

With best regards,
Alexander Derazhne



Re: как втянуть данные в ПК?
26-Mar-05 19:35 Alexander Derazhne wrote to Oleksandr Redchuk:

 AD>>>     А тогда зачем, собственно, ip-стек?
 OR>>  MAC-raw - пакетами кидаться? Можно, конечно, и даже скорость повыше
 OR>> будет, но хочется удобства и стандартизации, по портам развести
 OR>> управление, передачу данных, отладку. Не выдумывать очередной
 OR>> велосипед.

AD> Выиграш будет только один - отсутствие игр со стеком. Насколько я понял
AD> из контекста - некий покупной девайс может обменяться с 100М сеткой
AD> парой
AD> пакетов, но не способен обработать их поток при полном использовании
AD> полосы,
 Некий мой (даже не мой, я его только причесал лет 5-6 назад,
довёл до запускаемсти/работоспособности без разработчика :-) девайс
вообще ничего не слышал про 100M сетку.
 Девайс умеет по RS232 получать команды и отвечать на них и по
IDE-шнурку отдавать данные (монопольно и тупо - не как ATAPI устройство,
а как просто регистры с адреса такого-то). В нём внутри нет ресурсов ни
на ATAPI-устройство, ни на что другое.
Теперь прошёл некий круговорот в природе и я вернулся к этому изделию.
Сейчас нужно, чтобы он и не знал ничего про сетку - сделать ему "гейт".
В следующих устройствах (даже не в следующих поколениях этого, это
так и умрёт) поддержка сетки должна быть уже встроенная и не факт,
что на WizNet вообще - это будет обдумываться.

AD>     Развести пару-тройку потоков можно и по одному байтику-заголовку в
AD> пакете, зато куча стекового сервиса оказывается не нужной: соединение
 А потом мне скажут поцепть несколько таких на один комп. А потом
окажется, что надо предоставлять устройство в OEM-версии, так сказать,
и потенциальный покупатель будет писать основной софт сам и неизвестно
где и как. И всё равно попросят "что-то стандартное"
  (Кстати, какой-нибудь winsock даёт лазить на таком низком уровне? Надо
   в MSDN глянуть...).
 А уже сейчас в "небоевом" варианте, не на объекте, а при
отладке/экспериментах (когда высокая скорость не так и нужна) было бы
удобно просто подключить это дело в офисную сетку и по очереди лазить
туда то мне, то разработчику основного софта. Да, на нижнем уровне можно
организовать закат солнца вручную, но мне показалось, что проще сразу
сказать "а, IP-сь оно всё в порт".

AD>     Что касается web-интерфейса, то по опыту - на предидущей работе ARM7
AD> средства отладки быстро превратится в отдельный проект. Оно тебе надо?
AD> :-)))) Если нет задачи роутить этот интерфейс через инет для удалённого
AD> обслуживания/администрирования/обновления,
 А призрак этого бродит вокруг (до фраз "какого фига до сих пор это
невозможно" дело ещё не дошло, но...).


wbr,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: как втянуть данные в ПК?
Quoted text here. Click to load it

Winsock вроде не должен по определению. Он открывает сокеты - это порождение
сетевого уровня.
Копаться в канальном уровне позволяет, например, NDIS.

И вообще, http://winpcap.polito.it позволит начать копаться, не забивая
голову деталями спецификации NDIS и сакральными знаниями про "драйвер
минипорта".

Quoted text here. Click to load it

Однозначно. Трудно представить себе аргументы против использования IP.



Re: как втянуть данные в ПК?
Hello, Oleksandr!
00:16:19 +0000 (UTC):

 OR>  Девайс умеет по RS232 получать команды и отвечать на них и по
 OR> IDE-шнурку отдавать данные (монопольно и тупо - не как ATAPI
 OR> устройство, а как просто регистры с адреса такого-то).

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

 AD>>     Развести пару-тройку потоков можно и по одному
 AD>> байтику-заголовку в пакете, зато куча стекового сервиса оказывается
 AD>> не нужной: соединение
 OR>  А потом мне скажут поцепть несколько таких на один комп. А потом
 OR> окажется, что надо предоставлять устройство в OEM-версии, так
 OR> сказать, и потенциальный покупатель будет писать основной софт сам и
 OR> неизвестно где и как. И всё равно попросят "что-то стандартное"

    В девайсе, который стоит сейчас у меня на работе два сетевых разъёма -
по одному можно рулить через ip, по другому гоняются данные в своём формате.
Но тут именно плотность и ненарушимость потока данных играет решающую роль.

 OR>  А уже сейчас в "небоевом" варианте, не на объекте, а при
 OR> отладке/экспериментах (когда высокая скорость не так и нужна) было
 OR> бы удобно просто подключить это дело в офисную сетку и по очереди
 OR> лазить туда то мне, то разработчику основного софта. Да, на нижнем
 OR> уровне можно организовать закат солнца вручную, но мне показалось,
 OR> что проще сразу сказать "а, IP-сь оно всё в порт".

    Тут есть свои плюсы и минусы. Плюсы очевидны. Из минусов - необходимость
участия администратора сетки _у_ _Заказчика_ (как ни странно, это часть
оказывалось серъёзной проблемой) и зависимость от условий в общей сетке.
Кто-то начнёт качать клипы и.. Нет, потом его, конечно... Ну, вобщем, он
больше не будет, но допустима ли даже короткое прерывание потока? Ещё могут
быть атаки, пока админ (или кто там по должности) не справится - сетка будет
еле еле шевелиться. Падение ДНСа. И.т.д.
    Самое пикантное, это то, что всё равно потребуется или сервисный DB9 или
панелька с кнопками и индикатором: пока девайсину не сконфигурируют - никто
её в сетке не увидит. Хотя, можно, конечно, и 32/48 дип-свичей поставить
:-)).

 AD>>     Что касается web-интерфейса, то по опыту - на предидущей работе
 AD>> ARM7 средства отладки быстро превратится в отдельный проект. Оно
 AD>> тебе надо?
 AD>> :-)))) Если нет задачи роутить этот интерфейс через инет для
 AD>> удалённого обслуживания/администрирования/обновления,
 OR>  А призрак этого бродит вокруг (до фраз "какого фига до сих пор это
 OR> невозможно" дело ещё не дошло, но...).

    Ой!


With best regards,
Alexander Derazhne



Re: как втянуть данные в ПК?
28-Mar-05 20:58 Alexander Derazhne wrote to Oleksandr Redchuk:

AD> Аа... Стало быть, вопросы полного использования полосы, конечно,
AD> снимаются.
 Да, мне с головой хватит 30-40мегабит.

AD> по одному можно рулить через ip, по другому гоняются данные в своём
AD> формате.
AD> Но тут именно плотность и ненарушимость потока данных играет решающую
AD> роль.
 И сколько там выжимается?

AD> Кто-то начнёт качать клипы и.. Нет, потом его, конечно... Ну, вобщем, он
AD> больше не будет, но допустима ли даже короткое прерывание потока? Ещё
 Поток "импульсный" - надо передавать грубо десяток мегабайт грубо раз в
пару десятков секунд. Замедление передачи какой-то "пачки" -
несмертельно, просто обидно :-).
 В "тяжёлых" случаях можно будет поставить в компу вторую сетевуху и
соединить устройство с ней напрямую - при этом проблема с клипами должна
уйти, останется только вопрос выжимания полосы. Который не стоит (пока -
"от тюрьмы да от сумы", но я не собираюсь решить сразу всё наперёд на
любые варианты).

wbr,
--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


Re: как втянуть данные в ПК?
Hello, Oleksandr!
19:25:16 +0000 (UTC):

  AD>> по одному можно рулить через ip, по другому гоняются данные в своём
 AD>> формате.
 AD>> Но тут именно плотность и ненарушимость потока данных играет
 AD>> решающую роль.
 OR>  И сколько там выжимается?

    А вот не скажу. Не знаю. Чипы по жизни являются концентраторами, т.е. на
каждый приходится только часть полосы, ограничения вычислительных ресурсов
чипа наступают раньше, чем у связного интерфейса. Но требования к задержкам
доставки жёсткие. Т.е. в общую сетку ни-ни. Хотя возможность программно
перебросить трафик данных на обычный ip есть. Недавно сотрудники пробовали.
Сначала все (включая их) были недовольны админом, а потом все (исключая их)
и админ ими :-))).

With best regards,
Alexander Derazhne



Re: как втянуть данные в ПК?
24-Mar-05 14:21 Olga Nonova wrote to Oleksandr Redchuk:

 OR>> 6 мегабит/с из компьютера в ОЗУ AVR плюс столько же назад), после
 OR>> переписывания подпрограммы копирования - около 9. Hа той тактовой
 OR>> пропускная способность шины AVR - около 23мегабит в секунду (по 11.5
 OR>> в каждую сторону, если пользоваться логикой теста).

ON> А если попробовать оптимизировать на ассемблере время передачаи по шине
ON> AVR?
ON> Дизассемблированный код этого участка в socket.c видели? Есть там
ON> резервы?
После замены идиотского (даже для случая, когда скорость не волнует)

    int i;
    for(i=0;i<len;++i)
       *dst++ = *src++;

на развёрнутый цикл (в рассчёте на то, что копироваться всегда будут
сотни байт-килобайт)

    uint8_t len1 = len % 8;

    len /= 8;

    while(len1--)
        *dst++ = *src++;

    while(len--)
    {
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
        *dst++ = *src++;
    }

там на ассемблере если и наиграются, то на уревне 1/10 такта в пересчёте
на копируемый байт. Учитывая предел 5 тактов на байт (2 во внутреннем
плюс 3 во внешнем пространстве) - нет смысла переписывать, скорости это не
прибавит.


--
/* Oleksandr Redchuk, Brovary, Ukraine */
/* real '\x40' real '\x2E' kiev '\x2E' ua     */


как втянуть данные в ПК?
Здравствуйте, Уважаемый Oleksandr!

Fri Mar 25 2005 08:40, Oleksandr Redchuk wrote to "Olga Nonova":

 ON>> Дизассемблированный код этого участка в socket.c видели? Есть там
 ON>> резервы?

 OR> После замены идиотского (даже для случая, когда скорость не волнует)

 OR>     int i;
 OR>     for(i=0;i<len;++i)
 OR>        *dst++ = *src++;

 OR> на развёрнутый цикл (в рассчёте на то, что копироваться всегда будут
 OR> сотни байт-килобайт)

 OR>     uint8_t len1 = len % 8;

 OR>     len /= 8;

 OR>     while(len1--)
 OR>         *dst++ = *src++;

 OR>     while(len--)
 OR>     {
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>         *dst++ = *src++;
 OR>     }

 OR> там на ассемблере если и наиграются, то на уревне 1/10 такта в пересчёте
 OR> на копируемый байт. Учитывая предел 5 тактов на байт (2 во внутреннем
 OR> плюс 3 во внешнем пространстве) - нет смысла переписывать, скорости это
 OR> не прибавит.

Отлично оптимизировано! Только не надо после этого утверждать, мол, переписать
готовый socket.c ничего не стоит. Стоит! Вы сами только что это показали.
Требуется вдумчивое вникание в исходники и отлов глупостей с багами. Это к
вопросу о бузупречности библиотек в исходниках на Си.

Согласитесь, что будь socket написан на ASМе, замеченных Вами глупостей не
случилось бы.

Всего Вам Хорошего
Ольга


Re: как втянуть данные в ПК?

   Olga, ты ещё здесь сидишь?


Пятница Март 25 2005 10:13, Olga Nonova wrote to Oleksandr Redchuk:

 ON> Отлично оптимизировано! Только не надо после этого утверждать, мол,
 ON> переписать готовый socket.c ничего не стоит. Стоит! Вы сами только что
 ON> это показали. Требуется вдумчивое вникание в исходники и отлов
 ON> глупостей с багами.

 Это вопрос качества документации, в частности комментариев в исходнике.
Разумных комментариев нет - автор почти наверняка ваял халтуру...


 ON> Согласитесь, что будь socket написан на ASМе, замеченных Вами
 ON> глупостей не случилось бы.

 Лихо! ;)))



                                                   Георгий


как втянуть данные в ПК?
Здравствуйте, Уважаемый George!

Sun Mar 27 2005 00:34, George Shepelev wrote to Olga Nonova:

 ON>> Отлично оптимизировано! Только не надо после этого утверждать, мол,
 ON>> переписать готовый socket.c ничего не стоит. Стоит! Вы сами только что
 ON>> это показали. Требуется вдумчивое вникание в исходники и отлов
 ON>> глупостей с багами.

 GS>  Это вопрос качества документации, в частности комментариев в исходнике.
 GS> Разумных комментариев нет - автор почти наверняка ваял халтуру...

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

 ON>> Согласитесь, что будь socket написан на ASМе, замеченных Вами
 ON>> глупостей не случилось бы.

 GS>  Лихо! ;)))

Конечно не случилось бы. Ассемблерщик, по натуре,-  экономный и очень
практичный  человек. Он не даст себя увлечь "академическими фантазиями".
Поэтому все получается максимально эффективно по компактности и
быстродействию.

Всего Вам Хорошего
Ольга


Re: как втянуть данные в ПК?
Hello Olga.

27 Mar 05 11:23, Olga Nonova wrote to George Shepelev:

 ON> Конечно не случилось бы. Ассемблеpщик, по натуpе,-  экономный и очень
 ON> пpактичный  человек. Он не даст себя увлечь "академическими
 ON> фантазиями". Поэтому все получается максимально эффективно по
 ON> компактности и быстpодействию.
Пpедположим. Hо как это стыкуется с пpедыдущим высказыванием (последнее
пpедложение в цитате):
8<------------------------------------------------------------------
 AM> Именно поэтому, и получаются чудеса типа "заслал значение в память, чтобы
 AM> следующей командой его из памяти взять".
Да, и гоpжусь этим! Потому как стопpоцентная надежность кода и защита от
побочных эффектов. А байты, пpи нынешнем-то изобилии и быстpодействии, - чего
их экономить-то?
8<------------------------------------------------------------------
Чужое мнение должно быть уважаемо, констpуктивно кpитикуемо, но в данном случае
не видно "генеpальной линии".

Sergey


как втянуть данные в ПК?
Привет!

Sun Mar 27 2005 12:23, Olga Nonova wrote to George Shepelev:

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

Господи, Ольга Hиколаевна, что Вы имеете против C?

 ON> Конечно не случилось бы. Ассемблерщик, по натуре,-  экономный и очень
 ON> практичный  человек. Он не даст себя увлечь "академическими фантазиями".
 ON> Поэтому все получается максимально эффективно по компактности и
 ON> быстродействию.

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

P.S. Как бывший ассемблерщик замечу, что Ассемблер - не Панацея, весь
комплекс вопросов разработки embedded-программы он, естественно, не может
покрыть. Экономия - она ведь разная бывает. Можно экономить число байт,
занимаемых программой, а можно экономить время ее разработки повышать ее
качество. Мое IMHO простое: ниша Ассемблера именно там, где он дает
максимальную выгоду - в тех 10% кода, оптимизация которого на Ассемблере
оправданна. А уж витание в теоретических облаках на тему "академических
фантазий" программистов - это для SU.GENERAL :-)

Юргис


Re: как втянуть данные в ПК?

 OR>   (Кстати, какой-нибудь winsock даёт лазить на таком низком
 OR> уровне? Hадо в MSDN глянуть...).

 можно использовать сторонний winpcap (порт libpcap)


как втянуть данные в ПК?
Здравствуйте, Уважаемый Jurgis!

Mon Mar 28 2005 18:46, Jurgis Armanavichius wrote to Olga Nonova:

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

 JA> Господи, Ольга Hиколаевна, что Вы имеете против C?

Вообще? -Hичего. А в сугубой частности связных задач- имею. В этой сфере
деятельности увлечение Си может оказать очень плохую услугу (потеря
быстродействия). Отмотайте тред и ознакомьтесь, как человеку пришлось вьезжать
в токости компиляции, чтобы ускорить работу по заполнению буфера обмена. Он
считал такты в дисассемблере! Hу, и зачем коту баян, компилятор С то бишь,
если все равно пришлось ковыряться в ассемблерной кодировке и подгонять
программу на Си так, чтобы получился хороший код в ассемблере?

 ON>> Конечно не случилось бы. Ассемблерщик, по натуре,-  экономный и очень
 ON>> практичный  человек. Он не даст себя увлечь "академическими фантазиями".
 ON>> Поэтому все получается максимально эффективно по компактности и
 ON>> быстродействию.

 JA> Вы не заметили, что страдаете безапелляционным максимализмом, не утруждая
 JA> себя доказательством своих более чем странных утверждений? :-)

Доказательства были раньше. Отмотайте тред.

 JA> P.S. Как бывший ассемблерщик замечу, что Ассемблер - не Панацея, весь
 JA> комплекс вопросов разработки embedded-программы он, естественно, не может
 JA> покрыть. Экономия - она ведь разная бывает. Можно экономить число байт,
 JA> занимаемых программой, а можно экономить время ее разработки повышать ее
 JA> качество. Мое IMHO простое: ниша Ассемблера именно там, где он дает
 JA> максимальную выгоду - в тех 10% кода, оптимизация которого на Ассемблере
 JA> оправданна. А уж витание в теоретических облаках на тему "академических
 JA> фантазий" программистов - это для SU.GENERAL :-)

Тут тоже в избытке кабинетной мысли, которая оторвана от реальной жизни. В
целом же, я согласна с представленным Вами соотношением 10-90 ассемблера и ЯВУ
в прикладных делах. Проблема лишь в том, что академические программисты не
согласны- они хотят, чтоб все было на Си! И предлагают такие ужасные
исходники, что людям приходится их переделывать, копаясь в ассемблере.

Всего Вам Хорошего
Ольга
 


как втянуть данные в ПК?
Привет!

Tue Mar 29 2005 02:09, Olga Nonova wrote to Jurgis Armanavichius:

 JA>> Господи, Ольга Hиколаевна, что Вы имеете против C?
 ON> Вообще? - Hичего. А в сугубой частности связных задач - имею. В этой
 ON> сфере деятельности увлечение Си может оказать очень плохую услугу
 ON> (потеря быстродействия). Отмотайте тред и ознакомьтесь, как человеку
 ON> пришлось вьезжать в токости компиляции, чтобы ускорить работу по
 ON> заполнению буфера обмена. Он считал такты в дисассемблере!

Да, бывают отдельные критичные места, где необходима жесткая оптимизация.
(В скобках отмечу, что современные компиляторы становятся все лучше и лучше,
соответственно, необходимость в ассемблерной оптимизации возникает все реже
и реже.) Однако этих критических мест довольно мало, поэтому они прекрасно
подпадают под основное правило: вся программа на C, а парочка критических
мест - на Ассемблере.

 ON> Hу, и зачем коту баян, компилятор С то бишь, если все равно пришлось
 ON> ковыряться в ассемблерной кодировке и подгонять программу на Си так,
 ON> чтобы получился хороший код в ассемблере?

:-) А баян, то бишь Ассемблер, понадобился только для одного критического
участка. Это отняло немного усилий, по-сравнению с написанием всей программы
на языке низкого уровня. Заметьте, я не утверждаю,что Ассемблера знать вовсе
не нужно, но считаю, что его применение нужно минимизировать сколько можно.

 JA>> Вы не заметили, что страдаете безапелляционным максимализмом, не
 JA>> утруждая себя доказательством своих более чем странных утверждений? :-)
 ON> Доказательства были раньше. Отмотайте тред.

Hе убедительно, Ольга Hиколаевна :-) Согласитесь, очень не разумно терять
производительность программиста, отягощать его повышенным усложнением
написания программы на Ассемблере - и все это ради одного маленького
кусочка в функции заполнения буфера обмена. Hе согласны?

 JA>> Мое IMHO простое: ниша Ассемблера именно там, где он дает максимальную
 JA>> выгоду - в тех 10% кода,оптимизация которого на Ассемблере оправданна.
 JA>> А уж витание в теоретических облаках на тему "академических фантазий"
 JA>> программистов - это для SU.GENERAL :-)
 ON> Тут тоже в избытке кабинетной мысли, которая оторвана от реальной жизни.

Hе скажите. Здесь собрались люди, максимально конкретно работающие с теми
проблемами, которые Вы описываете. Они (и я в том числе) решают реальные
задачи, напрямую завязаны на вопросы embedded-программирования, зачастую
еще и в рамках ограниченных ресурсов небольших микроконтроллеров. Hапример,
я даже маленькие Атмеловские AVR-ки программирую на C :-)

 ON> В целом же, я согласна с представленным Вами соотношением 10-90
 ON> ассемблера и ЯВУ в прикладных делах. Проблема лишь в том, что
 ON> академические программисты не согласны - они хотят, чтоб все
 ON> было на Си! И предлагают такие ужасные исходники, что людям
 ON> приходится их переделывать, копаясь в ассемблере.

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

А что касается грамотного написания программ, то это искусство не зависит
от применяемого языка программирования. Hа любом практически применяемом
языке программирования можно написать программу по-разному. Можно написать
так, что и сам автор через месяц ни черта в ней не поймет :-)

Таким образом, можно отметить, что при написании программы весьма разумно
использовать различные приемы и методы, повышающие ее качество. При этом,
конечно, очень хорошо, если инструмент написания (ЯВУ с его компилятором)
помогает этому процессу, например, занимается рутиной (правильный порядок
push'ей, pop'ов - я вечно их путал), освобождает программиста для решения
действительно важных вопросов.

Смешное вспомнил :-) Уже довольно давно я пытался перевести чужую программу
с Ассемблера 8080 на язык C. Пришлось плюнуть и переписать все с нуля, т.к.
в одном многостраничном файле было только несколько ничего не объясняющих
комментариев. А написанную на C программу (особенно благодаря свойству ее
самодокументируемости) вполне способны сопровождать другие люди.

Юргис


как втянуть данные в ПК?
Tue Mar 29 2005 20:28, Jurgis Armanavichius wrote to Olga Nonova:

 JA> А что касается грамотного написания программ, то это искусство не зависит
 JA> от применяемого языка программирования. Hа любом практически применяемом
 JA> языке программирования можно написать программу по-разному. Можно
 JA> написать так, что и сам автор через месяц ни черта в ней не поймет :-)
 JA> ...
 JA> А написанную на C программу (особенно благодаря свойству ее
 JA> самодокументируемости) вполне способны сопровождать другие люди.

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

WBR, Yuriy.


как втянуть данные в ПК?
Привет!

Tue Mar 29 2005 20:54, Yuriy K wrote to Jurgis Armanavichius:

 JA>> А что касается грамотного написания программ, то это искусство не
 JA>> зависит  от применяемого языка программирования. Hа любом практически
 JA>> применяемом   языке программирования можно написать программу
 JA>> по-разному. Можно  написать так, что и сам автор через месяц ни черта
 JA>> в ней не поймет :-)  
 JA>> ...
 JA>> А написанную на C программу (особенно благодаря свойству ее
 JA>> самодокументируемости) вполне способны сопровождать другие люди.
 YK> Если ее писал разумный программист. Мне приходилось переписывать
 YK> программу на С, это было проще, чем исправлять существующую.

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

Черт его знает...

Однако, от языка программирования ясность и понятность программы не зависит.
Hу, или так скажем, мало зависит. Просто на ЯВУ легче самому понять, чего же
это я такого наваял :-) Да и текста меньше - проследить/понять легче. Язык
Ассемблера тоже макросы всякие позволяет, но я с ними тяжело работаю...
Кроме нескольких легко-запоминаемых, все остальные вечно путаются :-)

Кроме того, ЯВУ позволяет написать более безглючную программу, т.к. с его
помощью отсекаются примитивные ляпы синтаксиса (да и семантики - часто тоже).
Захочешь присвоить указателю значение данных - а компилер тебя одернет (это
я тоже частенько забываю - звездочку перед именем поинтера поставить).

Юргис


как втянуть данные в ПК?
Здравствуйте, Уважаемый Jurgis!

Tue Mar 29 2005 21:45, Jurgis Armanavichius wrote to Yuriy K:

 JA> Кроме того, ЯВУ позволяет написать более безглючную программу, т.к. с его
 JA> помощью отсекаются примитивные ляпы синтаксиса (да и семантики - часто
 JA> тоже).
 JA> Захочешь присвоить указателю значение данных - а компилер тебя одернет
 JA> (это
 JA> я тоже частенько забываю - звездочку перед именем поинтера поставить).

Тю-ю! Так, Вам Си нужен в качестве няньки! -Чтоб звездочки все оказались на
месте. Таких не берут в космонавты.(с)

Всего Вам Хорошего
Ольга


как втянуть данные в ПК?
Привет!

Wed Mar 30 2005 00:03, Olga Nonova wrote to Jurgis Armanavichius:

 JA>> Кроме того, ЯВУ позволяет написать более безглючную программу, т.к. с
 JA>> его  помощью отсекаются примитивные ляпы синтаксиса (да и семантики -
 JA>> часто  тоже).
 JA>> Захочешь присвоить указателю значение данных - а компилер тебя одернет
 JA>> (это
 JA>> я тоже частенько забываю - звездочку перед именем поинтера поставить).
 ON> Тю-ю! Так, Вам Си нужен в качестве няньки! -Чтоб звездочки все оказались
 ON> на месте. Таких не берут в космонавты.(с)

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

Юргис


Site Timeline