Все-таки до чего хорошо в Питере) Прямо соскучился после ханты-мансийских комаров) Даже вопли так называемой гр."Руки вверх" поздно вечером во дворе, это прямо манна небесная после вагончика посреди леса) Впрочем, закругляюсь оффтопить. По делу:
DigiWhite Цитата: К сожалению COM, а уж тем более COM+ очень уж сложны. Кстати, 98 Win, основан на технологии COM, а NT используют COM+.
Совсем не понял, к чему это, тем более что неверно. Говорить о том, что ОС
основана на технологии COM - полная чушь. Наверное, вы хотели сказать _поддерживает_? Но смысл этого поста все равно от меня ускользает.
oSLikus Цитата: допустим в C++ мы выделили память, и два указателя ссылаются на эту область. Потом в одном месте мы удалили память (free, delete) - во втором месте что? Нет, не Exception, там грязное чтение (хотя, конечно, можно этого избежать). В C# что? Так не получится просто-напросто
Угу, действует тот же принцип, что и в COM, - подсчет ссылок.
Цитата: Win98 и WinNT имеют разные ядра (удивлены?)
нисколько)
Цитата: Хотите драйвер написать, тут вряд ли C# поможет (кстати, можно написать, только это не будет эффективным решением)
Ну, не скажите. Смотря какой драйвер. Ясный перец, что если драйвер устройства, которое изначально ориентировано на низкоуровневый протокол, то ничего не выйдет. Если же драйвер устройства, которое поддерживает протокол высокого уровня, то пожалуйста и сколько угодно - пишите службу Windows, пользуясь всеми фичами .NET. Я уже говорил, что мы также начинаем пробовать такое решение. Хотя пока что реального jпыта здесь нет и могут быть подводные камни.
Цитата: Споры можно продолжать до бесконечности, но сейчас всё больше и больше прикладные приложения, приложения автоматизации бизнес-процессов и т.п. пишутся на высокоуровневых языках: Java и C#.
Правда ваша)
Цитата: И чем мне нравится C# - люди посмотрели, что есть хорошего, что плохое, выкинули плохое (ну, если будет угодно, места, где больше всего ошибок), добавили новых фич и т.п.
Нет. Не согласен полностью. C# принципиально другой язык, общего с С++ - только синтаксис. Поясню - выше уже говорил о том, что С++ соединил в себе два несовместимых подхода: ООП, как надстройка над С, и процедурное программирование, как наследник того же С. C# - это только ООП и ничего больше.
TheChampion Цитата: Цитата: На мой взгляд, самая большая проблема C++ в том, что это ну очень сложный язык.
Именно поэтому в нем всего 64 ключевых слова против 100(???) в C#.
Если это утверждение, то соглашусь. Если же вопрос, то отвечу: да, именно поэтому. Согласитесь, что намного проще написать ключевое слово delegate, чем описывать указатель на функцию. Или что использование ключевого слова foreach куда проще и интуитивно понятней, чем использование итераторов в STL.
Поясняю общую закономерность: многие ключевые слова в C# перекрывают сложные конструкции в C++.
Цитата: Да здравствует Vista и 512 МБайт только для ОС. Быстродействие все покроет...
Тут тоже в отделе недавно зашел разговор о временах далеких) Наши гуру делились воспоминаниями. Вы знаете, что странно - у них до сих пор сохранилось стойкое отвращение к Windows, только потому, что она жрет кучу ресурсов по сравнению с ДОС, которая на дискетку влезала) Скажите, вы предпочтете развиваться, или остаться на месте с ваши подходом?
NB: Ну до чего же консервативно большинство технарей)
xelix Цитата: из всех .NET'ных языков конечно флагманом является C#, но и он какой-то недоделанный C++ из Java - ни туда, ни сюда
А можно уточнить конкретные направления этих "ни туда, ни сюда"? Это куда?
Главный спорщик
segeich)
Цитата: в отличие от C#, C++ не навязывает тебе конкретный метод
Именно, а C# навязывает. Конкретно - ООП подход. А уж если вы пишете ООп-программу, то будьте любезны использовать соответствующие идеи.
И если уж вам так необходим собственный деструктор, то пожалуйста, пишите его. Но вызывайте явно. А сам объект был создан в managed heap, и удаляться он будет тоже автоматически.
Цитата: В COM дык вообще замучаешься с вызовом AddRef и Release
См. _com_ptr_t и ему подобные.
И не путай программирование на С с программированием на С++.
Тут вот тоже не уловил. В каком смысле программирование COM-объектов - это С?
Цитата: А когда через некоторое время в программу будут добавлены новые типы объектов, ты что предлагаешь делать? Просматривать весь код в поисках всех тех мест, где выводится "пара отладочных окошек" и добавлять еще пару? Нет уж, увольте. Нам этого и задаром ненать
Это вы про какую программу? Про ту, что я за две минуты на сон грядущий сляпал? Ну тогда трижды ха-ха.
Цитата: Продолжаешь жульничать, однако
Ни вот ни на столечко) Цитирую себя самого:
Цитата: тут нужно признать, что сишарп это .NET, поэтому то, что делегат это на самом деле наследник System.MulticastDelegate придется принять. То же самое, впрочем, придется принять и в отношении предыдущего и последующего примеров. Ну что поделать, если в сишарпе все наследуется от object, никуда не денешься
И уж если STL - средство чистого С++, тогда и .NET средство чистого C#. То есть ваше требование убрать Forms также неправомерно.
Впрочем, ладно. Так можно спорить долго. Я понял, что вы хотите сказать: нет такого кода в C#, который нельзя было бы реализовать на C++. Вот только цель примеров была другая. Смотрим в начало нашего с вами спора:
Цитата: Цитата:C# позволяет отвлечься от реализации надоедливых, но необходимых в C++ вещей, и сосредоточиться на алгоритме работы
А можно увидеть пару простых примеров (код C# vs код C++), демонстрирующих это утверждение?
Вы их увидели) Мне нет нужды дергать каждый раз STL - я пользуюсь ключевыми словами. И какая мне разница, как с ними борется компилятор? Я сосредотачиваюсь именно на том, что хочу сказать: вот это делегат, я хочу прикрутить к делегату метод и делаю это. Мне не нужно заморачиваться, поймет ли компилятор, что это указатель на функцию - член класса, а вовсе не глобальную функцию. Я знаю, что поймет. Мне не нужно придумывать извращения с целью не дать никому наследоваться от моего класса. Я пишу что этот класс sealed и все. Мне не нужно думать о глюках множественного наследования. Я описываю набор интерфейсов и наследую свой класс от них. Я не хочу постоянно держать в голове кучу инструментов, чтобы выдрать из строки число. Мне хватает одного, к которому я всегда могу обратиться простым и удобным способом. И мне не нужно постоянно помнить о том,что я сначала должен создать класс окна, потом его зарегистрировать, и только потом это окно создать. То же самое с MFC - ну не желаю я копаться в этих жутких обертках к апи. Меня устраивает стройная иерархия .NET. И уж совсем мне не нужна кипа библиотек для С++, из которых я воспользуюсь в жизни двумя-тремя. И то, только написав к ним кучу своих оберток. Вы не поверите: МНЕ ДОСТАТОЧНО ВСЕГО ОДНОГО ИНСТРУМЕНТА! ОДного, но максимально удобного. Вот и все. И я только буду всячески приветствовать идею не одного языка с кучей разных инструментов для разных платформ, а многих языков, использующих ОДИН инструмент для разных платформ. Это офигенская идея. И у микрософта есть ресурсы, чтобы её реализовать.
Несмотря на то, что все это патетика, это мои мысли по этому поводу)
Цитата: А кто пользуется указателями на функции в С++? Ты не путаешь С с С++?
Нет, не путаю. В С++ есть такое средство, как указатель на функцию. причем весьма кривое. Впрочем, может есть какой-то очередной костыль - замена ему? Просветите меня.
Цитата: Warm_Sensor не является корректной английской фразой (т.к. содержит _) и она непонятна человеку, не владеющему английским.
Поверьте мне, разницы между Warm_Sensor и Warm Sensor не увидит даже самый тупой оператор. Ну а с точки зрения языка соглашусь - вы правы) Только из этого ничего не следует. Интеллект людей, которые работают за компьютером обычно достаточно высок, чтобы эту разницу понять. А уж эта программа вообще предназначена для квалифицированных инженеров - настройщиков.
Хотя данное средство вообще-то предназначено для автоматической генерации программного кода.
Цитата: Хмм... интересная фича. Ей можно воспользоваться в учебных целях, в школах например
Я бы не стал. А то привыкнут дети, ведь фиг потом отучишь писать русские идентификаторы.
Цитата: Приведите конкретные примеры (а не голословные утверждения) преимуществ С# над C++ в реальных и серьезных задачах (а не поделках на 5 минут), т.е. чего такого позволит мне сделать С#, чего я не смогу (или очень сложно) сделать в С++.
Некорректно вопрос поставлен. Заведомо ясно, что нет ничего такого что можно было бы сделать в C#, и чего нельзя сделать в C++. Разница в том, КАК можно сделать две одинаковые вещи. А именно - в C# быстрее, надежнее, яснее, более читаемо и правильнее с точки зрения ООП - подхода и проектирования.
TheChampion Цитата: почти для всех объектов в Стандарте C++ приведена оценка временной сложности работы. Есть ли она для C#?
Я свое время тоже искал. Найти не смог, для себя объяснил так: поскольку C# явно проигрывает в скорости исполнения кода, и микрософту невыгодно показывать эти различия, то и анализа такого в широком пользовании нет.
segeich Цитата: Ведь нынче мода пошла такая - писать программы по-быстрому, раз-два и готово, а как уж они будут потом работать, спринтеров не волнует
Скорость разработки - необходимое условие выживания в бизнесе. Надежность при этом обеспечивается квалификацией программистов. Именно поэтому нет огромного спроса на студентов - разработчиков. Ни одна серьезная контора не возьмет разработчика без прохождения жесткого собеседования.
Цитата: При этом они еще верят, что подобные поделки обладают более высоким качеством и надежностью. Блажен кто верует
А это так и есть) Я вам скажу, что наш QA намного чаще находит баги в C++ программах)
Цитата: Ведь если в сфере офисного/домашнего ПО я еще с некоторой натяжкой могу признать доминирование Windows, то в серверном секторе это далеко не так. И нужно быть очень странным (это еще легко сказано) разработчиком, чтобы делать ставку на .NET и терять половину потенциальных покупателей (пользователей
То же самое говорил
vndovr TheChampion Цитата: назовите хотя бы одну популярную программу, написанную на C#?
Давайте я вам отвечу через 30 лет)
segeich Цитата: в последнее время все заказчики просто требуют: либо ваш софт работает под Unix (а у нас их тут много разных), либо мы с вами дела иметь не будем
Неужто требуют, чтобы одна программа работала и под Win и под Unix? Тогда вам бы больше Java подошла. Все-таки по сравнению с C++ разработка идет быстрее. Почему все-таки вы выбрали именно C++?
perdun Тут немного выше тоже про асм вспоминали. Где-то три-четыре страницы назад))
oSLikus Цитата: А .NET создавался как средство создания приложений под Windows
Идея заключалась немного в другом: создать универсальный инструмент для многих языков и платформ. Windows просто самая распространенная ОС.
DigiWhite Цитата: Да и программирвоание контроллеров часто делается на языке высокго уровня (например C ). Например компиляторы от IAR.
В данном случае это всего лишь способ ускорить и упростить разработку. Код все равно остается низкоуровневым, в том смысле, что он привязан к конкретному типу микросхемы. Мы например много бились в свое время с переводом программы, написанной на С для AT90S8535, на микросхему ATMega8535. Даже несмотря на то, что официально ATMega полностью обратно совместима с AT90, прошивки не работали. На портирование почти 8Кб прошивки ушло около двух дней. Если бы писали на еще более высоком уровне, то заморочек было бы еще больше.