Языческие разборки.

 
1 2 3 4 5 6 7 14

TEvg

аксакал

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

TEvg

аксакал

админ. бан
>выше было показано, что значение переменной y после исполнения выражения y = x*(a/b +c), где y - плавающее, а a и b целые - не всем неочевиден при чтении текста.
Да ну? Чего тут не ясного? Кстати у может быть только плавающим.

>Не мы, но программеры в NVIDIA пишут их на С, есть знакомые - рассказывали.
То то я думаю - откуда такие тормоза?

>А вот драйверы ко всяким хитрым принтерам и даже VESA писали сами, нечего там с асмом изгаляться, С вполне катит, только время разработки в разы уменьшается а сопровождаемость увеличивается.
У У У У У! :eek: НЕ ВЕРЮ ЧТО ПРОЩЕ!
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Valeri2>Форт умер лет десять назад, земля ему пухом.

Это особенно удивительно, учитывая, что 6 лет назад в НИИТП целый проект спутниковой связи работал с Forth'ом :)

И сейчас - где-то спутники под ним летатют, где-то телескопы управляются. Даже загрузчик ОС на FreeBSD написан на Форте ;) (хотя это уже мне непонятно - нафиг).

Valeri2>Он идеально подходил для безадресных риск-процов, являясь для них по существу ассемблером.

Не только. Что-то ближе DEC'овской архитектуры к нему сложно представить :) И для 68к он просто родной. Я уже не говорю про специализированные процессоры.

Valeri2>Но стековые операции, видите ли, последовательны - они все завязаны на верхушку стека. И суперскалярность со стеком абсолютно не сочетается.

Не уверен. Кроме того, есть куча реализаций с регистровой верхушкой стека. Базовые операции эффективно вписываются.

Это во-первых. А во-вторых, сила Форта не в быстродействии. И вообще, даже истребители трёхмаховые уже почти не делают ;)


Valeri2>А язык, что ни говори, тяжелый - понять его можно, только хорошо представяя, что сейчас лежит на стеке.

Язык ОЧЕНЬ простой и ОЧЕНЬ предсказуемый.
Для тех, кто соблюдает культуру программирования на нём.
Грамотная программа на Форте проще и понятнее грамотной программы на том же C++.
Хотя, согласен. Безобразная программа на Форте смотрится просто ужасно.
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
>>А вот драйверы ко всяким хитрым принтерам и даже VESA писали сами, нечего там с асмом изгаляться, С вполне катит, только время разработки в разы уменьшается а сопровождаемость увеличивается.
TEvg>У У У У У! :eek: НЕ ВЕРЮ ЧТО ПРОЩЕ!

Я лет 5 назад много возился с низкоуровневым программированием видеоадаптера. Начал, естественно, с асма. Но после многих экспериментов пришёл к выводу, что на Watcom C++ писать много проще и быстрее при той же эффективности конечного кода. Надо бы поискать исходники (архив 140Мб и 13тыс. файлов на CD - пошёл распаковывать ;) )...
 
Ну не знаю, не знаю...
История из моей жизни. Цифры приблизительные.
Задача - цифровой Гауссовский фильтр для 12-бит данных.
Платформа DOS - 16,32.
DOS16 - ZTC++3.04(Оптимизация под 286) Скорость 1.0
DOS16 - BC++3.1 (Оптимизация под 386) Скорость 2.0
DOS32 - ZTC++3.1 (Оптимизация под 386) Скорость 3.0
DOS32 - ТASM.(Оптимизация под 386, ручками, все переменные- в регистрах, в т.ч. FS,GS :) - Скорость 6.0

Критические части программы всё равно надо на ассемблере писать...
 
FR Наталья #20.09.2001 13:37
+
-
edit
 

Наталья

новичок
Наталья>>в выражении типа (a/b+x)*y, где a и b -целые, это самое a/b в любом случае тоже будет целым.
Наталья>>Это действительно так?

Ch>...Всё зависит от того, переменной какого типа присваивается значение указанного Вами выражения...

Все Вами сказанное верно, но для Паскаля. Но меня интересует что получится в С++.
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Vale>DOS32 - ZTC++3.1 (Оптимизация под 386) Скорость 3.0
Vale>DOS32 - ТASM.(Оптимизация под 386, ручками, все переменные- в регистрах, в т.ч. FS,GS :) - Скорость 6.0

Ну, я ж говорил, что на 386-м ручками ещё много эффективнее выходит. А вот начиная с Пентиумов оптимизацию просчитывать всё сложнее. Конечно, если писать на Си циклы типа for(i=0;i<10;i++), то и в этом случае цепочка dec ecx/jnz label будет быстрее... Но и на C++ можно оптимизировать программу :) Вот тут-то и начинает сказываться оптимизатор.

Vale>Критические части программы всё равно надо на ассемблере писать...

Ну с этим спорить никто не будет :)
Вот только, по-моему, кроме Watcom'а никто не занимался сквозной оптимизацией через ASM-вставки. По крайней мере в MSVC при asm вставке оптимизатор сбивается и начинает всё "с нуля"... Borland'овские компилялки - тем паче... :(
 
RU Владимир Малюх #20.09.2001 13:53
+
-
edit
 
>>выше было показано, что значение переменной y после исполнения выражения y = x*(a/b +c), где y - плавающее, а a и b целые - не всем неочевиден при чтении текста.
TEvg>Да ну? Чего тут не ясного? Кстати у может быть только плавающим.

Я вам не про тип а про значение и не только в том самом паскале.

>>Не мы, но программеры в NVIDIA пишут их на С, есть знакомые - рассказывали.
TEvg>То то я думаю - откуда такие тормоза?

Вы знаете карточки быстрее при такой же цене?

>>А вот драйверы ко всяким хитрым принтерам и даже VESA писали сами, нечего там с асмом изгаляться, С вполне катит, только время разработки в разы уменьшается а сопровождаемость увеличивается.
TEvg>У У У У У! :eek: НЕ ВЕРЮ ЧТО ПРОЩЕ!

Не пробовали - не кричите.
Maschinen muessen "idiotensicher" werden  
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Наталья>>>в выражении типа (a/b+x)*y, где a и b -целые, это самое a/b в любом случае тоже будет целым.
Наталья>>>Это действительно так?

Наталья>Все Вами сказанное верно, но для Паскаля. Но меня интересует что получится в С++.

Дык, уже ответили ж.
a поделится на b целочисленно, дальше - в зависимости от того, какие у нас x и y.
 
RU Владимир Малюх #20.09.2001 13:55
+
-
edit
 
Наталья>>>в выражении типа (a/b+x)*y, где a и b -целые, это самое a/b в любом случае тоже будет целым.
Наталья>>>Это действительно так?

Ch>>...Всё зависит от того, переменной какого типа присваивается значение указанного Вами выражения...

Наталья>Все Вами сказанное верно, но для Паскаля. Но меня интересует что получится в С++.

Получится именно целое значение, что есть правильно и при сноровке часто используется.
Maschinen muessen "idiotensicher" werden  
2 MiG: - за дурачка держишь ;)
long(pObj) != 0 ...
И, ПМСМ, совсем не факт, что на любой 32 бит платформе long(NULL)==0. :)

Вопрос про то, чему равно 1==1==1 интереснее... :biggrin:
 
FR Наталья #20.09.2001 14:10
+
-
edit
 

Наталья

новичок
=KRoN=>Кстати, вот и доверяй после этого Паскалю - он выполняет неявные для программиста вещи!
=KRoN=>
=KRoN=>void main(void)
=KRoN=>{
=KRoN=> int a=2;
=KRoN=> int b=3;
=KRoN=> float c=1.0;
=KRoN=> printf("%f",a/b+c);
=KRoN=>}

=KRoN=>В итоге на экране 1.000000;
=KRoN=>


В математике 2/3=0,666667. И, соответственно, когда я пишу c+a/b я подразумеваю 1,666667 в результате.
А если бы мне хотелось получить единицу, то я написала бы с + a div b .

И Вы еще говорите Паскаль(!) выполняет неявные вещи.
 
to KRoN

Ch>>Всё зависит от того, переменной какого типа присваивается значение указанного Вами выражения.

void main(void){
int a=2;
int b=3;
float c=1.0;
printf("%f",a/(b/c));
}

В итоге на экране 0.000000 на BC 3.1!!?
Компилятор, говорите..?
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
Наталья>В математике 2/3=0,666667.

В какой математике?
Если а и b целые, то 2/3 будет 0.
Если рациональные или комплексные - то, 0,(6)
Если гиперкомплексные - там чёрт ногу сломит.
Но ни в какой математике 2/3 не будет равно 0,666667 ;)

Наталья>И, соответственно, когда я пишу c+a/b я подразумеваю 1,666667 в результате.

Подразумевать можно что угодно.
А компилятор должен делать строго по правилам.
Если и он начнёт что-то "подразумевать"... Труба...

Наталья>А если бы мне хотелось получить единицу, то я написала бы с + a div b .

А если я хочу получить единицу в Си, я также напишу
c + float(a)/float(b)



Наталья&gt;И Вы еще говорите Паскаль(!) выполняет *неявные
вещи.

Угу, неявные.
Как это целые a и b вдруг делятся не нацело??
 
FR Наталья #20.09.2001 15:15
+
-
edit
 

Наталья

новичок
=KRoN=>Угу, неявные.
=KRoN=>Как это целые a и b вдруг делятся не нацело??

Так же как целое яблоко делится на 2 половинки. Очень явственно себе это представляю. :)
 
RU asoneofus #20.09.2001 15:40
+
-
edit
 

asoneofus

старожил


Ребяты, эка вас развезло :) ...
Насчёт деления: если хотите, то пишите (float)a/(float)b - вы же не Мастдай: знаете, наверное, что хотите получить... :)
Ясность написания? Это просто: почитайте японский текст... А теперь спорьте с японцем, по поводу большей ясности русского языка, по сравнению с японским :biggrin: только необходимо для чистоты эксперемента чтобы ни вы, ни японец не знали языка собеседника... (общайтесь на аглицком)... :)
Так что можете теперь рассуждать до позеленения о превосходстве Кобола с элементами ПЛ1 над языком Си (являющимся "английским" мира программирования, ИМХО)...
Кстати, согласно ГОСТ - все программисты, пишущие на Си - преступники, их надо в тюрьму сажать... Пишут, понимаешь, на неГОСТированном языке. Надо писать на бэйсике, Паскале :biggrin:

Для проверки посмотрел текст на паскале - ж... нифига не понимаю, если вижу текст на PHP, Java,... - то более или менее ясно, а тут... :) Хотя текст писал см пять лет назад. всего-то...

А самый оптиимальный для х86 на лето 2001 г. генерит Интел компИлер... :) ...
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
asoneofus>Кстати, согласно ГОСТ - все программисты, пишущие на Си - преступники, их надо в тюрьму сажать... Пишут, понимаешь, на неГОСТированном языке. Надо писать на бэйсике, Паскале

Кстати, господа эксперты, объясните, что стало с Ada. Вроде
язык перестал поддерживаться государством (США), а ведь этот
язык для них также ГОСТирован (ANSI-рован) и FAA требует применения сертифицированных компиляторов для написания программ в авиационной электронике. Хотя, с другой стороны, есть данные, что часть программ для F-22 пишется на C++ и Асме.
Как же так?
 
Наталья>>В математике 2/3=0,666667.
=KRoN=>В какой математике?
=KRoN=>*Но ни в какой математике 2/3 не будет равно* 0,666667 ;)

Programmisty nedobitye! :) Matematika budet takaya, kakoy ee sdelayut razrabotchiki shemy vychislitelya :) K tomu je, chisla s plavayushey tochkoy imeyut ogranichennuyu tochnost', tak chto rezul'tat vpolne mojet byt' 0.66...67. Blije k real'nosti nado byt', a vy vse pro "virtual void far" :)

Chto stalo s Ada - nichego ne stalo, jivet sebe gde v ney est' neobhodimost'. VHDL vrode na Ada pohoj, govoryat, no ya s Ada ne rabotal, poetomu sravnit' ne mogu.
 
US Реконструктор #20.09.2001 16:27
+
-
edit
 
Вале>2 МиГ: - за дурачка держишь ;)
Вале>лонг(пОбй) != 0 ...
Вале>И, ПМСМ, совсем не факт, что на любой 32 бит платформе лонг(НУЛЛ)==0. :)

Вале>Вопрос про то, чему равно 1==1==1 интереснее... :Д

Другие мниения?
 

MiG
Реконструктор

опытный

Гммм...
Тест!

Какая физическая разница между следуюшими переменными (32 бит платформа):
char *str = NULL;
IDispatch *pObj = new IDispatch;
long n = 0;

:)
 
RU asoneofus #20.09.2001 16:44
+
-
edit
 

asoneofus

старожил


Вале&gt;&gt;2 МиГ: - за дурачка держишь ;)
Вале&gt;&gt;лонг(пОбй) != 0 ...
Вале&gt;&gt;И, ПМСМ, совсем не факт, что на любой 32 бит платформе лонг(НУЛЛ)==0. :)
Вале&gt;&gt;Вопрос про то, чему равно 1==1==1 интереснее... :Д
MiG&gt;Другие мниения?
А в чём спо-то? Лонг - два инта :) , а какая платформа - стока и битв понасыпано... А чтоб неясностей не было, пользуйтесь расширенными типами :eek:
А (ноль) - это даже не от проца завист, а от ОСьки, к примеру
в XMS-OS (16р процы, риск) (Ноль) == 0x0A0D :biggrin:
Поэтому везьде и рекомендуют: пользуйтесь объявленными... а не фактическими значениями, для переносимости... :)

а условие 1==1==1 (двойные равно) даёт TRUE, т.е. 0 :)
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  

MiG
Реконструктор

опытный

Наталья>>>в выражении типа (а/б+кс)*ы, где а и б -целые, это самое а/б в любом случае тоже будет целым.
Наталья>>>Это действительно так?

Ч>>...Всё зависит от того, переменной какого типа присваивается значение указанного Вами выражения...

Наталья>Все Вами сказанное верно, но для Паскаля. Но меня интересует что получится в С++.

Результат а/б всегда будет тзелочисленным, если а и б Integer. Леваиа страна оператора = не имеет значение. Чтоб получить real ресультат, надо либо (флоат)а/б, либо а/(флоат)б, либо (флоат)а/(флоат)б
 
au>Chto stalo s Ada - nichego ne stalo, jivet sebe gde v ney est' neobhodimost'.

Хорошо, а ваше инение по поводу http://haskell.org/papers/NSWC/jfp.ps

Description of the results of an experiment in which several conventional programming languages, together with the functional language Haskell, were used to prototype a Naval Surface Warfare Center requirement for Geometric Region Servers. The resulting programs and development metrics were reviewed by a committee chosen by the US Navy. The results indicate that the Haskell prototype took significantly less time to develop and was considerably more concise and easier to understand than the corresponding prototypes written in several different imperative languages, including Ada and C++.

Там, кстати, много "доброго" про С написано.
:tongue: :tongue:
 
+
-
edit
 

=KRoN=
Balancer

администратор
★★★★☆
=KRoN=>>Как это целые a и b вдруг делятся не нацело??
Наталья>Так же как целое яблоко делится на 2 половинки. Очень явственно себе это представляю. :)

Целых яблок останется ноль ;)

Владимир>Кстати, господа эксперты, объясните, что стало с Ada. Вроде
Владимир>язык перестал поддерживаться государством (США), а ведь этот
Владимир>язык для них также ГОСТирован (ANSI-рован)

После "ANSI-рования" C++ новые военные разработки идут преимущественно на нём. И на Аду как-то... Не забили, но задвинули. Кстати, Forth тоже ANSI ;)


Наталья>>>В математике 2/3=0,666667.
au>Programmisty nedobitye! :) Matematika budet takaya, kakoy ee sdelayut razrabotchiki shemy vychislitelya :)

Математика только одна. И она ничего не знает про вычислители ;)
 
RU asoneofus #20.09.2001 17:11
+
-
edit
 

asoneofus

старожил


.. На заборе тоже много чего написано...
Все-таки надёжность, быстрота, компактность кода... Настолько отвязаны от языка... Дело в ОСьке и в компИлере.... :) Написаны они хорошо - всё "ок", иначе - ... :eek: Удивляться остаётся...
Сейчас, вон, даже после компилеров можно оптимизаторы запускать - а они вообще "нинакаком" языке работают :)
А амы, большие затейники по поводу выбрасывания разных ненужных отчётов в инет... :biggrin: Нужное они не очень-то кладут...
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
1 2 3 4 5 6 7 14

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru