Теория программирования для начинающих

Теория программирования для начинающих

Учиться никогда не поздно, но не всегда целесообразно.

Немного теории или пара слов об алгоритме, псевдокоде и блок-схемах

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

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

Что такое алгоритм, программирование и псевдокод

Начнем с того, что определим, что такое алгоритм. Алгоритм – это порядок действий, которые необходимо выполнить, чтобы решить определенную задачу. Понятие алгоритма не связано только лишь с программами, выполняемыми на компьютере, поэтому на вопрос “кому необходимо выполнить” ответом может быть кто или что угодно: человек, робот, вычислительная техника и т.д. Алгоритм – это инструкция или руководство или, наконец, просто программа действий. В этом случае программирование – это описание алгоритма средствами языка программирования, конструкции которого компьютер умеет обрабатывать. Или же просто это процесс написания текста компьютерной программы. В такой интерпретации синонимом программированию является процесс кодирования (coding). Почему я заговорил про интерпретации? Дело в том, что разработчики программного обеспечения очень трепетно относятся к тому, чем они занимаются, и могут быть крайне недовольны, когда их деятельность сводят только лишь к процессу кодирования на конкретном языке программирования. Сам процесс создания программных продуктов – это не только кодирование, но и предваряющий этап проектирования, а также последующие этапы тестирования и сопровождения. Под программированием чаще имеют в виду процесс создания компьютерной программы в целом, в том числе и разработку алгоритма, а кодирование – это перевод уже разработанного алгоритма на язык, понятный объекту кодирования (имеется в виду компьютер или любое другое устройство, работающее по заданной кем-то программе).

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

Составные операторы используются для организации других операторов в последовательности и управления ходом выполнения программы. К составным операторам относят циклы (повторение последовательности операторов), условные операторы, операторы выбора и т.п. Математические и логические выражения сами по себе операторами не являются. Они могут быть аргументами операторов присваивания значений переменным или критериями выполнения циклов и условных операторов. Частью математических и логических выражений могут быть вызовы функций.

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

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

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

Примеры алгоритмов на псевдокоде и в виде блок-схем

Вот пример описания алгоритма задачи деления одного числа на другое, выполненного на псевдокоде:

Ниже еще один пример программы на псевдокоде — алгоритм простейшей игры “Угадай число”, с которой довольно часто начинают многие курсы программирования для начинающих. Ну, вот и этот курс не стал исключением. Пример иллюстрирует использование составных операторов, в том числе их суперпозицию: условие в цикле и вложенное условие. Читая псевдокод, становится понятно, что общение с вычислительной техникой на классическом языке программирования очень похоже на обычное человеческое общение (иногда в повелительном наклонении).

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


Блок-схема алгоритма игры "Угадай число", условные обозначения блок-схем.

Переменные и их классификация, составные типы и немного о процессах управления памятью

Область видимости переменных

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

По области видимости переменные можно классифицировать следующим образом:

  • Локальная переменная – переменная доступна только в границах отдельной процедуры или составного оператора. Из названия понятно, что такие переменные объявляют и инициализируют для решения каких-либо локальных задач, например: для хранения номера итерации цикла или промежуточного результата некоторой операции.
  • Параметр процедуры или функции – переменная, доступ к которой имеется из любого места процедуры или функции, аргументом которой она является. В примере, который размещен ниже, для процедуры ВЫВОД_АДРЕСА определен аргумент А типа АДРЕС. Значение аргумента в примере определяется значением локальной (в контексте основной программы) одноименной переменной. То, что имя локальной переменной и имя аргумента процедуры совпадают — не является обязательным условием, поскольку это разные элементы программы и они имеют право иметь различные имена.
  • Член структуры или класса – часть составного типа. Пример – составные части адреса (смотри пример ниже). Область видимости таких элементов может совпадать с областью видимости всего экземпляра, а может быть ограничена до рамок “внутреннего” использования.
  • Глобальные переменные – доступ к таким переменным есть из любой части программы в любой момент времени исполнения. Рекомендуется избегать использования глобальных переменных без особого на то резона, поскольку оно может приводить к нерациональному расходу памяти.
Читайте также:  Asus zenbook prime ux32vd

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

Раздел определений программы

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

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

Особенности жизненного цикла переменных

Что касается жизненного цикла переменной, то он соответствует времени с момента выделения памяти под ее значение и до момента освобождения этой памяти. Естественно, что жизненный цикл локальных переменных и параметров процедур и функций ограничен временем исполнения соответствующих фрагментов кода, а жизненный цикл членов структур и классов – жизненным циклом экземпляра всей структуры или класса. Можно также сказать, что жизненный цикл переменной начинается в момент появления ее в области видимости и заканчивается тогда, когда переменная эту область покидает. Если строго следовать этой терминологии, то необходимо сделать небольшой экскурс в тонкости процессов выделение памяти под переменную и ее освобождения. Дело в том, что как минимум при объявлении элементарных типов, память для них выделяется сразу же по месту их объявления и освобождается автоматически после того, как переменная покидает область видимости. В этом случае память выделяется из стека – из наиболее “дорогой” области памяти, в которой хранится и сам исполняемый код. В C# и VB.NET структуры также размещаются в стеке. Для экземпляров сложных типов, таких как классы, память выделяется из общей кучи (heap) при помощи специального оператора (оператор new в языках программирования C++, Java, C#, VB.NET). Объем кучи превосходит объем стека, но по времени доступа к значению переменной ему уступает. Освобождается память в куче также при помощи отдельного оператора или при помощи специальных механизмов, работающих в фоновом режиме. Таким образом, для классов имеет место следующая ситуация: в область видимости их экземпляры попадают раньше, чем начинается их жизненный цикл, а покидают область видимости они, соответственно, уже после его окончания. В этом случае до выделения памяти "живет" не сама переменная, а указатель на переменную. Поскольку управление памятью происходит в “ручном” режиме, то ее выделение и освобождение можно выполнять неоднократно, что делает жизненный цикл таких переменных прерывистым. Ниже иллюстрация к сказанному на "C-подобном" языке программирования.

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

В языках программирования платформы Microsoft .NET, к которым относятся C# и VB.NET, процессом освобождения памяти управляет специальный механизм – "сборщик мусора" (Garbage Collector), который работает в отдельном фоновом потоке. Профессионалов это может раздражать, но в целом такое обстоятельство позволяет не забивать себе голову лишними проблемами и быть уверенным, что рано или поздно вся занятая вашей программой память будет возвращена операционной системе.

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

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

Интегрированная среда разработки (IDE, Integrated development environment) – совокупность программных средств, предлагающих пользователю инструменты для написания программного кода, поиска и выделения в нем синтаксических ошибок и запуска приложения в режиме отладки. В состав интегрированной среды разработки входят компилятор, компоновщик, отладчик, профайлер и другие компоненты. Наиболее популярной средой разработки программных продуктов на языках программирования C#, VB.NET и C++ является Microsoft Visual Studio, а для учебных целей я предлагаю использовать следующий инструментарий для начинающих программистов.

Отладчик (debugger) – инструмент IDE, позволяющий выполнять программу в пошаговом режиме и отслеживать значения переменных на каждом из шагов, определенных точками останова или контрольными точками (break point).

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

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

Машинный код – система команд, которые процессор компьютера понимает “без перевода”.

Языки программирования высокого и низкого уровня – классификация языков программирования по степени удобства их использования человеком для решения прикладных задач (языки высокого уровня) или по степени близости их к машинному коду (языки низкого уровня).

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

Читайте также:  Как поменять зарядку на планшете

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

Компоновщик (linker) – приложение, которое вступает в процесс создания исполняемого модуля после компилятора. Если результат компиляции – это несколько объектных модулей, то компоновщик всех их находит и строит из них исполняемый модуль.

Исполняемый модуль – файл, содержащий программу ровно в том виде, который способен обработать загрузчик конкретной операционной системы. Чаще всего это файлы с расширением exe или dll.

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

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

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

Опубликовал +автор Октябрь 20 2011 22:06:54 65535 Прочтений
Компьютерные курсы и курсы программирования

Курс для начинающих программистов на C# и VB.NET.

Построение SQL запросов и работа с базой данных.

Программирование на C#. Краткое руководство.

Применение регулярных выражений.

Примеры программной Plug-in архитектуры.

Язык разметки XML и его расширения с примерами.

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна: решения типовых задач верстки.

Руководство по программированию на PHP для начинающих.

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

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

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

Что нужно знать «чайнику»

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

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

Многие начинающие обучение считают написание кода чуть ли не самой романтической профессией. Особенно увеличилось количество желающих познать программирование после просмотра фильма « Матрица ». Именно главный герой этой картины Нео подтолкнул многих к становлению на путь постижения программных наук:

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

Особенности обучения программированию на постсоветском пространстве

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

Программирования как отдельной отрасли и специализации не существовало как таковой. Его основы преподавались лишь как привязка к другим инженерным дисциплинам. И даже те крохи знаний, которые давались студентам в этой области, не соответствовали современным стандартам и утратили свою актуальность еще 20-30 лет назад.

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

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

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

В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.

С какого языка начать изучать программирование

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

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

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


Рассмотрим особенности этого языка, делающего его оптимальным для изучения:

  • Простая для понимания основа – часть встроенных возможностей языка для простоты вынесена в отдельно подключаемые библиотеки. К таким элементам относится большая часть математических функций и методов для работы с файловой системой;
  • Оптимально подогнанная система типов – благодаря простому набору типов данных и строгой типизации уменьшается риск допущения ошибок в процессе написания программного кода;
  • Направленность C на процедурный тип программирования, при котором соблюдается четкая иерархия всех элементов кода;
  • Доступ к памяти машины с помощью указателей;
  • Минимальное количество поддерживаемых ключевых слов;
  • Поддержка области действия имен;
  • Поддержка пользовательских типов данных ( объединения и структуры ).

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

Программы (компиляторы) для программирования

Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.

Вот несколько специализированных компиляторов с поддержкой языка C:

  • Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:

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

  • Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:


Что касается специализированной литературы, то советовать книги определенных авторов мы не будем. Тут, как говорится, выбирайте, что душе угодно. Потому что в большинстве случаев подбор самоучителя по программированию – это индивидуальный процесс. Используйте тот источник, который больше подходит именно для вас.

Да и в интернете можно найти очень много информации. Например, на нашем сайте специализированной литературе по IT тематике посвящен целый раздел.

Тенденции на рынке программирования

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

  • Веб-программирование – здесь понадобятся знания PHP , CSS и HTML ;
  • Разработка приложений под мобильную операционную систему Andro >Java . Поэтому потребуется знание основ этого языка;
  • C# (си sharp) – дальний потомок C . На основе C# построена веб-технология ASP.net от Microsoft .


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

Начинающие программисты часто спрашивают, какие книги по программированию читать и как, чтобы лучше усвоился материал. Отвечаем на эти вопросы.

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

Зачем нужны книги по программированию?

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

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

Сперва определитесь, что планируете осваивать.

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

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

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

Другой пример:

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

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

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

Подытожим:

  1. Начинаете изучать что-то новое и не знаете, насколько оно сложное? Попробуйте для начала пробежаться по быстрым курсам, статьям и туториалам. Не помогло? Тогда ищите книги по программированию для основательного углубления в теорию.
  2. Уверены, что технология не является «rocket science» (сложной)? В этом случае книгу можно отложить до лучших времен, когда вы обрастете некоторым опытом: так она окажется намного более понятной и полезной.
  3. Если же точно знаете, что будет непросто (язык со сложными конструкциями, парадигмами, разработка под конкретную платформу, etc.), сразу ищите книгу, но также не забывайте о параллельной практике.

Как лучше читать книги по программированию?

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

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

Правило первое: только практика набивает руку.

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

Правило второе: перечитывайте.

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

Правило третье: пять книг не лучше, чем одна.

Погоня за количеством в надежде забить свой шкаф «умными» книжками ни к чему не приведет. Изучая новое, бывает тяжело заставить себя перейти к практике. Чтобы оставаться в зоне комфорта, мы часто утешаем себя тем, что мало знаем, и попадаем в ловушку под названием «Вечный Студент» – человек, который постоянно что-то учит, но на самом деле ничего со своими знаниями не делает.

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

Не загоняйте себя в тупик вопросами в стиле «Прочел Лутца по Питону. Что читать дальше?». Лучше ответьте на вопрос «Сколько строчек кода вы написали в процессе чтения?». Что вы получите от следующей книги по программированию на ту же тему, если и эта не закрепилась на практике? Перечитайте книгу и попробуйте реализовать из нее что-то на практике.

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

Какие книги по программированию читать?

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

Справочные материалы
Ссылка на основную публикацию
Adblock detector