Это первый выпуск рассылки "Профессинальное программирование на .NET".
Небольшое введение.
Платформа .NET предоставляет практически неограниченные возможности по созданию ПО, удовлетворяющего любые потребности. Она объединяет мощь C++ и простоту Visual Basic. Несмотря на то, что создавать программы стало еще легче, по прежнему существуют трудности и особенности, с которыми приходится сталкиваться всем, кто программирует на платформе .NET. Об этом и пойдет разговор в этой рассылке. Я не буду рассказывать об азах языков программирования или приводить описание методов классов библиотеки .NET.
Для этого есть множество книг и MSDN. Я предполагаю, что читатели уже знакомы с основными классами библиотеки .NET и синтаксисом языка C#. Кстати, про C#. Все примеры кода будут представлены именно на нем. Программисты на С++ без труда смогут перейти на использование C#. Но и программистам на Visual Basic я настоятельно рекомендую потратить время на изучение синтаксиса языка C#, которое окупится в будущем. Во-первых, синтаксис C# более элегантен, а возможности наиболее полно приближаются к возможностям
.NET (высокоуровневые языки типа C# или Visual Basic не позволяют использовать 100% возможностей intermediate language (IL). Например, ни в одном из .NET языков, кроме IL ассемблера нет возможности перегрузки методов по типу возвращаемого значения), во-вторых, большинство примеров кода для .NET написано именно на C#, в-третьих, большинство проектов (как коммерческих так и некоммерческих) пишутся на C#. Что касается других .NET языков (J#, Delphi .NET и т.п.) - их распростарненность еще ниже и применение
может быть оправдано только в специфических случаях (например, портирование приложений на .NET). Но, даже, если вы, по каким-то причинам используете в своей работе не C#, это практически не важно - почти все, о чем я буду рассказывать относится к любому .NET языку. Просто вам будет немного сложнее воспринимать код на "неродном" языке.
Кроме .NET мы поговорим о сопутствующих темах - методологиях разработки, инструментах разработчика, соглашениях о кодировании (code convensions), сертификации специалистов, поиске работы и подготовке к собеседованию, будем решать логические задачи.
Итак, давайте начнем первый выпуск.
Инструменты разработчика
В этом разделе я буду рассказывать об инструментах (tools) используемых в работе.
Один из самых полезных инструментов (после Visual Studio, конечно) - Lutz Roeder's .NET Reflector (http://www.aisto.com/roeder/dotnet). Он, подобно утилите ILDASM, входящей в .NET SDK, позволяет дизассемблировать скомпилированный код, но, в отличие от последнего, гораздо удобнее в использовании и умеет создавать не только код на IL языке, но и код на C# и Visual Basic. Использование этого инструмента позволяет лучше понять внутреннюю архитектуру платформы
.NET. Меня всегда интересует вопросы типа "почему?" и "как?" (Почему светит солнце? Как работает насос? И т.п.) На многие "почему" и "как" в .NET можно ответить при помощи .NET Reflector. В таких случаях я буду приводить фрагменты IL кода с комментариями для лучшего понимания. Так что для чтения рассылки .NET Reflector не обязателен. Но вы можете использовать этот инструмент для собственных исследований.
Книги разработчика
Здесь я буду рассказывать про книги которые следует прочитать.
Самая лучшая книга по платформе .NET - это "Программирование на платформе Microsoft .NET Framework" Джеффри Рихтера (Jeffrey Richter, Applied Microsoft .NET Framework Programming). Единственное "но" - книга не для начинающих. Если вы только начинаете программировать - прочтите сначала другую книгу, а потом вернитесь к этой. Здесь вы не найдете азов. Недавно я видел в продаже третье издание (к сожалению, просто переиздание второго. Хотелось бы увидеть новое издание по .NET Framework 2.0). Я постараюсь
не касаться тем, раскрытых в этой замечательной книге, за исключением некоторых, особо важных, случаев.
.NET
Этот раздел - главный. Но сегодня - вводный выпуск и этот раздел пуст.
Логическая задача
Какими качествами должен обладать хороший программист? Я не буду отвечать на этот непростой вопрос. Ясно только, что одно из важнейших качеств - это умение логически мыслить. На многих софтверных фирмах (в том числе в Microsoft) во время первого этапа собеседования предлагают решить логические задачи. Те, кто не справляются, отсеиваются, не попадая на техническое собеседование. Тренируясь в решении логических задач, вы не только подготовитесь к таким собеседованиям, но и разовьете логическое мышление,
которое обязательно пригодится в работе. Пару слов об авторстве. Я люблю решать интересные логические задачи, но никогда не пробовал их придумывать (возможно, когда-нибудь попробую). Поэтому авторство принадлежит не мне. Часто, логические задачи, подобно сказкам, пересказываюся устно. Поэтому установить авторство бывает невозможно. Поэтому, в большинстве случаев, авторство не будет указываться. В тех случаях, когда мне будет известно авторство или первоисточник, я буду их указывать. Для начала приведу
довольно простую задачу.
Имеется 9 совершенно одинаковых с виду бильярдных шаров. Один из шаров тяжелее других. Необходимо при помощи рычажных весов (т.е. имеющих 2 чаши и показывающих, какая чаша тяжелее или легче) найти тяжелый шар, используя не более, чем 2 взвешивания.
Ответ читайте в следующем выпуске.
На сегодня все. Приятного программирования. Да пребудет с вами Великая Сила!