C# — На чем сосредоточиться если программирование это хобби


Содержание

Как освоить как понять программирование

Сразу извиняюсь за то, что может пишу не туда или тему надо создавать в другом разделе.
Мне 26 лет, закончил (ну как сказать закончил — прослушал лекции) технарь на программиста в 20 лет. После окончания в программировании я был почти 0, толку что я отучился никакого. Сейчас хочу освоить язык программирования С#. До этого пробовал и php и С++, Делфи, бейсик. Сколько я не начинал учить программирование, разбираться и грубо говоря дальше «Hello World» дело не уходило, я конечно понимаю как работают функции и тд, но все ровно сколько книжек не читал и примеров не делал все ровно в голове не укладывается, не могу понять и все, чуть более сложный пример и у меня в голове происходит разрыв шаблона (пример приведу ниже). Может программирование это не для меня?? Я читал что программирование требует усидчивости и терпения, времени, которого так мало, может стоит задуматься о смене профессии. Подскажите помогите, может есть какие то способы освоения, простая и понятная литература, сколько я их не читал, в начале все просто а потом уже пздц приехали. Жду серьезных ответов, тролли пусть идут лесом.

15.03.2013, 16:52

Не могу понять как делать задачи на программирование
Недавно Вася начал изучать арифметику. Сложение далось ему легко, а вот с умножением проблемы. Вам.

Как освоить язык С# с нуля
Взяли на работу программистом.Программирование в VisualStudio2008.Знаний языка никаких.

Как эффективнее освоить ООП изучая C#?
Столкнулся с проблемой недостаточных навыков при разработке относительно несложного проекта на C#.

Как быстро можно освоить C# после изучения C++
Здравствуйте! Скажите пожалуйста, если я изучу С++, то за сколько времени смогу изучить С#?

Как понять кусок кода и как лучше пользоваться документацией ?
Здравствуйте! Помогите понять кусок кода, пожалуйста с привязкой к msdn (как ей правильно.

15.03.2013, 19:15 2 15.03.2013, 19:17 3 15.03.2013, 19:19 4

Советую просмотреть видеолекции по программирования, сам просматривал: C#Base, скачивал на рутреккере, очень помогло с ООП разобраться.
В той проге 3 вложенных цикла, т.е. 27 шагов в общем, а значит н увеличивается каждый раз на один 27 раз.
При этом получается примерно такой массив:

01 02 03
04 05 06
07 08 09 это для z=0

10 11 12
13 14 15
16 17 18 это для z=1

19 20 21
22 23 24
25 26 27 это для z=2

Ну и получается: 01+14+27=42
Самая тема для обучения использование точек останова и пошаговое движение по программе, все видно, что,куда и зачем..
Я в школе программирование учил в 1990-94 годах, снова начал учить самостоятельно в 2008 году, что-то начало получаться только через пару месяцев..

15.03.2013, 19:19
15.03.2013, 19:23 [ТС] 5

а почему 1, 3 и 9 раз? почему не 1, 2, 3

Добавлено через 1 минуту
А программу я привел просто для примера

15.03.2013, 19:27 6
16.03.2013, 01:29 7
16.03.2013, 02:33 8

Сразу извиняюсь за то, что может пишу не туда или тему надо создавать в другом разделе.

16.03.2013, 02:58 9
16.03.2013, 11:12 10

Vitall смутил Вас фразой «цикл будет выполняться 1 раз»
Имелось ввиду, после каждого выполнения первого цикла, внутри него второй «успеет» сделать 3 цикла а третий 9.

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

Если Вы не понимаете, какую цель выполняет программа или ее какой то блок — это одно.
Когда не понятно, что задумал программист

Другое дело, если после изучения указанных языков вы не поняли работу циклов.
Тогда, может действительно:

16.03.2013, 14:03 11

А чем ты занимался эти 6 лет?

А если учесть, что учеба заняла ещё 4 года, то получается, что циклы ты должен был изучить 10 (в крайнем случае 9) лет назад. Причем не просто выучить, а заложить на подсознательный уровень.
Моя рекомендация: попробуй самостоятельно поработать с циклами ну где-то недели 2 (это то время, которое нужно на их освоение с нуля). Порешай задачи на циклы, которые есть на нашем форуме в несметном количестве.

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

Все лепили в детстве пирожки из глины, только вот профессиональных кондитеров единицы :)

16.03.2013, 16:41 12
16.03.2013, 19:24 13
24.09.2013, 00:08 14
24.09.2013, 00:35 15
24.09.2013, 08:43 [ТС] 16

я на 101% уверен теперь, что программирование (не считая какой нибудь верстки), а тем более уж написание/создание полезных программ, скриптов и тд — творческая профессия, надо обладать определенным складом ума, мышлением, если конечно тупо зубрить, как стих в детстве, то может толк выйдет лет дэк через 10. nio выше в теме правду написал

Добавлено через 2 минуты
я вот сайтами начал заниматься и исключительно на cms. html, css — нравится, но вот опять же этот php, ну не даются мне функции и циклы, хотя я знаю большинство какие и зачем нужны

24.09.2013, 13:33 17

Язык C# довольно сложен с синтаксической точки зрения. Попробуй разбери, что закрывает «>». Конец цикла for? конец цикла while? конец switch? или конец еще чего нибудь. В том же самом дельфи и бэйсике всё это и многое другое интуитивно и понятно (end if, next, end case, end function и др.).

Поэтому мой вам совет, начните программировать и изучать VBA (Basic) для Excel (ну и заодно и сам Excel).
Когда изучите достаточно хорошо, можете попробовать поискать работу. Работы где требуется Excel со знанием VBA есть.
http://career.ru/vacancy/8295883?query=VBA
http://hh.ru/vacancy/8873778?query=VBA
http://career.ru/vacancy/8884595?query=VBA
http://career.ru/vacancy/8887615?query=VBA

Главное сильно не расстраивайтесь, если на первом же собеседовании вам откажут. С первого раза без опыта сложно найти работу (даже на ту, в описании которой указано «без опыта работы»). Делайте выводы из собеседований: какие технологии, требования или еще что то придется изучить.

Так же через какое то время параллельно с екселем поизучайте SQL (для начала просто SQL-запросы Select).
Лично я изучал по такому сайту: http://www.sql-tutorial.ru/ (для начала вполне достаточно).

Когда уже будете работать, и будете более менее уверенно себя чувствовать на такой работе, можете попробовать вернуться к C#. К тому времени у вас уже будет новый склад ума и C# вам дастся легче.

Мне самому сейчас 28. Тоже хочу попробовать изучить C#, только пока не понял, смогу ли я его вообще осилить. Если не смогу, то наверно будут действовать по плану, который описал выше.

Программа минимум: что должен знать начинающий C# программист

Рассказывает Мош Хамедани, автор курсов по C# на Udemy

Мои студенты часто задают вопросы такого рода:

Мош, меня только что приняли на должность Junior C#-разработчик. Что ты посоветуешь? Что мне необходимо выучить?

Итак, если вы ищете первую работу в качестве C#-разработчика или недавно её получили, эта статья расскажет вам, какие навыки являются необходимыми. Я постарался объединить их в единый «путь», который подойдёт желающим разрабатывать как декстопные, так и веб-приложения.

Прежде чем я углублюсь в детали, я проясню кое-что: вы — джуниор, вам не нужно знать всё на свете! Никто не знает всего, даже матёрые разработчики. Мир программирования огромен и постоянно растёт. Поэтому каждый разработчик силён лишь в определённых областях, в зависимости от тех проектов, над которыми он работал.

Каждый навык будет сопровождаться одной или несколькими ссылками на полезные ресурсы.

Базовые навыки

Вне зависимости от выбранной сферы разработки существует несколько моментов, которые стоит знать.

Структуры данных и алгоритмы

Если у вас нет степени в Computer Science, я очень рекомендую потратить месяц на изучение структур данных и алгоритмов. Это основы программирования. Конечно, вы можете пропустить их и заняться веб-разработкой, но поверьте, разница между изучавшим этот вопрос программистом и пропустившим его заметна.

4 октября 2020 – 1 марта 2020, Москва и онлайн, беcплатно

Вы можете удивиться, но крупные компании наподобие Microsoft, Apple и Amazon уделяют на интервью много времени именно проверке знания структур данных и алгоритмов, а не ASP.NET 5 или WPF! Они просто хотят понять, можете ли вы мыслить, как программист.

Вот неплохая книга для начала изучения: Data Structures and Algorithms Made Easy

Если вы в чём-то не разобрались — не отчаивайтесь! Просто убедитесь, что вы поняли, что такое списки, стеки, очереди, деревья и хеш-таблицы, и умеете их реализовывать на чистом C#. Реализуйте несколько алгоритмов поиска и сортировки.

Базы данных

SQL Server — это наиболее часто используемая реляционная СУБД среди .NET разработчиков. Разберитесь в основах реляционных баз данных и базовых операциях в SQL Server.

T-SQL — это язык запросов, используемый в SQL Server. Освойте функции SELECT, INSERT, UPDATE, DELETE, JOIN и GROUP BY.

Вот полезные материалы:

Когда вы работаете с РСУБД, то часто используете системы объектно-реляционного отображения для работы с объектами в базе данных. Существует много таких систем, но самой популярной является Entity Framework.

Материалы для изучения:

Веб-разработка

Создание веб-приложений кардинально отличается от разработки десктопных. Веб-приложение содержит как минимум две части: клиент, запускаемый в браузере пользователя (фронтенд), и сервер, обрабатывающий все действия пользователя в клиенте (бэкенд).

Поэтому все веб-разработчики делятся на 3 группы:

  • Фронтенд-разработчики;
  • Бэкенд-разработчики;
  • Full-stack-разработчики: те, кто занимаются и фронт-, и бэкендом.

В зависимости от ваших предпочтений стоит выбрать один из двух путей. Full-stack-разработчики обычно более востребованы.

Фронтенд

Если вы собрались заняться фронтендом, то вам нужно познакомиться с основами HTML, CSS и Javascript.

HTML — это язык разметки веб-страниц. В отличие от языков программирования (таких как C#), у него нет логики. Для декорации нашей страницы мы используем CSS. И, наконец, JavaScript — язык, отвечающий за поведение веб-страницы.

Материалы для изучения:

Бэкенд

ASP.NET MVC — это доминирующий среди C#-разработчиков фреймворк для создания серверных веб-приложений. Для работы с ASP.NET MVC вам всё равно потребуется базовое знание HTML, CSS и Javascript. Поэтому я советую вам начать изучение с фронтенда и затем перейти к бэкенду, изучив весь спектр веб-разработки.

Вот моё руководство, в котором мы создадим простое приложение с использованием ASP.NET MVC5 и Entity Framework 6: A Step-by-Step ASP.NET MVC Tutorial for Beginners

Десктоп-разработка

Если вы хотите заняться разработкой приложений под Windows, вам понадобится отличный от предыдущего набор навыков (хотя и они, как ни странно, могут пригодиться). Большинство заданий потребует от вас знания XAML, WPF или Windows Forms.

Преимущества и недостатки C# — Учим Шарп #1

Опубликовано shwan в 06.11.2020

Я хочу обсудить с тобой один очень важный вопрос, который достаточно часто упускают из внимания: действительно ли тебе нужно учить язык C#?

Что бы тебе ни рассказывали на всевозможных онлайн курсах, книгах, тренингах и конференциях, о том, как можно стать программистом за 21 день – все это ложь, п*дежь и провокация.

Программирование – это достаточно сложная техническая наука, требующая глубоких знаний информатики, математики, физики, а также синтаксиса нескольких языков программирования и целой кучи предметных областей, в которых тебе придется работать. Поэтому, если ты действительно серьезно решил стать настоящим программистом (а не обезьянкой, пишущей код), то приготовься к постоянному изучению чего-то нового, изнуряющему процессу отладки и поиска багов, а также чтению мануалов (в большинстве своем англоязычных).

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

История языка C#

Я постараюсь долго не задерживаться на этом пункте, но основную информацию расскажу.

Данный язык создан всеми так горячо любимой корпорацией Зла Microsoft в 2000 году. Он очень многое унаследовал от своих родителей (С++ и Java), но и привнес нового.

Возможной версией использования символа хештега принято считать наследование плюсиков от предков, примерно следующим образом: C → C++ → C++++(C#), потому что символ «#» при хорошем воображении можно получить путем объединения 4-х знаков «+».


Язык активно развивается. Регулярно выходят новые версии C#, которые добавляют новые синтаксические конструкции в язык, а также увеличивают его быстродействие и надежность.

Преимущества C#

Данный язык использует объектно-ориентированный подход к программированию во всем. Это означает, что тебе нужно будет описывать абстрактные конструкции на основе предметной области, а потом реализовывать между ними взаимодействие. Данный подход пользуется большой популярностью, потому что позволяет не держать в голове всю информацию, а работать по принципу черного ящика: подал входные данные -> МАГИЯ -> PROFIT.

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

Еще стоит упомянуть, что все это работает на базе платформы .NET Framework. Что это означает? Для многих непосвященных, это просто какая-то приблуда, которую нужно установить на комп, чтобы программа запустилась, но дело обстоит значительно глубже. Написанный тобой код на языке C# транслируется в промежуточный язык (IL), который в свою очередь уже преобразуется в машинный код на твоем компьютере прямо во время выполнения приложения (JIT). Спрашивается, зачем это все? А суть в том, что ты можешь пилить со своим другом Васей на разных языках один и тот же проект и ни одному из вас не придется переучиваться. Но я никогда не видел, чтобы это реально использовали на практике. Но это еще не все. Так как окончательная компиляция из промежуточного кода выполняется в живую на твоей конкретной машине, то возможно увеличение производительности за счет использования специфических команд именно твоего процессора.

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

Ты просто скачиваешь нужное тебе решение из nuget и начинаешь его использовать. В большинстве своем они бесплатны. Сюда же можно отнести большое количество обучающего и справочного материала. Практически на любой свой вопрос ты сможешь найти ответ на стековерфлоу. Ну а на крайний случай всегда можешь спросить в моем телеграм чате для программистов.

Немаловажно наличие хороших инструментов разработки, и здесь все очень хорошо. Абсолютное большинство разработчиков используют интегрированную среду разработки Visual Studio, которая предоставляет over9000 возможностей, использовать которые ты конечно же не будешь.

Но IDE действительно хороша, к тому же имеется ее полнофункциональная бесплатная версия Community.

Еще к плюсам можно отнести строгую типизацию, которая позволяет защититься от дурака, и не так давно появившаяся кросспратформенность в .NET Core (да-да, мелкомягкие потихоньку захватывают линукс).

Недостатки C#

Из-за обилия синтаксического сахара появляется большое количество быдлокодеров, которые будут с завидным постоянноством стрелять себе в колено. К тому же некоторые, казалось бы, общепринятые синтаксические конструкции начинают себя вести совершенно неадекватно при определенных обстоятельствах.

C# очень легко дизассемблируется. Это означает, что с большой долей вероятности твой код будет получен и изучен конкурентами. Конечно же, есть специальные инструменты, которые могут усложнить этот процесс, но на 100% защититься от этого практически невозможно.

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

C# не является повсеместно распространенным языком. Большинство программистов сосредоточены в коммерческой Enterprise сфере, что накладывает весьма серьезные ограничения на поиск работы в небольших городах, где кроме Delphi или PHP ничего жизни не видели. К тому же, как бы то ни было, C# в первую очередь ассоциируется с Windows. Вряд ли в обозримом будущем что-то изменится и Винда все также будет продолжать доминировать на рынке, но все же небольшой риск остается, особенно учитывая недавние фейлы с обновлениями в Windows 10.

Перспективы развития C#

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

Компания Microsoft остается одной из крупнейших IT компаний мира, а C# ее флагманский язык программирования, который постоянно развивается и впитывает в себя все новые возможности. Поэтому в обозримом будущем проблем у данного языка возникнуть не должно.

Сферы применения языка C#

В этой области C#, наверное, впереди планеты всей. Хочешь разрабатывать обычные приложения для компьютера – пожалуйста, стандартные WinForms Application и консоль тебе в помощь. Хочешь такие же, но покрасивее? – используй WPF. И специальные приложения для магазина в Windows Store тоже. Веб-приложения? – Легко ASP.NET всегда придет на помощь. На Linux? – тоже не вопрос, .NET Core уже здесь. Мобильное приложение? – Xamarin сделает сразу под все платформы. Хочешь написать игру? – движок Unity показывает себя очень даже неплохо, и при этом также адаптирует игру под различные платформы. Хочешь приблизить апокалипсис с восстанием машин и создаешь искусственный интеллект? – есть целая платформа с кучей инструментов для этого Microsoft AI Platform. Также и для компьютерного зрения и ботов. Я вообще с трудом могу придумать пример того, что невозможно реализовать на C#. Я где-то встречал даже операционную систему написанную на шарпе. Поэтому в этой области все хорошо.

Зарплаты разработчиков C#

Здесь все в целом неплохо. По данным на 2020 год, C# явно не является самым высокооплачиваемым языком, но и не самый низкооплачиваемый тоже. Среднее значение зарплаты для данного языка в России около 90к рублей. Это весьма неплохой результат, но бесспорно есть и более дорогие языки. В целом, уровень заработной платы намного больше зависит от прямоты рук и уровня знаний, поэтому не так важно на каком языке писать, главное делать это хорошо. Но данная цифра задает примерный уровень для Middle разработчика в среднем по России. От этого уже можно отталкиваться.

Итоги

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

В целом это перспективный язык, достаточно простой для освоения начинающим. Но следует помнить, что существует множество альтернатив, которые лучше подходят под некоторые задачи. Например, могу порекомендовать языки C++, Java, Python.

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

Основная идея C# — это универсальность. Ты можешь реализовать все на одном языке и для любой платформы, но с большой долей вероятности это будет работать медленнее, чем разработанное специально под конкретную платформу.

Он неплохо подходит как для начинающих в качестве первого языка, так и для реализации крупных коммерческих проектов.

На этом мы заканчиваем наш первый урок. Подписывайтесь на мои социальные сети: Вконтакте, Телеграм, YouTube и Дзен. Ну а еще есть специальный закрытый чат, для изучающих C# по моему курсу. С вами был Вадим. Пока!

Инструкция для тех, кто хочет стать программистом с нуля

Кризис заставляет многих сменить место работы или даже полностью поменять специальность. Приходится осваивать новые навыки и профессии. Прекрасным выбором в этом случае может стать профессия программиста. Это интересно, комфортно и прибыльно. В этой статье мы постараемся ответить на вопрос, как построить карьеру программиста с нуля.

Начать свой путь к карьере программиста стоит с ответа на вопрос, нужно ли вам программирование вообще? Этот вопрос не относится к тем, кто учится или учился по специальности, близкой к программированию. Если вам в школе математика давалась лучше, чем гуманитарные науки, если вам нравится проводить много времени за компьютером, если вам хочется изучать что-то новое, тогда программирование вам подойдёт.

С чего начать

Есть несколько вариантов развития событий, в результате которых человек становится программистом. Первый — родители-программисты, которые всему научили своих детей. Таким детям даже не нужно идти в университет. Второй вариант — модная профессия программиста. После школы нужно было выбрать, куда пойти учиться, и выбрали модное направление IT, вроде бы понравилось. И последний вариант — хобби, которое переросло в работу.

Если с вами ничего из вышеперечисленного не произошло, значит, у вас есть выбор из четырёх вариантов:

  • Самообразование. Этот вариант можно использовать как самостоятельно, так и в паре с другими методами. В интернете полно сайтов, книг и приложений, которые помогают изучать различные языки программирования и технологии. Но это самый тяжёлый путь для начинающих.
  • Университет. Если вы оканчиваете школу и хотите быть программистом, тогда идите в университет. Если не за знаниями, тогда за корочкой. Она может послужить бонусом при устройстве на работу. Хотя и какие-то знания вы тоже получите. Но не забывайте заниматься и самообучением. К выбору вуза стоит подойти очень ответственно. Внимательно изучите программы обучения и выбирайте лучшие технические вузы.
  • Ментор. Будет очень неплохо, если вы найдёте человека, который согласится помочь вам и направит вас в правильную сторону. Он подскажет подходящие книги и ресурсы, проверит ваш код, даст полезные советы. Кстати, мы уже писали о полезном ресурсе, где вы сможете найти ментора. Наставника можно искать среди знакомых программистов, на IT-тусовках и конференциях, на онлайн-форумах и так далее.
  • Специализированные практические курсы. Попробуйте поискать в своём городе курсы, где вас обучат какому-нибудь языку программирования или технологии. Я был приятно удивлён количеством таких курсов в Киеве, в том числе бесплатных и с последующим трудоустройством.

Какой язык, технологию и направление выбрать

Когда вы станете программистом, через годик-другой будете вольны выбирать любой язык, который вам нравится. Но при выборе первого языка программирования новичок должен учитывать следующие критерии:

  • Наличие на рынке вакансий. Конечная цель этого пути — найти работу программистом. А это будет трудно сделать, если на рынке вакансий никто не будет искать разработчиков на вашем языке программирования. Проверьте сайты с вакансиями, посмотрите, кого больше ищут, выпишите десяток языков. И переходите к следующему критерию.
  • Низкий уровень вхождения. Если вам придётся потратить длительное время на изучение языка, это может отбить у вас охоту к программированию вообще. Почитайте о тех языках, которые вы выбрали выше. Просмотрите литературу, которую нужно будет прочитать, чтобы изучить эти языки. И выберите те, о которых пишут, что они лёгкие, или которые вам показались лёгкими. Такими языками могут оказаться PHP, Ruby, Python.
  • Кайф от процесса. Если вам не нравится писать код на выбранном языке, вы не будете получать удовольствия от этого процесса, от работы и от жизни. А оно вам надо? Делайте правильный выбор.

Также вам придётся определиться с направлением программирования. Мобильное, десктопное, игры, веб, низкоуровневое программирование и так далее. Самые популярные и относительно лёгкие отрасли — разработка под веб, мобильные и десктопные клиенты. Под каждое направление может подходить один язык и совсем не подходить другой. То есть при выборе языка программирования также стоит отталкиваться и от этого фактора.

В любом случае изучите веб-технологии. Это язык разметки HTML, стили CSS и JavaScript, который позволит сделать вашу страницу динамической. На следующем этапе изучите серверный язык (Python, PHP, Ruby и другие) и подходящие для него веб-фреймворки. Изучите базы данных: практически в каждой вакансии программиста это упоминается.

Как получить начальный опыт

Без опыта вы не получите работу. Без работы вы не получите опыт. Замкнутый круг реальной жизни. Но ничего страшного, мы из него выберемся.

Во-первых, не стоит ждать, пока вы прочитаете все книги по выбранному языку программирования. Начинайте писать свои первые строки кода уже после второй главы книги. Выполняйте все задания из книг, перепечатывайте примеры, разбирайтесь в них. Усложняйте примеры и задания из книг своими идеями. Создавайте свои задачи к пройденному материалу. Решайте эти задачи.

Во-вторых, вам нужно найти свои первые проекты. Это, наверное, самый сложный вариант, но рабочий. Вам придётся самому искать заказы, выполнять их, заморачиваться с оплатой. Для новичка это архисложно, но зато затем все остальные варианты покажутся плёвым делом. Выполненные проекты можно будет записать в опыт и показать вашему будущему работодателю. Реальные проекты являются большим плюсом в вашем резюме.

Если вы знаете английский язык, регистрируйтесь лучше на англоязычных биржах. Рынок там больше. Если не знаете английского, учите его. А пока что вам доступны русскоязычные биржи фриланса. Ищите небольшие проекты, которые соответствуют вашему уровню знаний или чуть выше него. Подайте заявку на пару десятков таких заданий. И приготовьтесь получить море отказов. Но если одна-две заявки выстрелят, у вас будет шанс получить реальный опыт.

Ещё одним неплохим вариантом для получения реального опыта является open source. Таким проектам всегда нужны новые люди, пусть даже и новички. Вы можете поискать в проекте баги или посмотреть в баг-трекере и предложить методы их решения. Найти такие проекты легко на GitHub или других сервисах для хостинга кода. Не стесняйтесь задавать там вопросы.

Четвёртый вариант получения опыта — помощь знакомым программистам. Попросите их передать вам маленькие и несложные задания. Если что-то не будет получаться, у вас всегда будет к кому обратиться. И при этом вы будете участвовать в реальном проекте.

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

Почему стоит выбрать Python

Давайте немного подробнее поговорим о выборе первого языка программирования. Первый язык должен быть простым и популярным на рынке. Таким языком является Python. Я очень советую выбрать именно его в качестве первого языка программирования.

Код программы на Python читабелен. Вам даже не нужно быть программистом, чтобы в общих чертах понять, что происходит в программе. Из-за несложного синтаксиса Python вам понадобится меньше времени для написания программы, чем, например, на Java. Огромная база библиотек, которая сэкономит вам кучу сил, нервов и времени. Python является высокоуровневым языком. А значит, вам не нужно особо думать о ячейках памяти и о том, что там разместить. Python — язык широкого назначения. И он такой простой, что даже дети могут его выучить.

Справедливости ради стоит упомянуть и о других языках программирования. Java может стать неплохим выбором для новичка. Этот язык популярнее, чем Python, но и немного сложнее. Зато инструменты для разработки гораздо лучше проработаны. Стоит только сравнить Eclipse и IDLE. После Java вам будет проще перейти к работе с низкоуровневыми языками программирования.

PHP — ещё один очень популярный язык. И, мне кажется, он даже проще, чем Python. Очень легко найти себе ментора или решение какой-нибудь проблемы на форуме. Всё потому, что в мире существует огромное количество PHP-программистов разного уровня. В PHP нет нормального импорта, есть множество вариантов решения одной и той же задачи. А это усложняет обучение. И PHP заточен исключительно под веб.

Языки C и C# очень сложны для новичка. Ruby — хороший выбор в качестве второго языка, но не первого. JavaScript — очень простой язык, но ничему хорошему он вас не научит. А задача первого языка программирования всё-таки научить вас чему-то правильному, задать какую-то логику.

Важен ли английский язык

Важен! Не знаете? Учите. Знаете? Совершенствуйте. Учитесь читать, писать, слушать и говорить на английском. Делайте упор на техническую литературу. Слушайте англоязычные подкасты. Читайте англоязычные учебники по программированию.

Что нужно знать, кроме языка программирования

Конечно же, кроме языка программирования и английского, нужно знать что-то ещё. А вот что — зависит от направления, которое вы выберете. Веб-программист обязан знать HTML, CSS, JavaScript. Десктоп-программист учит API операционной системы и различные фреймворки. Разработчик мобильных приложений учит фреймворки Android, iOS или Windows Phone.

Всем нужно выучить алгоритмы. Попробуйте пройти курс на Coursera или найти подходящую для себя книгу по алгоритмам. Кроме этого, нужно знать одну из баз данных, паттерны программирования, структуры данных. Стоит также познакомиться с репозиториями кода. Хотя бы с одним. Обязательно знание систем версионного контроля. Выбирайте Git, он самый популярный. Вам нужно знать инструменты, с которыми вы работаете, операционную систему и среду разработки. И главный навык программиста — уметь гуглить. Без этого вы не проживёте.

Последние шаги

Вам нужно подготовить резюме. Не просто резюме, а хорошее резюме. Не стоит писать там лишней информации, но и умалчивать о своих умениях тоже не нужно. После того как вас пригласят на интервью, вы должны к нему подготовиться. Пройдитесь по материалу, который указан в вашем резюме. Вы должны быть уверены в своих знаниях. Просмотрите проекты, над которыми вы работали, вспомните технологии, которые вы применяли. И вперёд — к светлому будущему с новой профессией программиста.

Программирование: C# vs. Python для новичка

По многочисленным (больше нуля) заявкам мною было решено собрать небольшое сравнение языков C# и Python для новичка, а также удобство их применения для написания скриптов и утилит. Это будет простое, не слишком глубокое сравнение тех фич, которые я знаю в этих языках, и конкретного вывода я делать тоже не буду, короче — думайте сами.

Ну и, обязательно, дисклеймер: я — не профессиональный программист, я не слишком глубоко разбираюсь в Питоне, а тем более в C#, и поэтому всё нижесказанное лишь отражает мой опыт использования этих языков. Возможно я не прав, возможно я вообще неправильно их использую, но это то, как я их вижу. Всё.

Итак. Пожалуй, надо бы разбить сравнение на несколько категорий, чем я сейчас и займусь.

Синтаксис и простота вхождения

Всякий раз, когда меня некоторые спрашивают, почему я советую Питон для обучения, я всегда первым критерием привожу его простоту. Питон был изначально сделан так, чтобы походить на английскую речь, поэтому многие выражения в нём очень натурально читаются (если вы знаете английский, конечно), особенно если использовать подходящие названия переменных. К тому же, благодаря простому синтаксису, в нём отсутствуют различные не очень понятные (особенно новичку) или просто не слишком лаконичные конструкции, типа синтаксических скобок («начало-конец», » < . >«), кастов (» int x = (int)y; «), огромного количества слов-модификаторов (» public static const string s = «Hello»; «), различных Си-подобных конструкций и различных способов инициализации переменных. Это в принципе делает код на Питоне более близким к написанному на бумаге алгоритму, отчего код на нём гораздо легче понять сходу. Это же позволяет практически без правок переписать код с бумаги в скрипт и получить работающую программу.

В C# же, благодаря языковой наследственности, можно увидеть огромное количество ушей и хвостов от C++ и Java, что изначально выражается в Си-подобном синтаксисе. Поскольку этот синтаксис довольно распространён, то обучиться ему не помешает, но нужно понимать, что детали в различных языках всё равно разные (так можно и на JS начать учиться). C# имеет статическую типизацию, что в синтаксисе выражается указанием типа при инициализации и последующим его соблюдением. Также это означает, что шаблонные типы, типа словаря, придётся описывать явно (например, Dictionary — словарь с ключами типа IP-адреса и значениями NetworkInterface), что несколько добавляет мусора в код, как мне кажется. Ещё синтаксис делает необходимым соблюдение определённых правил при написании собственных методов или наследовании классов, что сопровождается ещё одним потоком слов-модификаторов. В Питоне это всё тоже лучше понимать, но синтаксис там почти не мешает коду. Не стоит также забывать о блоках кода — все блоки кода должны быть обёрнуты в фигурные скобки, а все условия — в круглые. Питон избегает всего этого, используя обязательные отступы (которые ещё и помогают красиво оформлять код).

А из аналогичных решений в синтаксисе можно выделить, например, LINQ в C# и «List/Dict comprehension» в Питоне. Оба приёма позволяют на месте создавать список с данными и обрабатывать его, разве что выглядят по-разному и имеют несколько разные возможности. Оба языка позволяют у любого объекта (даже числа или строки) вызывать классовые методы, что очень удобно по сравнению с C++. Оба самостоятельно заботятся о памяти и имеют свой сборщик мусора. Да и, честно говоря, во многом они даже похожи, если не принимать во внимание наличие статической типизации в C#, так что для написания кода тут выбор будет скорее по вкусу.

Впрочем, нужно упомянуть некоторые отличия в реализации простых программ. Если в Питоне программа является всего лишь скриптом, который можно запустить из одного файла (или даже ввести в интерактивной консоли), то в C# редактируется проект, со своим главным классом, пространством имён и файлом проекта с описанием необходимых модулей. Т.е. если в Питоне для «хэллоуворлда» достаточно открыть файл и записать в него одну строчку, то в C# для написания это строчки придётся создавать целый проект. (Который, будем честны, можно записать в один файл, но всё равно это потянет за собой обвязку в виде «using» и своего пространства имён.) Конечно, по большому счёту при написании чего-то более длинного разницы особо нет, но всё же Питон имеет здесь преимущество, так как позволяет настрочить небольшую программу хоть в nano .

Подводя итоги первого раунда, хочу сказать, что Питон, как мне кажется, гораздо более мягок к новичкам — он не требует вызубривания сложного синтаксиса, он не заставляет пользоваться сложными конструкциями для простых вещей, он не выглядит перегруженным и позволяет сосредоточиться на коде, а не на правильности синтаксиса. К тому же, в нём зачастую гораздо проще прослеживается ход выполнения программы, благодаря той же простоте синтаксиса. В общем, мне кажется, что Питон — очень удачный язык для начала обучения программированию, позволяющий сосредоточится на написании алгоритма, а не выборе типов, изучении ООП или разборках с синтаксисом.

Удобство написания скриптов

Наверное, стоит упомянуть, что программы на Питоне на то и называются скриптами, что они скрипты и есть — это просто файлы с кодом, которые можно с лёгкостью выполнить интерпретатором. А ещё их можно открыть в любом редакторе, отредактировать и тут же снова запустить. Это мне кажется очень жирным таким плюсом, особенно когда под рукой нет среды разработки/компилятора. Ну и ещё в них очень легко можно использовать код из других скриптов, благодаря простой системе импорта. Добавьте к этому то, что благодаря простому синтаксису их довольно просто править, и по своей сложности они оказываются не сильно сложнее (а то и проще) скриптов на Bash. Конечно, Питон не настолько быстр и лёгок для мелких скриптов, как Bash (хотя числодробить лучше всё-таки на нём), он всё же имеет право на существование, так как сильно облегчает само написание кода. И на нём, кстати, гораздо проще писать кроссплатформенные скрипты, которые даже не нужно будет перекомпилировать.

И ещё, в качестве минуса Питона можно выделить необходимость установленного интерпретатора на машине со скриптами. Ну, или хотя бы интерпретатора, запакованного вместе со скриптом в один пакет/исполняемый файл. Это также увеличит размер скрипта с пары килобайт до десятка мегабайт. Не очень удобно для разового использования. Но для локальных скриптов, если на машине и так установлен интерпретатор, ничего дополнительно не потребуется, и их можно будет вызывать хоть двойным кликом.

В свою очередь C# для нормального программирования потребует более-менее адекватную IDE, и хотя в принципе можно обойтись и Блокнотом, без опыта, автодополнения и проверки синтаксиса будет сложновато. К тому же скрипты придётся компилировать для использования, хотя если их не требуется редактировать на месте, то это и не критично. Из плюсов C# (а точнее .NET) для написания скриптов для Windows можно выделить очень широкую поддержку различных компонентов системы Windows. Например, существуют встроенные средства работы с реестром, WMI, сетью. К тому же существует большое количество сторонних библиотек, которые помогут с другими, не настолько низкоуровневыми вещами (может быть вам нужна обёртка над MSI, или простое изменение настроек IE, скорее всего кто-то уже написал класс для работы с ними до вас). Единственное, придётся мириться с иногда несколько неадекватными методами работы с объектами с информацией в .NET, но так уж написан код.

И да, в контраст с Питоном скомпилированные программы на C# весят пару десятков килобайт (это если без внешних зависимостей) и запустятся везде, где стоит .NET Framework определённой версии (да, даже под Линуксом, если в программе нет специфичного для Windows кода). А ещё в C# есть возможность использовать WinForms, что очень облегчает создание графического интерфейса, если он вдруг всё-таки нужен.

Так что выбирайте. Питон — для простых и маленьких скриптов, которым нужен интерпретатор, и в которых доступ к реестру и некоторым другим вещам в Windows несколько сложнее (и, скорее всего, понадобится доустановить модулей), но которые можно править в любой момент и которые гораздо быстрее можно начиркать в Блокноте. Или C# — для более сложных скриптов, или скриптов, в которых просто необходимо обращаться к компонентам Windows, или скриптов, которые должны выполняться на любой машине и весить немного (хотя что-то типа VBS тут может и лучше будет). И уж точно для скриптов, которым требуется показывать окошки, поскольку просто графический интерфейс с помощью WinForms будет написать гораздо проще, чем с Tk или PyQt на Питоне. Хотя для чего-то более сложного я бы всё-таки выбрал Qt. или WPF, если осилите. А уж на чем просто писать код — это уже дело вкуса.

И немного моего мнения.

Вообще, пописав некоторое время и на одном, и на другом (значительно дольше писал на Питоне, но только для себя, на C# писал и другим), у меня сложились несколько субъективные мнения об обоих. О Питоне — в основном положительные, о C# — меньше в целом, но больше отрицательные. Так что не принимайте всё нижесказанное совсем уж всерьёз, ещё больше не принимайте, чем то, что выше написано.

Начав писать на Питоне. сначала скрипты, потом свою первую «большую» программу. я сходу начал писать рабочий код. Иногда я даже не понимал, как он работает, но вот писал и получал рабочий скрипт. Это особенно радовало, так как я использовал эти скрипты для собственных нужд. Изначально я писал небольшой скрейпер, который брал данные с сайта, которые я потом обрабатывал в программе, написанной ещё аж на Лазарусе (как давно это было. ). Языка я толком не знал, но скрипт написался практически вслепую, в nano , благодаря примерам в документации и Гуглу. Потом я вернулся к нему для похожих целей, потом мне приспичило переписать один их скриптов в программу с гуем. Так я начал, всё-таки, учить язык и, параллельно, PyQt. И я был очень приятно удивлён тем, как плавно проходило обучение, и как просто писался новый код, даже когда я не использовал самый оптимальный подход. Потом, постепенно, я уже и сам начал что-то придумывать и реализовывать, мешая Питон с Qt (плохая идея, не делайте так в скриптах), и в конце концов даже научился гуёвому многопотоку и Model/View из Qt. Это очень упростило разработку графических интерфейсов в дальнейшем, так что я полюбил не только Питон, но и Qt. И теперь, когда мне нужно написать небольшую программку для собственного пользования с гуем, или просто скрипт, особенно для работы с вебом (что-то скачать/распарсить/файлы подвинуть), я всегда обращаюсь к Питону, благо на нём это делается довольно просто, и при этом он даёт хороший контроль над ситуацией и не сильно засоряет код скрипта своим синтаксисом.

И всё-таки пару слов о самом языке. Мне очень нравится отсутствие необходимости напоминать каждую вторую строчку компилятору, какого типа та или иная переменная. Ещё, как я выяснил, мне очень нравится, что в списках и словарях могут быть объекты любого типа, и мне не нужно писать для функций для списков со своими классами отдельный контейнер. А если нужно, это делается чрезвычайно просто. Мне нравится очень простой подход к коду, как в языке, так и в сторонних модулях. Мне нравится возможность записи любого кода практически в любом месте программы, особенно когда требуются итерации по контейнерам (в C# для этого есть LINQ). Мне особенно нравится очень простой и читабельный код, без всяких скобок, && и бесконечных явных указаний неймспейсов. И ещё мне нравится большое количество мелких удобных вещей, про которые я сейчас не вспомню, но они есть и я постоянно о них вспоминаю, когда пишу на C#. Например, for..in .

Начав же писать на C#. Когда же я начал писать нормальные программы на нём. кажется, начиная с ASI? Так или иначе, я тут же возненавидел WinForms, поскольку на них невозможно сделать нормальный интерфейс. Сейчас там есть TableLayoutPanel, но даже с ней расстановка элементов по форме бывает просто невыносима. Нет, конечно, накидать пару кнопок и изменить пару свойств можно и на WinForms, но нормальный, структурированный, иерархичный подход к интерфейсу в Qt мне понравился гораздо больше — он легче в написании, гибче, проще в настройке, да и просто дефолтно выглядит лучше. но это не про язык.

Ещё в C# мне не понравилось обязательное использование неймспейсов, и при этом отсутствие возможности эти имена опустить при обращении к классам из них (нет аналога «import as»). Зато в классе использование this является необязательным, что, как мне кажется, только добавляет путаницы (например, можно легко не заметить разницы между полем и каким-нибудь импортированным классом, особенно если IDE не подсказывает). При использовании каких-то сложных классов (типа того словаря с указанными типами) в различных методах, описание такого класса придётся повторять по нескольку раз. Мало того, что это требует постоянного повторения кода, так это ещё и выглядит так. бывает, что сигнатура метода занимает больше байт, чем сам метод. Язык в этом не виноват, но после простого и лаконичного Питона сильно бесит. Ещё почему-то нет встроенного в класс строки метода Format. То есть он есть, но реализован как классовый метод, что делает его использование ужасно неудобным. Сравните:

Брр. Ладно хоть интерполяция строк работает хорошо, но в Питоне 3.6 и это будет. Ещё не нравится, что в C# нет простого способа инициализации списка или словаря с объектами. Т.е. он как бы есть, но всё равно нужно писать для каждого объекта new, и количество скобок и типов зашкаливает, и если нет нормального конструктора, то придётся инициализировать в коде. И вот, взгляните на это:

Это у меня так словарь инициализируется. В Питоне я бы сделал self.available_interfaces = <> и использовал бы свою подсказку с типами. Или вообще бы не использовал. Нет, я понимаю, статическая типизация и всё такое, но уж слишком много приходится расписывать. Например, зачем нужно дублирование типа, если он и так указан? А, точно, там есть var, это я забыл. Только его нельзя использовать в полях, хе. Но var, да и не только он — это ещё один шаг в сторону Питона и подобных. Что ещё раз говорит о правоте моего выбора.

И всё же плюсы в C# есть. Например, большое количество хорошо (ну, будем считать, что хорошо) документированных классов по работе с сетью и прочим, связанным с Windows. Очень полезно при разработке под винду. Да и простота деплоймента, опять же под винду, тоже радует. И всё-таки он компилируется, так что и работает быстрее. Но вот чисто со стороны обучения, написания и чтения кода — я всеми руками за Питон. Вместе с C# на вас обрушивается огромное легаси из синтаксиса, указания типов и классов .NET. В Питоне этого нет, можно просто писать код. Так что вот.

ЖизньПочему программирование — идеальное хобби

Девушки, осваивающие код, рассказывают, почему уметь программировать — клево и где этому научиться

Те, кто говорят, что за программированием будущее, немного лукавят: программирование — вполне себе настоящее, и игнорировать этот факт — значит лишать себя массы возможностей для профессионального и личностного роста. И мы в состоянии объяснить, почему.

Зачем это все нужно

«Большинство работодателей пока даже не догадывается, насколько ценны сотрудники, имеющие хотя бы базовые знания программирования. Тем не менее, это один из самых важных навыков для тех, чья работа хоть как-то связана с технологиями (то есть для всех). Редакторы, фотографы, дизайнеры, аналитики, пиарщики могут начинать изучать код уже сейчас — хотя лучше было сделать это вчера. Причина проста: компаниям выгодно нанимать человека, который понимает, откуда что берется в его работе. Тот же дизайнер инфографики, который умеет не просто визуализировать информацию, но анализировать и структурировать материал и, в идеале, написать к нему нужный код, ценится гораздо больше, чем дизайнер без таких навыков», — анализирует Галима Ахмадуллина.

У Галимы собственное рекрутинговое и консалтинговое агентство Galima HR, сайт которого она спроектировала себе сама. Два года назад, когда рекрутинг был для нее не полноценной работой, а хобби, для обработки всех запросов хватало функционала личной фейсбук-страницы. Потом пришлось перейти на tumblr, а когда появились более сложные задачи и бо́льшие объемы данных — освоить WordPress и заточить под конкретные бизнес-задачи и рабочие процессы плагины Podio. «Сейчас весь мой, можно сказать, мини-бизнес может существовать только благодаря тому, что в какой-то момент я потратила время, чтобы сделать удобный для себя инструмент — и если бы я его не настроила, никто бы за меня этого не сделал. Для такого рода задач не нужно глубоко копать front-end и back-end и даже самому писать код — сейчас много открытого кода [то есть доступного для копирования любому пользователю. — Прим. ред.], и нужно только знать, куда его вставлять, чтобы кастомизировать готовый интерфейс».


Программирование помогает развить логику, структурно мыслить и облегчает коммуникацию

Развитие хобби Галимы — идеальная иллюстрация того, почему базовые знания программирования необходимы каждому, у кого есть компьютер и выход в интернет. На определенном этапе развития карьеры (своего дела, если угодно) встает необходимость в презентации себя или своего продукта. И нам всем повезло, что сейчас это можно сделать с минимальными денежными и временными затратами, купив за полсотни долларов доменное имя и проведя выходные за ноутбуком. Можно возразить, что превосходному журналисту, дизайнеру, копирайтеру или юристу работа найдется всегда, но чтобы стать таким монопрофессионалом, рядовому специалисту нужно, грубо говоря, прожить десять тысяч рабочих часов — а умение разбираться в коде как минимум позволит сделать это с комфортом. Еще программирование помогает развить логику, структурно мыслить и — если вы уже вынуждены общаться с разработчиками — облегчить с ними коммуникацию (людям вокруг тоже приятно, если вы понятливый). «Самое главное, программирование дает возможность абсолютно самостоятельно реализовывать идеи, создавать продукт с нуля. Это творчество. И это самое крутое», — утверждает веб-программист Екатерина Анишкина.

С чего начать и чем пользоваться

Круче всего то, что освоение кодинга сейчас доступно как никогда. Всегда есть книги; например, студентов Parsons, где есть свой клуб программирования, первым делом просят прочесть расставляющую все по местам «Program or Be Programmed» Дугласа Рашкоффа. Достойная литература — тема отдельной публикации, но разумнее всего идти за книгами на Amazon и выбирать — бинго! — бестселлеры поновее. «Подбирая материал для чтения, нужно проверять год публикации и издания. В IT все очень стремительно меняется. Если книге или статье больше четырех лет, я стараюсь найти более свежие аналоги», — советует back-end-разработчик Наталия Романенко.

Безусловно, требуется самостоятельный ресерч по FAQ-сайтам вроде Stack Overflow. «Если вы начинающий программист и у вас возник какой-то вопрос, вероятность, что он возникал у кого-то до вас, 99 процентов. Первое время придется очень много гуглить и читать, в основном на английском. Ответ можно найти где угодно: на форуме, в блоге какого-нибудь программиста, в официальной документации. Прежде чем задать вопрос, ищите ответ, и только если совсем ничего не нашли, создавайте новый топик на форуме, — продолжает Наталия. — Что касается русскоязычных ресурсов — мне удавалось решать все свои проблемы в рамках forum.sources.ru и habrahabr.ru. Последний — отличный микс коллективного блога и сайта новостей, на котором желающие публикуют собственные статьи или переводы на компьютерные и околокомпьютерные темы.

Начинающим сайтостроителям нужно знать аббревиатуру WYSIWYG (“What You See Is What You Get”). WYSIWYG-редактор — это приложение, которое позволит просмотреть результат прямо в процессе работы или вовсе вести работу над страницей полностью в графическом режиме». WYSIWYG-интерфейсы встречаются много где (автор этого текста именно в таком сейчас и сидит). На платформе Ghost, например, можно не только собрать себе красивый и удобный сайт, но и поупражняться в простейшем синтаксисе Markdown (если захочется, то и в HTML).

Формат офлайн-курсов привлекателен тем, что всегда есть возможность обратиться к наставнику

Для непосредственного изучения и практики кода есть прекрасные онлайн-школы вроде TreeHouse, App Academy и Codecademy, где можно освоить HTML и CSS, Javascript, Ruby, Python и другие языки программирования. TreeHouse работает по freemium-модели: за крутые видеокурсы нужно платить (от 25 долларов в месяц), но есть и бесплатный контент. Обучение в Codecademy вообще больше похоже на игру (правда, довольно медленную) и некоторых затягивает, как сериал. Формат офлайн-курсов привлекателен тем, что всегда есть возможность обратиться к наставнику — буксовать на чем-то придется не раз. В Москве мест, где действительно приятно учиться, пока немного — но они появляются. В Moscow Coding School, при всем уважении к Бауманке и ее специалистам, чувствуешь себя в 2014 (и немножко — в 2015) году. Подобные проекты с живой атмосферой и программами, способными увлечь, еще будут возникать — просто потому, что спрос на них есть.

Подведем черту: порог входа в программирование сейчас предельно низкий, а открывающиеся с ним перспективы обширны и позволяют значительно улучшить качество жизни. Открываются факультеты компьютерных наук, и министерство образования увеличивает бюджетные места на IT-специальности. Представьте: все, кто сегодня проводят два вечера в неделю в Sublime и успели самостоятельно собрать десяток сайтов или приложений, года через два придут туда, где вы более-менее успешны, но не имеете аналогичных и востребованных навыков (о поколении, в чьем детстве есть такие книги, и говорить нечего). Игнорировать возможности саморазвития при любом раскладе недальновидно, в случае с программированием это особенно очевидно; с аналогичным успехом можно добровольно перестать пользоваться рукой или ногой — но зачем?

3D иллюстрации: Дмитрий Пустовойтов

suhorukov.com

Среди всего числа моноплатформенных языков именно С# является фаворитом у разработчиков. Именно ему поют дифирамбы и поклоняются все, кто так или иначе связан с .NET Framework и смежными областями. Вопрос «почему?» стоит, пожалуй, у многих. Но вот не многие решаются его задать. Об этом мы как раз и поговорим с нашим преподавателем курса C# Павлом Новиковым.

Расскажите немного о себе. Почему выбрали именно C#? Какие проекты, из реализованных или актуальных, считаете самыми интересными?

Меня зовут Павел и в настоящее время я занимаюсь фрилансом на технологическом стеке C#/.NET, разработкой проектов с открытым исходным кодом, а так же управлением коммерческими проектами, но это скорее хобби.

Выбор на C# пал, можно сказать, случайно, когда я учился на 2 курсе НГУ, знакомый предложил мне работу. О C# тогда я знал совсем мало, но в двух словах имел общее представление, и я согласился. Впоследствии мне очень приглянулось изящество, работоспособность и качество .NET Framework и некоторых других продуктов Microsoft. Имея возможность сравнить, я понял что C# по своей красоте, сравнительной простоте, логичности и продуманности опережает такие распространенные языки как Java и Delphi на три шага. Проще говоря — из всего, что я пробовал за почти что десятилетний опыт в IT-индустрии, C# оказался самым удобным и практичным языком, никак не выдерживающим конкуренции с Java, а .NET Framework — продуманной и весьма богатой на возможности платформой. Немалый вклад в мое мнение внесло сообщество программистов, пользующихся C#, среди которых очень много высококлассных специалистов, делающих на C# по-настоящему крутые вещи. Сейчас я являюсь скорее идейным сторонником C#, но для всех желающих могу привести и рациональные аргументы в его пользу.

Что такое C# сегодня? Насколько большое распространение имеет этот язык? Можете назвать наиболее интересные и успешные, с вашей точки зрения, проекты на нем?

Возможно это прозвучит помпезно, но C# сегодня — это широко известный (известнее, пожалуй, только C и C++) самый развитый из существующих языков программирования. И не смотря на количество его весьма конкретных преимуществ, отсутствующих в других языках — он продолжает развиваться невиданными темпами в самых неожиданных направлениях, что вызывает бурный восторг у фанатов этого языка. Надо сказать, множество нововведений с огромным опозданием появляются в Java, но это совсем другая история. Примерно то же самое касается и .NET Framework. Но, как бы всё ни было радостно, исторически сложилось так, что C# менее распространен нежели та же Java, что объясняется исключительно своеобразной политикой Microsoft в вопросах популяризации своих технологий. Однако, это не отменяет того, что весомая часть программного обеспечения для Windows (и даже встроенного в операционную систему, да-да!), огромное количество внутрибанковских систем, web-сайтов и какое-то количество мобильных приложений де-факто написаны на C#. Кстати, недавно, Microsoft открыла исходные тексты компилятора C# (этот проект называется Roslyn). А это означает, что в скором времени C# плотно проникнет в мобильные платформы и *nix-системы — активисты Opensource и некоторое количество сотрудников Microsoft уже бросились работать над этим.

Насколько мешает, помогает его моноплатформенность? Насколько существенна эта особенность?

Сложный вопрос. Формально, C# не является моноплатформенным. А именно — есть замечательный открытый проект mono, благодаря которому C#-приложения с переменным успехом компилируются и работают на *nix-платформах. Модифицированная версия mono поставляется с MacOS, что позволяет, скажем, запускать Silverlight-приложения на компьютерах фирмы Apple. В основной же массе, 85% домашних компьютеров пользователей работают на Windows и проблемы кроссплатформенности их никогда не коснутся. В этом сегменте рынка моноплатформенность C# сказывается чуть менее чем никак. Другое дело, что сейчас очень много приложений перемещаются с настольных компьютеров на облачные технологии. Но и тут кроссплатформенность C# никак не сказывается, ибо на нем прекрасно пишутся серверные части для web-сайтов, да и вообще любые сетевые приложения (а для особых фанатов облака — есть еще и Microsoft Azure — эдакий Amazon Cloud/AWS от Microsoft). С HTML/CSS и Javascript конечно же C# вам естественно никак не поможет (ну разве что самую малость), равно как и не поможет PHP, Python, Ruby и любые другие языки веб-программирования. Так что вопрос сводится к желанию владельца размещать web-приложения на хостингах на основе Windows-серверов. Тут бытует бездна предрассудков и мнений, будто бы Windows-хостинги дорогие (за счет лицензии) и нестабильные (всем известны крики о «глючности винды» и иже с ними). На самом деле это все не так. Серверные продукты Microsoft не имеют ничего общего с их настольными продуктами и отличаются хорошей производительностью, сравнительной простотой конфигурации (графический интерфейс в отличие от конфигурационных файлов *nix-систем) и, неожиданно, пуленепробиваемой надежностью. Словом, они более чем стоят своих денег. Кстати о деньгах — при всей бесплатности *nix-систем, хороший специалист, который поможет настроить хостинг на *nix обойдется вкупе дороже, чем лицензия на серверный Windows и услуги администратора. Остаются мобильные платформы. Здесь я, честно признаться, не владею информацией так глубоко, как хотелось бы. Однако широко известен проект Xamarin, который позволяет писать мобильные приложения под Android и iPhone. Сам не пользовался, но знакомые хвалят.

А какой язык, вы бы назвали альтернативой C#? Может быть, даже, его прямым конкурентом?

Так же сложный вопрос. C# вобрал в себя преимущества очень многих языков — тут тебе и Java, и OCaml, и C++. Некоторые подходы были подсмотренны в Haskell и адаптированы под более удобное использование. ASP.NET MVC — так вообще по своей сути утащен с Ruby On Rails и, скажем так, несколько развил оригинальные задумки авторов. Так же в языке наличествует множество своих практичных и оригинальных идей. Как не трудно заметить, сравнивать его с чем-либо из существующих языков — занятие несколько бесполезное. Если же говорить сугубо о рыночной сиутации, то тут C# уже который год с переменным успехом конкурирует с Java за право широко использоваться в разработке серьезных бизнес-продуктов. А вообще, если говорить честно, то в конечном счете, C# и .NET Framework — это всего лишь инструменты для разработки программного обеспечения, не более. И рассуждать «что лучше?» в отношении сравнения языков в принципе — занятие неблагодарное, ибо каждому инструменту свое применение.

C# не однороден, у него есть много расширений, библиотек и т.п. Что сейчас, на ваш взгляд наиболее актуально? Какие «тренды», что ли, развития намечаются или уже наметились, в развитии языка?

На мой взгляд, сейчас очень актуально портирование C# на разные платформы с возможностью использовать его для всего, чего угодно — тут и вышеупомянутый Xamarin для мобильных приложений, и Unity3D для игрушек, и специальные трансляторы для Javascript. В остальном, сейчас стек технологий для написания разнообразных приложений более-менее стандартизировался и актуальна становится не конкретная библиотека, а, скорее, общее понимание подхода к написанию тех или иных приложений. Например для разработки настольного бизнес-приложения вам необходимо знать следующие «умные слова»: IoC, ORM, WCF, MVVM. Это не столько конкретные библиотеки, сколько названия технологий, методологий, подходов. Реализуют их самые разные библиотеки (одних только IoC-фреймворков сколько — Unity Application Block, Autofac, NInject, Spring.NET, Castle.Windsor, а делают все примено одно и то же). Важно, что когда вы уловили саму суть подхода — уже не важно какую конкретно библиотеку использовать.

Что должен знать, уметь хороший C#-программист, чтобы быть востребованным на рынке?

Как было упомянуто выше, он должен иметь четкое и правильное представление об используемых подходах, чтобы быстро «въезжать» в любой уже существующий код на C#. Само собой, не помешает беспрецедентное знание языка — то есть, четкое понимание что будет делать машина в ответ на конкретную последовательность языковых конструкций (в таких случаях я рекомендую открывать полные справочних ключевых слов и читать про каждое). Само собой, необходимы знания ООП/ООАД и опыт проектирования систем. Тут, как говорится, чем больше — тем лучше. Ну и самые основы программирования, про которые я не устаю повторять — так называемые, алгоритмы и структуры данных, которые даются на первом курсе любого более-менее хорошего высшего учебного заведения по направлению IT. Вот эти основы должны быть, что называется, «в крови» у каждого программиста, независимо от языка на котором он пишет.

Какие пути развития есть у специалиста на ваш взгляд?

Если не брать в расчет систему должностей и шильдиков в конкретной компании, то по большому счету путей развития два: это работа в компании за ежемесячную зарплату, с соц. пакетом, обедами, бесплатным тренажерным залом, корпоративами, графиком «с 10 до 19» (варьируется от компании к компании) и спокойная жизнь. Либо фриланс: договоры, подрядчики/заказчики, поиск заказов, нестандартные задачи, жесткая самодисциплина, полностью свободный график (чаще всего это означает что работать вы будете по 12 часов в день, преимущественно ночью), отчеты в налоговую инспекцию и жизнь, полная приключений, рисков, интересных людей, задач и ощутимо большее количество денег, которое ограничивается только вашими возможностями. Как правило, в области фриланса тусуются более квалифицированные специалисты, но бывают и досадные исключения.

В Академии Сухорукова вы ведете курс C#, можете рассказать о нем подробнее? Какова его программа? На кого он нацелен в первую очередь?

Курс нацелен в первую очередь на людей, у которых уже имеется какой-никакой опыт программирования, желание этим самым программированием заниматься, здоровый интерес ко всякого рода инженерным конструкциям и аналитическим складом ума. В ходе курса я даю детальное введение в инструменты, с помощью которых пишутся программы на C#, понимание базовых языковых конструкций, небольшое введение в ООП, а так же показываю и рассказываю о том, как пишутся приложения на C# в промышленных, так выразимся, условиях. Материала очень много, материал достаточно сложный, но у студентов имеется возможность задавать мне вопросы по непонятным местам, которые я им объясняю даже в индивидуальном порядке, если это необходимо. Изначально я начал преподавать, потому что меня несколько удивило количество программистов, приходящих ко мне на собеседование и не знающих самые базовые и самые важные нюансы языка, а так же не имеющее представления об общем подходе к написанию приложений. Именно на устранение этого обстоятельства курс, главным образом, и нацелен.

Какая подготовка потребуется от слушателя для его успешного прохождения?

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

Расскажите, пожалуйста, о перспективах на рынке труда для выпускника? На что можно претендовать с полученными на курсе знаниями?

Тем, кто не разгильдяйничал, внимательно слушал, делал задачи и понял курс — устроиться не составит труда. Выпускникам своего курса я настоятельно рекомендую пройти собеседование и устроится младшим разработчиком в одну из многочисленных компаний академгородка (с этим КА Сухорукова вам может очень хорошо помочь). Это необходимый этап, который даст четкое представление о том, как устроен IT бизнес в целом, научит пользоваться инструментами командной разработки, научит общаться с другими сотрудниками, работать в команде. А потом (обычно через год-другой) выпускники сами всё поймут и решат для себя куда они хотят развиваться дальше.

Что бы вы хотели пожелать будущим слушателям и всем тем, кто хочет развиваться в такой области как C#?

Любить программирование. До одури, до отвращения. И быть настойчивыми и усидчивыми в попытках познать новое. Пожалуй так.

От себя нам остается только пожелать удачи всем, кто решился освоить эту непростую, но очень интересную область. И ждем вас 23 сентября на Курсе С# (C Sharp) в IT-Академии Сухорукова.

С чего начать изучение в C#? [дубликат]

На данный вопрос уже ответили:

Я создавал подобную тему по Java. Я определяюсь, какой язык учить пока. Меня интересует, с какой литературы начинать изучение C# и в каком порядке человеку, не имеющему опыта в программировании и где брать задания для закрепления теоретического материала.

Отмечен как дубликат участником Nofate ♦ 16 окт ’15 в 9:48 .

Подобный вопрос задавали ранее и на него уже получен ответ. Если представленные ответы не являются исчерпывающими, пожалуйста, задайте новый вопрос.

7 ответов 7

  • Джеффри Рихтер — CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке С# (Есть 3е издание по .Net 4, но на англ. языке.)
  • Троелсен Эндрю — Язык программирования C# 2010 и платформа .NET 4

Все книги есть сами знаете где, по понятным причинам ссылок не даю.

Joseph Albahari, Ben Albahari — C# 4.0 in a Nutshell, 4th Edition — лучше чем у Рихтера некоторые аспекты и мой личный фаворит, а если с самых азов, то Программирование на C Sharp (Си шарп) с нуля

Михаил Фленов — Библия C#. Хорошая и понятная книга для новичка, сам по ней учился.

Как новичку посоветовал бы «Бибилию С#» Михаила Фленова.

Насчёт практики, попробуте вот это: http://www.videosharp.info/ достаточно просто и понятно человек всё объясняет, что оченно редко в наше время.

Книгу лучше в книжном магазине посмотрите. Разным людям нужно разное чтиво. А за практикой — сразу джуном в контору — это однозначно, лучше не найдёте практики.

Учить Оба и C# и Java. А начать с концепции понимания объектно ориентированного подхода. Адекватно понять суть полиморфизма и инкапсуляции. Уяснить раз и навсегда для себя что такое управляемая куча и стэк. Понять суть коллекций и структур. И только тогда начинать закреплять всё это. А познавать лучше параллельно теорию и практику. На мой взгляд самая понятная и достойная книга для изучения C# это C# 5.0 и платформа .NET для профессионалов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c# или задайте свой вопрос.

Связанные

Похожие

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.13.35428

Сколько времени займет не-программист, чтобы изучить С#,.NET Framework и SQL?

Я плохо разбираюсь в программировании. Я закончил магистратуру по электронике. Я хочу изучить С#,.NET Framework и SQL. Сколько времени, по вашему мнению, потребуется (если у меня есть 5 часов в день, чтобы посвятить это)? Кроме того, в каком порядке я их изучаю? У меня есть Visual Web Developer 2008, это достаточно, чтобы начать?

Скопирован из нового вопроса тем же пользователем:
Я должен был указать, что хочу сделать карьеру в .NET Development. Я бы хотел дать себе 2 месяца, чтобы убрать «основы». Как разработчик, что ожидается от вас в ИТ-компаниях? Какой набор навыков они требуют и каковы обязанности младшего или среднего уровня разработчиков? У меня нет опыта работы в отрасли, смогу ли я почувствовать рабочие обязанности дома?

Как хотелось бы узнать, сколько времени потребуется для изучения французского языка:

  • 1 день, чтобы узнать, что это такое.
  • 1 неделя, чтобы изучить его на уровне ребенка/элементарного уровня.
  • 1 год, чтобы стать новичком профессионалами.
  • Несколько лет, чтобы считаться опытным профессионалом
  • Плюс там «глубокое» знание тех предметов, которые простой смертный, такой как вы или я, никогда не узнаем.

Затем снова много людей (большинство нормальных людей, не программистов) никогда не изучают эти предметы, поэтому, если вы похожи на «большинство» людей, тогда ответ будет «это навсегда» «или» это никогда не произойдет «.

Погрузитесь вправо, сделайте это хобби и получайте удовольствие:)

Исходя из фона электроники, я могу сказать вам, что вы должны забрать его довольно быстро. И наличие фона электроники даст вам более глубокое понимание базового оборудования.

ИМХО корень информационных технологий — это электроника.

Вспомните объекты как компоненты.

Структура .NET — это, по существу, ящики, состоящие из стандартных компонентов.

Например, вы знаете, что может сделать 7400 (NAND gate). У вас есть лист данных, показывающий выходы контактов и образцы. Вы, как правило, не заботитесь о схеме внутри. Программные объекты одинаковы. У нас есть исходные данные, и у нас есть методы, которые делают что-то входы для получения прогнозируемых результатов. Как разработчикам нам, как правило, не важно, как был написан объект. только, что он делает то, что он говорит, что это будет делать.

Вы также знаете, что вы можете построить дополнительные логические схемы, используя два или более вентилятора NAND. Это как инстанцирование.

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

Я также узнал, что это помогает работать над проектом. Это может быть проект для любителей или рабочий проект. Начните с малого, получите что-то очень основное и работайте оттуда.

Чтобы ответить на ваш конкретный вопрос, «что я должен узнать первым».

1) Возьмите свой проект, который вы имеете в виду, и выполните его шаги. Например. получите номер от пользователя, добавьте его в число, покажите результат. Подумайте об этом как о своем дизайне.

2) Изучите базовый С#. Напишите простое консольное приложение, которое что-то делает. Узнайте, что такое оператор if (это вся логическая логика, поэтому она должна быть несколько знакомой), узнайте о циклах, узнайте о математических операциях, узнайте о функциях (подпрограммах). Играйте с простым вводом файлов (чтение и запись текстовых файлов). Базовый С# можно рассматривать как вашу проводку и дискретные компоненты (резисторы, колпачки, транзисторы и т.д.) Для ваших чипов (объектов).

3) Узнайте, как создавать и использовать объекты из фреймворка. Вы уже делали это, но теперь пора вникать дальше. Например. играйте с System.Console еще. попробуйте сделать звуковой сигнал динамика. Также начните поиск объектов, которые вы, возможно, захотите использовать для работы с базой данных.

4) Изучите базовый SQL. Много помощи и примеров в Интернете. Выберите базу данных, с которой вы хотите работать. Я лично считаю, что MS Access — отличная база для начинающих. Я бы не использовал его для многопользовательских или кросс-платформенных настольных приложений. но это отличная однопользовательская база данных для пользователей Windows. и это отличный способ изучить основы SQL. Существуют и другие простые бесплатные базы данных (например, Open Office имеет один), если вы не хотите выгружать $for Access.

5) Разверните свое приложение, чтобы что-то сделать с базой данных.

Programming stuff

Страницы

вторник, 22 апреля 2014 г.

Книги для изучения C#/.NET

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

Пришло время немного переформатировать старый пост с «классическими книгами по C#/.NET», чтобы отразить не просто список достойных источников для изучения C#/.NET, но и упростить выбор нужных книг в зависимости от уровня и потребностей читателя.

Для новичка в программировании

Ни одна из книг не научит вас программированию, а книги о конкретном языке или платформе обычно даже не пытаются этого сделать. Путь профессионального программиста достаточно труден и мечты стать профессионалом за 21 день всегда будут оставаться мечтой (помните о замечательной статье – Teach Yourself Programming in Ten Years?).

Именно поэтому книги о C#/.NET вряд ли будут лучшими источниками, если вы хотите научиться основам программирования, правильному кодированию, или дизайну. Для этого есть масса других источников и упомянуть хочется лишь несколько базовых книг по разработке ПО: «Структура и интерпретация компьютерных программ» Харольда Абельсона и Джеральда Сассмана (MIT), «Почувствуй класс» Бертрана Мейера (MIT) и «Программирование. Принципы и практика использования С++» Бьярне Страуструпа (Texas A&M University). Каждая из этих книг обкатана на тысячах студентов в различных университетах и являются общепризнанной классикой. (Интересно, что в этих книгах используются разные методологии: SICP – ФП и Scheme, в книге Мейера – OO и Eiffel, а у Страуступа – в структурное + ОО программирование на языке С++.)

Для новичка в .NET

Выбор книги для новичка в C#/.NET зависит того, что понимается под понятием «новичок»: это новичок в C#/.NET или новичок в программировании? Если у вас есть 3+ опыта в С++, Java или другом высокоуровневом языке программирования, то разумнее будет сразу перейти к списку книг для продвинутых .NET разработчиков.

В противном случае подойдет практически любая обзорная книга о C# и платформе .NET, при этом классическим примером такой книги является книга Эндрю Троелсена:

«Язык программирования C# 5.0 и платформа .NET 4.5», Эндрю Троелсен, 6-е издание, 2012

В отличии от всех других книг, приведенных в этом списке, лишь эта книга не предполагает практически никакого опыта со стороны читателя. Поэтому в книге рассказывается о циклах, объявлении переменных и основах ООП. Также это единственная «универсальная» книга в списке, которая покрывает самые разные технологии платформы .NET: ASP.NET, WPF, WWF, WCF, ADO.NET, а также основы языка C#, отражение, процессы/потоки/домены, многопоточность и ввод-вывод.

Дополнительные ссылки: amazon.com, goodreads.com, ozon.ru (ru)

Для продвинутого .NET разработчика


Еще раз напомню, что под «продвинутым» в данном случае имеется ввиду скорее ваш собственный уровень зрелости, а не » продвинутое» знание C#/.NET. Так, если вы хорошо знаете С++, то чтение Троелсена будет пустой тратой времени, поскольку вы будете стараться понять, как же C#/.NET устроен внутри, чего книга Троелсена просто не даст.

Так что если вы чувствуете в себе силы копнуть глубже, то лучше всего выбрать одну книгу из списка ниже. При этом выбор должен основываться на следующем критерии: если интересны внутренности платформы .NET/CLR + многопоточность, то это книга Джеффри Рихтера, если же больше интересен именно язык C# — то это книги Албахари или Барта де Смета (при этом у Албахари будет побольше описания базовой библиотеки классов). Если вы уже неплохо знаете C# и хочется ускоренного глубокого погружения, то нужно брать книгу Джона Скита или книги Билла Вагнера.

Книги, ориентированные на платформу .NET

“CLR via C#”, Джеффри Рихтер, 4-е издание, 2012

С момента выхода языка C# и платформы .NET прошло без малого десять лет и за это время появилось немало отличных книг и статей, но при этом одна книга была и будет настоящей классикой в этой области. Я не знаю ни одной другой книги, которая бы пользовалась такой бы популярностью все эти годы, которую бы столько цитировали и советовали другим. Основное преимущество этой книги заключается в фирменном стиле Рихтера, невероятной глубине изложения и отличной подаче материала. Эта книга посвящена именно платформе .Net, ее фундаментальным основам и основным компонентам; в ней практически нет ничего о конкретном языке программирования, за исключением тех мест, когда автор рассказывает о том, как поступает компилятор в тех или иных случаях. Эта книга уже давно заслужила свое место на полке каждого профессионального .Net разработчика и в дополнительных рекомендациях, в общем-то, не нуждается.

«Программирование на платформе .NET», Дон Бокс, Крис Селлз, 2002

Что вы скажете о книге, в которой для знакомства с платформой .NET советуют книгу Рихтера для ознакомления с темой, поскольку в противном случае, ее, родимую, читать будет сложновато? Так вот, именно Дон Бокс, гуру технологии COM (который правда и сам на нее уже не может смотреть) и Крис Селлз (тоже славный малый) осмелились на это в своей книге. И совет этот, действительно полезен, поскольку авторы иногда залазят в такие дебри, что без бУтыля – никуда. Многие темы, такие как взаимодействие управляемого и неуправляемого кода или механизм кросс-доменного взаимодействия описан просто невероятно подробно. Конечно, некоторые темы уже устарели (ведь книга вышла в далеком 2002 году), но большинство из них будут актуальны на протяжении всего времени жизни платформы .NET.

Книги, ориентированные на язык C#

“C# 5.0 Unleashed” by Bart De Smet, 2 nd Edition, 2012

Представьте себе, что Рихтер таки нашел в себе силы и добавил в последнее издание не сотню новых страниц о многопоточности, а полностью переработал книгу и добавил туда сотню страниц по DLR (Dynamic Language Runtime), сотню страниц по лямбда-выражениям и деревьям выражений, еще сотню страниц с советами по работе в Visual Studio, полторы сотни страниц по LINQ-у, да еще и о контрактах не забыл. Добавьте сюда отличные картинки, которые иллюстрируют ход мыслей автора и помогают понять тот или иной аспект рассматриваемой темы; сотню сносок, в которых автор рассказывает, почему были приняты те или иные решения разработчиками языка или платформы, не забудьте о лирических отступления на разные теоретические аспекты программирования — и вы получите одну из лучших книг о языке C# и платформе .Net, которая когда-либо выходила в свет! И, кстати, в отличие от того же Троелсена, в этой книге вы не встретите никаких WPF-ов, WCF-ов или других ASP.NET-ов, все 1650 (!) страниц книги посвящены «всего лишь» языку C# и фундаментальным основам платформы .Net. Сочетание широты охвата и глубины изложения делает эту книгу одним из лучших источников информации для всех, кто хочет заняться изучением языком C# или пополнить свои знания в одной из тем.

