IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   отличия C# и C++ (http://www.imho.ws/showthread.php?t=86747)

respy 01.06.2005 04:04

отличия C# и C++
 
хотелось бы услышать основные преимущества и недостатки этих двух языков, и вообще чем полезен C#, является ли он перспективным языком программирования, т.е. стоит ли на него переходит, что он собой представляет... для чего вообще этот язык, т.е. он больше подходит для net-кодинга или(и) для разработки обычных программ...

msustudent 01.06.2005 05:31

С# не перегружен технической составляющей при создании приложений в Виндоуз. C# полностью классово-ориентированный язык.

spike 01.06.2005 10:15

respy
мелкософт, всячески этого добивается, чтобы переходили
c# имхо только .net использует, т.е. нужен Framework SDK для написания прог на C#

/7y3uK 01.06.2005 11:17

Собственно если по простому - основное отличие в том, что C++ системно ориентированый язык, т.е. он более низкоуровневый... а шарп он неплохо идет для Web applications... на сколько мне известно :)

Drakosha 01.06.2005 12:04

C++ и C# совершенно разные языки. c# довольно похож на java, c++ - это c + OO. Каждый хорош для своих целей. c# подходит
для всего (теоретически), но и ежу понятно что он медленнее чем C++. IMHO Язык перспективен т.к. его пихает MS и к тому же есть открытая разработка под linux - http://www.mono-project.com/Main_Page

alexey_ma 02.06.2005 13:11

Цитата:

Drakosha:
c# подходит
для всего (теоретически)
Нет, даже теоритически. Есть ряд задач для которых c# не подходит. В первую очередь это программы которые должны работать с чужими процессами , программы использующие хуки, перехват API, задачи тесно связанные с железом, написание драйверов и т.п.
Цитата:

Drakosha:
что он медленнее чем C++
И не только. Он еще и более ресурсоемкий. Я бы например не стал писать программу на c# зная что она будет работать в терминал-сервере.

Drakosha 02.06.2005 13:52

согласен на 100%

Цитата:

Сообщение от alexey_ma
Нет, даже теоритически. Есть ряд задач для которых c# не подходит. В первую очередь это программы которые должны работать с чужими процессами , программы использующие хуки, перехват API, задачи тесно связанные с железом, написание драйверов и т.п.

И не только. Он еще и более ресурсоемкий. Я бы например не стал писать программу на c# зная что она будет работать в терминал-сервере.


knight 02.06.2005 14:00

Давайте попробуем сравнить C# и C++ с точки зрения аппарата программирования. В C# реализовано многое количество вещей , которые либо отсутствуют в C++, либо имитируются специальным образом. Например в C# выделено понятие интерфейса и абстрактного класса( в частности самое понятие интерфейса очень важно при программирование под .NET Framework), в явную выделено понятие свойств,запрещено множественное наследование от классов (зато можно наследоваться от интерфейсов),деструктор играет незначительную роль,
есть например понятие static конструктора. Понятие указателя присутствует но только для неуправляемого кода и т.д. Аппарат ООП C# мне понравился.Он более как мне кажется продуманный нежели в C++. Правда программы написанные на C# таки - да более тормознутые чем на C++. Написание Windows - приложений с использованием Windows - Forms проще чем на MFC или тем более Win32API (безусловно имеется в виду интерфейсная часть ), при этом нужно признать для доступа ко многим возможностям необходимо импортировать WIN32API. Как мне кажется у этого языка есть безусловное светлое будущее ведь сам Microsoft его поддерживает. Если обобщить как мне кажется программисту нужно будет знать и C++ и C#. Причем если рекомендовать последовательность изучения стартовать лучше с C,C++ и только потом C#

/7y3uK 02.06.2005 18:42

Ага :молись: :молись: этот топик для миссионера, начинаем проповедь - разжигаем новые религиозные войны :ржать:
То что написал knight касательно шарпа - есть в Java, причем в гораздо более удобной форме, причем получаем полную кроссплатформенность и независимость от майкрософта в частности... Ну ни как я не могу засчитать слова knightа в плюс шарпу... Таки напишите еще отличий, С# от джавы пожалуйста... А отличия от ЦПП и так понятны уже... но на вопрос "стоит ли учить" ятобы ответить - явно мало информации :) может стоит учить Java

alexey_ma 02.06.2005 21:27

Из джавы весьма затруднительно общатся с другими приложениями (написанными не на джаве) и многими системными ресурсами. То же самое и в обратную сторону, из Win приложения очень трудно узнать что творится в джава приложении, то-есть возможности интеграции нулевые. Практически не возможно работать с СOM компонентами. Невозможно написание сервисов и системных приложений и т.п. список можно продолжить. С# многое из этого списка умеет делать, может - быть кое-что не очень хорошо, но все-таки возможности есть.

И вообще-то никто не разжигает религиозных войн, коллеги достаточно корректно выразили свое мнение по поводу возможностей C++ и С#. Вопрос был задан только об этих языках и скорее всего имелось ввиду програмирование именно для Windows.

MaxNero 02.06.2005 22:28

Я для себя из этого топика, вынес следующее:лучше продолжать совершенствовать с++ и начать изучать с# :)

knight 03.06.2005 02:59

Цитата:

/7y3uK:
Ага этот топик для миссионера, начинаем проповедь - разжигаем новые религиозные войны
То что написал knight касательно шарпа - есть в Java, причем в гораздо более удобной форме, причем получаем полную кроссплатформенность и независимость от майкрософта в частности... Ну ни как я не могу засчитать слова knightа в плюс шарпу... Таки напишите еще отличий, С# от джавы пожалуйста... А отличия от ЦПП и так понятны уже... но на вопрос "стоит ли учить" ятобы ответить - явно мало информации может стоит учить Java
Честное слово никаких религиозных войн только факты.
Я не пытался сравнить Java с C#. Если уже сравнивать то лучше сравнить подход .Net Framework и Java. Так как C# не более чем язык для реализации конструкций программы. Сравним:
1) Абсолютно точно было указано о трудности взаимодействия COM и JAVA. Чего нельзя сказать о C# и COM (а также любом другом .NET языке)
2) Байткод Java кроссплатформенный безусловно, но при этом код C# тоже потенциально таковым является по крайней мере на это направлен проект MONO, который успешно реализовывает этот тезис в реальную жизнь
3)А теперь о реальных плюсах C# и .Net Framework код написанный с учетом спецификации CLS является переносимым между языками платформы .Net (например между C# и VB.NET или C# и С++.NET). Для достижения этого эффекта не нужно исполнять каких либо сложных операций, которые раньше нужны были, например в технологии COM.
Единая иерархия классов FCL (второе название BCL как вам угодно) доступна из всех языков .NET. То есть я один раз учу иерархию а потом её применяю в любом .NET языке например C#,VB.NET,C++.NET и т.д.
Это то что есть в .Net Framework, но нет в Java
Технология ASP.NET которая позволяет программисту знающему например C# и иерархию BCL выучить только приёмы веб-программирования для написания веб - проектов.


При этом я не хочу сказать, что Java это плохо. Java - это отлично. У каждого в программировании свой путь самое главное, чтобы он приносил соответствующее удовольствие и уровень свободы. Кроме того как мне кажется самое главное научиться думать, а остальное не более чем инструмент. Любой начинающий программист вполне может пойти по одному из двух путей
C -> С++ ->С#
C -> С++ ->Java

И тот и другой путь перспективен.
Всё что написал это не более чем моё мнение -)))

iam_xor 03.06.2005 06:55

в C# нет как таковой прямой работы с памятью всю работу на себя берет GC
C++ заботиться о высвобождении нужно самому

/7y3uK 03.06.2005 11:49

Ну вот, пока не напишешь жестко - ничего не напишете :)
А про религиозные войны и про миссионерство - это я себя имел в виду :)
Кстати то что джава не может работать с комом и дот нетом - это распространенное заблуждение, равно как и с системными апи и интеграцией :) все упирается в SDK - пример - мобильные девайсы... так что вот :) Кстати что вы, уважаемые, можете сказать по поводу дальнейших разработок и поддержки шарпа? Просто я к тому, что вышла 5-ая джава уже, новая технология enterprise java faces и очень много другого - постоянный прогресс и пр., суппорт опен сорс и т.д. и полная бесплатность самой джавы для одинокого программиста :)

PSyton 04.06.2005 16:59

