Просмотров-931
0

Как правильно изучать языки программирования?

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

Подход, управляемый профессиональными требованиями

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

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

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

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

Из рисунка видно, что процесс изучения языка программирования состоит из трех циклов(спиралей):

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

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

В каждом цикле выделяется четыре этапа:

  • анализ данных различной сложности и разных объемов и типов их представления в языке программирования;
  • освоение методов доступа и обработки соответствующих данных — операторов и управляющих конструкций;
  • освоение способов организации структуры программного кода;
  • интеграция и отладка программы.

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

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

Подготовительные операции

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

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

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

Обучение методам процедурного программирования

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

  • синтаксическое объявление и представление в программе, целые без точки, вещественные с точкой;
  • представление в памяти ЭВМ с фиксированной точкой, с плавающей запятой ;
  • диапазон изменения и зависимость его от разрядности машины;
  • правила преобразования типов, автоматическое или явное;
  • наличие спецификаторов и модификаторов типов и их использование.

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

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

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

Усвоив работу операторов и их использование в программном коде можно переходить с структурному оформлению программ больших размеров. В процедурном (императивном, структурном) программировании программа структурно состоит из одной или нескольких взаимодействующих процедур.

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

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

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

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

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

  • изучить простые типы данных и освоить приемы их применения в программе;
  • освоить программную реализацию базовых алгоритмических структур и ее использование в программах;
  • освоить способы создания процедур и функций и правила их применения в программах.

На этом данный цикл изучения языка программирования не заканчивается, пройдена только первая итерация цикла. Далее следует повторить все сначала(вторая итерация), но с более сложными(структурированными) типами данных, такими как массивы, множества и пользовательскими(собственными) типами данных. Осваивая структурные типы данных, также следует обратить внимание на размещение их в памяти ЭВМ, на способы индексации элементов и инициализации.

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

Такова методика первоначального изучения языка программирования. Этот цикл изучения не требует специальной математической подготовки. Достаточно школьного образования в математике и информатике.

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

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

Здесь следует учитывать, что парадигма объектно-ориентированного программирования существенно отличается от парадигмы процедурного программирования. Чтобы, как говорится, “въехать” в объектно-ориентированное программирование требуется преодоление какого то особенного, возможно психологического, барьера. Это обусловлено тем, что манипулировать приходится не с простыми(числа, символы, строки) данными, а с более сложными и более абстрактными типами данных, такими как структуры, классы и массивы объектов.

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

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

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

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

Самостоятельное изучение объектно-ориентированного языка программирования достаточно сложное занятие. Здесь требуется либо обучение программированию в ВУЗе или на специальных курсах. Как научиться программировать на курсах можно познакомиться во многих статьях нашего сайта. Например, среди онлайн курсов изучения алгоритмических языков программирования можно выделить онлайн-курсы университетов Skillbox, GeekBrains, SkyPro, Нетология и других.

Например, в университете Skillbox можно найти много возможностей получить образование программиста с помощью дистанционного обучения. Здесь представлены самые востребованные профессии, используются современные инновационные методики онлайн-обучения. В том числе имеется возможность пройти и бесплатный курс программирования. Студенты обучаются программированию на востребованных сегодня алгоритмических языках Python, Java, C++, C#, а также языках веб-программирования JavaScript, РНР и опять же Python.

Ссылка Salid на курс SkillboxPython
Skillbox Python
Онлайн курс языка C#
Skillbox C#
Онлайн курс языка С++
Skillbox C++
Онлайн курс Java разработчик
Skillbox Java

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

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

В связи с эти для перехода к этому циклу требуется специальная математическая подготовка, подготовка в области баз данных и языка SQL, методов машинного обучения( искусственного интеллекта) и методов Data Mining(классификации, кластерного анализа, поиска ассоциативных правил) и Big Data и т.п.

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

Некоторые проблемы и требования к уровню подготовки программиста при обработке больших объемов данных(Big Data) рассмотрены в статье «Как стать специалистом по большим данным«.

Таким образом, изучение языка программирования самостоятельно возможно, но для этого придется приложить массу усилий и проявить силу воли. Потому что для самостоятельного освоения программирования описанными методами требуется высокий уровень математической подготовки, что путем самообучения достичь практически не возможно. Поэтому здесь также требуется либо изучение указанных методов в ВУЗе или на специальных онлайн-курсах. Среди курсов, на которых можно пройти обучение в данной области знаний, опять же выделяются онлайн-курсы высшей квалификации Big Data онлайн-университета GeekBrains.

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

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

Заключение

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

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

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

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

Таковы рекомендации. Попробуйте и поделитесь опытом.

Связанные материалы

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

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

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 

brasm

Пенсионер с 33 - летним педагогическим стажем

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *