Здравствуйте, AndreyFedotov, Вы писали:
AF> То же самое и здесь.с локами. Брать новичка, который не имеет представления об ОСНОВАХ языка ...
Но кое что разумное в этом есть. Например, новом шарпе конструкции обязанные ограничивать свое действие областью видимости специально спроектировали, так чтобы нельзя было допустить визуальных ошибок. Так usung и lock наспространяют свое действие на вложенный блок:
using (StreamReader reader = new StreamReader("file.txt"))
str = reader.ReadToEnd();
или
lock (obj)
{
// используем obj
}
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Честно говоря, хорошие exceptions в OLE Automation. Код ошибки и строка. И все. Хватит. На кой черт нужны _классы_ exceptions?
Кстати, в КОМ ошибки как раз классы. Их можно подменять и дополнять информацияю.
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
WH>>>Единственный адекватный способ создать такой язык это проектирование его с нуля и при этом забив на обратную совместимость с С/С++. AVK>>Ну как бы R# уже сейчас показывает что это не обязательно. WH>Или кто-то из нас не понял что сказал... Или R# может С++ компилировать?
Я думаю, АВК имел в виду, что на С++ свет клином не сошелся. И словосочетание "с нуля" не означает автоматот не наследуясь от С++.
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
MSS>>Абстракции там получаются очень крупноблочные, скорее как в COMе, а не как в классических ОО языках типа Дельфей, Джавы и Шарпа.
AVK>Компонентная модель дотнета в разы более абстрактна нежели СОМ
А что такое компонентная модель КОМ?
... << RSDN@Home 1.1.4 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>>Да прям при любом шаге пятерка была неудачная версия, в шестерке я не чаще раза в год такое вижу. В том компиляторе, что с XP DDK дают — тоже.
Д>Может быть Д>но вообще пример не очень удачный. Насколько я знаю, большая часть кода компиляторов генерируется по грамматикам, так что сам по себе язык большой роли не играет.
Сильно ошибаетесь. По грамматике генерируется только парсер -- и это далеко не самая главная часть кода компилятора.
MSS>>Насчет MSBlaster — ну ОК, перейди на юниксы, которые якобы более надежны — там тоже большая часть софта на Си написана.
Д>Ну это как раз — "исторические причины" в чистом виде. и "якобы более надежны" — это аргумент совсем не в пользу Си
Здравствуйте, vstrogov, Вы писали:
V>Здравствуйте, postmaster, Вы писали:
P>>Ещё один плюс: в моём случае можно посадить за работу программиста без глубоких знаний NDIS. P>>Он и стОить будет дешевле. P>>А пользуясь этими классами он и работу сделает, и много дров не наломает.
V>Это аргумент?
V>Наверное будет невредно почитать раздел Philosophy на www.balder.com (очень хорошо соотв. данной рубрике RSDN)
V>А именно: "The three most important aspects of kernel mode code are quality, quality, and quality."
А для крипографических работ это ещё более важно. Потому что ошибки в криптографии приводят к тому, что система просто не работает. Zero error tolerance. И никакой отладчик причину ошибки вам не раскроет -- в одной из магических констант описались. Вот почему C++ здесь очень помогает -- он открывает такие возможности для верификации кода, которые на чистом C просто невозможны (впрочем, ни на одном другом существующем языке тоже).
Здравствуйте, bwowa, Вы писали:
B>Мужики, так вы вообще противники исключений!
Мы сторонники правильных исключенией. А ISupportErrorInfo — это не исключения, это слёзы. Единственно, кто их умеет нормально эмулировать как C++ исключения — это #import.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Шахтер, Вы писали:
Ш>Сильно ошибаетесь. По грамматике генерируется только парсер -- и это далеко не самая главная часть кода компилятора.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Шахтер, Вы писали:
Ш>>Сильно ошибаетесь. По грамматике генерируется только парсер -- и это далеко не самая главная часть кода компилятора.
Д>а где можно почитать, не подскажете?
По компиляторам? На русском языке есть Ахо, Сети, Ульман. Компиляторы. Принципы, технологии, инструменты. Но предупреждаю сразу -- книга на редкость мутная.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, AndreyFedotov, Вы писали:
AF>> Только тем, что половина драйверистов — едва услышав о такой идее закатывают глаза и начинают выть про "святотатство"... В подобных условиях не возможно работать...
VD>Т.е. дело в традициях и малость (а может и не малость) неадекватного к ним отношению? Ну, что же это объяснение очень похоже на правду.
А то! Есть хорошая традиция разделяемая почти всеми программистами: услышав заклинание "Visual Basic" дружно орать: "Фу! Остой!", трясти бубном и совершать другие ритаульно-оскорбительные действия в отношении VB. Причём что меня удивило больше всего, эта традиция распространена и среди самих программистов на VB...
Всё в комплексе напоминает обряды "укрощения плоти" или "очищения от грехов"...
Забавно, но многие начинают думать (из тех кто вообще начинают) лишь после исполнения обрядовой части...
AF>> А если серьёзно — то C++ прекрасно можно использовать для драйверов. Главное при написании драйверов это смотреть — какие средства языка используются и каковы будут затраты ресурсов при их использовании.
VD>Согласен на все 100.
AF>>Например exceptions в драйверах явно не стоит использовать.
VD>Ну, а почему бы и нет если они используются для выведения блюскринов?
Не экономично. В драйвере гораздо проще этого добиться например так:
*( ( DWORD* ) 0x0000000C ) = 0;
Здравствуйте, VladD2, Вы писали:
VD>Хочеш сказать, что 0 таки приводится к этуму автоматом?
C# Language Specification
6.1.3 Implicit enumeration conversions
An implicit enumeration conversion permits the decimal-integer-literal 0 to be converted to any enum-type.
VD>Нда, это грабли. Зачем они разрешили это совершенно не ясно. Видимо из-за инициализации нулем. Козлы, могли бы запретить хотя бы присваение литералов.
Из-за флаговых enums. Любой здравомыслящий человек при работе с флагами в случае, если ни один из флагов не установлен, захочет передавать литеральный 0, вместо того чтобы явно приводить его или заводить Default = 0, как, скажем, в CommandBehavior. А грабли из-за того, что создателям компилятора было лень проверять FlagsAttribute (он проверяется только в рантайме — Enum.ToString), и все эти 0, |, &, ^, ~ работают даже с нефлаговыми enums.
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Это как с авиацией. Боингу-747 уже 30 лет. F-16 — тоже 30 лет. И ничего, летают, первый с незначительными изменениями, второй — почти как есть.
Серьезно что ли?
F-16 теперешний очень сильно отличается от F-16 тогдашнего. Новые движки, новая электроника, эффективность выше в разы. По сути неизменным остался только планер.
Здравствуйте, WolfHound, Вы писали:
AVK>>Ну как бы R# уже сейчас показывает что это не обязательно. WH>Или кто-то из нас не понял что сказал... Или R# может С++ компилировать?
Нет. Я к тому что никто не мешает создать аналог R# для С++.
Здравствуйте, IT, Вы писали:
IT>Мы сторонники правильных исключенией. А ISupportErrorInfo — это не исключения, это слёзы. Единственно, кто их умеет нормально эмулировать как C++ исключения — это #import.
(сторонникам *NIX не читать!)
Зря вы так про ISupportErrorInfo, очень даже мощный подход. Хочешь бери GUID в качестве ошибки, хочешь — читай COM объект дла расширенной информации. Да к тому же это ещё и независимый от языка подход.
Правльное исключение выглядит так: (ну на фига нам всякие COM )
К стати это реальный код, одной из моих программ.