Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > Действительно ли C# "продвинутее" чем С++


Автор: Riddik 11.2.2009, 22:48
Для интереса просмотрел книжки по С#, так задело за живое, что в каждом введение C# позиционируется, как следующий шаг, как более продвинутый язык, чем С++. Время разработки значительно меньше, мощность та же, что и у С++, но более проще и т.д. Что это язык будущего. 
Символ шарп # это ++ два раза. 
В общем, у меня прям чувство ревности какое-то. Неужели С++ отмирает, потихонечку? Насколько всё это правда?

Короче, я стал париться... изучаю С++, мне нравится, но с# этот теперь...

Помогите мне без лишних мыслей дальше учить С++  smile   

Автор: andrew_121 11.2.2009, 22:59
Riddik, Зря паришься! Такие языки как asm, C, C++ никогда не вымрут. Возможно появятся языки более высокого уровня, что-то вроди D, но прежние останутся.

Автор: NightmareZ 11.2.2009, 23:30
Действительно ли синее продвинутее зелёного?

Автор: mes 12.2.2009, 00:07
Цитата(Riddik @  11.2.2009,  21:48 Найти цитируемый пост)
Короче, я стал париться... изучаю С++, мне нравится, но с# этот теперь...
Помогите мне без лишних мыслей дальше учить С++


Если под  планируешь писать под .Net, то смотри в сторону шарпа, иначе C++. У каждого из этих языков своя "среда обитания" и они практически между собой не пересекаются.

Автор: Luter 12.2.2009, 00:26
С# круче, но не забывай что на С++ на писаные все проги под линукс, если С++ будет умирать, то как минимум через 20 лет.
Через 20 лет неизвестно что будет, каждых 10 лет приходят революционные технологии, аналога С++ нету, который сможет полностью заменить С++.

Автор: Riddik 12.2.2009, 01:06
Спасибо!

Т.е. без .NET нет c#? 


Luter, а чем с# всё же круче C++?

Автор: NightmareZ 12.2.2009, 01:33
Цитата(Luter @  12.2.2009,  00:26 Найти цитируемый пост)
С# круче


Может расскажешь, чем C# круче? Или абы ляпнуть?

Автор: cutwater 12.2.2009, 02:01
Блин... опять тема почти холивар.... круче не круче.
У каждого языка своя область и специфика применения.

И C# является узкоспециализированным языком направленным на разработку enterprise приложений.
Но раскройте глаза - на enterprise мир не заканчивается...

Можно сравнивать отдельно фреймворк, вот только за столько лет существования С++ столько библиотек и фреймворков написано, что опять таки глупый спор получается

Цитата(NightmareZ @  12.2.2009,  00:33 Найти цитируемый пост)
Может расскажешь, чем C# круче? Или абы ляпнуть? 


Дык много новичков бывает купятся за громкие заявления во вступлениях книг, потом и идут monkeycoding заниматься.
А рассуждать что круче - это удел хелловордеров и ламеров, уж извините на недобром слове.

Автор: kemiisto 12.2.2009, 02:15
Опять холивар! smile 

Цитата(NightmareZ @  11.2.2009,  23:33 Найти цитируемый пост)
Может расскажешь, чем C# круче? Или абы ляпнуть? 

Очень коротко. Мой, так сказать, point of view:
  •  C# - True OOP. Ну, или почти труъ. Конечно не state-of-the-art (как Smalltalk smile ), но движение в правильном направлении.
  •  В C# - адыкватная реализация модульности. А заголовочные файлы - это smile 
  •  ... и т.д. Синтаксически C# таки refined C++.
  •  Поддержка в run-time (CLR) со всеми вытекающими.
  •  Наличие стандарта и следование ему в реализациях.
Цитата(mes @  11.2.2009,  22:07 Найти цитируемый пост)
Если под  планируешь писать под .Net, то смотри в сторону шарпа, иначе C++.

Я бы поправил .NET на Windows. И не был бы так категоричен после иначе...

Автор: NightmareZ 12.2.2009, 03:15
Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
 C# - True OOP. Ну, или почти труъ. Конечно не state-of-the-art (как Smalltalk  ), но движение в правильном направлении.

Теперь расскажи, чем True OOP хуже, чем False OOP?

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
В C# - адыкватная реализация модульности. А заголовочные файлы - это

Чесно.... не понял придирки.

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
 ... и т.д. Синтаксически C# таки refined C++.

?  smile 

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
Поддержка в run-time (CLR) со всеми вытекающими.

Ну с этим не буду спорить.

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
 Наличие стандарта и следование ему в реализациях

Мелкософт следует стандарту (именно стандарту) C# не больше, чем С++. Они то стандарт продвинули.... только следовать ему......

Автор: mes 12.2.2009, 03:18
Цитата(kemiisto @  12.2.2009,  01:15 Найти цитируемый пост)
И не был бы так категоричен после иначе...

речь шла о выборе из двух языков. 

Автор: cutwater 12.2.2009, 03:49
Цитата(mes @  12.2.2009,  02:18 Найти цитируемый пост)
речь шла о выборе из двух языков. 


Имхо в вопросе четко просматривается нотка холивара.

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

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

А (повторюсь) если разговор сводится к определению языка будущего, что продвинутее и т.д... то тема обсосана вдоль и поперек в песочнице и холиварах. можно даже перлы отыскать среди всех бессмысленных споров.

Автор: math64 12.2.2009, 08:53
Вы вводите "MyClass var.  " и IDE  предоставляет вам посказку какие поля и методы есть в классе MyClass. IDE для С++ это сделать сложнее - нужно просмотреть все #include. IDE может также сделать такие вещи как переменовать класс, поле, переменную, создать из выделенного фрагмента кода новый метод, создать новый класс-наследник, переместив в него некоторые методы из базового класса и т.д. - всё это проще сделать в C#, чем в С++ (а ещё проще в Java, IDE для Java предлагают больше средств рефакторинга, чем Visual Studio)

Автор: Lazin 12.2.2009, 10:05
Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
C# - True OOP. Ну, или почти труъ. Конечно не state-of-the-art (как Smalltalk smile ), но движение в правильном направлении.

то, что они запретили свободные функции - не есть Ъ ООП, скорее лишний геморой, в остальном - то-же самое (ну есть рефлекшн, ну и что, на тех задачах, на которых можно использовать интроспекцию - C# не лучший выбор)

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
В C# - адыкватная реализация модульности. А заголовочные файлы - это smile 

это да, но адекватная реализация модульности есть везде кроме С++, механизм заголовочных файлов ровесник мамонтов smile 

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
... и т.д. Синтаксически C# таки refined C++.

ничего подобного, скорее refined Java, большинства фич срр там нет и не будет, например шаблонов, еще там нет такой штуки как deterministic destruction, объекты умирают не сразу после выхода за пределы scope-a а тогда когда этого захочет garbage collector, в общем, время жизни не определено, для многих задач это неприемлемо...

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
Поддержка в run-time (CLR) со всеми вытекающими

миллионы строк кода на с++ smile 

Цитата(kemiisto @  12.2.2009,  02:15 Найти цитируемый пост)
Наличие стандарта и следование ему в реализациях.

*смеется*

Добавлено @ 10:14
Цитата(Luter @  12.2.2009,  00:26 Найти цитируемый пост)
С# круче, но не забывай что на С++ на писаные все проги под линукс, если С++ будет умирать, то как минимум через 20 лет.

Ванга, залогиньтесь!
С++ в том виде, в котором он есть сейчас будет жить еще долго, а после выхода нового стандарта С++ 0х еще дольше, с новым стандартом писать программы будет намного проще, например там появятся анонимные ф-ии и замыкания, можно будет использовать стандартные алгоритмы и контейнеры a la ruby:
Код

std::vector<int> someList;
int total = 0;
std::for_each( someList.begin(), someList.end(), 
      [&](int x) 
      {
          total += x
      }
);

ну и много чего еще, так что с++ на месте то-же не стоит  smile 

Автор: kemiisto 12.2.2009, 10:55
Цитата(Lazin @  12.2.2009,  08:05 Найти цитируемый пост)
то, что они запретили свободные функции - не есть Ъ ООП, скорее лишний геморой, в остальном - то-же самое (ну есть рефлекшн, ну и что, на тех задачах, на которых можно использовать интроспекцию - C# не лучший выбор)

Lazin, да я не про то, что в C# всё объект. Не в этом дело. Достаточно наличия в С++ множественного наследования. Это не есть Ъ. Плюс должно быть промежуточное представление кода, испольняемое ВМ + сборка мусора. Ну то есть мощная поддержка времени исполнения. А до разработчиков C# (правда только к 4 версии языка smile ) уже дошло, что и типизация в Ъ ООП должна быть динамической. smile 

Цитата(Lazin @  12.2.2009,  08:05 Найти цитируемый пост)
ничего подобного, скорее refined Java

Самому писать лень! 
Цитата
Кроме того, в C# решено было перенести некоторые возможности C++, отсутствовавшие в Java: беззнаковые типы, переопределение операций (с некоторыми ограничениями, в отличие от C++), передача параметров в метод по ссылке, методы с переменным числом параметров, оператор goto. Также в C# оставили ограниченную возможность работы с указателями — в местах кода, специально обозначенных словом unsafe и при указании специальной опции компилятору.

Так что, тут можно и поспорить. smile Но это не суть.

Цитата(Lazin @  12.2.2009,  08:05 Найти цитируемый пост)
механизм заголовочных файлов ровесник мамонтов

Угу, угу. smile 

Цитата(Lazin @  12.2.2009,  08:05 Найти цитируемый пост)
*смеется*

Да, тут немного забавно. Сам придумал стандарт - сам реализовал. smile Но тем не менее. К тому же в стандартизации C# принимает участие не только MS.

Автор: cutwater 12.2.2009, 11:29
Цитата(kemiisto @  12.2.2009,  09:55 Найти цитируемый пост)
Цитата(Lazin @  12.2.2009,  08:05 Найти цитируемый пост)
механизм заголовочных файлов ровесник мамонтов

Угу, угу. smile 


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

Автор: Lazin 12.2.2009, 11:52
Цитата(kemiisto @  12.2.2009,  10:55 Найти цитируемый пост)
Достаточно наличия в С++ множественного наследования.

почему? с одиночным наследованием оно конечно проще, но почему Ъ объект не может иметь несколько потомков, либо реализовывать несколько интерфейсов?

Цитата(kemiisto @  12.2.2009,  10:55 Найти цитируемый пост)
Плюс должно быть промежуточное представление кода, исполняемое ВМ + сборка мусора.
как это связано с труЪшностью реализации ООП в языке программирования? Кстати, организовать сборку мусора на С++ не проблема, а с помощью смарт поинтеров это вообще будет прозрачно для программиста.

Цитата(kemiisto @  12.2.2009,  10:55 Найти цитируемый пост)
А до разработчиков C# (правда только к 4 версии языка smile ) уже дошло, что и типизация в Ъ ООП должна быть динамической.

И чего это ради типизация должна быть всегда динамической, к примеру, для сложной обработки данных это не подходит, тут вообще рулит ФП подход. Для того, что-бы писать надежный код,  необходимо, что-бы компилятор находил ошибки в коде(в идеале - если оно компилируется, значит оно не содержит ошибок), а с динамической типизацией даже простая опечатка вылезет в ран тайме. В тех случаях когда мне нужна будет сложная архитектура, состоящая из множества объектов обменивающихся сообщениями, я просто сделаю биндинг для какого-либо динамического яп(например lua или python) и буду дергать свой низкоуровневый с++ код оттуда, но такого кода как раз очень не много. Большая часть кода написанного мной это код которому динамическая типизация не нужна smile

Автор: Riddik 12.2.2009, 12:04
Рассмотрим такую область. Игры под windows.
Большинство больших игр программировались на С++. До недавнего времени. 
А теперь (правда информация не подтверждена, слухи на форумах), например  "Легенда о Рыцаре" и знаменитый "Ведьмак" написаны на .NET (C#). Т.е. задачу, которую можно решить и на С++, и на С# предпочли решать на C#. (опять же, 100% неизвестно)
Получается, что если глядеть в сторону разработки тем более не таких больших и сложных игр, то предпочтительнее выбрать C#?  Потому что на нём это будет делаться проще и гораздо быстрее?

Автор: GoldFinch 12.2.2009, 12:32
когда железо сможет тянуть игры написанные на бейсике, игры будут писать на бейсике

Автор: Riddik 12.2.2009, 13:05
Как вам цитата:

".NET обладает очень высокопроизводительным менеджером памяти, скорость аллокации объекта в 20-25 раз превышает скорость аллокации при помощи malloc, при этом никакой фрагментации. Благодаря этому можно добиться огромного повышения производительности по сравнению с C++ именно на динамических структурах данных. В этой ситуации именно языки без GC оказываются в роли догоняющего. Можно добиться схожей производительности и от C++ кода, однако это потребует написания специальных высопроизводительных аллокаторов, которые, как показывает практика, большинство C++ программистов писать не умеют. 
Короче, путь .NET программиста не усыпан цветами. Часто слышал утверждения, что типа любой сиплюсплюсник может писать эффективные .NET приложения: враньё. Обычно требуется около двух лет коммерческой разработки на полное освоение платформы. Только после этого можно говорить об эффективном коде.

З.Ы. Смешно читать типично сиплюсплюсные флеймы типа "использовать STL или нет". Ведь там же динамические структуры данных, которые память фрагментируют. В .NET такой проблемы даже не возникает. Лёгким движением руки квадратичные алгоритмы превращаются в линейные путём использования в качестве локальных переменных хешмапов. И никакого мозгового гемороя. Да можно кучу подобных примеров привести."

Автор: GoldFinch 12.2.2009, 13:14
локальная переменная выделяется в миллионы раз быстрее чем через маллок %)
если написать свой хип, то он тоже будет работать быстрее маллока
только разве это узкое место чтобы это было так важно?

Автор: math64 12.2.2009, 13:18
Именно: программировать на C# быстрее (но не Notepad'е же). Хотя код на C++ можно написать работающий быстрее C#, но на его создание уйдёт намного больше времени. 

Автор: Kallikanzarid 12.2.2009, 16:39
Riddik, спасибо за шедевральный бред, смеялсо  smile 

Ведьмак создавался на модифицированном движке Aurora (Neverwinter Nights), а тот написан на C++, в чем можно легко убедиться, скачав теперь уже Open Source-исходники.

Mount & Blade, ЕМНИП, создавался изначально под .NET, но бета, в которую я играл, была недвусмысленно помечена как Native.

А вообще C# - это такая помесь Java и Delphi a la MS, я его использую для макетирования. Серьезно работать с ним не вижу смысла - он сливает Java и Delphi в производительности, не говоря уже о C++.

Автор: cutwater 12.2.2009, 16:55
Скажу так.. в джаве я вижу для себя один большой недостаток - очень медленный ГУЙ.
Поэтому обычно гуевые приложения и пишут либо на шарпе либо на плюсах с использванием QT, etc.



Автор: Lazin 12.2.2009, 17:01
Цитата(Riddik @  12.2.2009,  13:05 Найти цитируемый пост)
.NET обладает очень высокопроизводительным менеджером памяти, скорость аллокации объекта в 20-25 раз превышает скорость аллокации при помощи malloc, при этом никакой фрагментации.

смеялсо
Цитата(Riddik @  12.2.2009,  13:05 Найти цитируемый пост)
Лёгким движением руки квадратичные алгоритмы превращаются в линейные путём использования в качестве локальных переменных хешмапов. И никакого мозгового гемороя. Да можно кучу подобных примеров привести.

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

Автор: cutwater 12.2.2009, 17:09
Цитата(Lazin @  12.2.2009,  16:01 Найти цитируемый пост)

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


Открывать нужно раздел "Юмор Винграда или программисты шутят"

Автор: Torsten 12.2.2009, 17:52
Цитата(Riddik @  11.2.2009,  22:48 Найти цитируемый пост)
Для интереса просмотрел книжки по С#

а ты не смотри smile


Цитата(Riddik @  11.2.2009,  22:48 Найти цитируемый пост)
 C# позиционируется, как следующий шаг, как более продвинутый язык, чем С++. Время разработки значительно меньше, мощность та же, что и у С++, но более проще и т.д. Что это язык будущего. 

Все пишут, но факты говорят обратное почти всегда. Кроме того никаких доказательств хотя бы 1 пункта из вышеперечисленного в этих книгах не дают. Значит врут.

Хочешь простой и очевидный факт ? Назови хотя бы 3 программы написанные на С#, которые пользуются успехом у пользователей. Я только одну знаю - Paint.NET.


Касательно NWN, 1ая часть была реализована как сказали на движка аврора написанном на С++, в результате в 2002 (или 2001 уже забыл) это игрушка была хит, по все параметрам в том числе и по качеству графики, при этом НИЧЕГО не тормозило.

Вышла NWN 2ая часть написанная на .NET, тормозит жутко, графика визуально хуже чем в 1-ом НВН. Я так и не смог в нее поиграть нормально, при том что комп у меня далеко не самый слабый, и даже при том что я был ярым фаном 1-го НВН (в онлайне играл около 2х лет) и очень хотел поиграть во 2-ой, но после 3х попыток я сдался. 

Автор: Riddik 12.2.2009, 17:54
Рад, что про Ведьмака развеяли легенду!

Ну, раз цитата так повеселила, вот ссылка на   http://www.gamedev.ru/flame/forum/?id=90998&page=4
Хотя признаюсь, я ещё не понимаю, что такое аллокаторы и т.д.  

Эту тему я нашёл, когда искал в нете о противоборстве ++ и #

И вот ещё что. Как я уже сказал, цитату я эту не очень то понимаю. Но раз вы так реагируете, то вопрос: как не стать таким программистом, как цитируемый?

Автор: UniBomb 12.2.2009, 18:10
Добавлю и свои пять копеек. Язвки С/С++ очень широко используються при написании программ для различных микроконтроллерных систем. Бывают задачи, где особоая мощность ненужна в принципе, в таких задачах как правило используют 4/8/16 битные микроконтроллеры, имеющие относительно небольшие тактовые частоты и относительно фиговенькую производительность. Запускать на них интепритируемые языки - это извращение. Нет, есть конечно ARM9/ARM11 на которых можно поднять .NET (все более-менее новые кпк аботают под интеловскими процами, которые по сути являються ARM11 со своими изменениями), но уже на них чуствуется разница в производительности. Да и потом такие системы по цене уже сравнимы с полноценными компьютерами, так что выгода здесь очень сомнительная. Так что С/С++ самое оно для таких систем...

Автор: vinter 12.2.2009, 18:38
Riddik, С# рулит, юзай его.

Lazin, смени аватарку, не возможно посты читать  smile 

Автор: Kallikanzarid 12.2.2009, 19:39
Цитата

Ну, раз цитата так повеселила, вот ссылка на   первоисточник

Отличный первоисточник, гыгы  smile  А задающий тот вопрос - случайно не ты? Решил пофлудить?

Автор: Riddik 12.2.2009, 19:53
Нет, не я!

Автор: cutwater 12.2.2009, 20:28
Приводя ссылку на первоисточник и цитату с первоисточника, автор явно невнимательно читал обсуждение...

Тема:
Цитата

Действительно ли C# "продвинутее" чем С++


Аргументы из первоисточника :
Цитата

C# неправильно позиционировали - как конкурента С++.
Никому же не приходит в голову спорить на тему того, что лучше - PHP или C++. Потому что у них разные области применения. 


Добавлено @ 20:31
Об аллокации памяти (20-25 разовом преимуществе) бред имхо. Ну не может быть физически.
Или даже если может то с весьма сомнительным преимуществом и скрытыми недостатками.

Автор: Riddik 12.2.2009, 20:46
cutwater, внимательно. Только авторитет тех "авторов" под сомнением, я больше нашим верю. А мало ли что кто скажет там

Автор: Kallikanzarid 12.2.2009, 20:54
Короче, спалился, казачок.

Автор: cutwater 12.2.2009, 21:11
Одну цитату удалил, так как несколько сомнительна, правда.

Если уже сравнивать...
Я год программировал на C#, 2,5 года разрабатываю на С++.
Впечатления, что то лучше или хуже... нет.
Оба инструмента которыми можно пользоваться, просто нужно верно выбрать инструмент.
Если честно мне больше нравится на плюсах писать и под линукс. Обычно небольшие проекты так и пишу, под линуксом на QТ, потом единожды компилирую под винду и готово. Мне нравится ибо свобода выбора.. практически свобода во всем.
С# как и платформа диктует жесткие условия.... ибо есть под Win только один нормальный компилятор, только одна вменяемая студия разработки... и т.п.
Если требуется написать приложение с гуем + в короткие сроки ( может с привязкой к бд ) и только на вин... то лучше подойдет С#
Для игр где критична память и скорость, или серверов которые должны работать с тысячами подключений, пропускать и обрабатывать массу информации, или же приложений для шифрования данных, реализации криптоалгоритмов и т.д... то взять С / С++.
Для игр к С++ в качестве скриптового языка прикручивается Python или Lua и очень красиво все работает.

Автор: Riddik 12.2.2009, 23:06
Kallikanzarid,  может по айпи сравните, если не верите?! Я ту тему не создавал!

Автор: Kallikanzarid 12.2.2009, 23:53
Как тебе угодно.

Автор: Dmi3ev 13.2.2009, 01:23
Riddik, не волнуйся, если ты станешь невероятным гуру С++, С# тебе изучить будет не очень сложно, даже скорее очень просто.  Будешь знать два языка...
Осталось только стать гуру С++...
PS если с экономической точки зрения смотреть, то программерам шарпа больше платят (это чисто моя статистика, возможно, ошибочная...)

Автор: Riddik 13.2.2009, 02:05
Dmi3ev, ну, если смотреть по вакансиям в Москве, то больше всё же платят С++ программистам.

И по-вашему, если гуру не стать, а просто хорошим программистом на С++, то изучение С# будет проблемой)) С# легко даётся только гуру программерам на С++.
 smile  Спасибо, учту.

Автор: cutwater 13.2.2009, 02:25
Цитата(Riddik @  13.2.2009,  01:05 Найти цитируемый пост)
Dmi3ev, ну, если смотреть по вакансиям в Москве, то больше всё же платят С++ программистам.


Все дело в том что хорошего специалиста в С++ найти гораздо сложней чем аналогичного специалиста на C#. Поэтому вакансий на C# больше, зарплаты на первый взгляд больше.
Но в зависимости от уровня решаемых задач на С / С++ зарплата варьируется очень сильно.

Автор: Riddik 13.2.2009, 02:31
http://hh.ru/applicant/searchvacancyresult.xml?keyword1=C%2B%2B&professionalAreaId=0&itemsOnPage=20&fromAgency=true&withoutSalary=true&orderBy=2&allFields=true&areaId=113

http://hh.ru/applicant/searchvacancyresult.xml?keyword1=C%23&actionSearch=Найти&areaId=113&professionalAreaId=0&fromAgency=true&withoutSalary=true&allFields=true&orderBy=2&itemsOnPage=20

Это на текущую дату. smile 

Автор: cutwater 13.2.2009, 02:59
Эти ссылки конечно не показатель, но все таки доля правды есть.

Автор: Riddik 13.2.2009, 03:12
Согласен.


Автор: Dmi3ev 13.2.2009, 03:29
Цитата

С# легко даётся только гуру программерам на С++.

Нет, просто ты так заморачиваешься, что из этого учить! Учи любой, когда добьешься успеха в одном, начни учить другой... Я про это...
Цитата

Но в зависимости от уровня решаемых задач на С / С++ зарплата варьируется очень сильно. 

это да...
Цитата

Dmi3ev, ну, если смотреть по вакансиям в Москве, то больше всё же платят С++ программистам.

я просто высказал свое мнение, в скобках указал, что оно может ошибочное, но оно мое личное...
Да, все зависит от задач, а сложные задачи решают на С++ обычно... Там нет необходимости в С#... Однако, если задачи фуфловые, то, по-моему С++ программер дешевле... Это мое мнение, еще раз уточняю!

Автор: Riddik 13.2.2009, 10:45
Понятно, спасибо.

Автор: bsa 13.2.2009, 12:31
Цитата(Dmi3ev @ 13.2.2009,  03:29)
Однако, если задачи фуфловые, то, по-моему С++ программер дешевле... Это мое мнение, еще раз уточняю!

Как человек, который пытался найти сотрудника (программер С++), могу сказать, что хорошего программиста найти очень сложно за вменяемые деньги (например, 50000 рублей в месяц в Москве). Обычно, идут студенты последних курсов либо "умудреные опытом"... Но только один человек из 4-х, с которыми мы работали был хорошим программистом (заинтересованным в профессии). Но, к сожалению, наша работа его не сильно заинтересовала, поэтому он ушел.

Автор: mrbrooks 14.2.2009, 12:01
Если вернуться к самому сабжу - то по своему опыту могу сказать следующее - на счет продвинутости C# сказать сложно, но когда приходилось доводить до конца проект стажера, ярого сторонника C#, нахлынула студенческая ностальгия, ибо ощущение, что пишешь на Delphi  smile Хотя должен отметить, для некоторых целей, юзать C# удобнее и быстрее, чем C++ - особенно когда нет ограничений по ресурсам девайсов.

Добавлено через 52 секунды
Цитата(bsa @  13.2.2009,  12:31 Найти цитируемый пост)
(например, 50000 рублей в месяц в Москве)

Для Москвы действительно, как то мало.

Автор: Riddik 14.2.2009, 15:39
Короче, мне С++ нравится и буду внедряться в него. 
И потом, ничто не помешает мне поучить и c#, если будет на то желание/необходимость.

Автор: math64 14.2.2009, 16:16
А вы не то сравниваете. Если уж сранивать C++ и C# как языки, то нужно сравнивать C++/CLI и C# - теоретически можно написать компилятор для C#, который будет создавать обычную программу, без использования .NET

Автор: Kallikanzarid 14.2.2009, 16:22
Цитата

А вы не то сравниваете. Если уж сранивать C++ и C# как языки, то нужно сравнивать C++/CLI и C# - теоретически можно написать компилятор для C#, который будет создавать обычную программу, без использования .NET 

Вам саночки или ехать?

Автор: Goliaf777 14.2.2009, 16:28
Вопрос вроед какбы в другом стоял, но грязные рученки замарали тему холиваром. А если по сабжу, каждое важное изменение не делает язык на 100% круче чем его предшедственник. Аналогично по моему привести пример с С и С++, ну и что, все прям по бросали С и пересели на более новый, более крутой, более всяко-всякий С++  smile  С уже больше 25 лет живет поживает и никто его не ругает, никто не говорит что С++ ващщее тру (я по отношению к норм программистам). Так что моя позиция за С и С++ и все им подобные которые кроссплатформенны (вроде блин я холиварю smile . 

Автор: NightmareZ 14.2.2009, 16:56
Цитата(Goliaf777 @  14.2.2009,  16:28 Найти цитируемый пост)
Так что моя позиция за С и С++ и все им подобные которые кроссплатформенны

Ты не прав. C и C++ менее кросплатформенны на данный момент, чем C#.

Дело в том, что, для того, чтобы написать переносимое приложение на C/C++ нужно использовать библиотеки, которые тоже портированы на разные платформы. А потом ещё нужно заюзать компилятор для каждой из платформ....

Последний год мы работаем над проектом на C#. Он работает и под виндой и под MacOS, и под линухом (на Mono).

Автор: Kallikanzarid 14.2.2009, 17:08
Цитата

Ты не прав. C и C++ менее кросплатформенны на данный момент, чем C#

Смишно  smile 

Автор: GoldFinch 14.2.2009, 17:20
NightmareZ, C# на AVR работает?))

Автор: vinter 14.2.2009, 17:23
Цитата(NightmareZ @  14.2.2009,  17:56 Найти цитируемый пост)
Ты не прав. C и C++ менее кросплатформенны на данный момент, чем C#.

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

Цитата(NightmareZ @  14.2.2009,  17:56 Найти цитируемый пост)
Дело в том, что, для того, чтобы написать переносимое приложение на C/C++ нужно использовать библиотеки, которые тоже портированы на разные платформы

шо?

Автор: NightmareZ 14.2.2009, 22:03
Цитата(GoldFinch @  14.2.2009,  17:20 Найти цитируемый пост)
NightmareZ, C# на AVR работает?))

Будет фреймворк под AVR - будет работать.

Цитата(vinter @  14.2.2009,  17:23 Найти цитируемый пост)
компиляторная кроссплатформенность, ничем не хуже кросплатформенности уровня исполнения.

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

Цитата(vinter @  14.2.2009,  17:23 Найти цитируемый пост)
шо?

Если у тебя программа использует Qt - проблем не будет. Но, попробуй перенести на линух приложение на WinAPI.

Автор: vinter 14.2.2009, 22:18
Цитата(NightmareZ @  14.2.2009,  23:03 Найти цитируемый пост)
Проще написать один раз виртуальную машину под конкретную платформу, чем портировать тысячи программ.

это твое субъективное мнение, объективности тут ноль.

Цитата(NightmareZ @  14.2.2009,  23:03 Найти цитируемый пост)
Если у тебя программа использует Qt - проблем не будет. Но, попробуй перенести на линух приложение на WinAPI.

мм, ты в кусре что С++ это язык, который не предоставляет средств работы с GUI. Если человек их использует сторонние либы, то это его проблема. Это не делает С++ платформозависимым.

Автор: NightmareZ 14.2.2009, 23:03
Цитата(vinter @  14.2.2009,  22:18 Найти цитируемый пост)
это твое субъективное мнение, объективности тут ноль.

Это реальность.

Цитата(vinter @  14.2.2009,  22:18 Найти цитируемый пост)
мм, ты в кусре что С++ это язык, который не предоставляет средств работы с GUI. Если человек их использует сторонние либы, то это его проблема. Это не делает С++ платформозависимым.

А зачем нужен язык без библиотек? Чтобы писать сферического коня в вакууме?

Автор: Riddik 14.2.2009, 23:05
А если необходимо разработать систему видеонаблюдения для охраны, что выбрать ++ или # ?

Автор: NightmareZ 14.2.2009, 23:29
Цитата(Riddik @ 14.2.2009,  23:05)
А если необходимо разработать систему видеонаблюдения для охраны, что выбрать ++ или # ?

Я бы выбрал C#.

Автор: unicuum 14.2.2009, 23:34
Цитата(Riddik @  14.2.2009,  23:05 Найти цитируемый пост)
А если необходимо разработать систему видеонаблюдения для охраны, что выбрать ++ или # ? 

С++ естественно, только после этого у тебя встанет вопрос, какие библиотеки использовать.

Автор: Goliaf777 15.2.2009, 00:24
Самый кросс это Лого и нечего тут)

Автор: Lazin 15.2.2009, 00:37
Цитата(Riddik @  14.2.2009,  23:05 Найти цитируемый пост)
А если необходимо разработать систему видеонаблюдения для охраны, что выбрать ++ или # ?

Конечно-же haskell, тут и думать нечего
я это серьезно smile 

Автор: Riddik 15.2.2009, 00:51
Ага, на  Miranda тогда уже.

В общем, и тут мнения расходятся... smile

Добавлено через 1 минуту и 23 секунды
unicuum,  и какие посоветуете?

Автор: Lazin 15.2.2009, 10:07
Цитата(Riddik @  15.2.2009,  00:51 Найти цитируемый пост)
Ага, на  Miranda тогда уже.

Миранда не испоьзуется в разработке, а Haskell - вполне smile 
если посмотреть в общем, то C# ничем не отличается от C++ - это все императивные языки программирования, которые позволяют совершить множество ошибок, которые программист на Haskell просто не в состоянии совершить =)

Автор: Goliaf777 15.2.2009, 10:30
А ты сделай на Хаскелле то что можно на С и я сьем свою тюбитейку. Еще кетчюпом помажу.  smile  smile 

Автор: Lazin 15.2.2009, 11:05
что конкретно? 
зы
готовь кетчуп smile 

Автор: unicuum 15.2.2009, 13:39
Цитата(Riddik @  15.2.2009,  00:51 Найти цитируемый пост)
unicuum,  и какие посоветуете? 

Давай для начала разберёмся в деталях.

Задача:
 Снятие, отображение и запись видеопотока с устройств.

Варианты:
1. Используем C#.
2. Используем C++.

Что нужно:
1. GUI-оболочка.
2. Библиотека для работы с видеопотоками.

Лично я сталкивался лишь с программами под DirectX для захвата видео. Их можно написать как на C#, так и на C++, да и примеры есть готовые в DirectX SDK для обоих языков. Причём когда люди ведутся на C#, они ведутся вовсе не на качество самого языка, просто создать GUI с помощью VS и дизайнеров виндоус форм очень легко. Если же делать оболочку на C++, то я бы посоветовал взять Qt, хотя существуют и другие кроссплатформенные библиотеки (GTK, wxWidgets).

Теперь по поводу библиотек для работы с видеопотоками. Про DirectX уже сказал, с остальными не работал, но поиск сразу показал библиотеку http://ru.wikipedia.org/wiki/OpenCV. Обещают поддержку таких ОС как Windows, GNU/Linux и Mac OS X. Мне кажется, что надо вначале попробовать сделать, что-то типа Qt(С++) плюс OpenCV (или как-то так), или уж сразу забивать на кроссплатформенность, брать DirectX SDK и разбирать готовые примеры по работе с видеопотоком.

Автор: MAKCim 15.2.2009, 14:25
Цитата(Lazin @  15.2.2009,  11:05 Найти цитируемый пост)
что конкретно? 

реализуй семантику volatile к примеру ;)

Автор: Riddik 15.2.2009, 15:00
unicuum, большое спасибо! Буду смотреть на QT и DirectX



Автор: Lazin 15.2.2009, 15:12
Цитата(MAKCim @  15.2.2009,  14:25 Найти цитируемый пост)
реализуй семантику volatile к примеру ;) 

state monad smile 

Автор: MAKCim 15.2.2009, 17:06
Цитата(Lazin @  15.2.2009,  15:12 Найти цитируемый пост)
state monad 

я не знаю, что это
можно в двух словах по-русски?  smile 

Автор: Lazin 15.2.2009, 18:24
Если в двух словах, то haskell не работает с местами в памяти, вместо этого он работает со значениями, эти значения не могут менятся. Для того, что-бы к примеру реализовать ввод/вывод, нужно использовать специальный тип данных - монаду IO. Если ф-я имеет сигнатуру String -> String, то это означает что ф-я получает на вход строку и возвращает строку, она реентерабельна, результат зависит только от параметра ф-ии, а если ф-я имеет сигнатуру String -> IO String, то это означает, что ф-я может выполнить операцию ввода-вывода, тоесть она не реентерабельна. Это очень круто и позволяет компилятору проверять статически большую часть кода, а так-же делает очень простым написание тестов, все чистые ф-ии можно протестировать(есть даже скрипт - quickCheck, который это автоматизирует), к тому-же проще писать многопоточные приложения. Монада ST позволяет работать с какими либо данными в памяти, правда я не в курсе, насколько реально эту область памяти разделять между потоками, но если учесть наличие поддержки software transactional memory, то наверное это не сложно сделать =)

Автор: EgoBrain 6.3.2009, 14:38
Цитата(Lazin @ 15.2.2009,  18:24)
Если в двух словах, то haskell не работает с местами в памяти, вместо этого он работает со значениями, эти значения не могут менятся. Для того, что-бы к примеру реализовать ввод/вывод, нужно использовать специальный тип данных - монаду IO. Если ф-я имеет сигнатуру String -> String, то это означает что ф-я получает на вход строку и возвращает строку, она реентерабельна, результат зависит только от параметра ф-ии, а если ф-я имеет сигнатуру String -> IO String, то это означает, что ф-я может выполнить операцию ввода-вывода, тоесть она не реентерабельна. Это очень круто и позволяет компилятору проверять статически большую часть кода, а так-же делает очень простым написание тестов, все чистые ф-ии можно протестировать(есть даже скрипт - quickCheck, который это автоматизирует), к тому-же проще писать многопоточные приложения. Монада ST позволяет работать с какими либо данными в памяти, правда я не в курсе, насколько реально эту область памяти разделять между потоками, но если учесть наличие поддержки software transactional memory, то наверное это не сложно сделать =)

Наверное я не прав, но мне это напомнило логические языки программирования типа Prolog (предикаты и все такое). 
Касательно темы: придерживаюсь мнения что нада и С++ знать и С# (для работодателя оптимальный вариант при принятии на должность). Что касается производительности и т.п. незнаю, это нада большой опыт иметь и там и там (так что наверное тут все спецы и в С++ и в C# раз такие громкие ИМХО высказывают), но скажу так, что если в короткие сроки нада что-то сделать в обширной области (например Direct-3D или тот же захват с камеры), то лучше С# юзать (для студентов и их дипломных кул). А вообще думаю все эти холивары среди простых трудяг сводятся к тому что больше нравится и на чем лучше пишут, вот например чувак говорит что С++ круче - значит он на нем дольше работает и  больше знает.

Автор: unicuum 9.3.2009, 10:34
Цитата(EgoBrain @  6.3.2009,  14:38 Найти цитируемый пост)
вот например чувак говорит что С++ круче - значит он на нем дольше работает и  больше знает

Ты не прав, у некоторых более абстрактное мышление. smile

Автор: Severyanin 11.3.2009, 10:20
Цитата

Цитата(GoldFinch @  14.2.2009,  17:20 )
NightmareZ, C# на AVR работает?))


Будет фреймворк под AVR - будет работать.

Вот тут я плакаль долго.  
NightmareZ, ты, похоже, совсем не представляешь, о чем говоришь, почитай пост UniBomb, он именно про это писал. Посмотрел бы я на реализацию интерпретатора на риск-камнях гарвардской архитектуры, да еще и без аппаратной подержки защищенного режима. На них оси-то не поднимаются нормально. а ты говоришь про интерпретирующие компиляторы. Там, на самом деле, и ООП-то не всегда используется, так как порой жрет столько ресурсов, что становится нерентабельным, так как отнимает их больше основной задачи, а критичные по времени выполнениЯ подпрограммки вообще дописываются на ассемблере, который очень сильно отличается от своего собрата под х86, в основном, в силу различия архитектуры камней 

Автор: nerezus 11.3.2009, 13:36
Цитата

Скажу так.. в джаве я вижу для себя один большой недостаток - очень медленный ГУЙ.
Поэтому обычно гуевые приложения и пишут либо на шарпе либо на плюсах с использванием QT, etc.
 Qt официально без биндингов доступрен для 2 языков: Java один  из них.

Цитата

и знаменитый "Ведьмак" написаны на .NET (C#)
 Только почему-то он юзает движок NWN1, который на C++ =))

Цитата

графика визуально хуже чем в 1-ом НВН.
 Что? Графика во втором невервинтере в десятки раз круче, чем в первом. Скриншоты дать?)
P.S. Сегодня отрывался в NWN2: SoZ

Цитата

 Я так и не смог в нее поиграть нормально, при том что комп у меня далеко не самый слабый, и даже при том что я был ярым фаном 1-го НВН (в онлайне играл около 2х лет) и очень хотел поиграть во 2-ой, но после 3х попыток я сдался. 
 Хм, ничего не тормозит на средней далеко не топовой машинке. А вот загрузки карт - долгие.

Автор: Lazin 11.3.2009, 16:11
Цитата(nerezus @  11.3.2009,  13:36 Найти цитируемый пост)
Qt официально без биндингов доступрен для 2 языков: Java один  из них.

ты это про Qt Jambi? smile 

Автор: nerezus 11.3.2009, 20:45
Цитата

ты это про Qt Jambi?
 именно. Успел поковырять его =)

Автор: Lazin 11.3.2009, 22:01
ну он какбы больше не поддерживается фирмой nokia

Автор: nerezus 11.3.2009, 22:13
Lazin, ого.
4.4 поддерживалось. Буквально 2 недели назад... Как время летит то )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)