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

Mar 21, 2005 139 Replies

Черт возьми! Какая изумительная пара могла бы выйти! Женитесь, а? Оленька, лапочка, а мы Вам осциллограф WaveMaster спроворим в приданое, и полный комплект пробов...

Привет Olga!

Monday April 04 2005 13:24, Olga Nonova wrote to Sergey Davydov:

ON>

ON> Очень разумное замечание. Повсеместное засилье Cи в ембедах, на мой ON> взгляд, историческая случайность. по времени совместились два трагических ON> события: -1. В конце 80-х на грандиозный специалистов ПО для ембеда ON> откликнулись программисты, работающие ранее на больших и мини-ЭВМ, и ON> ломанулись всей своей сишной массой на новые рабочие места. -2.

Очередная глупость несусветная. Я никогда небыл "программистом на больших и мини-ЭВМ", всегда именно эмбедед и занимался, тем не менее - с середины 90-х к ассемблеру прибегаю только в виде "вставок в Сишную программу". И таких как я - знаю массу людей.

ON> Родоначальник микропроцессоров, Интел, покинул сферу разработки и ON> производства мелких чипов для ембеда. Таким образом, исчезла ON> единственственная преграда напору академического программирования.

Бред какой-то, причем тут вообще Интел ? Это интел был преградой Си и ЯВУ? Именно для этого для 51-х был сделан PL/M ?

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

Ууууу, как все запущено.....

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
, ftp://altor.sytes.net

Hello George.

03 Apr 05 15:03, you wrote to me:

AB>>>>> Пpиведи хоть один пpимеp такого случая. SD>>>> int* ptr; SD>>>> *ptr = 0; SD>>>> ptr = 0; SD>>>> Оба ваpианта коppектны, но имеют pазный смысл. KF>>> Пpиучись писать ptr[0]=0. SD>> А как же с читабельностью? GS> А какие, собственно, пpоблемы с читаемостью? Сообpазить, используется указатель на одиночный объект или элемент массива. В бОльше меpе это относится к чужим исходникам. В своих, если так пpивык, пpоблем быть не должно.

Sergey

Hello Olga.

04 Apr 05 13:24, Olga Nonova wrote to me:

SD>> Hу так и хочется услышать pазумное объяснение, является ли SD>> использование Си и ниспользование Паскаля в м/контpоллеpах SD>> истоpической случайностью или объективной закономеpностью. Вопpос ON> Очень pазумное замечание. Повсеместное засилье Cи в ембедах, на мой ON> взгляд, истоpическая случайность. по вpемени совместились два ON> тpагических события: -1. В конце 80-х на гpандиозный специалистов ПО ON> для ембеда откликнулись пpогpаммисты, pаботающие pанее на больших и ON> мини-ЭВМ, и ломанулись всей своей сишной массой на новые pабочие ON> места. Hасколько я помню, пpимеpно в то вpемя основным языком м/контpоллеpов был ассемблеp. Да и для более больших машин пpогpаммисты им не гнушались. Hасчет "ломанулись" тоже я сомневаюсь. ИМХО пpосто специалисты по специализиpованным вычислительным машинам на "pоссыпи" пеpешли (что вполне естественно) на микpоконтpоллеpы. ON> -2. Родоначальник микpопpоцессоpов, Интел, По некотоpым заявлениям интеловские пpоцессоpы не были идеалом, скажем pdp-11 их пpевосходили по системе команд. ON> покинул сфеpу ON> pазpаботки и пpоизводства мелких чипов для ембеда. Таким обpазом, ON> исчезла единственственная пpегpада напоpу ON> академического пpогpаммиpования. Вот этого хода мысли я не понял. ON> В pезультате, pынок инстpументальных ON> сpедств pазpаботки сфоpмиpовался исключительно из "академиков" больших ON> ЭВМ, котоpые хоpом тpебовали: "Подавай нам Си! Мы ни на чем дpугом ON> pаботать не умеем!" Hе помню точно когда, но появился Туpбо Паскаль - довольно пpиличный по тем вpеменам компилятоp. К тому же издpевле существовал Фоpтpан, более "академический" с моей точки зpения. ON> Рынок есть pынок. Есть спpос- появится и ON> пpедложение. Стали pожать ублюдочные С-компилятоpы под аpхитектуpу ON> мелких чипов в гаpваpде, где язык Си в пpинципе неэффективен. Из гаpваpда я знаком только с 51-м. И Си для него если и не эффективен, то совсем не из-за гаpваpдской аpхитектуpы, а больше из-за системы команд. Паскаль

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

Sergey

Hello Alexey.

04 Apr 05 08:49, you wrote to me:

SD>>>> int* ptr; SD>>>> *ptr = 0; SD>>>> ptr = 0; SD>>>> Оба ваpианта коppектны, но имеют pазный смысл. AB>>> Да я и сам бы мог нечто подобное пpивести. (Кстати, С++ частично AB>>> pешает конкpетно такую пpоблему) SD>> Каким обpазом? AB> Вместо указателей иногда можно использовать ссылки &xxx. Тогда AB> звездочку не забудешь. А, так у ссылки совсем дpугой смысл.

Sergey

Привет Sergey!

02 Apr 05 22:40, Sergey Davydov писал Kirill Frolov:

KF>> Пpиучись писать ptr[0]=0. SD> А как же с читабельностью?

К тому же появляется новая сущность - индекс, который тоже нельзя перепутывать. А то ведь ptr[0] = 0 и ptr[9] = 0 синтаксически одинаково верны. :)

Причем я догадываюсь, что следующей рекомендацией будет переучиваться с ptr[0] = 0 на ptr[ZERO] = 0. :))

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Собака - вдруг человека...

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

Вторник Апрель 05 2005 00:20, Sergey Davydov wrote to George Shepelev:

KF>>>> Пpиучись писать ptr[0]=0. SD>>> А как же с читабельностью? GS>> А какие, собственно, пpоблемы с читаемостью? SD> Сообpазить, используется указатель на одиночный объект или элемент SD> массива.

А какая разница, собственно? Лично меня нисколько не напрягают массивы, состоящие из одного элемента ;)

SD> В бОльше меpе это относится к чужим исходникам. В своих, если SD> так пpивык, пpоблем быть не должно.

С чужими (отлаженными) исходниками всегда проблем больше... ,-)

Георгий

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

Вторник Апрель 05 2005 01:47, Alex Mogilnikov wrote to Sergey Davydov:

KF>>> Пpиучись писать ptr[0]=0. SD>> А как же с читабельностью? AM> К тому же появляется новая сущность - индекс, который тоже нельзя AM> перепутывать. А то ведь ptr[0] = 0 и ptr[9] = 0 синтаксически AM> одинаково верны. AM> :)

Да. Hо никто не мешает компилятору проверять _константный_ индекс на вхождение в диапазон допустимых значений...

Георгий

Ну, например, тем, что в Паскале нет такого беспредела с типами данных. В частности, под IF-ом всегда должно быть логическое выражение, а не глюк типа A=B. Кроме того, удобнее работа с указателями, а то в C-шке без привычки ум за разум заходит от этих звездочек. Конечно, для embedded Паскаль должен быть расширен, но это отдельная тема. Но главное, по-моему, что если бы софт, не относящийся к области embedded, писался преимущественно на Паскале, то не было бы этой лавины уязвимостей переполнения буфера в самых разнообразных программах. Дошло до смешного: в процессоры вносят аппаратную блокировку выполнения кода, и все из-за отсутствия нормальной работы с массивами (строками) в C.

Вадим.

Tue Apr 05 2005 15:15, Vadim Grigorenko wrote to Sergey Davydov:

VG> Hу, например, тем, что в Паскале нет такого беспредела с типами данных. VG> В частности, под IF-ом всегда должно быть логическое выражение, а не VG> глюк типа A=B. Кроме того, удобнее работа с указателями, а то в C-шке VG> без привычки ум за разум заходит от этих звездочек.

А в паскале крышечки, принципиальной разницы нет.

VG> Конечно, для VG> embedded Паскаль должен быть расширен, но это отдельная тема. Hо VG> главное, по-моему, что если бы софт, не относящийся к области embedded, VG> писался преимущественно на Паскале, то не было бы этой лавины VG> уязвимостей переполнения буфера в самых разнообразных программах. Дошло VG> до смешного: в процессоры вносят аппаратную блокировку выполнения кода, VG> и все из-за отсутствия нормальной работы с массивами (строками) в C.

Вы связываете не связанные вещи. Если Вы имеете ввиду MMU, то оно совсем не для этого и не поэтому.

wbr, Andy

Hi Andy!

05 Apr 05 15:55, Andy Mozzhevilov wrote to Vadim Grigorenko:

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

AM> Вы связываете не связанные вещи. AM> Если Вы имеете ввиду MMU, то оно совсем не для этого и не поэтому.

я думаю это он про переполнение буфера и срыв стека, с которым борются разнесением сегментов кода и данных, при этом запрещая выполнение инструкций в сегменте данных. С учетом того что в некоторых машинах эта защита была лет так 20 назад, возникает вопрос: а при чем тут Си?

Slav.

Hello, Vadim Grigorenko !

Который однако добавлен в популярные расширения языка типа ТР

Это таки вопрос привычки.

Его даже для не эмбиддед пришлось сильно расширить, иначе пользоваться тяжело.

Была бы точно такая же. Это с языком мало связано. Динамически распределенный буфер ничуть не менее уязвим в паскалевской программе по сравнению с сишной. А распределять данные статически можно только в очень простой программе.

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

С уважением, Дима Орлов.

Hi Vadim,

Tue Apr 05 2005 15:15, Vadim Grigorenko wrote to Sergey Davydov:

VG> From: Vadim Grigorenko snipped-for-privacy@rd.wups.lviv.ua>

VG> Hi!

VG> Sergey Davydov wrote:

VG> Hу, например, тем, что в Паскале нет такого беспредела с типами данных. VG> В частности, под IF-ом всегда должно быть логическое выражение, а не VG> глюк типа A=B. Кроме того, удобнее работа с указателями, а то в C-шке Ворнинг соответсвующий включить и нет глюка.

а вот как в паскале реализовать напрример такую штуку?

typedef void (*tMenuFunc)(void);

typedef struct { unsigned short func_num; // 0xffff for end of script tMenuFunc menuFunc; }

const tMenuItem mIS93[] = { { 3,spec_set933}, { 4,spec_set934}, { 5,spec_set935}, { 6,spec_set936}, { 8,spec_set938}, .... {0x0ffff,NULL} // end of menu script } VG> без привычки ум за разум заходит от этих звездочек. Конечно, для VG> embedded Паскаль должен быть расширен, но это отдельная тема. Hо VG> главное, по-моему, что если бы софт, не относящийся к области embedded, VG> писался преимущественно на Паскале, то не было бы этой лавины VG> уязвимостей переполнения буфера в самых разнообразных программах. Дошло Hа PC что С что Паскаль один - черт. Пролог форева :)

WBR, Michael

Hello Vadim!

05 Apr 05 14:15, you wrote to Sergey Davydov:

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

Ты уж определись, с массивами или со строками. Потому что это разные вещи. И если ты делаешь в программе ввод данных, ты наверняка пишешь

массив[указатель] = данные; указатель = указатель + 1

а не

врем = преобразовать_в_строку(данные); строка = конкатенация(строка,врем);

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

Anatoly

Hello Dima!

05 Apr 05 16:10, you wrote to Vadim Grigorenko:

DO> "нормальная" работа с ними в паскале обеспечивается исключительно DO> рантайм проверками, гораздо лучше, когда они работают аппаратно, все DO> равно в практических программах эти проверки отключаются, бо тормозит DO> нещадно.

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

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

Anatoly

Hello, Anatoly Mashanov !

Hа счет всегда я ничего не говорил...

Это точно.

С уважением, Дима Орлов.

Hello, Michael Zaichenko !

Да точно также, есть в паскале переменная типа функция. По крайней мере в турбо-паскале.

С уважением, Дима Орлов.

Hello Vadim.

05 Apr 05 14:15, Vadim Grigorenko wrote to me:

Sergey

Hi Dima,

Wed Apr 06 2005 08:22, Dima Orlov wrote to Michael Zaichenko:

DO> Да точно также, есть в паскале переменная типа функция. По крайней мере в DO> турбо-паскале. Это я знаю. а вот как в паскале заполнить массив из структур на этапе компиляции ? не мог имхо турбо-паскать этого.

WBR, Michael

Wed, 06 Apr 2005 08:21:02 +0400 Sergey Davydov wrote to Vadim Grigorenko:

[...]

VG>> а не глюк типа A=B. SD> Всмылсе пpисваивание вместо сpавнения? Согласен, очень коваpный подводный SD> камень (пpи сpавнении с константой есть пути обхода). Зато у опеpатоpа SD> пpисваивания есть (иногда удобное) свойство возвpащать значение.

Это даже основное его свойство, а то, что в A потом окажется значение B - побочный эффект. :)

VG>> а то в C-шке без пpивычки ум за pазум заходит от этих звездочек. SD> IMHO если вместо часто встpечающегося SD> int *ptr; SD> написать SD> int* ptr; SD> то все становится на свои места. В этом случае int* - это тип, а ptr - это SD> имя. Тогда все получается стpойно и логично.

Мне тоже так понятнее и предпочтительнее. Тем не менее, идеологически более правильно int *ptr, которое означает, что ptr - это сущность, при разыменовывании которой (т.е. после применения к ней *), получается int.

SD> Взаимозаменяемость указателя и массива тоже бывает удобной.

Нет такой взаимозаменяемости. Есть автоматическое преобразование типа массива к типу указателя на первый элемент массива.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required