|
Программирование >> Перегруженные имена функций и идентификаторы
Конечно же, не смогли обойтись без автоматического сборщика мусора, так что в C#, так же как и в Java, не требуется беспокоиться об удалении памяти из-под объектов. Тем не менее, введена такая возможность, под названием unsafe code , используя которую можно работать с указателями напрямую. Появился тип object с понятными последствиями: все типы (включая типы значения ) являются потомками object. Между bool и integer нет кастинга по умолчанию. Тип char - это Unicode символ (так же, как и в Java). Есть поддержка настоящих многомерных массивов (а не массивов массивов). В отличие от Java, в C# выжил оператор goto. Появился оригинальный оператор foreach: static void WriteList(ArrayList list) { foreach (object o in list) Console.WriteLine(o); который позволяет обойти контейнер. Есть еще два интересных оператора: checked и unchecked. Они позволяют выполнять арифметические операции с проверкой на переполнение и без него. Существует поддержка многопоточности при помощи оператора lock. Отсутствует множественное наследование - вместо него, как и в Java, добавлена поддержка интерфейсов. Кстати сказать, структуры теперь совсем не тоже самое, что и классы. В частности, структуры не могут быть наследованы. Добавлена поддержка свойств (property). На языковом уровне введена поддержка отклика на события. Введены определяемые пользователями атрибуты для поддержки систем автодокументации. Кардинальное отличие от Java - наличие компилятора в машинный код. То есть, можно предположить, что программы на C# будут выполняться несколько быстрее, чем написанные на Java. Вообще, можно говорить о том, что Microsoft учла традиционные нарекания в сторону Java в своем новом языке. В частности, оставлена от C++ перегрузка операторов. Компания Microsoft утверждает, что создала язык для написания переносимых web-приложений и старается всячески показать свою собственную активность в этом направлении. В частности, компания Microsoft направила запрос на стандартизацию C#. В принципе, ясно, зачем все это нужно. Компании Microsoft, несомненно, понадобился свой язык программирования такого же класса, как и Java. Пускать же Java к себе в Microsoft никто не намеревался, вот и получился C#. Понятно, что в данном случае язык программирования сам по себе представляет достаточно малую ценность, в силу того что Java хороша своей переносимостью, а переносимость ей гарантирует мощная и обширная стандартная библиотека, употребляя которую нет надобности вызывать какие-то системно-или аппаратно-зависимые фрагменты кода. Поэтому на текущий момент ничего определенного сказать о судьбе C# нельзя - хотя бы потому, что у него пока что нет подобной библиотеки. Все же, в ближайшие несколько лет будет очень интересно следить за развитием C# и Java. В принципе, еще недавно представлялось, что уже невозможно вытеснить Java из своей ниши инструмента для относительно простого создания переносимых приложений, но вот, Microsoft решилась на эту попытку. Учитывая то, что в свое время было очевидно главенство Netscape на рынке броузеров, ожидать можно всего. C++ Builder В первую очередь оговоримся, что здесь мы будем рассматривать C++ Builder именно как builder , т.е. программный инструмент класса RAD (Rapid Application Development, быстрое создание приложений) и, в общем-то, большая часть здесь написанного в одинаковой степени применимо ко всем подобным средствам. Итак, C++ Builder облегчает процесс создания программ для ОС Windows с графическим интерфейсом пользователя. При его помощи одинаково просто создать диалог с тремя кнопочками Yes , No , Cancel или окно текстового WYSIWYG редактора с возможностью выбора шрифтов, форматирования, работы с файлами формата rtf. При этом C++ Builder автоматически создает исходный текст для пользовательского интерфейса: создает новые классы, объекты, добавляет необходимые переменные и функции. После всего этого рисование пользовательского интерфейса превращается, буквально, в наслаждение для эстетов: сюда добавим градиент, здесь цвет изменим, тут шрифт поменяем, а сюда мы поместим картинку. После того, как вся эта красота набросана, наступает менее привлекательная работа - написание функциональной части. Тут C++ Builder ничем помочь не может, все приходиться делать по старинке, позабыв про манипулятор мышь и касаясь исключительно клавиатуры. Итог?.. Как обтчно: красота неписанная на экране. Этих программ, которые рисовали эстетствующие программисты в настоящее время видимо-невидимо, ими можно любоваться, распечатывать картинки с экрана и делать из них художественные галереи... Что же тут плохого? Ничего, если не считать того, что при таком подходе к программированию создание программного продукта начинает идти не от его внутренностей (функционального наполнения), а от пользовательского интерфейса и в итоге получается, если наполнение достаточно сложное (сложнее передачи текста от одного элемента пользовательского интерфейса другому), то оно становится не только системнозависимым, но и компиляторозависимым, что уж абсолютно неприятно. Кроме того, простота рисования пользовательского интерфейса, а, вернее, ненаказуемость (например, объемным программированием) использования всевозможных сложных компонентов скрывает в себе некоторые опасности. Связано это с тем, что создание удобного пользовательского интерфейса это задача сама по себе довольно трудная и требующая особенного образования. При этом всякий уважающий себя программист
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |