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

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

Reply to
Andrei Minaev
Loading thread data ...

Привет 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

Reply to
Alexander Torres

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

Reply to
Sergey Davydov

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

Reply to
Sergey Davydov

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

Reply to
Sergey Davydov

Привет 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] Алексей М. ... Собака - вдруг человека...

Reply to
Alex Mogilnikov

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облем быть не должно.

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

Георгий

Reply to
George Shepelev

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о никто не мешает компилятору проверять _константный_ индекс на вхождение в диапазон допустимых значений...

Георгий

Reply to
George Shepelev

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

Вадим.

Reply to
Vadim Grigorenko

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

Reply to
Andy Mozzhevilov

Hi Andy!

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

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

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

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

Slav.

Reply to
Slav Matveev

Hello, Vadim Grigorenko !

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

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

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

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

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

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

Reply to
Dima Orlov

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

Reply to
Michael Zaichenko

Hello Vadim!

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

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

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

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

а не

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

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

Anatoly

Reply to
Anatoly Mashanov

Hello Dima!

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

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

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

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

Anatoly

Reply to
Anatoly Mashanov

Hello, Anatoly Mashanov !

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

Это точно.

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

Reply to
Dima Orlov

Hello, Michael Zaichenko !

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

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

Reply to
Dima Orlov

Hello Vadim.

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

Sergey

Reply to
Sergey Davydov

Hi Dima,

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

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

WBR, Michael

Reply to
Michael Zaichenko

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> Взаимозаменяемость указателя и массива тоже бывает удобной.

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

Reply to
Harry Zhurov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.