Направления в программировании раскрывающиеся в школьном курсе

Обновлено: 02.07.2024

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

Разработка web-приложений

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

Web-программирование можно разделить на backend (написание серверных скриптов – PHP, Python, Ruby) и frontend (разработка юзерского интерфейса – Javascript, HTML, CSS).

Разработка desktop-приложений

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

Разработка серверных приложений

Это различные игровые сервера (ваша любимая Дотка, CS: GO), IM-сервисы (серверная часть Skype, ICQ, MSN), банковские базы данных.

направления программирования

Разработка мобильных приложений

Множество Java-приложений. VK, Viber, Яндекс.Карты, переводчики, электронные читалки.

Программирование встраиваемых систем

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

Системное программирование

направления программирования

Разработка игр

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

Олимпиадное программирование и решение задач

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

Программирование баз данных

Серьезное направление. Хотите разрабатывать базы данных, способных хранить миллиарды строк информации о всех пользователях VKontakte или Facebook и при этом не тормозить – вам сюда.

Science

Наука и этим все сказано. Нейронные сети, моделирование структуры ДНК, запуск спутников, моделирование Большого Взрыва.


Мнения о том, какой язык программирования лучше преподавать в школе, разнятся: от того, что программирование изучать не нужно, а следует просто поднимать компьютерную грамотность и осваивать офисные программы (как Западе), до того, что нужно изучать операционные системы и несколько языков программирования с различными парадигмами. Это крайние случаи, но золотую середину найти непросто. В первую очередь, нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться Интернетом, электронной почтой, текстовым графическим редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям? А может, нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её непросто. Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.

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

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

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

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

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

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

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

Вероятно, в этом заключается основная “неудовлетворенность” учащихся, которые решили совершенствоваться в программировании. Для реальной работы им приходится учить более популярный язык (Java, C/C++, PHP, Python и т. д.). Однако использование Си в качестве начального языка программирования имеет ряд проблем: в нём много отпугивающих конструкций даже для интересующихся программированием учащихся. С другой стороны, никто не заставляет учителей показывать все глубины Си. С ним можно работать на том же уровне, что и с Паскалем, используя соответствующие конструкции.

FreePascal — бесплатный компилятор Паскаля, отвечающий современным требованиям и обладающий средой разработки один в один похожей на Turbo Pascal, что делает возможным использования большей части методической литературы, написанной для последнего. Работает под Windows и Linux. Рекомендуется как самый простой способ замены Turbo Pascal. Отсутствуют проблемы с лицензией.

Lazarus — среда разработки, использующая компилятор FreePascal, но при этом поддерживающая разработку современных оконных приложений. Позиционируется как, совместимая с Delphi, но учебный материал, написанный для последней, применим не всегда. Интерфейс более сложен по сравнению с IDE FreePascal. Рекомендуется использовать при достаточной квалификации преподавателя.

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

Выбор современных систем визуального проектирования (Delphi, Lazarus, Visual Studio и т. д.) на начальном этапе обучения программирования вызывает ряд проблем. При создании проекта система автоматически генерирует большой объем кода, связанный с работой визуальных компонентов и не относящийся к решению поставленной задачи. Всё сразу объектно-ориентированное, а ученику, для начала бы, разобратьсяс циклами, массивами, условными операторами.

На сегодняшний день наиболее удачным выбором, скорее всего, был бы Питон (Python) + приличная IDE (Eclipse или PyCharm), с тестированием приложений во встроенной консоли. Питон был создан более 20 лет назад и по сей день используется и в обучении основам программирования, и в коммерческих целях. На нем можно разрабатывать серверные и клиентские программы, сайты и веб сервисы, мобильные приложения и программировать роботов. Самое главное, что на рынке труда Python-программисты получают широкую востребованность, и она будет расти еще много лет, ведь язык Python используют крупные корпорации в своих коммерческих проектах.

Python — это полноценный язык программирования высокого уровня. Он поддерживает целый ряд парадигм: модульная парадигма, процедурная парадигма, объектно-ориентированная парадигма, функциональная парадигма. Немаловажно, что Python распространяется свободно на основании лицензии подобной GNU General Public License.

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

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

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

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

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

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

  1. Лапчик М. П., Семакин И. Г., Хеннер Е. Г. Методика преподавания информатики: Учебное пособие для студентов педвузов — М.: Издательский центр “Академия”, 2003–624 с.
  2. Захарова И. Г. Информационные технологии в образовании: Учебное пособие для студ. высш. учеб. заведений — М.: Издательский центр “Академия”, 2005–192 с.
  3. Угринович Н. Д. Информатика и ИКТ. Профильный уровень: учебник для 10 класса / 9-е изд., испр. и доп. — М.: БИНОМ, Лаборатория знаний. 2012. — 295с.
  4. Поляков К. Ю. Информатика. Углубленный уровень: учебник для 10 класса: в 2ч. Ч. 2 — М.: БИНОМ, Лаборатория знаний. 2013. — 304 с.
  5. Поляков К. Ю. Информатика. Углубленный уровень: учебник для 11 класса: в 2ч. Ч. 2 — М.: БИНОМ, Лаборатория знаний. 2013. — 304 с.
  6. Авдошин С. М., Ахметсафина Р. З., Максименкова О. В. Информатика и ИКТTU”Учебно-справочные материалы. М.: СПб.: Просвещение. 2012.-252с.

Основные термины (генерируются автоматически): язык программирования, язык, программирование, IDE, основа программирования, паскаль, программа, ученик, алгоритмическое мышление, высокий уровень.

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

Идеология объектно-ориентированного подхода (ООП) в программировании, востребованная при решении многих практических задач, в школьном курсе информатики практически не освещается. В школе данная тема если и изучается, то частично при знакомстве с классификацией подходов в программировании.

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

Кратко опишем основные принципы объектно-ориентированного подхода в программировании.

Объектно-ориентированное программирование – это подход программирования, основанный на работе с объектом, его свойствами и методами, для работы с которыми используются принципы полиморфизма, наследования и инкапсуляции [1]. Объектно-ориентированный подход программирования может реализовываться не только в визуально-ориентированных языках программирования, но и в процедурных языках программирования, например в Object Pascal.

В основе ООП лежит понятие класса, под которым понимают новый тип данных, вводимый разработчиком при решении конкретной задачи. Объект или класс является абстрактным типом данных, создаваемым программистом. Для описания объекта или класса определяются его свойства и методы.

В основе объектно-ориентированного программирования лежат следующие понятия: инкапсуляция, наследование и полиморфизм [2].

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

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

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

Экспериментальное исследование заключалось в следующем:

- разработать систему уроков изучения ООП;

- проверить эффективность разработанных учебных материалов;

- провести анкетирование учащихся.

Эксперимент проводился в 10 классе МБОУ Озерненская СОШ № 1 Смоленской области. Экспериментальная группа состояла из 21 ученика.

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

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

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

Сравнительный анализ знаний учащихся

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

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

Анкета включала следующие вопросы:

  1. Какие языки программирования ты изучал?
  2. Какой из них тебе больше всего понравился?
  3. До изучения объектно-ориентированного программирования ты что-нибудь слышал о языке программирования Visual Basic?
  4. В каком языке программирования легче работать, в процедурном или объектно-ориентированном языке? Почему?
  5. Хотелось бы тебе изучить объектно-ориентированный язык программирования Visual Basic более подробно? Почему?
  6. Стал ли ты лучше разбираться в программировании после изучения объектно-ориентированного программирования?

В результате анализа данных анкетирования можно сделать следующие выводы.

Ученики знакомы с очень малым количеством языков программирования. Это – Gambas, Visual Basic и Free Pascal. Все учащиеся 10 класса знакомы с языком программирования Gambas (редактор текстового процессора Open Office Writer). 8 человек знакомы с языком программирования Visual Basic. Эти два языка предлагаются для изучения программирования в учебнике по информатике Н.Д. Угриновича. Язык Free Pascal отметили ученики, которые изучали его на дополнительных занятиях по информатике либо самостоятельно.

Многим ученикам (61 %) легче работать в объектно-ориентированном языке программирования, чем в процедурном языке. Одной из причин выбора объектно-ориентированного языка программирования была простота и удобство работы с объектами (форма, кнопка, поле и надпись). Следует подчеркнуть, что некоторые ученики приравнивали объектно-ориентированные и визуально-ориентированные языки программирования.

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

- проблемы с выявлением взаимосвязей между теорией и практикой в ООП;

- пустую трату времени на изучение дополнительных методов программирования (полиморфизм, инкапсуляция, наследование);

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

Желание учеников изучить более подробно ООП возникло чуть более чем у половины класса (51 %). Таким ученикам было бы интересно увидеть все преимущества ООП и научиться решать более сложные задачи в объектах.

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

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

В данной методике преподавания ООП не рассматривается программирование в объектах. Следует учитывать, что не всегда, при решении задач, особенно не очень сложных, данный метод является самым оптимальным. В профориентационных целях изучения информатики в школе больше внимание уделяется освоению школьниками информационных технологий, чем освоению работы программиста. Поэтому по программированию в школе решение сложных задач практически не рассматривается [3]. Но ООП можно рассматривать как метод изучения программирования в целом. В связи с этим, дальнейшее исследование будет заключаться в изучении ООП в школьном курсе информатики как базовой методологии программирования. В этом случае изучение ООП целесообразно будет начинать на базовом уровне с пятого, а не восьмого класса.

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


Младшая школа

Практика показывает, что основы программирования доступны для детей с 5-и лет. В Китае ребят обучают программированию уже в детском саду. Уроки по программированию с первого класса преподают в Эстонии с 2012 года. В AppStore можно найти приложение Bustin Jeiber, созданное разработчиком Томасом Суарезом в 12 лет, мальчик увлёкся написанием кода в 6. Для детей программирование может стать забавой, которая перерастаёт в профессиональное увлечение.

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

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

Учиться и играть одновременно

Мгновенно увидеть пользу от изучения новой темы школьнику поможет обучение с помощью игры. Ребёнок вряд ли придёт в восторг от знания переменных. Если показать, что с помощью переменных персонаж игры научится приобретать или терять очки, эта информация станет видимой, а значит обратит внимание и заставит поразмышлять над решением задачи. Подобный вариант написания кода предлагает визуальная среда Scratch, в которой ребёнок может создать игру, сочетая кирпичики с элементами кода. Программой можно пользоваться бесплатно. Даже родитель‑гуманитарий в силах освоить её, чтобы помогать ребёнку создавать простые анимации и игры.

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

С основами робототехники познакомят конструкторы, к которым прилагаются программируемые блоки, датчики и двигатели. Подобные продукты разрабатывает Lego. Компания выпускает наборы WeDo для детей от 7-и лет и Mindstorms для ребят от 10-и лет.

Программировать без компьютера

Занятия программированием настораживают родителей младших школьников: кажется, что у разработчиков рано развиваются проблемы со здоровьем. Привычный образ – человек с испорченными зрением и осанкой из‑за многочасовых сидений за компьютером. Обучение программированию не обязательно должно проходить постоянно за экраном. Существует образовательный подход без подключения (CS unplugged) к компьютеру. С помощью настольных игр детей учат неизменным концепциям в области компьютерных наук: алгоритмам, человеко‑компьютерному взаимодействию, искусственному интеллекту, теории информации, языкам программирования. Такое обучение развивает программистское мышление, а не приучает к использованию определённого программного обеспечения. Например, изучение двоичной системы счисления проходит с помощью карточек.

Средняя школа

Выбор языка программирования

При подборе направления обучения в первую очередь необходимо выяснить интересы ребёнка. Школьник увлекается компьютерными играми, ему следует взяться за язык, используемый при их разработке. Для начала подойдут Java или JavaScript. Любителям роботов стоит изучать Lua и Scala. Если ребёнку нравится, как выглядят сайты, направьте его в сторону разработки интерфейсов. Создавать сайты с нуля можно, используя простые технологии: язык разметки HTML и стилизации CSS. Школьник скачивает кучу приложений на свой и родительский смартфон, стоит подыскать ему курсы по разработке на JavaScript и Swift.

Всемирная олимпиада роботов в Сочи, 2014 год

Всемирная олимпиада роботов в Сочи, 2014 год

Подготовка к олимпиадам

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

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

Старшая школа

В последних классах одна из главных задач для будущего программиста – поступить в Высшее учебное заведение. Для этого нужно сдать ЕГЭ по информатике более чем на 80 баллов или выиграть олимпиаду. К экзамену возможно подготовиться за 10-11-й классы, заниматься олимпиадными заданиями лучше, начиная со средней школы.

Подготовка к ЕГЭ

Подготовиться к ЕГЭ по информатике можно с репетитором или на курсах. Онлайн‑курсы по подготовке к ЕГЭ позволят учиться у лучших преподавателей вне зависимости от местонахождения ученика.

Читайте также: