Другие языки программирования и технологии
Чем отличается С# от C++?
C# полностью объектно-ориентированный (нельзя создать отдельно переменную или функцию, всё только через классы) + много классов
Примерно тем же, чем и Java от C++
С# исполняется под виртуальной машиной .NET.
На сравнение синтаксиса много времени уйдет.
По разному работает обработка исключений.
Есть такие моменты как сборка мусора в .NET. Работа с указателями вообще по другому принципу строится.
Правда есть много и схожего. Но, думаю, C# больше все таки сход с Java чем с C++.
В С++ компиляция под конечный процессор, в C# в промежуточный байт-код, и потом в Just-In-Time в нативный по ходу выполнения.
Это совсем разные языки. И у них совсем разные задачи. Хотя есть у MS C++ и под .NET. Смесь нативного и управляемого кода.
Можно еще много написать на эту тему. Но лучше все таки инфу в инете поискать.
С# исполняется под виртуальной машиной .NET.
На сравнение синтаксиса много времени уйдет.
По разному работает обработка исключений.
Есть такие моменты как сборка мусора в .NET. Работа с указателями вообще по другому принципу строится.
Правда есть много и схожего. Но, думаю, C# больше все таки сход с Java чем с C++.
В С++ компиляция под конечный процессор, в C# в промежуточный байт-код, и потом в Just-In-Time в нативный по ходу выполнения.
Это совсем разные языки. И у них совсем разные задачи. Хотя есть у MS C++ и под .NET. Смесь нативного и управляемого кода.
Можно еще много написать на эту тему. Но лучше все таки инфу в инете поискать.
C# - управляемый язык (есть ещё managed C++). Очень похож на Java, тоже есть байт-код,
тоже выполняется на виртуальной машине, тоже есть сборка мусора, тоже нет явного освобождения памяти,
тоже (даже более) объектно-ориентированный. . в общем-то, список гораздо больше, это основное.
тоже выполняется на виртуальной машине, тоже есть сборка мусора, тоже нет явного освобождения памяти,
тоже (даже более) объектно-ориентированный. . в общем-то, список гораздо больше, это основное.
С++ ANSI99(не .NET)
0. С# интерпретируются в MSIL(промежуточный язык в .NET все языки под .NET сначал интерпритируются в него) потом при первом выполнении CLR компилирует в машинный кодсоответсвующей архитектуры. В теории такой подход даёт сильную оптимизацию машинного кода под соответсвующую архитектуру на практике подтверждений, что это как-то улучшает работу не встречал.
1. В С++ есть понятия union (объединения) - в С# такого нет
Это к плюсом плюсов отнести не могу, т. к. ни разу не использовал и не буду.
2. В С++ поддерживается множественное наследование классов в С# множественного наследования нет. В С# есть множественно насследование интерфейсов ( то же самое, что и класс со всеми чисто виртуальными методами (vitual void func()=0) в шарпе ключевое слово abstract)
3. В С++ есть friend методы и классы. Опять же ни разу не использовал
4. В С# все типы-структуры или классы ну и т. д. , свободных методов нет
5. Все типы в .NET, а значит и в C#, в методанных содержат полную информацию о себе, поэтому их очень легко дизасемблировать.
6. В C++ модификатроы доступа пишутся для групп, в С# для каждого поля
7. В С++ поля без модификатора ( в самом начале) описания типа по умолчанию private для классов, public для struct и union. В С# вроде для всех private :)))
8.В С++ происходит прямая работа с памятью, в C# можно забыть о том, что любой тип что-то занимает в памяти ( работает GC Garbage Collector) это ведёт к наплеванию на экономию ресурсов у программеров.
9. В С# все типы наследники ValueType расположенны в стеке, остальные в управляемой куче. В C++ как расположишь.
10. В .NET Модель событий основанна на делегатах, что ну просто мега удобно, в С++ messagemap, что гораздо менее удобно.
11. В С# 3.0 упрощенна работа со свойствами просто пишешь public String prop{get;set;}, а потом это счастье компиляется в
private String _prop
public String prop
{
get {return this._prop;}
set {this._prop=value;}
}
Т. о. пока мудростей нет можно сделать автоматическое свойство, потом в это свойство добавить какую-нибудь логику, при этом никто использующий тип даже и не заметит.
12. В С# 3.0 поддержка LINQ. В кратце можно с помощью этой чтуки сделать запрос к любым поддерживаем источникам (XML, SQL Server, Oracle, Sqlite(надо скачивать и ставить. )
13. В С# 3.0 поддержка расширяемых методов и любда выражений
14. В С++ есть шаблоны, в С# Generic-и. Из-за особеноостей компиляции С# тут явно в выигрыше.
15. ..
Всё что умеет или не умеет C# умеет или не умеет C++(кроме нюансов со структурами и union) под .NET, правда С++ это исключтиельный язык в одном проекте может быть как и managment C++, так и ANSI99 C++
Итог: С++ конечно круто, но я больше люблю C#, на нём быстрее и понятнее
0. С# интерпретируются в MSIL(промежуточный язык в .NET все языки под .NET сначал интерпритируются в него) потом при первом выполнении CLR компилирует в машинный кодсоответсвующей архитектуры. В теории такой подход даёт сильную оптимизацию машинного кода под соответсвующую архитектуру на практике подтверждений, что это как-то улучшает работу не встречал.
1. В С++ есть понятия union (объединения) - в С# такого нет
Это к плюсом плюсов отнести не могу, т. к. ни разу не использовал и не буду.
2. В С++ поддерживается множественное наследование классов в С# множественного наследования нет. В С# есть множественно насследование интерфейсов ( то же самое, что и класс со всеми чисто виртуальными методами (vitual void func()=0) в шарпе ключевое слово abstract)
3. В С++ есть friend методы и классы. Опять же ни разу не использовал
4. В С# все типы-структуры или классы ну и т. д. , свободных методов нет
5. Все типы в .NET, а значит и в C#, в методанных содержат полную информацию о себе, поэтому их очень легко дизасемблировать.
6. В C++ модификатроы доступа пишутся для групп, в С# для каждого поля
7. В С++ поля без модификатора ( в самом начале) описания типа по умолчанию private для классов, public для struct и union. В С# вроде для всех private :)))
8.В С++ происходит прямая работа с памятью, в C# можно забыть о том, что любой тип что-то занимает в памяти ( работает GC Garbage Collector) это ведёт к наплеванию на экономию ресурсов у программеров.
9. В С# все типы наследники ValueType расположенны в стеке, остальные в управляемой куче. В C++ как расположишь.
10. В .NET Модель событий основанна на делегатах, что ну просто мега удобно, в С++ messagemap, что гораздо менее удобно.
11. В С# 3.0 упрощенна работа со свойствами просто пишешь public String prop{get;set;}, а потом это счастье компиляется в
private String _prop
public String prop
{
get {return this._prop;}
set {this._prop=value;}
}
Т. о. пока мудростей нет можно сделать автоматическое свойство, потом в это свойство добавить какую-нибудь логику, при этом никто использующий тип даже и не заметит.
12. В С# 3.0 поддержка LINQ. В кратце можно с помощью этой чтуки сделать запрос к любым поддерживаем источникам (XML, SQL Server, Oracle, Sqlite(надо скачивать и ставить. )
13. В С# 3.0 поддержка расширяемых методов и любда выражений
14. В С++ есть шаблоны, в С# Generic-и. Из-за особеноостей компиляции С# тут явно в выигрыше.
15. ..
Всё что умеет или не умеет C# умеет или не умеет C++(кроме нюансов со структурами и union) под .NET, правда С++ это исключтиельный язык в одном проекте может быть как и managment C++, так и ANSI99 C++
Итог: С++ конечно круто, но я больше люблю C#, на нём быстрее и понятнее
Похожие вопросы
- Чем отличаются между собой C, C# и C++ ?
- Чем отличается Java от C# по.. . назначению? Что такого можно писать в Java, чего нельзя в C# и наоборот?
- чем отличается java от c++
- Чем же отличаются C C++ и C# от друг друга
- pascal и c++. Как сильно и чем паскаль отличается от C++? Какой компилятор самый удобный для C++?
- Чем отличается C# от С и C++
- C# - это объектно ориентировочный язык программирования? Чем он отличается от C++? Для каких ОС его лучше использовать?
- На каком языке лучше начать учить Windows Forms: C++ или C# ? и чем вообще WindowsForms отличается от WinAPI ??
- Чем отличается c# от c++?
- Учусь програмировать на C++ по книге "C++ для чайников".Проблема.
2) По-моему это вообще самый большой минус C#, т. к. без множественного наследования вообще некуда (например, накрываются потоки воода вывода, которые наследую одновременно от потоков ввода и потоков вывода)
3) friend`ы очень полезны. Без них, скажем не реализуешь по-хорошему оператор, у которого данный класс правый операнд.
8) Кто-то из великих сказал: "Лучше всего сборка мусора реализована в тех языках, в которых нет мусора. Например в C++".
14) Про generic я не знаю, но не могу представить, что можно создать что-то более гибкое изящное и применимое, чем шаблоны C++
15) C++ это не майкросовтовское фуфло, это язык, у которого есть Стандарт, что относят к его основным преимуществам. И когда в следующем году выйдет новый Стандарт, которого все так ждут, C++ оставит все C#, и т. п. далеко позади, впрочем им и сейчас до него далеко.
Завидую.