Ada_Ru форум

Обсуждение языка Ада

Битовые операции. Страница 2

Оставить новое сообщение

Сообщения

Hello ,

 

Ада 95 имеет на мой взгляд ясную и наглядную модель работы с потоками (от Хоара), базирующуюся на

- задачных модулях и типах

- защищенных модулях

- семафорах (пакет Synchronous_Task_Control)

- неделимых переменных (прагма Atomic)

- механизме рандеву.

 

Мы в КПИ используем Аду в курсе "Параллельное программирование" и лучшего языка для обучения студентов особенностям программирования для параллельных систем я не вижу. При этом в Аде возможно использование дополнительно средств библиотеки Win32, что автоматически накрывает средства языков С и С++ и среды Delphy. (Естественно мы не забыли и Java и MPI).

Используется ли Ада при реальном программировании для параллельных систем (не учебных задач)? Или процессы в Аде эффективны только для программирования систем реального времени ?

 

Я столкнулся с тем, что в одной из рецензий на нашу статью об опыте Ада программирования для 8-и процессорной СМП системы анионимный западный рецензент категорически отверг сам факт использования Ады для таких приложений.

 

Да, Ада параллельное приложение считает несколько дольше, чем

например С, но это расплата за недежность.

 

Так как быть с Адой в параллельных системах ? Забыть? Променять на С ?

Кто поддержит Аду ?

Александр Корочкин

Кстати, я недавно очень был удивлё, нузна, вчт C++ ополете лн аМар

 

с Ачт оименн ова с вэто мудивил?

 

оВ.

rainbow-2000 wrote:

Да нет, std::cout << "Я печтатю ваш вывод" << std::endl; -- это как раз-таки (на мой взгляд) удачный пример перегрузки оператора.

 

Удачные примеры, это когда после перегрузки оператора не теряется его

смысл. Например перегрузка арифметических операций для комплексных чисел

или векторов. Если же смысл после перегрузки меняется координально, это

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

вместо std:cout и "Я печтатю ваш вывод" использовали бы переменные, то

без заглядывания вверх, где эти переменные определяются, нельзя бы было

понять, что делает выражение a<<b. Если задуматься, то предположить было бы можно (редко кому нужен результат std::cout<< и врядли будут использовать integer<<1 без последующего использования результата), но читабельность это резко ухудшает.

 

К тому же не определено, сдвиг будет логический или арифметический

(что будет с битом знака), на усмотрение реализации.

А что с ним может быть, если двигается, например, число типа int ?

 

Операция побитового сдвига вправо заполняет освобождающиеся биты нулем

(логический сдвиг) или знаковым битом (арифметический сдвиг). В случае,

если int отрицательный, то результат будет различным.

-- Olleg Samoylov

On Fri, Mar 31, 2006 at 03:31:51PM +0300, Korochkin Alexandr wrote:

Hello ,

 

Ада 95 имеет на мой взгляд ясную и наглядную модель работы с потоками

 

О ДА!

 

 

Используется ли Ада при реальном программировании для параллельных систем (не учебных задач)? Или процессы в Аде эффективны только для

 

Мы вполне успешно используем Аду и ее параллельные возможности в

промышленной системе. Как минимум в следующих программах:

- мидл серверв в многоуровневой системе

- расширение БД для одновременного выполнения SQL операторов

в нескольких схемах

- стресс тест системы

 

Медленность реализации Адских механизмов многозадачности нигде не замечали.

 

Немного подробней можно прочесть здесь:

http://www.ada-ru.org/prj_ora.html

 

 

 

Я столкнулся с тем, что в одной из рецензий на нашу статью об опыте Ада программирования для 8-и процессорной СМП системы анионимный западный рецензент категорически отверг сам факт использования Ады для таких приложений.

 

Так, просто, без аргументов?

 

 

Да, Ада параллельное приложение считает несколько дольше, чем

например С, но это расплата за недежность.

 

 

Мне как-то странно это слышать, ведь и реализация и на Си и Аде

опирается на одни средства операционной системы.

Так как быть с Адой в параллельных системах ? Забыть? Променять на С ?

 

Забыть Си :)

 

--

Maxim Reznik

Olleg wrote:

rainbow-2000 wrote:

 

Да нет, std::cout << "Я печтатю ваш вывод" << std::endl; -- это как раз-таки (на мой взгляд) удачный пример перегрузки оператора.

 

 

Удачные примеры, это когда после перегрузки оператора не теряется его

смысл. Например перегрузка арифметических операций для комплексных чисел

или векторов. Если же смысл после перегрузки меняется координально, это

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

вместо std:cout и "Я печтатю ваш вывод" использовали бы переменные, то

без заглядывания вверх, где эти переменные определяются, нельзя бы было

понять, что делает выражение a<<b. Если задуматься, то предположить было бы можно (редко кому нужен результат std::cout<< и врядли будут использовать integer<<1 без последующего использования результата), но читабельность это резко ухудшает.

 

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

 

К тому же не определено, сдвиг будет логический или арифметический

(что будет с битом знака), на усмотрение реализации.

 

А что с ним может быть, если двигается, например, число типа int ?

 

 

Операция побитового сдвига вправо заполняет освобождающиеся биты нулем

(логический сдвиг) или знаковым битом (арифметический сдвиг). В случае,

если int отрицательный, то результат будет различным.

 

В смысле различным? Если сдвигать число +2 право, дальше нуля не уйдёшь. Если сдвигать -2 вправо, дальше -1 не уйдёшь. По крайней мере, g++ делает именно так. Знак полностью сохраняется. Никаких проблем со знаком я не вижу.

 

 

Алексей

Vasiliy Fofanov wrote:

Кстати, C++ с этой задачей справляется очень хорошо и "интерфейсы" ему

не нужны. :)

 

 

Загадочная фраза. Не разъясните ли подробнее с чем именно хорошо

справляется С++ и что именно ему для этого не нужно.

 

Ну имеется ввиду, что сервер хорошо справляется с большими нагрузками (гигабитные скорости, если что). Работает очень быстро и прекрасно масштабируется. Для достижения таких результатов не нужны какие-то дополнительные пакеты (интерфейсы к чему-то ещё). Уже вс ёест. ьДостаточн ообычног g++. оН езна, юмн Ada еочен ьнравитс, ян ополучаетс, ячт C++ ов-сёта кибол еепрактич (ен покрайн ейме р евсре UNIX/Linux).

 

деЕс л иязадум аюнаписа тьподобн уюве щь Ada (н аамыс льтак аяес), ть, топохо жем не неизбежа Interfaces.C . ты Нот утвозника етзакономерн ыйвопр: о савооб, "щесто ит лиовчин (кап одназвани Ada) емвыдел", киког даре чьи д ётота кихпроек ?

 

 

тахАлек

Vasiliy Fofanov wrote:

Кстати, я недавно очень был удивлё, нузна, вчт C++ ополете лн аМар

 

 

с Ачт оименн ова с вэто мудивил?

 

оВ.

 

ФН Ada удолжн абыл алетет (ьп-оиде) :)

Korochkin Alexandr wrote:

 

 

Так как быть с Адой в параллельных системах ? Забыть? Променять на С ?

 

Кто поддержит Аду ?

Александр Корочкин

 

 

Ну зачем же забывать? Я думаю, что нужна своя открытая, нормальная OC на Ada. Тогда будет легче.

 

Алексей

Для достижения таких результатов не нужны какие-то

дополнительные пакеты (интерфейсы к чему-то ещё). Уже вс ёест.

ьДостаточн ообычног g++.

 

оПростит еАлексе, йн омн екажетс я уВа с вголов епутаниц. аЛюбо йязы кпрограммировани, явключа яестественн о C++, исостои ти здву хкомпоненто: всобственн оязык а истандартно йбиблиотек. иЭт икомпонент ын емогу трассматриватьс яп оотдельност, и аразмещени ето йил иино йсущност и вперво мил ивторо мкомпонент ен еменяе табсолютн оничег о сточк изрени

яфункциональност иил иесл иугодн "одостаточност" иязык. а Вэто мсмысл евведени ебитовы хопераци йнепосредственн о всинтакси сязык асовершенн ониче мн еотличаетс яо твведени яи х встандартну юбиблиотек. уВа муж еобъяснил ипочем увведени еи хнепосредственн о вязы кявляетс я сточк изрени яидеологи иязык аАд абыл об ыфундаментальн оневерны. мН оэт ововс ен еозначае тчт "ообычна яАд" аболе еущербн аче "мобычны g++", йпотом учт о вобои хслучая хподразумеваетс яязы кПЛЮ Сстандартна ябиблиотек.

 

