次の方法で共有


Освой самостоятельно C# за … сколько часов?

 

clip_image001

В этом году я был техническим редактором книги Скотта Дормана (Scott Dorman) “Teach Yourself Visual C# 2010 in 24 Hours” («Освой самостоятельно Visual C# 2010 за 24 часа») и я рад сообщить, что она уже поступила в продажу. Скотт практически полностью переписал эту книгу по сравнению с предыдущим изданием, чтобы сделать ее актуальной с выходом C# 4. Если вы ищите учебник для начинающих, то эта книга является хорошим вариантом. (Я не сильно в восторге от названия; я согласен с Питером Норвигом (Peter Norvig), который говорит, что эта серия должна называться «Освой программирование за десять тысяч часов, поскольку примерно столько нужно на самом деле времени, чтобы стать опытным специалистом в любой области», но, неважно.)

Скотт и команда, занимающаяся выпуском этой книги, попросили меня написать к ней предисловие, которое я и представляю ниже. Если хотите узнать больше, почему мне понравилась эта книга, читайте далее.

*****

Более десяти лет назад, небольшая команда проектировщиков встретилась в маленькой комнате на втором этаже здания номер 41 компании Microsoft, чтобы создать совершенно новый язык программирования – язык C#. Основными принципами, заложенными в этом языке, были простота, узнаваемость, безопасность и практичность. Конечно, между всеми этими принципами нужно найти правильный баланс; не один из них не является абсолютным. Проектировщики хотели создать язык, простой для понимания, но не упрощенный; язык, знакомый программистом С++ и Java, но не являющимся простой копией одного из них; безопасным по умолчанию, но без чрезмерных ограничений; практичным, но не забывающим о дисциплине; последовательным и теоретически правильно спроектированным.

После многих месяцев обдумывания, проектирования, разработки, тестирования и документирования, язык C# 1.0 был выпущен в свет. Это был достаточно простой объектно-ориентированный язык. Многие аспекты его дизайна были тщательно продуманы для того, чтобы объекты могли объединяться в независимые компоненты с поддержкой версионности, но фундаментальные концепции языка были почерпнуты из идей, появившихся в объектно-ориентированных и процедурных языках в 1970-х годах и ранее.

Команда проектировщиков языка продолжила встречаться трижды в неделю в той же самой комнате на втором этаже, продолжая работать над тем прочным фундаментом, созданным языком C# 1.0. В сотрудничестве коллегами из Microsoft Research Cambridge и командой CLR, офисы которых располагались через дорогу, они расширили систему типов для поддержки параметрического полиморфизма с помощью обобщенных типов и методов. Они также добавили «блоки итераторов» (iterator blocks) (в других языках иногда называемые «генераторами») для упрощения создания «перечислимых» коллекций, а также анонимные методы. Обобщения и генераторы впервые были применены в таких ранних языках программирования, как CLU и Ada в 1970-х – 1980-х годах; идея встраивания анонимных методов в существующий метод уходят корнями во времена образования современной компьютерной науки в 1950-е.

Язык C# 2.0 был значительным шагом вперед по сравнению со своим предшественником, но команда проектировщиков все еще не была удовлетворена этим. Они продолжили встречаться в той же самой переговорной на том втором этаже трижды в неделю. В этот раз они думали над фундаментальными вещами. Традиционные «процедурные» языки хороши при реализации базовых алгоритмов, но проблемы, с которыми сталкиваются современные разработчики, идут значительно дальше, нежели добавление колонки со средним значением. Они поняли, что программисты манипулируют данными путем комбинирования относительно простых операций сложным образным. Операции обычно включают сортировку, фильтрацию, группировку, объединение и получение проекций на коллекциях данных. Концепция синтаксического паттерна для «выражений запросов», которые кратко описывают такие операции, изначально были разработаны в функциональных языках, таких как Haskell, но прекрасно работают в более императивных языках, таких как C#. Так родился LINQ – Язык интегрированных запросов (Language Integrated Query).

После десяти лет встреч по шесть часов в неделю, которые проходили в одной и той же переговорной, необходимость в телеконференции с другой командой вынудили перенести место встреч на пятый этаж. Команда проектировщиков языка оглянулась назад на последние десять лет, чтобы увидеть реальные проблемы, которые нормально не решены языком, определить «шероховатости» языка и т.п. Увеличение потребности во взаимодействии с современными динамическими языками и устаревшими объектными моделями привели к созданию новых возможностей языка, таких как «динамический» тип (dynamic type) в языке C# 4.0.

Я понял, что может быть отличной мыслью сделать краткий обзор развития языка C# здесь, в предисловии, поскольку этого однозначно не будет сделано в этой книге. И это хорошо! Авторы книг для новичков часто излагают материал в той последовательности, в которой они сами изучали этот язык, что, чаще всего соответствует порядку добавления тех или иных возможностей в этот язык. Что мне особенно нравится в этой книге, так это то, что Скотт выбрал разумный порядок для изучения каждой возможности, переходя от базовых понятий арифметических вычислений к достаточно сложным взаимосвязанным частям. Более того, его примеры действительно являются реальными, и остаются при этом достаточно ясными и простыми, чтобы их описание вместилось в несколько абзацев.

Я сосредоточился здесь на эволюции языка C#, но, конечно же, эволюция одного языка не показывает историю индустрии в целом. Язык – это всего лишь инструмент, который вы используете для доступа к возможностям среды исполнения и библиотекам, которые сами по себе являются сложными темами. Еще одна вещь, которая мне нравится в этой книге – это то, что в ней не делается акцент только лишь на язык, повествование скорее строится на изученных ранее концепциях языка для объяснения того, как можно воспользоваться мощью, предоставляемой наиболее часто используемыми типами библиотеки базовых классов.

Как показал мой краткий исторический экскурс языка, здесь есть много чего, что нужно выучить, даже глядя исключительно на сам язык. Я использовал язык C# в течение 10 лет и был его проектировщиком в течении 5 лет, и я все еще нахожу новые факты, касающиеся этого языка, и каждый день изучаю новые приемы программирования. Я надеюсь, что ваши первые двадцать четыре часа программирования на C#, описанные в этой книге, послужат стартовой точкой для десятилетия практического программирования и постоянного изучения. А команда проектировщиков языка все еще встречается шесть часов в неделю, пытаясь понять, что же будет дальше; я с нетерпением жду новых открытий.

Эрик Липперт,
Сиетл, Вашингтон

Оригинал статьи

Comments

  • Anonymous
    January 07, 2011
    Хочу эту книгу! Я так понял, что эта книга не для "Чайников", я не смогу ее советовать для изучения студентам которые только начинают программировать. А с чего это предисловие подписал Эрик Липперт?

  • Anonymous
    May 14, 2012
    А разве это не его блог (пусть и перевод)?

  • Anonymous
    June 09, 2012
    За 24 часа не то что выучить язык, с синтаксисом познакомиться не реально.