Реферат на тему перспективы развития программного обеспечения

Обновлено: 05.07.2024

ВНИМАНИЕ!
Здесь приводится сокращённый текст реферата. Полную версию можно скачать бесплатно по указанной выше ссылке.

Введение

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

Любая современная система автоматического управления включает в сеябя как "железо" (аппаратную часть), так и "софт" (программную часть).

Немного истории

Основные понятия

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

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

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

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

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

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

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

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 09.02.2014
Размер файла 13,6 K

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

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

Существующая система

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

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

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

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

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

Распараллеливание выполнения

однопроцессорная многопроцессорная система

Когда параллельность обслуживания запросов или выполнения процессов помогает работе, а когда она может сильно помешать?

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

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

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

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

Алгоритмы и структуры оперативной памяти

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

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

Структуры и алгоритмы быстрой памяти

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

В настоящее время получают распространение твердотельные накопители SSD, имеющие колоссальную скорость доступа, и фактор соотношения времени доступа к диску и оперативной памяти изменился. Как следствие этого, можно предположить направление исследований по изменению принципов доступа к базам данных, например замена структур B*-tree на RB-tree или другие, отход от принципов кеширования блоков и изобретение чего-то иного.

Быстрое портирование на разные операционные системы

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

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

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

В семействе операционных систем Windows x86-32 применялось интересное решение - операционная система легко выполняет программы, написанные для других систем - DOS, Win16, Win32, подмножество OS/2 и Posix, и не будет удивительным, если появится операционная система, ну например UniOS, выполняющая программы для самых разных других операционных систем без применения отдельных промежуточных виртуальных систем или эмуляторов. В различных операционных системах такие подходы уже применяются, охватывая пока лишь архитектурно близкие операционные системы.

Линейные алгоритмы и структуры

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

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

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

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

Направления поиска перспектив

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

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

Из событий недавнего прошлого:

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

Не все новые способы переноса и обработки информации закрепились в применении. Так, появившиеся в свое время ZIP-drive носители на 120 Mb были с легкостью убиты перезаписываемыми CD на 650/700 Mb, а вот средства Wi-Fi так и остались в эксплуатации и массовом применении, хотя к беспроводным средствам относятся еще, видимо, с десяток иных технологий.

Подобные документы

Принцип работы ядра процессора, типы архитектур ядер операционных систем. Сокет(Socket), кэш-память, контроллер ОЗУ, северный мост. Внутренняя архитектура процессоров Intel и AMD: расшифровка названий, технологии процессоров, сравнение производительности.

реферат [214,9 K], добавлен 05.05.2014

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

контрольная работа [7,6 M], добавлен 17.05.2013

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

курсовая работа [162,2 K], добавлен 21.06.2013

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

реферат [36,1 K], добавлен 29.04.2010

Концепция построения виртуальной лаборатории (ВЛ) "Программирование микроконтроллерных систем". Принцип построения лабораторного практикума. Архитектура аппаратного обеспечения ВЛ. Аппаратные способы реализации генератора сигналов произвольной формы.

магистерская работа [669,4 K], добавлен 29.06.2009

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

Именно программное обеспечение заставляет сегодня мир вращаться все быстрее — ПО применяется повсюду, от автомобилей, самолетов и промышленных систем автоматизации до смартфонов и любой другой потребительской техники. Современное общество непосредственно зависит от надежности программных систем, развитие которых, в свою очередь, зависит от компаний-разработчиков. Какие прогнозы сегодня можно сделать по поводу будущего программного обеспечения и какое влияние тенденции в развитии ПО оказывают на компании из различных отраслей? Ответы на эти вопросы были получены в результате исследования, в котором участвовали сотрудники таких компаний, как ABB, Bosch, GE, Google, Lufthansa, Philips и Siemens [1].

Индустрия ПО

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

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

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

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

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

Рис. 2. Отраслевые тенденции. Инновации, управление сложностью и связь — самые важные темы для бизнес-менеджеров и технических руководителей. Суммы превышают 100%, поскольку в анкете можно было давать по три ответа на каждый вопрос
Рис. 2. Отраслевые тенденции. Инновации, управление сложностью и связь — самые важные темы для бизнес-менеджеров и технических руководителей. Суммы превышают 100%, поскольку в анкете можно было давать по три ответа на каждый вопрос

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

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

Какие методы управления сложностью применяют компании-разработчики? Как они ускоряют вывод новых продуктов на рынок и улучшают функции связи? Какие подходы хорошо зарекомендовали себя на практике?

Сосредоточьтесь на реальных источниках дохода. Работая над повышением КПД и снижением стоимости продуктов, компании иногда доходят до крайностей, однако это не всегда приносит ожидаемый доход. Если заказчики требуют множества изменений, прибыли могут оказаться гораздо ниже планируемых. Многие руководители стремятся концентрироваться на том, что знают лучше всего, а в программной индустрии это обычно техническая компетенция, а не основы бизнеса. На каждом этапе необходимо устанавливать цели и контролировать продвижение к ним, сверяясь с реальными показателями. За изменениями экономических условий нужно тщательно следить, иначе они станут управлять вами. Для топ-менеджеров можно рекомендовать подход, основанный на сбалансированных показателях (balanced scorecard), тогда как на операционном уровне можно ориентироваться на выгоду — например, придерживаться метода освоенного объема (earned-value management).

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

Непрерывное совершенствование. Во многих компаниях стремятся улучшать результативность, но удовлетворены результатами не более трети из них. Распространенная причина неудач состоит в несовершенстве управления изменениями. Затраты и сроки выполнения работ можно уменьшить, если прибегнуть к непрерывной оптимизации процессов разработки. Бережливая разработка и скорые методы полезны для оптимизации взаимодействия и сокращения объема переработки и накладных расходов. Метод освоенного объема, систематизация потока ценности (value stream mapping) и Scrum — проверенные подходы, которые легко адаптировать для конкретной организации. Оптимизируйте потоки операций и соответствующие инструменты шаг за шагом в рамках комплексной стратегии, руководствуясь инкрементальными и долгосрочными целями. Постоянно ставьте конкретные новые цели усовершенствований. Обучайте сотрудников бережливой (lean) разработке. Пусть каждая команда подготовит план действий по избавлению от лишних затрат, переработок и конфликтов взаимодействия — все это с опорой на общекорпоративные ориентиры рентабельности. Приучайте подчиненных расширять технические и, что даже важнее, личностные навыки. Оценивайте производительность, например, по продажам в расчете на разработчика, по срокам поставки, эффективности распознавания дефектов, затратообразующим факторам, компетенциям и новациям. Пользуйтесь профессиональными средствами управления изменениями.

Ситуация в программном бизнесе и впредь будет изменчивой, уровень сложности продолжит расти, а технологии будут стремительно развиваться. Неизбежная нехватка компетенции приведет к дальнейшему усилению борьбы за квалифицированных специалистов. Компании продолжат инвестировать в рост через инновации и будут переводить команды разработки на экономичные и инновационные методы. В следующие 30 лет развитие виртуальных сред и дополненной реальности приведет к тому, что ПО будет непосредственно формировать окружающую действительность. Многие люди уже считают игры и социальные сети с множеством так называемых друзей более реальными и привлекательными, чем классическую действительность. Если можно будет без поездок встречаться с людьми, находящимися где угодно, загрязнения и количество ДТП значительно уменьшатся, а если устройства размером с клетки крови, находящиеся в организме, будут бороться с заболеваниями и улучшать интеллектуальные способности, жизнь полностью изменится. Программное обеспечение расширит возможности мозга так же, как сегодня оно расширяет возможности небиологических систем. Стержнем этих изменений будет программное обеспечение, поэтому уже сегодня стоит расширять компетенцию, которая понадобится, чтобы провести эти изменения верным образом — то есть с опорой на ценности и личностные навыки, а не только на технологии. Фа ктически происходит трансформация человечества, и хочется надеяться, что к лучшему. Но один вопрос остается без ответа: надо ли ПО встраивать в людей или же люди будут внедряться в программную среду?

Литература

Christof Ebert, Bad Parts: Looking into the Future, IEEE Software, November/December 2015, IEEE Computer Society. All rights reserved. Reprinted with permission.

В этой статье будет рассмотрена история развития программного обеспечения и рассмотрены основные пути развития программного обеспечения.

Ключевые слова

ООП, ПО, ОБЪЕКТНОЕ ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, ПК, ЭВОЛЮЦИЯ, ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР, РАЗРАБОТЧИК

Текст научной работы

Введение

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

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

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

Их можно обрисовать в виде Аппаратного и Программного обеспечения.

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

Первый разработчик ПО

Весь софт создаётся программистами на различных языках программирования, которые предназначены для записи ПО. Самым первым программистом считается Ада Лавлейс, дочь знаменитого поэта, лорда Джорджа Байрона. В 1843 она перевела лекцию британского изобретателя Чарльза Беббиджа о созданной им вычислительной машине которую тот прочитал в университете Турина с итальянского языка на английский, при переводе текста лекции Ада Лавлейс дополнила его своими подробными комментариями, которые по объему в три раза превышали текст лекции.

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

Первые компьютеры и их устройство

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

Первым программируемым ПК считается Компьютер z3 созданный в 1943 году немецким ученым Конрадом Цузе.

В период с 1943 по 1945 год Конрадом Цузе для его компьютера был разработан и первый язык программирования Plankalkul, однако из-за второй мировой войны он так и не был реализован.

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

Эволюция написания ПО

В 50-х годах потребность в компьютерных программах возросла и они стали значительно длиннее поэтому они получили распространение ПО: сборщики программы, которые были названы ассемблерами.

Они позволили сделать программы понятнее, однако такие программы все еще зависели от центрального процессора ПК.

В 1954 году началась разработка первого языка программирования высокого уровня ”Фортран”, его 1 работающая версия была реализована в 1957 году. Языки программирования высокого уровня стали настоящим прорывом. То как работают ПО практически перестало зависеть от аппаратного обеспечения компьютера, в то же время сами языки программирования стали имитировать естественные разговорные языки. Таким образом коды программ значительно сократились, а запоминать язык программирования стало значительно проще.

Компьютерные программы имели следующие составляющие:

Первая часть — это данные, они могут храниться на компьютере или задаваться пользователем ПО.

Вторая часть — это модель обработки данных, то есть описание способы их обработки.

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

История изменений составляющих компьютерных программ.

Сложность ПО постепенно увеличивалась, в итоге их стало сложно понимать даже самим программистом, поэтому в конце 60-х годов была разработана “парадигма структурного программирования” и её родоначальником стал нидерландский программист Эдсгер Дейстра. В 1968 году он опубликовал свое письмо” Оператор “go-to” “считается вредным. В этом письме он призвал программистов отказаться от использования в программах оператора безусловного перехода. Что же это значит. Программа представляет собой набор инструкций для управления компьютером, эти инструкции обычно выполняются в том порядке в котором они записаны, с помощью оператора безусловного перехода, программист может продолжить исполнение софта с любой инструкции, не обязательно со следующей такие программы было сложно читать.

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

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

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

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

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

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

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

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