Для чего используется программирование
Где применяется программирование?
Сейчас существует практически любой софт, для любых целей. Есть множество программ для офисной работы, для создания сайтов, для работы с графикой, видео и звуком. Поэтому пользователь компьютера всё реже сталкивается с необходимостью вообще уметь программировать, чтобы сделать «что-то своё», ибо всё уже есть. Сравните с прошлым веком: в то время многие пользователи компьютера более или менее разбирались в программировании, поскольку программ для первых компьютеров было не так много, и приходилось писать эти программы самим.
И тем не менее, программирование необходимо в любое время и для разных целей. Это нужно и при создании сайтов, и в организации работы офиса, и ещё много когда и где.
Ниже я приведу краткий и далеко не полный обзор областей, где применяется программирование. Если вы решили заняться изучением программирования, то, в первую очередь, следует выбрать для себя наиболее интересное направление (а направлений таких, как сейчас увидите, немало).
Создание сайтов и веб-приложений
Сайт можно создать разными способами. Разные способы требуют различного объема программирования (или вообще не требуют).
Существуют онлайн-конструкторы сайтов, например, narod.ru или ucoz.ru. Для работы с такими конструкторами вообще нет необходимости знать технологии и языки программирования, поскольку конструктор сайта сам предложит что и как делать. Если вам хватает возможностей, предоставляемых таким конструктором и не коробит тот факт, что это, по сути, не ваш сайт, а часть системы-конструктора, то проще всего воспользоваться им.
Чтобы открыть блог, форум или интернет-магазин, программировать также вовсе не обязательно. Можно воспользоваться системой управления контентом (Content Management System, CMS): WordPress, Drupal, Joomla и другими.
А для очень простых веб-приложений или в процессе обучения веб-технологиям, как раз удобнее начать «с нуля», не закапываясь ни в CMS, ни в фреймворки, таким образом сосредоточившись лишь на самом языке программирования.
Настольные приложения
Кстати, любой браузер тоже программируется скриптами: это могут быть плагины или скрипты, находящиеся на веб-страницах. Например, дополнения (плагины) для Firefox пишутся на JavaScript.
Офисные приложения
Приложения для мобильных телефонов, коммуникаторов
Следует напомнить, что современные мобильные устройства в массовом порядке оборудуются скоростным Интернетом, а также высокотехнологичными приборами и датчиками: приёмниками GPS/Глонасс, акселерометрами, сенсорными экранами, видеокамерами, а также динамиками и микрофонами. Все эти устройства программируются, так что здесь есть простор для фантазии при разработке нового программного обеспечения и игр.
Моды для игр
Плееры Bluray
При воспроизведении дисков Bluray, в частности, при отображении меню, используется Java. Плеер Bluray выполняет с просматриваемого диска специальную Java-программу, отображающую меню, а также способную делать еще много чего, например, обращаться к Интернет и скачивать субтитры. Такая программная платформа для Bluray носит название BD-J. Платформа поддерживается не только в плеерах Bluray, но и, например, в игровых консолях PS3.
Микроконтроллеры
Область применения микроконтроллеров очень широка. Микроконтроллеры работают в любом современном холодильнике, стиральной машине, мониторе, принтере, телевизоре (список можно продолжать). На основе микроконтроллера можно собирать и свои собственные электронные устройства.
Это далеко не полный перечень возможных применений программирования. В наши дни программируется практически всё, поэтому профессия разработчика программного обеспечения в ближайшее время будет востребована, это точно.
Во многих областях программирования начинать с чистого листа нет необходимости, ведь изучение технологии можно начать с ознакомления с тем, что уже сделано и работает.
Области применения языков программирования
Вы будете перенаправлены на Автор24
Наиболее популярными направлениями программирования являются в наше время следующие направления:
Нельзя сказать, что за каждым из них жестко закреплены те или иные языки программирования. Например, на Java, C# можно успешно писать программы любой из перечисленных категорий. В то же время определенная специфика, безусловно, есть.
Веб-разработка
Фронтенд.
Для придания веб-страницам внутренней динамики используется язык JavaScript. Написанные на нем программы размещаются внутри веб-документа и запускаются в браузере, обеспечивая большую привлекательность и интерактивность страниц. Кроме того, такие скрипты позволяют снизить нагрузку на веб-сервер, выполняя обработку информации (например, проверку корректности заполнения форм) без запросов к нему.
Эффективная фронтенд-разработка немыслима в наши дни без применения фреймворков (React, Angular, Vue, jQurey, Bootstrap). Они позволяют существенно экономить время и усилия, сосредоточиться на предметной области, надежности и эффективности программ.
Требованием фронтенд разработки всё чаще становится адаптивный дизайн: приложение должно адекватно выглядеть на устройствах с различной геометрией экрана.
Рисунок 1. Адаптивный веб-дизайн. Автор24 — интернет-биржа студенческих работ
Готовые работы на аналогичную тему
Бэкенд.
Для разработки бэкендов (программ, работающих на стороне сервера) активно применяется сразу несколько современный языков:
Для фронтенд-разработки применяются и другие современные ЯП: Ruby, Go, C#, JavaScript (Node.js) и т.д.
Мобильная разработка
Начиная с середины 2000-х гг. разработка программ для мобильных устройств стала массовой индустрией. Сначала поддержка программ, написанных на языке Java (JavaME), была включена в функционал обычных сотовых телефонов. Затем, с появлением смартфонов и планшетов, мобильные устройства превратились фактически в полноценные компьютеры.
Большая часть рынка мобильного ПО в настоящее время занята разработками под две операционные системы:
Рисунок 2. Сравнение ОС Android и IiOS. Автор24 — интернет-биржа студенческих работ
Разработка для Android ведется, как правило, на языке Java. Это обусловлено тем, что Google предоставила для своей мобильной ОС инструментарий (SDK), базирующийся на этом ЯП. В последнее время всё популярнее становится программирование для Android на языке Kotlin.
Для программирования приложений, рассчитанных на работу в среде iOS, используются языки Swift и несколько устаревший Objective-C.
Отдельной отраслью программирования для мобильных устройств является создание адаптивных веб-приложений, подстраивающихся под характеристики устройства, на котором его запустили: определяется размер экрана, наличие полноценных клавиатуры и мыши и, в зависимости от этого, отрисовывается подходящая раскладка элементов управления.
Разработка игр
Игры разрабатывают с учетом возможностей аппаратного обеспечения, поскольку в них важна высокая откликоустойчивость. Существуют игры как для слабых устройств (сотовых телефонов), так и для мощных мультимедийных систем, оснащенных устройствами виртуальной реальности.
Одной из наиболее востребованных платформ для разработки игр является Unity. Создавая объекты с готовыми наборами возможностей, программист на простых языках (C#, JavaScript) наделяет персонажи и игровую среду требуемыми характеристиками.
Подход, когда к готовому «движку» дописывают сравнительно компактные скрипты (часто для этого используется язык Lua) распространен в индустрии компьютерных игр.
Разработка настольных приложений
Для разработки приложений, запускаемых на персональных компьютерах и ноутбуках, используется широкий спектр языков программирования и фреймворков:
Почему программирование — новая грамотность и зачем учить этому детей
Умение программировать также важно как умение читать. Это требования рынка и нового мира. Разбираем доклад НИУ ВШЭ «Универсальные компетентности и новая грамотность» и рассказываем, зачем и как учить ребенка программированию
Почему программирование стало частью новой грамотности
Навыки компьютерной грамотности помогают любому человеку решать повседневные и профессиональные задачи. Согласно результатам исследования Открытого университета Израиля, программирование стимулирует креативное мышление и формирует умения учиться. Авторы доклада «Универсальные компетентности и новая грамотность» сравнивают развитие компьютерной грамотности с этапами развития грамотности как умения читать, писать и считать.
В истории грамотности выделяют два этапа:
На первом этапе текст становится частью инфраструктуры. Они занимают центральное место в жизни людей. Текст использовался как инструмент создания законов и разработки стратегий. Особенно это касается земельных законов, которые стали оформлять в виде письменных текстов вместо персональных свидетельств.
На втором этапе текст становится неотъемлемой частью повседневной жизни. Благодаря массовым кампаниям по ликвидации неграмотности, начиная с XIX века, большинство людей освоили навыки письма и чтения. Грамотность помогала получить доступ к информации в газетах с описаниями событий, в буклетах с рекомендациями для фермеров и счетах для отслеживания задолженностей. Чем больше людей осваивали навыки чтения и письма, тем более массовой должна была становиться грамотность.
В развитии компьютерной грамотности можно выделить те же этапы, только развитие происходит в течение десятилетий, а не веков.
Сначала компьютеры становятся частью инфраструктуры, когда их использует государство для переписи населения. Университеты, авиакомпании и банковский сектор начали использовать компьютеры c 1950-х годов. Примерно в 1980-х компьютеры стали доступными для большинства людей, а знания о компьютерах начали проникать из областей знаний узких специалистов в жизнь обычных людей. Люди чаще пользовались компьютерами при обращениях в больницы, организации данных о государственном управлении и управлении образованием.
Затем компьютеры становятся частью жизни. Способность написать несложную программу или код постепенно становится базовым навыком. Программирование и вычислительное мышление расширяют возможности и становятся обязательным требованием к любому специалисту — от физика до журналиста. Способность читать и понимать компьютерный код становится более востребованной, поэтому программирование переходит из специального знания в универсальную грамотность. Это грамотность использования современных инструментов общения и работы — компьютеров. И если это аспект грамотности, то развивать его нужно с детства.
Как программирование учит решать задачи
Программирование развивает вычислительное мышление. Это набор приемов для решения задач в компьютерных науках, но применимых в любых сферах. Например, вычислительная наука помогает в образовании. Специальная платформа собирает данные об активностях студентах. С помощью данных преподаватель отслеживает неэффективные задания, чтобы составить новую учебную программу.
Вычислительное мышление учит формулировать проблему, искать решение и анализировать его. Программирование — часть вычислительного мышления и самый эффективный способ его освоить. Например, перед программированием мы анализируем и разбиваем задачу на подзадачи. Программирование конкретизирует вычислительное мышление и может стать инструментом получения знаний.
Зачем учить детей программированию
Идеолог конструктивизма в педагогике Жан Пиаже предложил такую идею: дети учатся быстрее, когда сами формируют свои представления об увиденном и делают собственные заключения, а не когда им говорят, как они должны воспринимать мир. Дети оказываются не пассивными получателями знаний, а наоборот, сами их конструируют.
Программист и один из основоположников теории искусственного интеллекта Сеймур Пейперт добавил: эффективное обучение происходит, когда ученик создает значимый для него объект, будь то песочный замок или теория. Конструкционизм объединяет два типа конструирования: дети конструируют вещи в реальном мире и конструируют новые идеи в своей голове. Два типа конструирования создают непрерывную спираль обучения: когда у ребенка появляются новые идеи, он конструирует новые вещи в реальном мире. Программирование помогает детям воплотить эти идеи в жизнь.
Через программирование ребенок развивает вычислительное мышление. Вычислительное мышление помогает детям развивать навыки решения задач, креативное мышление, умение учиться и навыки совместной работы.
Программирование и вычислительное мышление помогают детям учиться сетевым взаимоотношениям: общаться в чатах, видеоконференциях, соцсетях. Решая сложные задачи, дети используют четыре основных компонента вычислительного мышления: декомпозицию, выделение паттернов, автоматизацию и абстрагирование.
Обучать детей программированию нужно не для того, чтобы они в будущем стали программистами. Задача программирования — подготовить детей к вычислительному мышлению, которое поможет им уверенно справляться с комплексными задачами XXI века, которые не имеют однозначного решения.
Дети смогут применять «вычислительные» подходы в разных контекстах и дисциплинах. Если ребенок научился раскладывать большую задачу на маленькие фрагменты, находить сходства в разных элементах, выявлять и устранять незначимые детали, выстраивать фрагменты в единый алгоритм для получения результата, он сможет решить задачи в любой дисциплине.
Митч Резник, руководитель исследовательской группы, которая разработала язык программирования Scratch, уверен, что креативность можно поддерживать, подпитывать и стимулировать.
За компьютером дети потребляют информацию, играют в игры и только малую часть времени придумывают и создают что-то свое. Тенденция начала меняться с распространением инструментов программирования для детей, например Scratch, Alice или Kodu. С помощью таких инструментов дети учатся создавать игры, анимацию, истории и художественные элементы. Программирование помогает поддерживать и стимулировать креативность, открывает источники вдохновения, чтобы выражать свои идеи и раскрывать личность.
Обучаясь программированию, дети учатся мыслить по-новому. Если написанная программа не работает или работает не так, как ожидал ребенок, ему приходится разбираться и придумывать решение задачи. Ребенок начинает понимать новые идеи и учится учиться.
По сравнению с другими видами учебной деятельности программирование — более щадящий и мягкий процесс. Работа с кодом помогает учиться на своих ошибках и не вызывает дискомфорта, если дети их совершают. Например, ребенок может отменить команду, чтобы исправить ошибку в коде, внести правки и попробовать что-то новое. Благодаря программированию дети перестают бояться ошибок. Вот что рассказывала мать девочки, которая работала на Scratch:
«Она набралась храбрости и больше не боится пробовать новые вещи. Даже если первая попытка оканчивается неудачей, дочка воспринимает ее не как “конец игры”, а как напоминание, что стоит попробовать другой путь, что в нужное место можно идти разными маршрутами и что не бывает маршрутов “правильных” и “неправильных” как таковых»
Ребенок начинает ценить обучение программированию, когда выражает себя через продукт, который может показать другим. Такой подход обозначают понятием «вычислительное участие» (computational participation).
Профессора Кафаи и Берк описали вычислительное участие в книге «Связанный код: почему детям нужно учиться программированию». Они считают, что вычислительное участие — это решение задач и разработка интуитивно понятных систем с другими и для других. Изучение культурной и социальной природы поведения человека с применением понятий, практик и подходов компьютерных наук. Например, работа в группах и использование кодов других людей.
Благодаря совместному программированию, в школе можно создать среду, основанную на сотрудничестве. Запрограммированные игры или истории, которые создает ребенок, могут связывать разных детей друг с другом.
В традиционном классе учитель дает задания, а ученики их решают. Если у детей есть внутренняя мотивация к учебе, такой подход будет работать, но не для всех. При этом у детей почти не остается времени и ресурсов для самовыражения. Вычислительное участие помогает решить эту проблему за счет персонализации и опоры на внутреннюю мотивацию.
Персонализация. В программировании дети персонализируют проекты, «добавляя в них самих себя». Например, в программе Scratch можно добавить свою фотографию и запись голоса. Персонализация вовлекает в обучение, делает его более интересным и мотивирующим.
Опора на внутреннюю мотивацию и интересы. Через программирование можно задействовать внутреннюю мотивацию ребенка, а не использовать систему внешних вознаграждений. Например, Scratch выбирает отдельные проекты для показа на главной странице, вместо прямого вознаграждения в виде очков, баллов или звездочек. Дети радуются, когда выбирают именно их проект. Идея такого подхода в том, чтобы мотивировать других, подсказывая им новые идеи. В профиле пользователя не говорят, сколько раз его проекты оказывались на главной странице, а лишь над сколькими проектами ребенок работал.
Обычный результат программирования — это проект. Ребенок сразу видит: работает или не работает программа. Если не работает, он старается понять, что нужно узнать для завершения проекта. Ученик мотивирован, ему интересно искать ответы на вопросы, на которые и учитель не знает ответа, но точно может помочь их найти.
Как учить детей программированию
Согласно исследованию по развитию компьютерного мышления, формальная обстановка развивает систематическое мышление и подходы, а неформальная помогает детям развивать мотивацию и определить сферу интересов. Идеальная обстановка должна совмещать то и другое. Распространение технологий размывает границы между формальным и неформальным образованием. Учителю больше не нужно «пропускать через себя» все образовательные программы — ученики сами выстраивают новые связи с миром.
Профессора Кафай и Берк создали две среды обучения, чтобы оценить различия между структурированным обучением и внеучебной средой. В каждой из них, ученики создавали цифровые истории с одним и тем же преподавателем на протяжении десяти недель.
Согласно результатам исследования, во внеучебной среде меньше детей закончили свои проекты, но сделали их сложнее и больше. Ученики в клубе использовали больше креативных навыков программирования и вдвое активнее сотрудничали со своими сверстниками. При этом для тех, кто только знакомится с программированием, структурированное занятие будет более эффективным.
Авторы доклада «Универсальные компетентности и новая грамотность» предлагают дополнять занятия в классе мейкингом, мероприятиями по программированию и походами в технопарки.
Мейкинг. Педагоги объединяют детей на внеклассных мероприятиях для создания физических или цифровых проектов — мейкинга. Создание реального продукта дает ученикам стимул учиться, возможность применить знания на практике и понять, что еще нужно освоить.
На базе философии мейкинга можно создавать школы. Например, в 2011 году в Сан-Франциско открыли школу Brightworks для детей от 5 до 15 лет. Для обучения детей там используют полностью проектно-ориентированный подход. На уроках ученики делают проекты, например строят «Детский город».
По всему миру создают клубы программирования для детей. Они основаны на движении CoderDojo, которое поощряет сообщества создавать лагеря программирования свободного доступа — додзё. Например, в России работают два международных бесплатных клуба под руководством волонтеров CoderDojo и Code Club.
Мероприятия по программированию. На таких мероприятиях участникам дают материалы, чтобы самим провести занятия по программированию. Учителю, родителю или ребенку остается собрать других детей вместе и начать учиться. Например, некоммерческая организация Code.org проводит три популярных международных мероприятия, посвященных программированию — Час кода (Hour of Code), Неделя кода в Европе (Code Week EU) и конкурс по информатике «Бобер» (Bebras Challenge).
Час кода — часовая учебная программа, разработанная для всех возрастов на более чем 45 языках. Час кода проводят в 180 странах.
Неделя кода — двухнедельные мероприятия для детей, организованные волонтерами по всему миру. Неделю кода проводят в 50 странах. В 2016 году в Европе приняли участие почти 1 млн человек.
Конкурс «Бобер» проводят каждый год в 38 странах для детей от 8 до 19 лет. По условиям конкурса, каждому участнику дают 45 мин на выполнение 18 заданий в области информационных технологий. Организаторы не требуют специальных навыков программирования, поэтому с заданиями может справиться каждый. Конкурс проводят на базе школ при поддержке учителей. Победители получают сертификаты и призы.
Детские технопарки. Это образовательные площадки для школьников. В технопарках устанавливают высокотехнологичное оборудование, чтобы мотивировать детей учиться проектированию и компьютерным технологиям.
Например, «Кванториум» — сеть детских технопарков в России. Сейчас работают 24 технопарка в 19 регионах страны.
Зачем учить детей программированию
Больше информации и новостей о трендах образования в нашем Telegram-канале. Подписывайтесь.
Программирование — это язык между людьми и машинами, которым должен владеть каждый
Все больше споров и рассуждений по-поводу важности программирования в современной жизни. Действительно ли нужно всем уметь кодить? И пригодится ли это тем, кто не собирается связывать себя с данной профессией? По мнению знаменитого информатика Джона Маккарти (John McCarthy), писателя Стюарта Бранда (Stewart Brand) и ученой контр-адмирала Грейс Хоппер (Grace Hopper) — да, пригодится, поскольку программирование является важнейшим навыком, освоить который необходимо каждому здравомыслящему человеку.
Ниже описаны причины, на которые ссылаются эти выдающиеся личности в своем утверждении.
На протяжении тысячи лет одни люди руководили другими
Древние римляне построили империю руками рабов. Англичане создали мощное государство, навязывая свою волю жителям принадлежащих Британии колоний. Соединенные штаты стали экономически сильным государством благодаря дешевой рабочей силе времен промышленной революции. Но с ходом истории ситуация постепенно изменилась и в XXI веке мы не владеем и не управляем людьми. В современности мы владеем и управляем машинами.
Джон Маккарти (1927-2011 гг.) — автор термина «искусственный интеллект», изобретатель языка Лисп, основоположник функционального программирования, лауреат Премии Тьюринга за огромный вклад в область исследований искусственного интеллекта
Природа труда фундаментального изменилась и на сегодняшний день большую часть работы выполняют не люди, а машины. Ежедневно в Google отправляется более 3,5 миллиарда запросов. И поисковая система послушно ищет нужную информацию. А теперь давайте подумаем, сколько человеко-часов понадобилось бы для того, чтобы вручную обработать хоть один запрос Google. Можно представить группу докторов наук, ученых и специалистов из различных областей, которые круглосуточно звонят друг другу с вопросами и обсуждениями документов и других материалов. И потом это все выдают запрашивающему. Сделать подобную работу быстро и эффективно может только машина.
Один из крупнейших сайтов о путешествиях Trip Adviser помогает с выбором места для отпуска. Далее ресурс Expedia позволяет забронировать нужный рейс. Ну а Google maps указывает дорогу к аэропорту и отелю. Все эти услуги доступны обычному потребителю благодаря быстрой и слаженной работе машины. Но машины выполняют подобную работу лишь потому, что люди говорят им, что и как делать. Тут и раскрывается важность роли написания программного обеспечения, то есть специального софта. Ну и само собой, для успешного управления нужны знающие люди, которые могут предоставить очень четкие инструкции. Проще говоря — написать код.
Как говорил Маккарти:
Кодирование — это «новая грамота» нашего времени, которой следует наряду с чтением и правописанием обучать детей. Будущее за машинами, они смогут заменить множество других профессий, выполнять различные задачи и автоматизировать рабочий процесс.
Программировать или быть запрограммированным?
После того, как новая технология прокатится по миру, если Вы не являетесь частью этого катка, то становитесь частью дороги.
Американский писатель Стюарт Бранд (1938 г.р.), создатель каталога советов и статей об окружающей среде и технологиях The Whole Earth Catalog (на его обложке первая фотография Земли), основатель одного из первых онлайн-сообществ WELL
Те, кто живо адаптируется к проходящим волнам изменений — процветают. А те, кто не обращает внимания на них — не могут даже понять, что они существуют. Они асимптотически приближаются к ненужности. Кодирование — это новая грамотность. Как было чтение в XII веке, писательство в XVI, арифметика в XVIII и управления автомобилем — в XX. И точно так же, как не всякий, кто умеет писать будет профессиональным литератором, а кто учит арифметику — великим математиком, так и не всякий изучающий код станет разработчиком программного обеспечения. Но изучение этих направлений определенно улучшит человека, научит его думать и пригодиться в жизни.
Подумайте о Вашей способность прочитать этикетку на лекарствах или возможность посчитать деньги. В том, что Вы можете кодировать также есть нечто не менее важное. Например, можно взять скучные повседневные задачи и автоматизировать их. А некоторые люди используют этот базовый навык, как способ накопления собственного богатства или чтобы улучшить мир.
«Корабли предназначены для плавания»
Американская учёная и контр-адмирал флота США Грейс Хоппер (1906-1992 гг.), разработала первый компилятор для компьютерного языка программирования, развила концепцию машинно-независимых языков программирования, что привело к созданию высокоуровневого языка COBOL. Писала программы для гарвардского компьютера Марк I.
По своей сути компьютеры — это комплекс хрупких деталей и сложных схем. А человеческий мозг — это машина для обучения. Может показаться, что Вы никогда не научитесь кодировать. Может также показаться, что Вы просто не создании для этого. И даже найдется достаточно много людей, которые пробовали кодировать, но у них ничего не получилось. Но это лишь их субъективное мнение, по которому нельзя судить о собственных способностях.
Среди преподавателей бытует мнение, что каждый мыслящий человек может научиться кодировать так же, как научиться читать, писать, выполнять арифметические действия или водить машину. Нужно лишь желание и терпение.
Подводя итог
Грейс Хоппер советует учится кодировать — «выходите в море и изучать новые вещи». Стюарт Бранд рекомендует адаптироваться под развитие технологий и осваивать программирование хотя бы на базовом уровне. Джон Маккарти призывает изучать язык машин.
В завершение поста — несколько бесплатных ресурсов, на которых представлены видеолекции, онлайн курсы и уроки не только для желающих научиться программировать, но и для специалистов.
Code.org — оригинальный сайт, сделанный в развлекательном игровом стиле.
Codecademy — достаточно популярный сайт, где можно изучить основы программирования. Контент постоянно обновляется, добавляются новые языки программирования.
Udacity — ресурс, представляющий из себя что-то вроде он-лайн института по программированию. На нем собрано огромное количество курсов и видеолекций по программированию.
Code Avengers поможет в изучении HTML5, CSS3 и JavaScript. В конце каждого урока предлагается на примере мини-игры закрепить полученные знания.
Treehouse — ресурс для начинающих программистов, имеющих базовые знания и навыки. Видеоуроки нацелены на решение определенной практической задачи.
Code School предлагает более углубленные курсы по разработке и программированию. Но правда на этом ресурсе не все разделы бесплатные.