![]() |
отличия C# и C++
хотелось бы услышать основные преимущества и недостатки этих двух языков, и вообще чем полезен C#, является ли он перспективным языком программирования, т.е. стоит ли на него переходит, что он собой представляет... для чего вообще этот язык, т.е. он больше подходит для net-кодинга или(и) для разработки обычных программ...
|
С# не перегружен технической составляющей при создании приложений в Виндоуз. C# полностью классово-ориентированный язык.
|
respy
мелкософт, всячески этого добивается, чтобы переходили c# имхо только .net использует, т.е. нужен Framework SDK для написания прог на C# |
Собственно если по простому - основное отличие в том, что C++ системно ориентированый язык, т.е. он более низкоуровневый... а шарп он неплохо идет для Web applications... на сколько мне известно :)
|
C++ и C# совершенно разные языки. c# довольно похож на java, c++ - это c + OO. Каждый хорош для своих целей. c# подходит
для всего (теоретически), но и ежу понятно что он медленнее чем C++. IMHO Язык перспективен т.к. его пихает MS и к тому же есть открытая разработка под linux - http://www.mono-project.com/Main_Page |
Цитата:
Цитата:
|
согласен на 100%
Цитата:
|
Давайте попробуем сравнить C# и C++ с точки зрения аппарата программирования. В C# реализовано многое количество вещей , которые либо отсутствуют в C++, либо имитируются специальным образом. Например в C# выделено понятие интерфейса и абстрактного класса( в частности самое понятие интерфейса очень важно при программирование под .NET Framework), в явную выделено понятие свойств,запрещено множественное наследование от классов (зато можно наследоваться от интерфейсов),деструктор играет незначительную роль,
есть например понятие static конструктора. Понятие указателя присутствует но только для неуправляемого кода и т.д. Аппарат ООП C# мне понравился.Он более как мне кажется продуманный нежели в C++. Правда программы написанные на C# таки - да более тормознутые чем на C++. Написание Windows - приложений с использованием Windows - Forms проще чем на MFC или тем более Win32API (безусловно имеется в виду интерфейсная часть ), при этом нужно признать для доступа ко многим возможностям необходимо импортировать WIN32API. Как мне кажется у этого языка есть безусловное светлое будущее ведь сам Microsoft его поддерживает. Если обобщить как мне кажется программисту нужно будет знать и C++ и C#. Причем если рекомендовать последовательность изучения стартовать лучше с C,C++ и только потом C# |
Ага :молись: :молись: этот топик для миссионера, начинаем проповедь - разжигаем новые религиозные войны :ржать:
То что написал knight касательно шарпа - есть в Java, причем в гораздо более удобной форме, причем получаем полную кроссплатформенность и независимость от майкрософта в частности... Ну ни как я не могу засчитать слова knightа в плюс шарпу... Таки напишите еще отличий, С# от джавы пожалуйста... А отличия от ЦПП и так понятны уже... но на вопрос "стоит ли учить" ятобы ответить - явно мало информации :) может стоит учить Java |
Из джавы весьма затруднительно общатся с другими приложениями (написанными не на джаве) и многими системными ресурсами. То же самое и в обратную сторону, из Win приложения очень трудно узнать что творится в джава приложении, то-есть возможности интеграции нулевые. Практически не возможно работать с СOM компонентами. Невозможно написание сервисов и системных приложений и т.п. список можно продолжить. С# многое из этого списка умеет делать, может - быть кое-что не очень хорошо, но все-таки возможности есть.
И вообще-то никто не разжигает религиозных войн, коллеги достаточно корректно выразили свое мнение по поводу возможностей C++ и С#. Вопрос был задан только об этих языках и скорее всего имелось ввиду програмирование именно для Windows. |
Я для себя из этого топика, вынес следующее:лучше продолжать совершенствовать с++ и начать изучать с# :)
|
Цитата:
Я не пытался сравнить 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 И тот и другой путь перспективен. Всё что написал это не более чем моё мнение -))) |
в C# нет как таковой прямой работы с памятью всю работу на себя берет GC
C++ заботиться о высвобождении нужно самому |
Ну вот, пока не напишешь жестко - ничего не напишете :)
А про религиозные войны и про миссионерство - это я себя имел в виду :) Кстати то что джава не может работать с комом и дот нетом - это распространенное заблуждение, равно как и с системными апи и интеграцией :) все упирается в SDK - пример - мобильные девайсы... так что вот :) Кстати что вы, уважаемые, можете сказать по поводу дальнейших разработок и поддержки шарпа? Просто я к тому, что вышла 5-ая джава уже, новая технология enterprise java faces и очень много другого - постоянный прогресс и пр., суппорт опен сорс и т.д. и полная бесплатность самой джавы для одинокого программиста :) |
Про C# и c++.
Первый более прикладной (т.е. ориентированый на разработку прикладных приложений пользовательского уровня) и разрабатывать на нем, особенно поесле C++ - просто детский сад. В плане изучения технологий, также проблем нет. НО, низкоуровневые вещи (требующие быстрых вычислений или еще чего, напимер от железа) на нем не реализуешь, а если и реализуешь, то это будет не так быстро и приятно ккак на c++. что до кроссплатформенности, так берите wxWidgets, например и пишите на C++ и будет вам счастье. По скорости это очень быстро и выгладит вполне элегантно. Крики о том что на С++ быстро разработать приложение нельзя, по моему, полная чушь, поэтому это не является аргументом в пользу C#. Разговоры на тему, что вот эта вешь есть стандартно в шарповской библиотеке, а в сишной нет также беспочвенны поскольку очень много людей пишет на C++ и причем довольно давно, и различных библиотек для него просто навалом, надо только поискать. Про с# и яву По сути, хоть MS это никогда не подтвердит официально, шарп нагло слизан с сановской явы. Но слизан очень умело (MS в этом преуспела). Во время этого процесса они исправили все недостатки присущие яве и добавили некоторые возможности. про языки вообще Если программист достаточно профессионален, то ему важен не язык, на котором написано что-то а технологии которые для этого применены, т.к. сам по себе язык это просто средство выражения идеи. И если данные технологии позволяют ему сделать на яве очень быструю и эффективную вещь, то нет смысла спорить про языки. Например СУБД сибэйс очень шустрая и не скажешь про нее с первого взгляда что она на яве. |
Microsoft активно толкает технологию .Net Framework . На их сайте висит .Net Framework 2.0 правда в пока в beta.
А насчет бесплатности C# и .Net framework не являются платными, что не может не радовать |
Основной недостаток C# - непереносимость и меньшая производительность. Если не смущает - флаг в руки, разработка на нем ощутимо быстрее.
|
Я уже два года пишу на С++ в VS мне лично С# очень непонравился. Первое и самое большое ето отсутствие указателей. Хотя на C# более мение нормально реализованы некоторые вещи. Все таки С# в том виде каком он есть сейчас полний NULL. но задумка неплохая. Как заключенние С++ намного обходит С# почти во всем если не вовсем абсолютно.
|
Решил написать:
1. Не стоит вообще сравнивать С++ и С# .... говорить о том что С# "более ООП" - бред полный ... С++ - язык не низкого уровня (тоже давайте не путать), читайте Страуструпа. Если кто-то говорит что С++ язык низкого уровня а С# высокого поскольку работает с .NET - то давайте тогда смотреть на С++ с точки зрения библиотеки MFC. Каждый язык нужен для конкретных целей (попробуйте написать драйвер на C#), и говорить что какой-то язык победит не стоит. Я например в програмировании в основном юзаю C, C++, Objective C (mac os). Как-то довольно неплохо справился с портированием C# проги на C++ (нужно было). Впечатление от C# - хорошо сделаный язык, говорить о том что он плохой потому что нет указателей :) ... так ведь указатели в С#, если яправильно в нём разобрался - неявные, так в чём тут проблема и неудобство? 2. С# - мне напоминает Objective С с его Cocoa framework ... почти та-же идея в структуре языка, похожие цели и задачи. |
Основное преимущество C# - ускоренная разработка, ЗНАЧИТЕЛЬНО более простая отладка (в частности потому что там нет указателей, может потому их там и нет), больше возможностей для автоматизированных средств тестирования из-за более жестких ограничений.
Та же Мелкософт не позиционирует C# как замену C++, она рекламирует .net как "лучшую" (вопрос религиозный) среду исполнения ПО, а под .net на C# удобнее (это только мое мнение и личное сравнение работы с C# и managed c++) работать. PS. В unmanaged-блоках на C# можно! работать напрямую с памятью и т.п., только это не приветствуется с точки зрения парадигмы программирования под .net |
c# это просто новое поколение языка которое сочитает в себе гибкость, мощь, удобство и простоту освоения.
|
| Часовой пояс GMT +4, время: 12:58. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.