1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 3
Текст из файла (страница 3)
Шилдт — обладатель степени магистра вобласти вычислительной техники (университет шт. Иллинойс). Телефон егоконсультационного отдела: (217) 586-4683.ВведениеПрограммисты — такие люди, которым всегда чего-то не хватает: мы без конца ищемспособы повышения быстродействия программ, их эффективности и переносимости.Зачастую мы требуем слишком многого от инструментов, с которыми работаем, особенно,когда это касается языков программирования. Хотя таких языков существует великоемножество, но только некоторые из них по-настоящему сильны. Эффективность языказаключается в его мощности и одновременно — в гибкости. Синтаксис языка должен бытьлаконичным, но ясным. Он должен способствовать созданию корректного кода ипредоставлять реальные возможности, а не ультрамодные (и, как правило, тупиковые)решения. Наконец, мощный язык должен иметь одно нематериальное качество: вызыватьощущение гармонии.
Как раз таким языком программирования и является C#.Созданный компанией Microsoft для поддержки среды .NET Framework, язык C#опирается на богатое наследие в области программирования. Его главным архитекторомбыл ведущий специалист в этой области — Андерс Хейлсберг (Anders Hejlsberg).
C# —прямой потомок двух самых успешных в мире компьютерных языков: C и C++. От C онунаследовал синтаксис, ключевые слова и операторы. Он позволяет построить иусовершенствовать объектную модель, определенную в C++. Кроме того, C# близко связанс другим очень успешным языком: Java. Имея общее происхождение, но различаясь вомногих важных аспектах, C# и Java — это скорее “двоюродные братья”. Например, они обаподдерживают программирование распределенных систем и оба используютпромежуточный код для достижения переносимости, но различаются при этом в деталяхреализации.Опираясь на мощный фундамент, который составляют унаследованныехарактеристики, C# содержит ряд важных новшеств, поднимающих искусствопрограммирования на новую ступень.
Например, в состав элементов языка C# включенытакие понятия, как делегаты (представители), свойства, индексаторы и события. Добавлентакже синтаксис, который поддерживает атрибуты; упрошено создание компонентов за счетисключения проблем, связанных с COM (Component Object Model — модель компонентныхобъектов Microsoft — стандартный механизм, включающий интерфейсы, с помощьюкоторых объекты предоставляют свои службы другим объектам). И еще. Подобно Java языкC# предлагает средства динамического обнаружения ошибок, обеспечения безопасности иуправляемого выполнения программ. Но, в отличие от Java, C# дает программистам доступк указателям.
Таким образом, C# сочетает первозданную мощь C++ с типовойбезопасностью Java, которая обеспечивается наличием механизма контроля типов (typechecking) и корректным использованием шаблонных классов (template class). Более того,язык C# отличается тем, что компромисс между мощью и надежностью тщательносбалансирован и практически прозрачен (не заметен для пользователя или программы).На протяжении всей истории развития вычислительной техники эволюция языковпрограммирования означала изменение вычислительной среды, способа мышленияпрограммистов и самого подхода к программированию.
Язык C# не является исключением.В непрекращающемся процессе усовершенствования, адаптации и внедрения нововведенийC# в настоящее время находится на переднем крае. Это — язык, игнорироватьсуществование которого не может ни один профессиональный программист.18ВведениеСтруктура книгиПри изложении материала о языке C# труднее всего заставить себя поставить точку.Сам по себе язык C# очень большой, а библиотека классов C# еще больше. Чтобыоблегчить читателю овладение таким огромным объемом материала, книга была разделенана три части.Часть I, Язык C#.Часть II, Библиотека языка C#.Часть III, Применение языка C#.Часть I содержит исчерпывающее описание языка C#.
Это самая большая частькниги, в которой описаны ключевые слова, синтаксис и средства программирования,определенные в самом языке, а также организация ввода-вывода данных, обработка файлови директивы препроцессора.В части II исследуются возможности библиотеки классов C#. Одной из еесоставляющих является библиотека классов среды .NET Framework. Она просто поражаетсвоими размерами. Поскольку ограниченный объем книги не позволяет охватитьбиблиотеку классов среды .NET Framework полностью, в части II акцент делается накорневой библиотеке, относящейся к пространству имен System.
Именно эта частьбиблиотеки особым образом связана с C#. Кроме того, здесь описаны коллекции,организация многопоточной обработки и сетевые возможности. Эти разделы библиотекибудет использовать практически каждый, кто программирует на C#.Часть III содержит примеры применения C#. В главе 24 продемонстрированосоздание программных компонентов, а в главе 25 описано создание Windows-приложений сиспользованием библиотеки Windows Forms.
В главе 26 показан процесс разработкипрограммы синтаксического анализа числовых выражений методом рекурсивного спуска(recursive descent parser),Книга для всех программистовДля работы с этой книгой опыта в области программирования не требуется. Если жевы знакомы с C++ или Java, то с освоением C# у вас не будет проблем, поскольку у C#много общего с этими языками. Если вы не считаете себя опытным программистом, книгапоможет изучить C#, но для этого придется тщательно разобраться в примерах,приведенных в каждой главе.Программное обеспечениеЧтобы скомпилировать и выполнить программы из этой книги, необходимоустановить на своем компьютере пакет Visual Studio .Net 7 (или более позднюю версию), атакже оболочку .NET Framework.Программный код - из Web-пространстваИсходный код всех программ, приведенных в книге, можно загрузить с Web-сайта садресом: www.osborne.com.Введение19Что еще почитатьКнига Полный справочник по C# — это “ключ” к серии книг по программированию,написанных Гербертом Шилдтом.
Ниже перечислены те из них, которые могутпредставлять для вас интерес.Новичкам в программировании на C# стоит обратиться к книге■ C#: A Beginner's Guide.Тем, кто желает подробнее изучить язык C++, будут интересны следующие книги:■ C++: A Beginner's Guide■ Полный справочник по C++■ Teach Yourself C++■ C++ from the Ground Up■ STL Programming from the Ground Up■ The C/C++ Programming Annotated ArchivesТем, кто интересуется программированием на языке Java, мы рекомендуем такиекниги:Java 2: A Beginner's GuideПолный справочник по JavaJava 2: Programmer's ReferenceЕсли вы интересуетесь языком С, который является фундаментом всех современныхязыков программирования, обратитесь к книгам■ Полный справочник по С■ Teach Yourself СОт издательстваВы, читатель этой книги, и есть главный ее критик и комментатор.
Мы ценим вашемнение и хотим знать, что было сделано нами правильно, что можно было сделать лучше ичто еще вы хотели бы увидеть изданным нами. Нам интересно услышать и любые другиезамечания, которые вам хотелось бы высказать в наш адресМы ждем ваших комментариев и надеемся на них. Вы можете прислать намбумажное или электронное письмо, либо просто посетить наш Web-сервер и оставить своизамечания там.
Одним словом, любым удобным для вас способом дайте нам знать, нравитсяили нет вам эта книга, а также выскажите свое мнение о том, как сделать наши книги болееинтересными для вас.Посылая письмо или сообщение, не забудьте указать название книги и ее авторов, атакже ваш обратный адрес. Мы внимательно ознакомимся с вашим мнением и обязательноучтем его при отборе и подготовке к изданию последующих книг. Наши координаты:E-mailWWWinfo@williamspublishing.comhttp://www.williamspublishing.comИнформация для писем из:РоссииУкраины20115419, Москва, а/я 78303150, Киев, а/я 152ВведениеПолныйсправочник поЧасть IЯзык C#В части I описаны элементы языка C#. ключевые слова,синтаксис и операторы.
Кроме того, здесь рассмотреныосновные инструменты программирования C#(например, способы организации ввода-вывода исредства получения информации о типе), которыетесно связаны с языком C#.Полныйсправочник поГлава 1Создание языка C#Язык C# — это очередная ступень бесконечной эволюции языков программирования.Его создание вызвано процессом усовершенствования и адаптации, которыйопределял разработку компьютерных языков в течение последних лет. Подобно всемуспешным языкам, которые увидели свет раньше, C# опирается на прошлые достиженияпостоянно развивающегося искусства программирования.В языке C# (созданном компанией Microsoft для поддержки среды .NET Framework)проверенные временем средства усовершенствованы с помощью самых современныхтехнологий.
C# предоставляет очень удобный и эффективный способ написания программдля современной среды вычислительной обработки данных, которая включаетоперационную систему Windows, Internet, компоненты и пр. В процессе становления языкC# переопределил весь “ландшафт” программирования.Назначение этой главы — рассмотреть C# в исторической среде, исследовать мотивыего создания и конструктивные особенности, а также степень влияния на него другихязыков программирования. Описана связь C# со средой .NET Framework.Генеалогическое дерево C#Компьютерные языки существуют не в вакууме. Они связаны друг с другом, причемна каждый новый язык в той или иной форме влияют его предшественники.
В процессетакого “перекрестного опыления” средства из одного языка адаптируются другим, удачнаяновинка интегрируется в существующий контекст, а отжившая конструкция отбрасываетсяза ненадобностью. Примерно так и происходит эволюция компьютерных языков и развитиеискусства программирования. Не избежал подобной участи и C#.Языку C# “досталось” богатое наследство.
Он — прямой потомок двух самыхуспешных языков программирования (C и C++) и тесно связан с не менее успешнымязыком Java. Понимание природы этих взаимосвязей крайне важно для понимания C#.Поэтому знакомство с C# мы начнем с рассмотрения исторической среды этих трех языков.Язык С, или начало современной эпохи программированияНачало современной эпохи программирования отмечено созданием языка С.
Он былразработан Дэнисом Ритчи (Dennis Ritchie) в 1970-х годах для компьютера PDP-11компании DEC (Digital Equipment Corporation), в котором использовалась операционнаясистема UNIX. Несмотря на то что некоторые известные языки программирования, вособенности Pascal, достигли к тому времени значительного развития и признания, именноязык C определил направление сегодняшнего программирования.Язык C вырос из кризиса программного обеспечения 1960-х годов и революционногоперехода к структурному программированию. До структурного программирования многиепрограммисты испытывали трудности при написании больших программ, посколькуобозначилась тенденция вырождения программной логики и появления так называемого“спагетти-кода” (spaghetti code) с большим размером процедур и интенсивнымиспользованием оператора перехода goto.
Такие программы были весьма трудны дляизучения и модификаций. В структурных языках программирования эта проблема решаласьпосредством добавления точно определенных управляющих конструкций, вызоваподпрограмм с локальными переменными и других усовершенствований. Структурныеязыки позволили писать довольно большие программы в приемлемые сроки.Глава 1. Создание языка C#23Хотя в то время уже существовали другие структурные языки, C был первым языком,в котором удачно сочетались мощь, элегантность, гибкость и выразительность. Еголаконичный и к тому же простой в применении синтаксис в совокупности с философией,подразумевающей возложение ответственности на программиста (а не на язык), быстрозавоевал множество сторонников. С точки зрения сегодняшнего дня, этот язык, возможно,несколько трудноват для понимания, но программистам того времени он показалсяпорывом свежего ветра, которого они так долго ждали.