аЕсл и язадума юнаписат ьподобну ювещ ьн Ada (а амысл ьтака яест), ьт, опохож емн ен еизбежат Interfaces.C . ыН оту твозникае тзакономерны йвопро: с авообщ, "естои тл иовчинк (апо дназвание Ada) мвыделк", икогд ареч ьид ё тотак ихпроект ?

 

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

 

ма.

Ну Ada должна была лететь (по-идее) :)

 

Ада совершенно ничего никому не должна, это просто-напросто язык

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

 

ВФ

On 3/31/06, Vasiliy Fofanov <fofanov@act-europe.fr> wrote:

В космос может полететь что угодно,

хоть вижуал бэйсик.

 

А вот это круто :)

Там уже все похоже были, тока это еще осталось запустить.

А вот это круто :)

Там уже все похоже были, тока это еще осталось запустить.

 

Вот будет коммерческая космонавтика, туда придет Майкрософт - и запустим :)

Sergey I. Rybin пишет:

А быстрее... Может быть, но вот вопрос - а кого и когда это волнует

в реальных программах? (Если речь, конечно, не идет о встроенном

ПО для мобильного телефона, но там Жаба обычно так тормозит, что

просто ужос!)

Opera Mini. Не заметил, что она очень уж тормозит. Наоборот — летает.

Или у Вас какие-то неправильные пчёлы, которые делают какой-то неправильный мёд. :))

 

Кстати говоря.

На Java все примитивные типы независимы от аппаратной архитектуры. На всём множестве перечислимых типов (множество примитивных типов) определены битовые операции:

• сдвиг битов влево с заполнением справа нулями: val << 3;

• сдвиг битов вправо с заполнением позиций слева значением старшего (знакового) бита: val >> 2;

• сдвиг битов вправо с заполнением позиций слева нулями (нет аналога в C/C++): val >>> 4.

• побитовое И (AND): 0xF00F & 0x0FF0 равняется 0x0000

• побитовое ИЛИ (OR): 0xF00F | 0x0FF0 равняется 0xFFFF

• побитовое исключающее ИЛИ (XOR): 0xAAAA ^ 0xFFFF равняется 0x5555

Заметьте, все битовые операции в Java выполняются одинаково правильно и на SPARC, и на PowerPC, и на MIPS, и на x86-64.

Vasiliy Fofanov wrote:

Для достижения таких результатов не нужны какие-то

дополнительные пакеты (интерфейсы к чему-то ещё). Уже вс ёест. ьДостаточн ообычног g++.

 

 

оПростит еАлексе, йн омн екажетс я уВа с вголов епутаниц. аЛюбо йязы

кпрограммировани, явключа яестественн о C++, исостои ти здву хкомпоненто:

всобственн оязык а истандартно йбиблиотек. иЭт икомпонент ын емогу

трассматриватьс яп оотдельност, и аразмещени ето йил иино йсущност и вперво

мил ивторо мкомпонент ен еменяе табсолютн оничег о сточк изрени

яфункциональност иил иесл иугодн "одостаточност" иязык. а Вэто мсмысл

евведени ебитовы хопераци йнепосредственн о всинтакси сязык асовершенн

ониче мн еотличаетс яо твведени яи х встандартну юбиблиотек. уВа муж

еобъяснил ипочем увведени еи хнепосредственн о вязы кявляетс я сточк изрени

яидеологи иязык аАд абыл об ыфундаментальн оневерны. мН оэт ововс ен

еозначае тчт "ообычна яАд" аболе еущербн аче "мобычны g++", йпотом учт о

вобои хслучая хподразумеваетс яязы кПЛЮ Сстандартна ябиблиотек.

 

 

аВасили,

 

йЭт ов сёпонят н оибитов ыеоперац иимож норазмеща тьг деугод, нопрос тореальн аяжиз ньпоказыва (етэ т оквопро с уот, омкак иебыва ютпрограм м ыико гоэ томож етволнова), тьч топрограммирован ие C/C++ н авсре UNIX/Linux деПРАКТИЧН, ЕЕч емпрограммирован ие неязы Ada.

кеПроисход итэ то непото, муг денаходят сябитов ыеоперац, и иапото, муч тояд рооперационн ойсисте мынаписа но C н а++ иСпрекрас ноинтегрирует с явэ тусре. дуП рииспользова ниязы Ada, казде, c сьбольш ойдол ейвероятнос, тибуд етсмешивать Ada с C. яиВопр "о сазач емвооб щеэ тонуж, ноког дамож но всёпрекра снонапис ат C++ ?" ьна как р азиприво д иткт, ому что "нашменед жерпрое" ктада внопри нялреше: ниепи ше C++. мна Этопро стом еняинтерес уетиспользова Ada, н иеареше ниеда вноприн (я тоисоверше ннообоснов).

 

 

аноАлек

Это вс ёпонятн о ибитовы еопераци иможн оразмещат ьгд еугодн, опрост ореальна яжизн ьпоказывае (тэт о квопрос у ото, мкаки ебываю тпрограмм ы иког оэт оможе тволноват), ьчт опрограммировани ен C/C++ а всред UNIX/Linux еПРАКТИЧНЕ, Ече мпрограммировани ен еязык Ada.

 

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

 

йПроисходи тэт он епотом, угд енаходятс ябитовы еопераци

 

иЗначи тв ыпризнает ечт обитовы еопераци ив ыприплел ин и ксел ун и кгород? уЭт оуж ехорош :)

 

, о апотом, учт

оядр ооперационно йсистем ынаписан он C а и++ Спрекрасн оинтегрируетс я вэт усред.

 

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

 

сПр ииспользован иязык Ada, аздес, c ьбольшо йдоле

йвероятност, ибуде тсмешиватьс Ada я C. иВопро "с азаче мвообщ еэт онужн, окогд аможн ов сёпрекрас нонаписа ть C++ ?"

 

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

 

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

 

киПото муч, т-овтреть, ихбе дак акр азв о тсэт имсам "ымпрекрас". ноИсследован ияпоказыва ютч тоязы к/и++ ССпроигрыва ютязы куА да поцело муря дупринципиаль новажн ыхиндустриальн ыхкритери, евтак ихк актрудоемкос тьвыражен ияалгорит ма наданн омязы, кесредн ееколичест водефект ов наедини цуко, дасредн ееколичест водефект, овобнаруживаем ыхпоз жеэта пакомпиляц, иисредн ееколичест водефект, овнепосредствен но ненаблюдаем ыхп риисполнен иипрограм, мытрудоемкос тьдолгосрочно госопровожден ияпрограм, м ы.и. тд Понекотор ым изэт ихкритери евразни - ца напоряд. ки.Смнаприм ерна ш усСерге емИгоревич емРыбин ымстат ью наэ туте, муимеющую с явархив ахА_да.

рук акр а зипривод и

ткто, муч тон "ашменедж ерпроек" тадав ноприн ялрешен: иепиш ем C++. наЭ топрос томе няинтересу етиспользован Ada, и еарешен иедав ноприня (т оисовершен нообоснова).

 

но Нув отпокаме, стска жучест, ноте "маобоснованнос" тива мисовершен но нераскры :)

 

та

Ну, спасибо за "лекцию" :) Я, скажем так, не любитель споров типа "а кто сильнее слон или кит ?", поскольку в данном случае вс ёид ётимен н окэто, му ноконструктивн (аяб езнаклей кивсяк ихярлык овти "пас амдур" :) ) акдискусс иямож етбы тьполезн.

 

 

Vasiliy Fofanov wrote:

ойСвя зь, ЯПиспользованно гоп

ринаписан ии, О Сс, ЯПиспользованн ымд лянаписан ияработающе го наданн ой

ОСпрограммно гопродук, таявляет сяабсолют нонадуманн.

 

ой Нуч тознач итнадуманн? ойВ отпрост аяпотребнос: тьнуж норабота т Unix sockets. ьсП рииспользован C/C++ -- ииникак ихпробл. емНуж норабота т ьсядр -- омто же всёделае тсянапря, мую безлиш нейголов нойб о л.и. и т.д. итп Всеинструме нты дляраб (о т.ы. bindings в php, xslt, тчкинтерфе й сыкба замдан н ы.х. и т.д.) итп, уже какправ, иловключ е нывдистрибу тив ил иж еихле гкомо жноскач а тьиустанов. итьОч еньудо. бн оВсё, естьса д исьи. пишиК роме, тогодействите, льн C/C++ окодрабо таето ченьбы (строкон, ечно еслипрограм мистсд ел алвсёгра), мотнозач астуюопе "режаяд ругие языкипрограммиро" (ваниянап, ример). П итонВ-ка кихтоза дачахско ро сть нетак. ва ж наНовд, руг ихкакнап р имервс л учаессер, веромработ ающ имподбе шенойнагр -- узк ойэт оо динизважн ейшихпарам.

 

 

 

етровПроис ход ит этонеп, ото мугденахо дятсяби товыеопе

 

 

рацииЗ на читвыприз нае течтоби товыеопе ра циивыпри пл е лини кс е луникг?

оро дуЭ тоужех :)

 

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

 

 

 

, г одноап, ото мучт оядроопераци оннойси стемынап ис C а н++ онаиСпрек расноинтегрир у етс явэту.

 

 

с ред уВ чемжепроявл яетсяособ еннаяпрекр аснаяинтег, рацияко тораяотсутс

тву етприиспользо ваниимногочисл енныхд ругихя зы ковнако торыхус пешно пиш

утпод?

 

 

 

Юни ксПрииспольз овани Ada, языка, c здесьбо льшой долейвероят, ности будетсмешив Ada а C. тьсяиВ "о проса зачемв ооб

щеэто, нужно когда мо жновсёпре краснона пи C++ ?"

 

 

са-тьнаВо, первыхсове рш еннонеобяза. тельноС пособыобесп ечениясовмест им

остип о типамифо рматам вызоваподпр огр аммвам язы комАдагаранти,

рованыинтерф ейсныепер е мычкивбольш инств есвоемс озд аныилисозд

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

уопытуо б щениясзаказ чик амичтосуще ствуютп ро ектын аяз ы кеАдавми ллион,

ыс трокнеи меющиен икакойп римеси других языко вкромеассемб лерныхв.

ставокРабо тающие им еннон-аюникспо добныхси с темахиа ктивноисполь

зующиесис темные.

 

вы-зовыВо втор ы хдажевприло же ния хна Адагде сов с ембезСоб ой тисьнеу,

далось модулинапи са н ныенаСсост авляют 1-2% обычно обще. гокодаСогла,

сите сье сливаш вопроспереформули "роват ьзачем пи сат 99% ьнаА декод ак

огд амыужепре краснона 1% пи са" ли на Ситоон звучитсове ршенноид. и отск и

Аесли кэтомудо "ба ви тьнаСин 1% ап ис аннонаподде ржани еэто гокода 5%

уходит усилийтехпод"?

 

держки Пот, о-мучтовт, реть ихб еда как р азво тсэти "мсамымпре".

красноИсслед ованияпока зыв аютчт о/я++ зыкиССпроиг рываю тяз ык уАдапо

цело мурядупринцип иально важныхиндустри альныхкри, терие вта кихкактрудое

мкостьвыр аженияалг ор итмана данно, мязыкес реднееколи честводе фе ктовнае

дини, цукодас реднееколи честводе, фектовобнаружи ваемы хпозж еэтапакомп,

иляциис реднееколи честводе, фектовнепосредс тв енноненаблю дае мыхприиспо

лнениипро, граммытрудое мкостьдолгоср очногосопрово жденияпро, г р.а. мм

ыитдПонек от орым изэтихкри териевр - аз ницанап. ор.ядкиСмна прим е

рнашусС ергеемИгор евичемР ыбиным ст ать юнаэ, тутемуиме ю щуюсява рхи_ва.

 

х Адару Ячит алвашу (с т.а. т ьювтчианглояз ычного, ав торанак от оруювыссы). лалисьБ ольшоес. пас иб оТемн, еменее-по чемутоколи чествопр, оектовреализо ван Unix/Linux ны C/C++ , хподнан амногопре вышаетколи чествопр, оектовреализо ва Ada, нныхнане см отр я навсееёзамеча тельныек а честваииндустр иальноепревос. х одс тв оВч ёмже? тутдел оП очем убывсе мд ружно н ев зятьине пе Ada? р ейтин аЯ :)

 

личноза

Здравствуйте, rainbow-2000.

 

Вы писали 31 марта 2006 г., 16:27:19:

 

А вообще, я давно хотел узнать на каком языке написана real time mission critical OS типа QNX ? Никто случайно не знает?

 

Конкретно QNX - чисто С, даже без плюсов. Все разговоры про

её хорошесть сводятся к быстрому переключению контекстов задач,

"гарантированного" времени реакции на события и маленьким временам для таймеров. А в "mission critical" вообще давно не верю. Ошибки есть везде и в достаточном количестве. И в QNX тоже.

 

PS: Работа с QNX 4.25, беглый взгляд на 6-ку.

 

--

С уважением,

Мазнёв Николай mailto:nmaznyov@...

Николай Мазнёв wrote:

Здравствуйте, rainbow-2000.

 

Вы писали 31 марта 2006 г., 16:27:19:

 

 

А вообще, я давно хотел узнать на каком языке написана real time mission

critical OS типа QNX ? Никто случайно не знает?

 

 

Конкретно QNX - чисто С, даже без плюсов. Все разговоры про

её хорошесть сводятся к быстрому переключению контекстов задач,

"гарантированного" времени реакции на события и маленьким временам для

таймеров. А в "mission critical" вообще давно не верю. Ошибки есть везде

и в достаточном количестве. И в QNX тоже.

 

PS: Работа с QNX 4.25, беглый взгляд на 6-ку.

 

 

Николай, спасибо.

 

Я подозревал, что она написана на C, но что-то на их сайте об этом не было сказано (может плохо искал). Конечно, программ, не содержащих ошибок крайне мало (разве что TeX :) ). Насчёт "mission critical", честно скажу, ничего не знаю из реальной жизни. Слышал, что она используется в аэрокосмической отрасли, сделана на основе микроядра с разнесением работы драйверов, сетевых протоколов, файловых систем, различных интерфейсов и т.д. в отдельные адресные пространства и рассчитана, по заявлениям разработчиков, на "100% бесперебойную работу". Также, говорят, что у неё очень мало реальных конкурентов на своём рынке.

 

Алексей

При использовании C/C++ -- никаких проблем. Нужно работать с

ядром -- тоже всё делается напрямую, без лишней головной боли и т.д. и т.п. Все инструменты для работы (в т.ч. bindings к php, xslt,

интерфейсы к базам данных и т.д. и т.п.) уже, как правило, включены в дистрибутив или же их легко можно скачать и установить. Очень удобно. Всё есть, садись и пиши.

 

Ну тут позвольте несогласится. Наличие интерфейса на всегда

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

данные (тот же интерфейс) но проще воспользоватся уже имеющимися

стандартными средствами (вот вам и бибилиотека)

 

Из этого видно что сравнивать на каком языке написана конкретная

програма, которую Вы используете, будь то сервер БД или ядро не столь важно, равно как и представляемый ими интерфейс, поскольку в реальной жизни всеравно проще использовать бибилиотеки-надстройки, которые могит буть написаны и на других языках.

 

 

Кроме того, действительно, код C/C++ работает

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

 

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

скорости Си это на проверках, встраиваемых компилятором для типов, границ и т.д.

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

подсчеты, из за кокогото неправильного обращения к масиву, как доло Вы будете лопатить код для отлова такой ошибки?

 

Я читал вашу статью (в т.ч. и англоязычного автора, на которую вы ссылались). Большое спасибо. Тем не менее, почему-то количество

проектов, реализованных под Unix/Linux на C/C++ , намного превышает количество проектов, реализованных на Ada, несмотря на все её

замечательные качества и индустриальное превосходство. В чём же тут дело? Почему бы всем дружно не взять и не перейти на Ada? Я лично за :)

 

Я тоже за, только каждый вибирает свою дорогу сам :)

rainbow-2000 wrote:

В смысле различным? Если сдвигать число +2 право, дальше нуля не уйдёшь. Если сдвигать -2 вправо, дальше -1 не уйдёшь. По крайней мере, g++ делает именно так. Знак полностью сохраняется. Никаких проблем со знаком я не вижу.

 

Если при сдвиге -2 вправо получается -1, значит сдвиг арифметический, если 2147483647, значит логический. Проблема в следующем: какой будет сдвиг в стандарте языка не оговаривается, это на усмотрение реализации. Пока вы пользуетесь gcc все будет предсказуемо. Но если вдруг вашу программу кто перекомпилирует другим компилятором, то можно получить неожиданный результат.

 

Я проверил gcc, для signed он делает сдвиг арифметический, для unsigned - логический.

 

#include <stdio.h>

int main() {

unsigned int ui=0xFFFFFFFE; //-2

signed int si=0xFFFFFFFE;

printf("signed %d>>1 %d&#92;n",si,si>>1);

printf("unsigned %d>>1 %d&#92;n",ui,ui>>1);

return 0;

}

 

output:

signed -2>>1 -1

unsigned -2>>1 2147483647

 

 

-- Olleg Samoylov

Новое сообщение:
< Страницы: 1 2 3 4

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти