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

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

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

Программистом может стать не каждый, а программировать может любой

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для того, чтобы были достигнуты высокие профессиональные навыки в программировании, то для программистов на языках C# и C++ будет полезно знание платформы программирования dotNet Framework. Аналогично для бывалых программистов на языка Java следует при разработке приложений учитывать особенности и возможности платформы программирования на языке Java.

Здесь зачастую возникает вопрос что выбирать язык или платформу программирования?

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 
Реклама. Информация о рекламодателе по ссылкам в статье.

brasm

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

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

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