Другие языки программирования и технологии

В чем отличие С++ от С, С#, и С#.Net и какое отношение к ним имеет Sharp

Вопрос ко всем, кто более или менее прилично знает все вышеозначенные языки.
Пожалуйста, самые основные различия. Различается ли в них синтаксис простейших алгоритмических конструкций? А как насчет наследования? Есть ли в них, например, такая возможность С++, как перегрузка функций?
В книге по С++, по которой я знакомился с основами этого языка (П. Франка, С++ для начинающих) говорилось, например, что в С нет возможности передачи параметров по ссылке, но есть возможность работать с указателями.
И еще. Имеет ли смысл изучать С, если есть С++?
И еще. Во времена, когда я вообще почти ничего не смыслил в программировании, т. е. где то полтора года назад, я слышал о существовании некоего языка Sharp, особо крутого, на котором даже можно командой из десятка хороших программистов за две недели разработать пакет программ, полностью аналогичный MS Office. Насчет последнего сильно сомневаюсь, но хотелось бы узнать, что это за язык такой. Может быть, это тоже разновидность С?
С это подмножество С++. То есть изучив С++ вы должны без проблем понимать С.

Грубо говоря С++ это улучшение С (оттуда и два плюса) приносящее объектно-ориентированное программирование, перегрузку, виртуальные функции, потоки, ссылки (&),несколько видов определения типа (включая на лету) , динамическое выделение памяти.
Из минусов можно отметить уменьшение читабельности кода и как следствие нововведений б'ольшую потребность в ресурсах для тех же алгоримов, но реализованных на С.

Тем не менее язык С/С++ это язык уникальный - среднего уровня. Он сочетает высокую скорость выполнения, возможность работы с ассемблером и работу с аппаратурой на прямую, при значительно меньшей сложности чем программирование на ассемблере напрямик. Как недостаток нужно немного больше понимать, чтобы уметь (не во вред) распоряжаться этой силой)

C и C++ созданы в основном для работы на системах UNIX и отличаются высокой переносимостью кода. Эти языки наряду с ассемблером - идеально подходят для создания скоростных, комплексных программ и многие операционные системы (включая линукс и венду) , комплексные программы и сложные 3Д движки написаны НА НИХ.

С имеет смысл просмотреть после изучения С++ -а именно его последний стандарт С99. С до сих пор широко распространен. Только не среди вендовых псевдопрограммеров.

С# он же С Sharp это язык созданный мелкософтом и >ничего общего с предыдущими (за исключением схожего синтаксиса) не имеет<. Он, подобно Java, интерпретируется с помощью MSIL и без него нигде не работоспособен. Он не поддерживает многие -опасные- функции, имеет свой сборщик мусора и напоминает скорее visual basic. Его сфера - написание относительно простых --при-ложений- для венды и на платформах на которых венда работает (или существует порт интерпретатора) , преимущественно использующих работу с интерфейсом, диалогами, логическими операциями итд. Delphi это еще один схожий язык от Sybase.

Практически при равных навыках, для простого проекта (без межплатформенности, скорость не критична) написание программы на С/С++ и ее дебаженье займет значительно больше времени, чем на С#

Из личного опыта это и приводит к тому что многие программы, созданные на С#, не просто уступают в функциональности к С/С++ но и намного примитивнее и ошибочнее. Виновата ЛЕНЬ авторов, не желание изучать и улучшать - такова цена "прогресса". С/С++ буквально закаливает - показывает в человеке все его ошибки, где С# сам их находит и пытается замять (например memory leaks. Но конечно всему есть пределы) .

Еще раз - удел С# быстрое создание прикладных программ в среде win32/64, не более.

К слову MSIL и VisualStudio.NET написаны на С++.

Википедия (особено английская) имеет шикарные статьи по этим языкам, туда я вас и направляю.)
Виктор Медведев
Виктор Медведев
30 330
Лучший ответ
В шарпе есть наследование (но не множественное) , перегрузка функций, передача параметров по ссылке, возможность работать с указателями.. . А в C++ нет автоматической сборки мусора, больше про него ничего не знаю и знать после такой подставы ничего про него не хочется :) C++ сейчас используется для написания в основном драйверов и просто прог, которые смогут работать на старых компьютерах, чтоб побольше пользователей мелкого пошиба их напоупало, имхо, конечно.
>Его сфера - написание относительно простых --при-ложений- для венды
Ну.. . Это, мягко говоря, спорно.
Алексей Щукин
Алексей Щукин
5 009
А что такое сборщик мусора? Я так понимаю, что когда в С++ Builder приложение под Винду, допустим, я создаю перо, под него выделяется дескриптор.. . Потом я этим пером что то рисую на форме, скажем, функцией АПИ SETPIXEL, и потом оно уже может мне больше и не нужно, допустим, я вообще выгрузил ту форму, где это перо применялось.. . Но если я не уничтожил также и перо, то его дескриптор будет занят, это называется утечка дескрипторов.. . И сверх того, память будет занято, это называется утечка памяти.. .
Сборщик мусора связан с этим? Интуиция подсказывает, что он, наверное, должен заботиться о подобных вещах.. .
лутше Microsoft Visual C++ 6.0