Где применяется программирование?
Сейчас существует практически любой софт, для любых целей. Есть множество программ для офисной работы, для создания сайтов, для работы с графикой, видео и звуком. Поэтому пользователь компьютера всё реже сталкивается с необходимостью вообще уметь программировать, чтобы сделать "что-то своё", ибо всё уже есть. Сравните с прошлым веком: в то время многие пользователи компьютера более или менее разбирались в программировании, поскольку программ для первых компьютеров было не так много, и приходилось писать эти программы самим.
И тем не менее, программирование необходимо в любое время и для разных целей. Это нужно и при создании сайтов, и в организации работы офиса, и ещё много когда и где.
Ниже я приведу краткий и далеко не полный обзор областей, где применяется программирование. Если вы решили заняться изучением программирования, то, в первую очередь, следует выбрать для себя наиболее интересное направление (а направлений таких, как сейчас увидите, немало).
Создание сайтов и веб-приложений
Сайт можно создать разными способами. Разные способы требуют различного объема программирования (или вообще не требуют).
Существуют онлайн-конструкторы сайтов, например, narod.ru или ucoz.ru. Для работы с такими конструкторами вообще нет необходимости знать технологии и языки программирования, поскольку конструктор сайта сам предложит что и как делать. Если вам хватает возможностей, предоставляемых таким конструктором и не коробит тот факт, что это, по сути, не ваш сайт, а часть системы-конструктора, то проще всего воспользоваться им.
Чтобы открыть блог, форум или интернет-магазин, программировать также вовсе не обязательно. Можно воспользоваться системой управления контентом (Content Management System, CMS): Wordpress, Drupal, Joomla и другими.
Навыки программирования, чаще всего на PHP, могут пригодиться, если вы захотите каким-либо образом изменить функционал, который предлагает CMS. В любой CMS есть возможность подключеня модулей. Модули - это компоненты программы, которые добавляются в CMS и некоторым образом меняют её поведение, добавляя или изменяя существующие функции. Сам по себе модуль может быть очень простым и не требовать глубоких знаний для разработки. Если вы умеете программировать, и вам надо добавить какую-то дополнительную возможность на свой сайт, которую ещё никто не реализовал в виде модуля - то вам повезло.
Если сайт, который нужно в результате получить, обязан обладать некоторой уж очень нестандартной функциональностью, так что использовать существующую CMS нецелесообразно, то программирование уже необходимо. И здесь есть выбор: писать "с нуля" веб-приложение необязательно. Можно воспользоваться каким-либо фреймворком (в народе - "библиотекой"), коих есть несколько, например для PHP - Yii, Zend, CodeIgniter.
А для очень простых веб-приложений или в процессе обучения веб-технологиям, как раз удобнее начать "с нуля", не закапываясь ни в CMS, ни в фреймворки, таким образом сосредоточившись лишь на самом языке программирования.
Хотя знать языки программирования для создания сайта может оказаться не обязательно, знать веб-технологии всё же нужно. Для работы над дизайном сайта нужно знать и понимать HTML, CSS, и, возможно, JavaScript. Нужно понимать, как работает протокол HTTP, так как именно через него ваш сайт взаимодействует с внешним миром. Полезно, а часто и необходимо, знать язык запросов в базы данных - SQL.
Настольные приложения
При работе с существующими программами, программировать не нужно. Единственное, где это может пригодиться - для написания скриптов и макросов, если программа это поддерживает. Например, MS Office и OpenOffice можно дополнить макросами, которые пишутся на некотором языке программирования (обычно JavaScript/VBScript).
Кстати, любой браузер тоже программируется скриптами: это могут быть плагины или скрипты, находящиеся на веб-страницах. Например, дополнения (плагины) для Firefox пишутся на JavaScript.
Если вам нужно некоторое узкоспециализированное приложение, то тогда, видимо, программировать всё же придётся. Как и в случае с веб-приложениями, для разработки настольных приложений существует большой выбор платформ и библиотек. Есть как кросс-платформенные решения, так и не очень. Например, программа, написанная на Java будет работать и на Windows и на Linux. А .NET - полноценно будет работать только на Windows.
Офисные приложения
К офисными приложениям относятся всевозможные корпоративные базы данных, системы оборота документов и так далее. Обычно для этих целей используются готовые платформы, вроде 1С. В таких системах бизнес-логика обычно также описывается программой-скриптом, которую можно изменять. Разработчик для 1С по сути - программист на скриптовом языке, работающем в недрах системы. Кроме самого языка, необходимо глубокое знание системы и её возможностей, и именно в этом заключается главная сложность.
Приложения для мобильных телефонов, коммуникаторов
В большинство современных мобильных телефонов можно закачивать приложения и игры, в том числе, и созданные своими руками. Для создания приложений производители мобильных устройств предоставляют специальные наборы инструментов (SDK, Software Development Kit). Большинство телефонов поддерживают мобильные технологии Java ME или .Net Compact Framework. Для устройств на базе Android также есть свой SDK (так же, как и для iPhone), который можно свободно скачать и заняться разработкой своих приложений и игр для мобилки. В том случае, если под рукой нет настоящего телефона-андроида, программы можно тестировать в программном эмуляторе - программе, которая работает на обычном компьютере.
Следует напомнить, что современные мобильные устройства в массовом порядке оборудуются скоростным Интернетом, а также высокотехнологичными приборами и датчиками: приёмниками GPS/Глонасс, акселерометрами, сенсорными экранами, видеокамерами, а также динамиками и микрофонами. Все эти устройства программируются, так что здесь есть простор для фантазии при разработке нового программного обеспечения и игр.
Моды для игр
Ещё одна интересная область применения навыков программирования - создание так называемых "модов" для игр. "Мод" - дополнение к игре, меняющее поведение персонажей в игре, добавляющее новые предметы, и так далее.
Многие современные игры представляют собой платформу, реализующую работу с графикой, физику игрового мира, взаимодействие объектов. Уже на этой платформе построено само наполнение игры - это всевозможные скрипы, задающие поведение объектов, конфигурация предметов, картинки и так далее. Часто и пользователь может написать свой "мод", добавить его в игру, чтобы получить некоторое уникальное поведение игры.
Плееры Bluray
При воспроизведении дисков Bluray, в частности, при отображении меню, используется Java. Плеер Bluray выполняет с просматриваемого диска специальную Java-программу, отображающую меню, а также способную делать еще много чего, например, обращаться к Интернет и скачивать субтитры. Такая программная платформа для Bluray носит название BD-J. Платформа поддерживается не только в плеерах Bluray, но и, например, в игровых консолях PS3.
Микроконтроллеры
Запрограммировать можно не только компьютер, телефон, видео плеер, ит.д. Существуют так называемые микроконтроллеры - это микросхемы, на борту которых находится немного памяти, вычислительное ядро и некоторый набор устройств (таймеры, ЦАП/АЦП, драйверы LCD-экранов, клавиатур, интерфейсы I2C/CAN/USB итд.). Современные микроконтроллеры - это достаточно сложные микросхемы, "умеющие" общаться с компьютером по USB, позволяя разработчику легко "прошивать" в контроллер свою программу, а также делать её отладку. Чаще всего микроконтроллеры программируются на языке C.
Область применения микроконтроллеров очень широка. Микроконтроллеры работают в любом современном холодильнике, стиральной машине, мониторе, принтере, телевизоре (список можно продолжать). На основе микроконтроллера можно собирать и свои собственные электронные устройства.
Это далеко не полный перечень возможных применений программирования. В наши дни программируется практически всё, поэтому профессия разработчика программного обеспечения в ближайшее время будет востребована, это точно.
Во многих областях программирования начинать с чистого листа нет необходимости, ведь изучение технологии можно начать с ознакомления с тем, что уже сделано и работает.