Про C# и c++.
Первый более прикладной (т.е. ориентированый на разработку прикладных приложений пользовательского уровня) и разрабатывать на нем, особенно поесле C++ - просто детский сад. В плане изучения технологий, также проблем нет. НО, низкоуровневые вещи (требующие быстрых вычислений или еще чего, напимер от железа) на нем не реализуешь, а если и реализуешь, то это будет не так быстро и приятно ккак на c++. что до кроссплатформенности, так берите wxWidgets, например и пишите на C++ и будет вам счастье. По скорости это очень быстро и выгладит вполне элегантно. Крики о том что на С++ быстро разработать приложение нельзя, по моему, полная чушь, поэтому это не является аргументом в пользу C#. Разговоры на тему, что вот эта вешь есть стандартно в шарповской библиотеке, а в сишной нет также беспочвенны поскольку очень много людей пишет на C++ и причем довольно давно, и различных библиотек для него просто навалом, надо только поискать.
Про с# и яву
По сути, хоть MS это никогда не подтвердит официально, шарп нагло слизан с сановской явы. Но слизан очень умело (MS в этом преуспела). Во время этого процесса они исправили все недостатки присущие яве и добавили некоторые возможности.
про языки вообще
Если программист достаточно профессионален, то ему важен не язык, на котором написано что-то а технологии которые для этого применены, т.к. сам по себе язык это просто средство выражения идеи. И если данные технологии позволяют ему сделать на яве очень быструю и эффективную вещь, то нет смысла спорить про языки. Например СУБД сибэйс очень шустрая и не скажешь про нее с первого взгляда что она на яве.

knight 05.06.2005 00:34

Microsoft активно толкает технологию .Net Framework . На их сайте висит .Net Framework 2.0 правда в пока в beta.
А насчет бесплатности C# и .Net framework не являются платными, что не может не радовать

Diff 24.06.2005 16:18

Основной недостаток C# - непереносимость и меньшая производительность. Если не смущает - флаг в руки, разработка на нем ощутимо быстрее.

yan_kos 16.07.2005 17:10

Я уже два года пишу на С++ в VS мне лично С# очень непонравился. Первое и самое большое ето отсутствие указателей. Хотя на C# более мение нормально реализованы некоторые вещи. Все таки С# в том виде каком он есть сейчас полний NULL. но задумка неплохая. Как заключенние С++ намного обходит С# почти во всем если не вовсем абсолютно.

cocoa 02.08.2005 18:41

Решил написать:
1. Не стоит вообще сравнивать С++ и С# .... говорить о том что С# "более ООП" - бред полный ... С++ - язык не низкого уровня (тоже давайте не путать), читайте Страуструпа. Если кто-то говорит что С++ язык низкого уровня а С# высокого поскольку работает с .NET - то давайте тогда смотреть на С++ с точки зрения библиотеки MFC. Каждый язык нужен для конкретных целей (попробуйте написать драйвер на C#), и говорить что какой-то язык победит не стоит.
Я например в програмировании в основном юзаю C, C++, Objective C (mac os). Как-то довольно неплохо справился с портированием C# проги на C++ (нужно было). Впечатление от C# - хорошо сделаный язык, говорить о том что он плохой потому что нет указателей :) ... так ведь указатели в С#, если яправильно в нём разобрался - неявные, так в чём тут проблема и неудобство?
2. С# - мне напоминает Objective С с его Cocoa framework ... почти та-же идея в структуре языка, похожие цели и задачи.

vladislav75 07.02.2006 15:03

Основное преимущество C# - ускоренная разработка, ЗНАЧИТЕЛЬНО более простая отладка (в частности потому что там нет указателей, может потому их там и нет), больше возможностей для автоматизированных средств тестирования из-за более жестких ограничений.
Та же Мелкософт не позиционирует C# как замену C++, она рекламирует .net как "лучшую" (вопрос религиозный) среду исполнения ПО, а под .net на C# удобнее (это только мое мнение и личное сравнение работы с C# и managed c++) работать.
PS. В unmanaged-блоках на C# можно! работать напрямую с памятью и т.п., только это не приветствуется с точки зрения парадигмы программирования под .net

iam_xor 08.02.2006 07:45

c# это просто новое поколение языка которое сочитает в себе гибкость, мощь, удобство и простоту освоения.


Часовой пояс GMT +4, время: 12:58.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.