Производство программного обеспечения

Производство программного обеспечения

13 октября 2015

На слуху Каменный, Железный и Бронзовый века. Но как охарактеризовать современный период? Если взять сферу технологий, то вполне подойдет эра Компьютеров и Производства программного обеспечения.

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

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

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

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

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

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

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

Параллельно с миниатюризацией устройств создаются новые языки программирования (Rust, Elixir, Go, R, Scala, Haskell) и совершенствуются уже имеющиеся. Общие языки (Java, PHP) дополняются для решения узких задач прикладными (Haskell, Scala, Rust).

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

Появление графического интерфейса, а также компьютерной мыши сделало оперирование удобным и простым. Пользователь не обязательно должен был разбираться в программировании. Произошла фокусировка на генерации идей. С появлением Интернет стало возможным делиться замыслами с профессионалами, обладающими знаниями для воплощения новинок в жизнь. Географические границы перестали иметь значение. Появилось направление деятельности оупенсорс. При подобном подходе в разработке программного продукта заинтересованы как создатели, так и широкие массы. Выгода двусторонняя, потому что последние получают удобный инструмент оперирования. Человеческой природе характерна тяга к соревнованию. Создание требуемого программного обеспечения группой талантливых разработчиков носит элемент азарта. Зачастую присутствует минимальная оплата. Качество подобного бета-тестирования «сырого» продукта выше и дешевле, чем при использовании узкого круга участников.

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

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

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