“C# 5.0 in a Nutshell” by Joseph Albahari, Ben Albahari, 5 th Edition, 2012

Это еще один фундаментальный труд, объемом немногим более тысячи страниц, посвященный исключительно языку программирования C# и платформе .NET. И хотя у нас принято считать книгу Рихтера настоящей классикой, а ко всем остальным относиться с пренебрежением, книга братьев Албахари действительно заслуживает внимание. В этой книге рассматриваются практически все ключевые темы, касающиеся языка C# и платформы .NET, начиная от таких распространенных тем, как многопоточность, сборка мусора, сборки, домены, LINQ, заканчивая менее распространенными темами, как контракты, сериализация, потоковый ввод/вывод и регулярные выражения. И хотя глубина изложения иногда может не дотягивать до некоторых других представителей, в ней отлично соблюден баланс между сложностью изложения и практичностью, так что этой книги в большинстве случаев достаточно для глубокого понимания соответствующей темы.

“C# in Depth” by Jon Skeet, 3d Edition, 2013

Если вы когда-либо осмелитесь задать вопрос на StackOverflow.com о том, чтобы почитать для повышения своих знаний о языке C#, то он будет закрыт примерно через 3,5 секунды, как дубликат одного из сотен (!) сообщений, при этом в большинстве из них в первом же ответе будут советовать книгу Джеффри Рихтера, если речь касается еще и CLR и платформы .NET, и книгу Джона Скита, если речь идет о языке C#. Конечно, немаловажную роль в этом играет статус Джона Скита на StackOverflow.com, но, тем не менее, правда в этом действительно есть. У Скита есть удивительная особенность рассказывать сложные вещи простыми словами; многие весьма непростые темы раскрыты очень подробно; автор рассказывает о том, как «думает компилятор» и, что немаловажно, о чем думали разработчики компилятора, принимая то или иное решение при реализации этой возможности.

Благодаря своей структуре, книга “C# In Depth” позволяет увидеть эту целостную картину языка C# и структурировать новые или существующие знания. На протяжении всей книги автор рассказывает об эволюции языка C#, рассматривая по ходу изложения проблемы, присущие предыдущим версиям и способы их решения в последующих версиях. При этом автор дает понять, каким путем идет развитие языка C#, прогнозируя его новые возможности и будущие изменения.

“Effective C# (Covers C# 4.0)”, “More Effective C#” by Bill Wagner, 2010, 2008

Тема эффективности использования стала настолько популярной, что подобная литература появляется по большинству языков программирования и многим технологиям. Язык программирования C# не является исключением. Представителем серии «эффективного программирования» на языке C# являются две книги Била Вагнера. Первая книга вышла еще в 2004-м году и посвящена C# 1.0; в ней рассматриваются самые разные вопросы, начиная от различий между классами и структурами, заканчивая важностью строгой гарантии исключений и проблемами взаимодействия управляемого и неуправляемого кода. Вторая книга вышла незадолго до официального выхода C# 3.0 и уже отражает всю специфику этой версии языка и платформы. В книге рассматриваются особенности работы с обобщениями (generics), многопоточностью (в том числе и при работе с пользовательским интерфейсом), новые возможности языка C# 3.0 и отдельно рассматриваются вопросы, связанные с LINQ. В марте 2010 года вышло второе, переработанное издание первой книги, в которой отражены изменения C# 4.0, включая такие новшества как PLINQ и тип Dynamic (которому посвящена целая глава).

Дополнительные ссылки для «More Effective C#»: amazon.com, goodreads.com

Для эксперта

Несмотря на всю глубину глубин книг Рихтера, Барта Де Смета или Джона Скита, есть еще более специфические и более подробные источники по конкретным темам. Так, например, ни одна из книг выше не заменит аннотированную спецификацию языка C# Андерса Хейлсберга с прекрасными комментариями ведущих экспертов нашей области. Да и какими бы полными не были разделы о параллельном и асинхронном программировании в книгах Рихтера и Албахари, ничто не сможет сравниться с книгой Джо Даффи. А если вам потребуется копнуть действительно глубоко, то вам пригодятся знания по языку IL, и о том, как IL преобразуется в машинный код, и в этом случае будут полезны книги Сергея Лидина и Саши Голштейна соответственно.

“The C# Programming Language” by Anders Hejlsberg et al, 4 th Edition, 2010

Можно по-разному относится к спецификации языка программирования: для некоторых она является необходимым и достаточным источником информации о языке; для других она подобна словарю, в который можно изредка заглядывать, пополняя свои знания по какой-то конкретной теме; третьи вообще не знают о ее существовании. Но как бы лично мы не относились к подобному источнику информации, нужно признать, что в некоторых случаях подобная книга является просто незаменимой. А поскольку эта книга представляет собой не только спецификацию языка, но еще и аннотации известнейших представителей из нашей области, то мы получаем достойную книгу, о которой нужно как минимум знать каждому профессиональному разработчику.

“Concurrent Programming on Windows” by Joe Duffy, 2008

Самый подробный труд о многопоточном программировании под Windows. Здесь покрыты практически все темы: начиная от асинхронных моделей программирования в .NET (к сожалению не покрыта TAP – Task-based Asynchronous Programming) и асинхронным вводом-выводом, заканчивая моделями памяти и lock-free. Хотите сломать себе мозг об многопоточность? Книга Джо Даффи к вашим услугам!

В качестве дополнения к книге Джо Даффи можно посоветовать «Design Patterns for Decomposition and Coordination on Multicore Architectures», в которой покрыты TPL, PLINQ и другие темы, появившиеся уже после выхода книги Даффи.

Дополнительные ссылки: amazon.com, goodreads.com

“.NET 2.0 IL Assembler” by Serge L >

Сколько раз вам приходилось декомпилировать код, чтобы понять, как работает та или иная возможность компилятора C#? Или сколько раз вы смотрели на сгенерированный IL код, чтобы понять, что происходит внутри вашего любимого кода? Обе эти задачи возникают не слишком часто, да и Рефлектор со своей задачей отлично справляется в большинстве случаев. Но, тем не менее, знание языка ассемблера виртуальной машины никогда лишним не бывает, к тому же некоторые возможности CLR доступны только через него. Ну, а если когда-нибудь у вас появится желание или необходимость пополнить свои знания «управляемого» ассемблера, то неплохо иметь под рукой (или хотя бы знать о его существовании) отличное руководство, качество которого признано многими специалистами.

P.S. Сергей является автором языка IL;)

“Pro .NET Performance: Optimize Your C# Applications” by Sasha Goldshtein, 2012

Когда речь заходит о высокопроизводительных системах, то о C# и .NET Framework вспоминают в последнюю очередь. В этом есть разумное зерно, но что если вам все же нужно выжать все возможное из вашего «управляемого» приложения? В этом плане недостаточно спуститься с высокого уровня языка C# на уровень IL-кода, приходится копать глубже, на уровень машинного кода и внутренностей CLR. Именно для таких случаев нужна книга Саши Голшейна, известного блоггера и спикера.

«Pro .NET Performance» – это уникальная на данный момент книга с описанием внутреннего устройства типов, обобщений, с описанием тонкостей сборки мусора (например, с описанием Card Table) и другими экспертными техниками.

“Under the Hood of .NET Memory Management” by Chris Farrell, 2011

200 страниц) книга о сборке мусора от компании Red Gate. Это отличная книга, в которой процесс сборки мусора показан несколько более детально, чем в любом другом источнике. Здесь довольно подробно описываются сегменты, card table, типичные проблемы перерасхода и утечек памяти, и даже кратко рассматривается модель памяти Windows.

Однозначно полезная книга, если решите узнать об управляемой памяти больше, чем описано у старины Рихтера.

Книги по проектированию

Ни одна из книг, представленных выше не даст нужных знаний об ООП, функциональном программировании, или о дизайне приложений. Если вам нужна книга по ООД, то нет ничего лучше книги Мейера «Объектно-ориентированное конструирование программных систем», о которой я говорю трижды в день десятку человек, но пока лишь двое решились за нее взятьсяJ.

Тем не менее, есть ряд книг о дизайне в контексте платформы .NET, на которые стоит обратить внимание. Во-первых, это знаменитая FDG – Framework Design Gu >Ни одна из этих книг не заменит фундаментальных книг о дизайне, DDD или архитектуре приложений, но отлично подойдет в качестве дополнительного источника по этим темам.

“Framework Design Guidelines” by Krzysztof Cwalina, Brad Abrams, 2 nd Edition, 2008

Разработка качественных систем является весьма сложной задачей, а разработка качественных библиотек (особенно фреймворков) является поистине вершиной мастерства архитекторов и разработчиков. Сложность здесь кроется в специфике принимаемых решений, ведь акцент серьезно смещается в сторону простоты и удобства использования, расширяемости и надежности. И хотя именно тема разработка библиотек является центральной, книга будет также невероятно полезна и простым разработчикам, ведь знание ключевых идиом языка является совершенно необходимым, когда команда смотрит хотя бы немного дальше своего носа, и заботится не только о написании кода, но и о его последующем сопровождении. Кроме того, книга очень часто выступает таким себе арбитром во многих спорах, касающихся идиом именования, обработке исключений, проектированию собственных классов или использованию других идиом языка C#; а поскольку такие дискуссии происходят с завидным постоянством, то подобный козырь лишним точно не будет.

“Dependency Injection in .NET” by Mark Seemann, 2011

Внедрение зависимостей (DI, Dependency Injection) – это уже чуть ли не де факто стандарт любого enterprise приложения. Но вот вопрос: помогает ли эта техника вместе с контейнерами создавать более простые в сопровождении и развитии системы? Не превратились ли контейнеры в очередной культ карго программирования? Поскольку любую технологию довольно легко использовать неправильно, то всегда полезно получить более фундаментальное представление о том, чем она является и чем она не является.

Книга Марка Сиимана является довольно уникальным сборником советов, паттернов и примеров использования техники внедрения зависимостей. Поэтому не зависимо от того, являетесь ли вы сторонником или противником DI и IoC эта книга будет вам полезной.

“The Art of Unit Testing with Examples in C#” by Roy Osherove, 2 nd Edition, 2013

Паттерны не ограничиваются классическими паттернами, описанными в книге банды четырех. Паттерны повсюду: есть архитектурные паттерны, есть паттерны проектирования, есть DI-паттерны, есть DDD паттерны, есть паттерны рефакторинга, есть даже паттерны поведения. Точно также существуют паттерны разработки юнит-тестов. Есть типовые подходы к организации тестового кода для решения тех или иных задач. Лучшим источником по этой теме является фундаментальный труд «xUnit Test Patterns: Refactoring Test Code», а книга Роя является отличной книгой по этой же тематике в контексте платформы .NET.

“Real-World Functional Programming: With Examples in F# and C#” by Tomas Petricek and Jon Skeet, 2010

Что лучше ООП или ФП? Опыт последних лет (мой и многих других специалистов) показывает, что эти парадигмы не являются соперниками, а прекрасно дополняют друг друга. ООП рулит в области стратегии, а ФП незаменимо в вопросах тактики; ООП со своей абстракцией определяет крупные строительные блоки, а ФП со своей чистотой прекрасно справляется с вопросами реализации.

В этом плане книга Томаса Петрисека (с участием Джона «Stackoverflow» Скита) не слишком уникальна, но весьма полезна, поскольку дает представление о том, как думать в функциональном стиле и как это мышление влияет на дизайн и реализацию. Отличительной же особенностью этой книги являются примеры на языках C# и F#.

Книги по технологиям

Я не хочу детально описывать книги по конкретным технологиям, таким как WCF, WPF, ASP.NET (+MVC), Entity Framework и других. Причин здесь несколько: во-первых, очень сложно найти книгу, которая будет *значительно* выделяться среди конкурентов; во-вторых, цена ошибки при выборе неудачной книги в этом случае не столь велика. Наверняка книга с хорошим рейтингом даст вам все необходимые знания по конкретной технологии и вряд ли сможет существенно повлиять на ваши фундаментальные знания.

К тому же, книги по технологиям выходят настолько часто, что они устаревают буквально каждые полгода. Ниже представлен перечень книг по тройке технологий: WPF, WCF и ASP.NET MVC. Книги по другим технологиям готов обсудить в комментариях.

Заключение

Еще раз хочу напомнить, что не стоит переживать, если вдруг вы не увидите своей любимой книги в этом списке. Моя цель дать набор хороших источников, которые покрывают определенную нишу и потребуются разработчику на определенном этапе его карьеры; при этом вполне понятно, что есть аналогичные книги, которые ничем не хуже некоторых приведенных книг. Так, например, «C# 5.0 Essentials» вполне может заменить книгу Джо Албахари «C# 5.0 In a Nutshell», но читать их обе не имеет практически никакого смысла.

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

58 комментариев:

Не правильные ты, дядя Серёжа, ссылки на книжки даёшь — сравни прайс озона http://www.ozon.ru/context/detail/id/6089823/ и альтернативного магазина, который я не так давно для себя открыл http://www.combook.ru/product/10189381/ ;о) И как не маловажное дополнение, например эта книга «там» в наличии, в отличии от озона (который, быть может, там же её и закажет :о)

Обрадовался, побежал смотреть, чуть тапки не потерял :) Однако не все так радужно — http://www.combook.ru/product/10780473/ — 692р, http://www.ozon.ru/context/detail/id/26230428/ — 614р Причем мало того, что у ozon-а еще и доставка дешевле, так он еще в нашу деревню доставляет курьерской компанией, быстро и без предоплаты, а combook — с предоплатой и только почтой :(
Не, сидим на озоне :)

Спасибо, понял! Виноват – не учёл.

Я даю ссылки скорее для того, чтобы показать наличие русскоязычного издания. А потом уже каждый сам сможет решить, в каком магазине ее лучше купить: на рутрекере, озоне или где-то еще:) хотя разница в цене для некоторых книг и правда удивляет.

Да понятно :о) Но тогда можно дать ссылку в действительно максимально универсальное мерило – в маркет яндекса ;о)

А вот это очень ОК идея!! Нужно будет воспользоваться.

Очень здоровоская подборка!

Подскажите, где нибудь в Москве можно купить книги в оригинале? Или только с амазона заказать?

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

Хочется оставлять заметки прямо в книге, а если электронную версию то я пока не нашел вменяемого ридера с удобными заметками, может у вас есть что посоветовать?

Я пользуюсь goodreader-ом (под iOS). Сам давно не читаю без заметок, но в электронном виде их и писать удобнее, да и просматривать их потом проще.
Например, все мои посты в Г+ с цитатами появляются именно таким путем: делаю заметку в книге причтении, потом пересматриваю их и публикую наиболее интересные.

Спасибо за совет, отличное приложение, стоит своих денег!

Спасибо за статью. Как раз закончил читать Ошерова и стал искать новую книгу для чтения.

Пара опечаток:
>решились за нее взятьсяJ.
>баны четырех

И еще вопрос автору (а может и не только): стоит ли начинать изучение веб-разработки с Pro ASP.NET MVC 4?
C# знаю достаточно хорошо (мое мнение :-) ), ASP.NET изучал только обзорно (на уровне книги Троелсона), с html проблем нет (но можно обновить знания), JS — совсем ни как. Хотелось бы найти книгу, после прочтения которой сформировалась бы хорошая база для разработки веб-приложений на ASP.NET. В общем какие есть рекомендации по данной теме? :-)

Pro ASP.NET ИМХО вполне подойдет, как и многие другие книги.
Тут главное не искать идеальный учебник, а просто взять хороший и начать учиться;)
За очепятки — спасибо, поправлю.

Сергей, .net perfomance перевели — http://www.ozon.ru/context/detail/id/23816449/ можно добавить ссылку на ozon :)

Ух ты!! Здорово! Обязательно добавлю ссылку.

Книгу Эндрю Троелсен. Язык программирования C# 5.0 и платформа .NET 4.5 (6-е издание) я скачивал вот отсюда http://hitanyway.in.ua/category/develop/book-c/ . может еще кому то пригодится.

Этот комментарий был удален автором.

Владимир, спасибо, пригодилось!

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

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

Хочу спросить Вас, вот сейчас я прохожу как раз Абельсона и Сассмана по Вашей рекомендации. Эта книга у меня вторая (первая книга была по javaScript) и мне приходится прилагать большие усилия для решения каждой задачи. Пока я осилил лишь 20 самых первых. Одну задачу могу решать целый день. Неужели мне придется целый год одну эту книгу проходить? Или стоит параллельно читать две другие книги для новичков? Я просто не хотел бы брать везде по чуть-чуть, а в итоге не понять ничего. Надеюсь вопрос не глупый)

По сути, книга Сассмана — это полноценный университетский курс, рассчитанный на два семестра. Если вы еще и работаете, то усилия спокойно могут распределиться на год.

Я бы тут посоветовал два момента: во-первых, разумнее подойти к упражнениям. Возможно, нужно более здраво оценивать, какие из них выполнять, а какие нет. Понятно, что перфекционизм может требовать сделать их все, но тут главное, чтобы он (перфекционизм) не прибил желание учиться и идти дальше. Во-вторых, есть смысл делать «итерации» в несколько недель-месяц (зависит от вас) и переключаться на что-то другое. Тут, опять таки, важно держать мотивацию на должном уровне. Данная книга — не вполне практична, что может негативно сказаться на мотивации. В этом случае лучше совместить ее с чем-то более полезным на практике в данный момент.

З.Ы. Вопрос — не глупый:) Риск взяться за слишком многое и не преуспеть ни с чем — проявляется на практике с завидным постоянством.

Я сейчас учусь на 3 курсе, и пока не знаю где применять знания из этой книги. Надвигается лето и будет много свободного времени. Допустим я буду решать упражнения из sicp, где рекурсивные процедуры используются для решения математических задач, поэтому у меня выстраивается картинка калькулятора. Значит мне им и заниматься? Или есть книга, где есть более полезные упражнения?

Спасибо! Хорошая подборка.
От себя могу добавить только то, что для тех, кому больше нравится смотреть видео, есть классный портал http://itvdn.com/. Я начинал именно с них, а потом уже читал книги. Может быть, кому-то пригодится.

Добрый день, у вас рецензия на Скита перенаправляет на рецензию Вагнера.

И еще вот тут: «Если вам нужна книга по ООД»

А что Вы можете сказать про книгу «Герберт Шилдт — C# 4.0. Полное руководство — 2011» ?

С него начинал изучать c#, очень хорошая книга

Сергей, как считаешь, книга Албахари C# 5.0 In a Nutshell и CLR via C# Рихтера, взаимозаменяемы?

Если книги Албахари и Гриффитса нацелены на изучение темы «в ширину», то CLR via C# уходит «в глубину».

Согласен с @Shnur: они не совсем взаимозаменяемы, поскольку Рихетр больше направлен на внутренности платформы, а Албахари покрывает большой объем материала, но не с такой глубиной.

Уважаемый Сергей! С вашим списком литературы по языку C# я солидарен. Мне кажется, что можно было добавить ещё три книги, которые весьма удачные:
1.Mark Michaelis, Eric Lippert Essential C# 6.0
2.Eric Gunnerson, Nick Wienholt A Programmer’s Guide to C# 5.0
3.Иэн Гриффитс Программирование на C# 5.0

Владимир, я лично немного знаком с первой книгой, но не знаком с остальными. А чем они хороши, и в чем они выделяются из книг, которые уже есть в списке? (вопрос это довольно интересен, поскольку я, как потенциальный читатель, хотел бы понимать, как именно выбирать среди такого огромного списка книг).

О, спасибо! Пропустил книжку Гуннерсона. Должно быть интересно.

Добрый день, Владимир! Подскажите пожалуйста если эти книги есть в открытом доступе или их можно только приобрести, что достаточно хорошо бьёт по карману. Спасибо!

Сергей! Прежде всего, хочу сказать, что рад знакомству с вашей книгой и блогом. Большая редкость встретить талантливого русско-язычного автора, умеющего умно, интересно, ясно и доходчиво излагать сведения, связанные с профессиональным программированием. Важно, что вы даёте своё понимание, свой взгляд, свою интерпретацию и пишете своим стилем. Ваша книга выделяется не только профессионализмом, но и тем, как она структурирована. Кто ясно мыслит, тот ясно излагает – это в полной мере относится к вам. Желаю вам продолжить писательское творчество — ведь программистам, живущим в России, естественно, лучше читать качественную специальную литературу именно на родном русском языке.
Теперь о выборе книг. Человеку, приступившему к изучению языка C#, сделать правильный выбор наиболее подходящих и лучших книг из нескольких десятков уже имеющихся, — это не тривиальная задача. Важен выбор именно первой книги.
Несколько лет назад, я начал изучать язык C# 4.0 и стал искать подходящую книгу. Прочитал множество книг, в том числе и на английском языке. Удивился тому, что нет книги, в которой на 350 стр. было бы ясное и полное изложение всего инструментария этого языка. При изучении нового языка программирования, хочется быстрее узнать все его возможности, а не брести через многословные описания примеров тысяче-страничных учебников. Мне был нужен удобный учебник (примерно 300-350 стр.) для первого чтения, но не просто для «чайников», а формирующий базовые знания программиста на C#.
Для первой книги совершенно не подходит 1000 страничный «кирпич» Троелсена. Он напихал туда, как вы сами об этом уже говорили, массу всего, что связано с применением C# и плохо структурировал материал конкретно о языке C#. Непродуманные группировка и порядок изложения сведений о всех имеющихся средств этого языка – вот чем часто грешат авторы учебников. Книга “C# 5.0 Unleashed” by Bart De Smet великолепно написанная, энциклопедическая книга и гораздо лучше, чем у Троелсена, но там ведь 1500 стр. Это существенно затягивает процесс узнавания всех средств языка. В качестве первой книги тоже не годится, а вот второй книгой – обязательно должна быть!
Книга, которая, по-моему, лучше подходит на роль первой – это Eric Gunnerson, Nick Wienholt A Programmer’s Guide to C# 5.0. Она не только хорошо структурирована и упорядочена, но там всего 400 стр. и ясный стиль изложения.
Что касается меня, то в итоге, я сам для себя написал книгу и назвал её «C# 6.0 — Концентрированный учебник». В ней изложено фактически всё, что я усвоил из множества прочитанных книг по C# (книги из вашего списка я тоже читал). Конечно, в моём учебнике всё творчески переработано, со своими примерами, по-своему упорядоченно так, чтобы уместилось на 330 стр. но, ничего важного не было упущено.
Посоветуйте, пожалуйста, возможно ли реализовать на этой основе проект создания бесплатного коллективного учебника по C#? Идея состоит в том, чтобы где-нибудь выложить свой текст и предоставить возможность всем желающим писать свои комментарии и свои добавления, как приложение к основному тексту, который будет продолжать составлять объём не более 350 стр. Все желающие смогут принять участие с целью совершенствования и развития этого учебника. Такой учебник будет оставаться совершенно бесплатным и доступным для всех, кто хочет освоить язык C#.

Владимир, спасибо за столь развернутый комментарий (только недавно увидел, что он попал изначально в спам и из-за этого не был виден какое-то время).

Цукерберг рекомендует:  Инсталлятор - Создание инсталлятора
Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих