C++, C#, C?
Рассмотрим сначала, без лишних слов, два примера:
namespace HW; using System; class HW { static void Main(String[] args) { Console.WriteLine("Hello World!"); } } package HW; import java.lang.* class HW { public static void main(String[] args) { System.out.println("Hello World!" } }
Ну что, найдете 10 отличий? С трудом: Как видим, тенденция сближения различных языком программирования здесь проявляется как нигде отчетливо. Первый пример написан на новом языке C#, разработанном фирмой Microsoft, второй - на старой доброй Java.
Язык C# был выпущен в середине 2000 года группой программистов компании Microsoft под руководством небезызвестного в програмистских кругах человека Anders Hejlsberg. Того самого, кто создал Turbo Pascal и Delphi.
Хотя это и не признается официально, но язык C# явно создавался как альтернатива и как прямой конкурент Java. Это отчетливо видно как из приведенных примеров, так и из более детального анализа структуры двух языков.
Главная особенность нового языка (как и основное его достоинство) - это обилие средств для разработчика приложений - простой доступ к компонентам и низкоуровневым библиотекам платформы Win32, возможность использования системы обмена сообщениями с объектами и компонентами на базе XML и протокола SOAP.
Основой языка является, несомненно, C++. Однако, некоторые детали были позаимствованы из языка Java, как то пространства имен etc. Еще одно перекочевавшее из Java достоинство, это система автоматического управления памятью. На систему возложены функции выделения памяти для различных классов, и ее освобождения после прекращения использования классов. Реализация интерфейсов в C# идентична реализации в языке Java.
Следующие возможности были взяты из старых языков программирования, например, из Паскаля. Первая - четкая типизация переменных. При описании переменной необходимо указать ее тип, чего не было в С++. Вторая - автоматическая инициализация переменных. Вот этой возможности и нет в Java.
Технологии COM+ и Windows API полностью поддерживаются C#. Так как язык C# сам не содержит библиотек классов, то в нем появилась возможность использования библиотек других систем программирования, разработанных фирмой Microsoft, как, например, Visual Basic.
Но, не все хорошо, как кажется на первый взгляд. Первый, самый значительный недостаток - полное отсутствие кроссплатформенности, то есть программы на C# могут быть использованы только в системах на основе Win32.
Второй недостаток - в среде исполнения, роль которой играет IL Common Language Runtime. Виртуальная машина Java имеет достаточную производительность, и неизвестно, будет ли выше эффективность первой. Ну, и третье - Java обладает значительно большим количеством средств для разработки многопоточных приложений.
Системные требования: пока доступна версия только под Windows 2000. Обязательно наличие IIS, Internet Explorer 5.5 и библиотеки MDAC 2.6. Пакет можно загрузить с сайта Microsoft: http://msdn.microsoft.com/code/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml
Каковы же перспективы этого хорошего начинания? Java, на сегодняшний день является стандартом, и этого не может отрицать даже Microsoft. И последним понадобится много времени, сил и денег для продвижения своего C# в качестве нового открытого стандарта. А для этого необходимо устранить вышеприведенные недостатки, что, конечно, сводит шансы на продвижение к минимуму.
Оставить комментарий
Комментарии
Кросплатформенность пожалуй единственное достоинство С#, хоть и не реализовано еще в полной мере
2 достоинство - очень мало кода надо писать и можно быстро состряяпать маленькую программулину + он довольно простой в сравнении с С/С++ за счет сборщика мусора дин памяти, хотя говорят не всегда корректно работает
2. Бреда и правда много
3. Под виндой 98 все прекрасно работает после установки .Net рантайма. Лично проверено.
То что требуется IIS - откровенный бред.
2. Моно дотнет для Линукса уже почти догоняет Майкрософтовский. Кстати, там есть функционал которого в Майкрософтовсоком нет.
3. Человек не столько не разобрался в том что такое С# сколько не понял что такое .НЕТ
Одна только заявочка что С# использует библиотеку от Вижуал Бэйсика чего стоит!
Интересно, зачем такие статьи публикуют?
По-моему в C++ концепция простанства имен присутсвует с незапамятных времен. Читайте Бьярна Страуструпа, батенька.
Опять же, наверно Вы говорили про PHP или Perl? Как это в С++ нет строгой типизации? Хммм. Рррр.
Обязательно наличие IIS, Internet Explorer 5.5 и библиотеки MDAC 2.6 - бред... прекрасно работает и на 98ой голой винде...