
inf_6.ppt
- Количество слайдов: 24
программное обеспечение (software) Эту картинку часто помещают в учебники по программированию, так как она точно описывает происходящий процесс 1
программное обеспечение (software) Компьютер представляет из себя программно-аппаратный комплекс (software и hardware) Для того, чтобы понять, что (в общих чертах) представляет собой программное обеспечение современного компьютера, давайте начнем с истории – что, как и когда делалось. При написании программы на машинном коде первым программистам надо было писать программы так, как они записываются в оперативной памяти – как последовательность цифр, задающих номера машинных команд и адреса операндов. Самым первым программистам приходилось писать в машинном коде. Разработка даже простых и коротких программ занимала массу времени. 2
программное обеспечение (software) Поэтому с самого начала программисты стали писать программы, упрощающие процесс написания программы. Один из первых шагов в этом направлении – язык ассемблер. Вместо номера команды пишется ее более понимаемое название, вместо адреса, по которому расположено число – название переменной. В тексте появляются комментарии, которые не обрабатываются, но помогают понять, что делает команда, и метки для символического обозначения места перехода вместо адреса, с которого нужно считывать следующую команду по команде перехода. Программа на языке ассемблера обрабатывается другой программой – транслятором с языка ассемблер, и в результате получается программа на машинных кодах. 3
программное обеспечение (software) Обсуждаемое ранее возможное наличие в программе операторов перехода и условного перехода дало возможность использования подпрограмм – многократно вызываемых и исполняемых участков кода. Пусть, например, в некоторой программе в нескольких местах нужно вычислять квадратный корень из числа. Очень нерационально многократно писать одну и ту же последовательность команд в разных местах. Можно отдельно (например, расположив это в конце, после команды остановки работы программы) написать несколько операндов, вычисляющих квадратный корень. Например, для этого резервируется 4 адреса в оперативной памяти, используемые для хранения: -адреса оператора, который должен выполняться после завершения выполнения подпрограммы вычисления квадратного корня, -адреса, по которому будет хранится число с указанием на успешность выполнения подпрограммы (например, 0, если было передано отрицательное число, из которого нельзя извлечь корень, и 1 в противоположном случае), -адреса, по которому записано число из которого надо извлечь корень, -адреса, по которому надо разместить результат вычисления. После этого для вычисления квадратного корня в любом месте программы по указанным адресам записываются нужные числа, и управление передается на адрес, с которого 4 начинается подпрограмма вычисления квадратного корня.
программное обеспечение (software) Так как подобные стандартные действия нужно выполнять в разных программах, по появились библиотеки стандартных подпрограмм. В Windows они оформлены в виде файлов с расширением. dll и называются динамически загружаемыми библиотеками. В процессе инсталляции (установки) новых программ в среде Windows одно из основных действий – дозагрузка новых. dll в добавление к уже существующим. Для экономии использования оперативной памяти также используется такой трюк – программа разбивается на сегменты, и тот сегмент программы, который не используется в данный момент, может быть выгружен из оперативной памяти на жесткий диск, а вместо него загружен другой сегмент. 5
программное обеспечение (software) Еще один стандартный «трюк» - работа с массивами. Для ее реализации было введено усовершенствование, что при выполнении машинной команды считываются числа не по адресу, записанному в оперативной памяти после номера команды процессора, а с этим адресам прибавляется «смещение» - число, записанное на адресном регистре. Таким образом, если R-адресный регистр, то программа, записанная на «псевдоассемблере» , будет суммировать 100 чисел: Записать N, 100 Записать SUM, 0 Записать R, 0 Метка: Прибавить SUM, A Прибавить R, 1 Перейти. Если. Равно R, N, Метка: Данная программа иллюстрирует суммирование N=100 чисел, начиная с адреса числа A. Последовательно записанные «поля» данных, подготовленные для подобных операций, называются массивами. 6
программное обеспечение (software) У языка программирования низкого уровня ассемблера есть жесткая привязка к командам центрального процессора, из-за чего программист может пользоваться всеми возможностями процессора. В программе на языке ассемблера команды – это команды центрального процессора, лишь записанные более удобным для человека образом. Однако программирование на языке ассемблер неудобно по следующим причинам: -оно очень трудоемко, программы плохо понимаемы и модифицируемы, -при переходе на компьютеры с другими системами команд их приходится переписывать. Программирование на языке ассемблера – чрезвычайно трудоемкая операция Поэтому сейчас на языке ассемблера пишут лишь специальные программы типа драйверов или небольшие фрагменты программ, а для разработки используют языки высокого уровня. 7
программное обеспечение (software) Далее стали появляться языки программирования высокого уровня: Алгол, Фортран, PL/1, Кобол, Lisp и т. д. В языках программирования высокого уровня оператор не соответствует одной команде процессора; программа состоит из более удобных операторов, ориентированных на «абстрактную вычислительную машину» . Если грубо, то текст программы на языке высокого уровня содержит: операторы описания (например, что это название переменной соответствует длинному целому числу, его начальное значение будет 12 и что эта переменная будет доступна всем подпрограммам и модулям данной программы), выполнимые операторы (например if (asum<0) then {asum: =-asum}; ), включая операторы вызова подпрограмм и переходов, операторы настройки компиляторов/интерпретаторов, метки, служащие указанием места перехода, и комментарии. 8
программное обеспечение (software) Для исполнения программ, написанных на языке высокого уровня, используются интерпретаторы, трансляторы и компиляторы. Интерпретатор с языка программирования выполняет операторы по одному, закончив выполнение одного, он переходит исполнению к анализу и следующего оператора. Интерпретаторы удобны при отладке, так как для них точно понятно, в каком операторе ошибка, но интерпретируемые программы очень медленно работают. Питер Брейгель. Вавилонская башня Компиляторы – программы, переводящие программу, написанную на языке высокого уровня, в программу на ассемблере или машинном коде. Эта технология обычно позволяет быстрее считать, отлаженную программу можно не компилировать повторно, а сразу запустить сохраненный код для расчетов, но отлаживать программы тяжелее, так как непонятно, в каком именно операторе произошла ошибка. Транслятор – программа, переводящая программу с одного языка программирования на другой. Компиляторы – частный случай транслятора. Там, где скорость преобразования программного кода несущественна (например, в большинстве Интернет-приложений), обычно используются интерпретаторы. Для современных универсальных языков программирования (современные диалекты языков Паскаль, Бейсик, С) обычно есть и 9 интерпретатор, и транслятор.
программное обеспечение (software) Помимо трансляторов с языков программирования и пр. также стали развиваться особые программы, называемые операционными системами, и которые берут на себя выполнение особых и сервисных функций. Первые операционные системы (мониторы) выполняли такую работу, как запуск программ на выполнение. Для этого операционной системе был придан особый статус – она запускалась первой, и ей разрешали выполнять такие действия, которые другим программам был запрещен. На операционную систему также стали возлагать задачу обеспечения таких функций, как печати и пр. Следующий шаг развития операционных систем – включение в них поддержание файловой системы. Напомню, что в оперативной памяти программы и данные записываются как последовательность чисел, а обращение к ним происходит по адресам. Однако для хранения на других устройствах такая схема неудобна – нужно помнить, сколько байтов с какого места надо считать или записать. Поэтому была внедрена файловая система, когда программы и данные оформлены файлов, то есть в виде наборов данных, имеющих уникальное имя. Пользователи и программы имеют возможность обращаться к файловой системе, указывая не физические адреса расположения данных на устройстве, а название файла, а перевод запросов на чтение и запись на уровень «физических команд» берет на себя операционная система. 10 Файлы похожи на книги, а файловая система – на библиотеку, а операционная система – на библиотекаря, который отыскивает на полке книги по их названиям
программное обеспечение (software) В состав операционных систем MS-DOS и Windows включаются также драйверы – специальные программы, обеспечивающие работу устройства на физическом уровне. Для некоторых устройств годятся типовые драйверы, для некоторых драйверы устанавливаются при подключении устройства к компьютеру. Иногда этот процесс выполняется без активного вмешательства пользователя, иногда нужно (например, прилагаемого CD-диска) запустить программу установки драйверов. Использование драйверов позволяет работать с новыми устройствами без замены ОС. Некоторые устройства «любят» обновлять свои драйверы через Интернет. Использование драйверов и файловой системы позволяет программам и пользователям работать на «логическом уровне» , например, давать команду считать файл с указанным названием или напечатать данный текст на принтере, а ОС переводит это в команды «физического уровня» . Могут также использоваться «драйверы виртуальных устройств» , например, часть оперативной памяти работает как маленький, но очень быстрый винчестер. 11
программное обеспечение (software) Для взаимодействия программ с ОС используется система прерываний. Каждый раз, когда программе нужно сделать что-то, для чего нужно вмешательство ОС, она останавливает свою работу и отправляет для ОС запрос с номером прерывания и требуемой информацией, например, с названием файла, видом требуемой операции, тем, что надо записать в файл, и т. д. После выполнения требуемой операции ОС передает управление обратно программе. Если что-то пошло не так, то ОС может снять программу с выполнения или запросить помощь оператора. Прерывание, в частности, генерируется при каждом нажатии кнопки на клавиатуре и щелчке мышью. Современные операционные системы - многозадачны Так как во время выполнения подобных запросов основные ресурсы часто простаивают, то вскоре после появления первых ЭВМ стали внедряться многозадачные ОС, у которых в оперативную память загружается сразу 12 несколько программ, и пока одна чего-то ждет, другие обсчитываются.
программное обеспечение (software) Помимо компонентов операционной системы, выполняющих специальные задачи и требующие особых полномочий, в их состав включается большое количество утилит – сервисных программ общего назначения, не имеющих особого статуса и запускаемых обычным образом. К ним, например, относятся программы проверки диска на наличие ошибок файловой системы, программы дефрагментации, архивации, медиаплееры и пр. «Штатные» сервисные программы могут быть заменены на аналогичные программы независимых разработчиков. Торрент-клиент – программа, позволяющая обмениваться файлами через Интернет 13
программное обеспечение (software) На линии IPM-PC совместимых компьютеров вначале в основном использовалась однозадачная операционная система MS-DOS (в нескольких версиях), потом ее сменила многозадачная ОС Windows (также в разных версиях). Первоначальной файловой системой для MS-DOS и Windows была FAT. В ней на гибком магнитном диске в его начальной части имеется BOOT – запись небольшой программы, отыскивающей на дискете операционную систему (если она там есть) и загружающей ее для выполнения. Потом начальная часть дискеты отведена под запись информации о том, где какие файлы записаны, а далее имеется уже собственно записанное содержимое файлов. Для уменьшение длины адресов пространство дискеты выдается файлу не по байтам, а более крупными кусками, которые называются кластерами. Размер кластера указывается при форматировании дискеты. Кластер выдается только целиком, из-за чего файлы занимают на дискете немного больше места, чем содержится в файле, так как последний кластер может быть целиком не заполнен. Так как в процессе работы файлы многократно преобразуются, удаляются и создаются, то кластеры, из которых они состоят, не обязательно становятся расположенными подряд. Большая «разбросанность» замедляет работу, для ее устранения и переписывания файла «едиными кусками» используются программы, которые называют дефрагментаторами. 14
программное обеспечение (software) На жестких дисках (винчестерах) схема хранения информации несколько более сложная. В его начале имеется специальная запись, в которой указано, на сколько логических устройств поделен винчестер, каковы их размеры, файловые системы и пр. Разные части винчестера могут содержать разные файловые системы. Деление винчестера на несколько разделов (логических устройств) позволяет решать несколько задач: - Позволяет ОС работать с устройством размером больше максимально адресуемого, -Можно на одном винчестере держать несколько разных файловых систем, -Если в нескольких логических устройствах записаны разные операционные системы, то можно выбрать, какую загружать при запуске компьютера. 15
программное обеспечение (software) Помимо операционной системы и трансляторов, компиляторов и пр. , позволяющих разрабатывать новые программы, современный человек, работающий на персональном компьютере, использует огромное разных программ разного назначения. К ним относятся: - архиваторы, - браузеры - антивирусные программы, -медиаплееры, - текстовые редакторы, - графические редакторы (векторные и растровые), - электронные таблицы, - базы данных, - статистические пакеты, - и многое, многое другое. 16
программное обеспечение (software) Со многими программами вы работали во время практических занятий, о базах данных мы поговорим подробнее. А сейчас остановимся на людях, которые работают на компьютерах. Оператор. Во времена ЭВМ только они (и инженеры-ремонтники) непосредственно работали на ЭВМ. При переходе к персональным компьютерам исчезли как класс, оставшись как остаточное явление в виде секретарши. 17
программное обеспечение (software) Инженеры по ремонту и эксплуатации компьютеров Во времена больших ЭВМ им нужно было ежедневно проводить профилактическое обслуживание. Кроме того, в них постоянно что-то ломалось. Поэтому при каждой ЭВМ была туча инженеров-ремонтников. Современные ПК – надежны, большая часть аппаратных отказов или легко устранима (например, плата выпала из гнезда), или устраняется заменой сломавшегося устройства на другое. Поэтому большая часть функций инженеров-ремонтников выполняют сами пользователи или сисадмины, а собственно ремонт (работу с тестером и паяльником) выполняют лишь в специализированных конторах. 18
программное обеспечение (software) Программист. Тот, кто пишет программы. Во времена больших ЭВМ именно он был основным пользователем ЭВМ, так как основная задача была – написать нужную программу. Сейчас готовых программ уже столько, что большая часть пользователей пользуется только готовыми программами и не умеет писать свои. 19
программное обеспечение (software) Программисты не бывают старыми! Работа по программированию не является мистическим актом, требующим сверхспособностей. Так же, как любой человек способен выучить другие языки, так же и любой способен (если надо будет) изучить языки программирования, и так же у кого-то это получается лучше, у кого-то хуже, кому-то это нравится, кому-то нет. Обратная сторона совершенствования вычислительной техники – постоянная смена сред и инструментов программирования, что приводит к обесцениванию значительной доли накопленного опыта. Конечно, многое из освоенного остается, но многое в конкретике приходится постоянно переучивать, и у «старых зубров» нет того преимущества перед «молодняком» , как во многих других сферах деятельности. Поэтому многие программисты с возрастом дрейфуют в смежные сферы, например, в руководители проекта. 20
программное обеспечение (software) Аутсорсинг Еще одна любопытная тенденция – использование аутсорсинга. Так как программист после постановки задачи может работать достаточно автономно, то сейчас многие программы разрабатываются с использованием программистов (часто низкой квалификации), живущих в странах с низким уровнем зарплаты. 21
программное обеспечение (software) Сисадмин Раньше эта категория трудящихся называлась системными программистами. Начинающие непрофильные начальники часто не могут понять, зачем они нужны. Действительно: операционная система уже написана, программы пишут другие… В одной книге я прочитал следующее описание их работы. Представьте, что вам продали диван с ножками разной длины, и для установки его в квартире предлагают специальный наклонный пол, который вам покупать и ставить не хочется. Так вот: системный программист – это тот, кто подпиливает у дивана ножки. Самый лучший системный программист – 22 это тот, чью работу не видно
программное обеспечение (software) Сисадмин Сейчас эта категория обычно называется сисадминами, так как в их обязанности входит администрование локальных сетей. Один из основных видов деятельности сисадмина называется «танец с бубном» . Это – попытка заставить нормально работать компьютер, сеть или программы путем совершения изменений настроек и режимов работы. В случае успеха сисадмин обычно не может объяснить, что, как и, главное, зачем он менял. 23
программное обеспечение (software) САМЫЙ ГЛАВНЫЙ Простой пользователь (рядовой, необученный). Он же чайник, он же ламер, он же блондинко. Конечный пользователь программных продуктов. Объект шуточек со стороны профессионалов. Самый главный человек, так как именно ради него все в конечном счете и делается. 24
inf_6.ppt