Последующее развитие модельного ряда

История

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

Звание первого массового персонального компьютера принадлежит модели 5100, выпущенной ещё в 1975 году. Он был куда более компактным, чем мэйнфреймы, имел отдельный монитор, накопитель и клавиатуру, но предназначался для решения научно-инженерных задач. Для бизнесменов и просто любителей техники он подходил плохо, и не в последнюю очередь из-за цены, которая составляла около $20 000.

История создания первого IBM PC (модели IBM 5150), положившего начало семейству наиболее распространенных современных персональных компьютеров, такова: первый IBM PC был разработан примерно за год (работа началась в июле 1980 года и была завершена 12 августа 1981 года) 12-ю сотрудниками под руководством Дона Эстриджа (Don Estrige) в рамках Project Chess («Проект Шахматы») в г. Бока-Ратон, шт. Флорида, подразделении IBM. Для сравнения: штат компании Microsoft в то время насчитывал 32 человека.

В то время фирма IBM не придавала большого значения персональным компьютерам, поэтому в IBM PC было использовано много «чужих» компонентов — одним из их ключевых решений было использование разработок сторонних производителей. Это одновременно экономило множество средств и времени на собственных научных кадрах. В то время рынок персональных компьютеров был разделен между Commodore PET, семейства Atari 8-битных систем, Apple II и Radio Shack TRS-80 производства Tandy Corporation, поэтому IBM старалась не упустить момент. Изначально Дон Эстридж в качестве процессора выбрал IBM 801 и специально разработанную для него операционную систему. Но немногим ранее IBM выпустил в широкую продажу микрокомпьютер Datamaster (полное название System/23 Datamaster или IBM 5322), в основе которого лежал процессор Intel 8085. Как раз это и послужило причиной выбора для первого ПК IBM процессора Intel 8088. У IBM PC даже слоты расширения совпадали с таковыми у Datamaster. Ну а Intel 8088 потребовал новую операционную систему DOS, очень вовремя предложенную маленькой компанией из Редмонда под названием Microsoft. Не стали делать новый дизайн для монитора и принтера. В качестве первого был выбран ранее созданный японским подразделением IBM монитор, ну а печатающим устройством стал принтер производства Epson. Более того, вопреки жёсткой политике IBM в области интеллектуальной собственности, ни эти компоненты, ни разработанная тут же базовая система ввода-вывода не были залицензированы, что позволило сторонним фирмам, пользуясь опубликованными спецификациями, создать множество клонов IBM РС и вскоре отобрать у IBM львиную долю этого быстро расширяющегося рынка.

IBM PC продавался в различных конфигурациях. Самая дорогая стоила $3005. Она оснащалась процессором Intel 8088, работающим на частоте 3,58 МГц. Объём ОЗУ составлял 64 Кбайта. В качестве устройства для постоянного хранения данных предполагалось использовать 5.25-дюймовые флоппи-дисководы. Их могло быть установлено одна или две штуки. Позже IBM начала поставлять модели, позволявшие подключение кассетных носителей данных. Жёсткий диск в IBM 5150 установить было нельзя из-за недостаточной мощности блока питания. Однако компания выпустила так называемый «модуль расширения» или Expansion Unit (известный также как IBM 5161 Expansion Chassis) с винчестером на 10 Мбайт. Он требовал отдельного источника питания. Кроме того, в него можно было установить второй HDD. Также он имел 5 слотов расширения, тогда как сам компьютер имел ещё 8. Но для подключения Expansion Unit требовалось использовать карты Extender Card и Receiver Card, что устанавливались в модуле и в корпусе соответственно. Другие слоты расширения компьютера обычно были заняты видеоадаптером, картами с портами ввода/вывода и т. д. Можно было и нарастить объём ОЗУ до 256 Кбайт. Самая дешевая конфигурация обходилась в сумму $1565. Вместе с ней покупатель получал тот же самый процессор, но оперативной памяти было всего 16 Кбайт. Не поставлялся с компьютером и флоппи-дисковод, а также не было и стандартного CGA-монитора. Зато имелся адаптер для кассетных накопителей и видеоадаптер, ориентированный на подключение к телевизору. Таким образом дорогая модификация IBM PC была создана для бизнеса (где, кстати, и получила довольно широкое распространение), а более дешевая — для дома.

Со временем появились новые модели видеоадаптеров:



  • 1 октября 1987 года в продаже появился видеоадаптер, обеспечивающий режим VGA. Для поддержки видеорежима разрешением 640×480 пикселей при 16 цветах требовалось 256 кбайт видеопамяти.
  • В мае 1988 года в продаже появился видеоадаптер, обеспечивающий режим PPGA разрешением 640×480 пикселей при 256 цветах.

Конфигурация первого IBM PC

Процессор Intel 8088 с частотой 3,58 МГц (4/3 частоты поднесущей NTSC), емкость ОЗУ от 16 до 256Кбайт. Флоппи-дисководы емкостью 160 Кбайт приобретались за отдельную плату в количестве 1 или 2 шт. Жёсткого диска не было.

Ключевые технологи

  • системная шина ISA со стандартными слотами, что позволяло вставлять в компьютер разнообразные платы расширения (видео-, звуковые, сетевые и прочие адаптеры)
  • BIOS — набор системных функций, позволявший разработчику ПО абстрагироваться от деталей работы аппаратуры и не зависеть от конкретной конфигурации системы. (До этого все ПО разрабатывалось только под конкретные машины и поставлялось вместе с ними)
  • В IBM PC можно было использовать либо монохромный видеоадаптер MDA (текст 80×25, размер символа 9×14), либо цветной видеоадаптер CGA (текст 80×25 или 40×25, размер символа 8×8, либо графика разрешением 320×200 пикселей при 4-х цветах или разрешением 640×200 пикселей при 2 цветах). Причём можно было даже вставить оба видеоадаптера и подключить сразу два монитора, монохромный и цветной.

Носители

· магнитные диски

– гибкие (дискеты), имеют небольшой объем (1,4 МБ)

– жесткие (винчестеры), большой объем, расположены внутри системного блока.

· оптические (лазерные), магнитно-оптические; больший, чем у дискет объем – 650 или 700 МБ.

CD-ROM – только для чтения, CD-R – запись можно произвести только один раз, CD-RW – для чтения и перезаписи (можно использовать как дискету).

· флэш-память – энергонезависимая перезаписываемая память, содержимое которой можно быстро стереть (Flash Erase). Является представителем класса программируемых постоянных ЗУ. Этот вид памяти применяется для хранения BIOS, построения, так называемых, "твердотельных дисков" (memory stick, memory drive и др.), карт памяти различного назначения и т.п.

· магнитные ленты (сейчас практически не используются)

Вопрос №5.Устройства ввода-вывода.

Устройства ввода, вывода – средства связи ЭВМ с внешним миром. Принято также называть эти устройства периферийными устройствами.

Все устройства ЭВМ, кроме МП и внутренней памяти – внешние устройства.

Для связи между отдельными устройствами используется общая шина (магистраль), которая состоит из: шины данных, шины адресов, шины управления.

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

Последующее развитие модельного ряда - student2.ru Применение данной схемы построения ПК позволяет легко изменять конфигурацию компьютера путем добавления новых или замены старых устройств. Такой принцип построения ЭВМ принято называть принципом открытой архитектуры.

Вопрос№6. Принципы Джона фон Неймана.

Основные принципы организации ЭВМ заложил американский математик Джон фон Нейман. Он сформулировал следующие принципы работы ЭВМ:

1. Принцип программного управления.

2. Принцип однородности памяти.

3. Принцип адресности.

Рассмотрим перечисленные принципы более подробно.

1. Принцип программного управления (только программа управляет работой компьютера).

Программа – последовательность команд (инструкций), которые выполняет процессор.

Выполнение программы происходит следующим образом:

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

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

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

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

Последовательное выполнение команд процессором может быть нарушено при поступлении сигнала прерывания.

Прерывания могут быть:

· Фатальные – ведущие к прекращению выполнения программы (деление на 0, переполнение разрядной сетки);

· Нефатальные, появление которых не ведет к прекращению выполнения программы.

Прерывания подразделяются также на:

· Внутрипроцессорные (прерывания процессора)

· Прерывания внешних устройств .

После получения прерывания (нефатального) процессор:

a) Запоминает текущее состояние прерванной программы;

b) Вызывает и выполняет специальную программу – обработчик прерываний;

c) Возвращается к исходной программе.

2. Принцип однородности памяти (программы и данные хранятся вместе).

ЭВМ не различает, что хранится в данной ячейке памяти – команды или данные.

Над командами можно выполнять такие же действия, что и над данными. Это позволяет получать команды одной программы в результате исполнения другой.

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

Вопрос №7. Программное обеспечение ЭВМ, классификация.

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

· Операционные системы – обеспечивают управление процессом обработки информации и взаимодействие аппаратных средств.

· Сервисные программы – расширяют возможности ОС.

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

Инструментальное ПО (системы программирования) – программы, которые обеспечивают создание новых программ.

Все программное обеспечение можно разделить на три группы:

· Коммерческое;

· условно-бесплатное (shareware);

· свободно распространяемое (freeware).

При приобретении программы как коммерческого продукта, способ использования программы определяется лицензионным соглашением. Лицензионное соглашение – это договор на передачу права использования ПО. При покупке ПО приобретается дистрибутив – программный продукт на каком-либо носителе информации (в основном, на CD). Лицензионное ПО всегда имеет инструкцию по установке и руководство пользователя.

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

Условно-бесплатными обычно бывают:

· программы с ограниченным сроком действия (после истечения указанного срока программа перестает работать, если за нее не произведена оплата);

· программы с ограниченными функциональными возможностями (в случае оплаты пользователю сообщается код, включающий все функции);

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

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

Многие производители программного обеспечения и компьютерного оборудования заинтересованы в широком бесплатном распространении программного обеспечения. К таким программным продуктам относятся следующие:

· новые недоработанные (бета) версии программных продуктов (это позволяет провести их широкое тестирование);

· программные продукты, являющиеся частью принципиально новых технологий (это позволяет завоевать рынок);

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

· устаревшие версии программ;

· драйверы к новым устройствам или улучшенные драйверы к уже существующим.

Вопрос №8. Системное программное обеспечение. Операционные системы.

Системное программное обеспечение. Операционные системы.

Последующее развитие модельного ряда - student2.ru

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

Сервисные программы – расширяют возможности ОС.

Операционные системы.

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

ОС обеспечивает 3 вида интерфейса (взаимодействия, взаимосвязи):

Аппаратный – совместное функционирование всех устройств компьютера, распределение ресурсов.

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

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

Существует несколько видов пользовательских интерфейсов.

· Командной строки – диалог ведется при помощи команд, записываемых пользователем в командной строке;

· Меню – выбор команды осуществляется из меню, в котором перечислены все возможные команды;

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

Вопрос №9. Классификация операционных систем.

Классификация ОС.

по числу одновременно работающих пользователей ОС:

· однопользовательские (MS DOS, OS/2 ранние версии и др.)

предназначены для управления автономным компьютером.

· многопользовательские (сетевые) (UNIX, Windows NT, Windows 2000, Windows XP и др.)

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

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

По числу одновременно выполняемых задач (программ):

· однозадачные(MS DOS), позволяют выполнять только одну задачу. Следующая задача может быть запущена только после завершения предыдущей.

· многозадачные (OS/2, UNIX, Windows 95 и выше, Windows NT), позволяют одновременно выполнять несколько задач.

Задача (процесс) – это программа в стадии выполнения.

Рассмотрим смемы работы однозадачной и многозадачной ОС.

 
  Последующее развитие модельного ряда - student2.ru

Однозадачные ОС:

МП – микропроцессор, ПУ 1, 2 – периферийные устройства.

На схеме изображается последовательное выполнение задач 1,2. Большую часть времени МП простаивает.

Многозадачные ОС:

 
  Последующее развитие модельного ряда - student2.ru

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

Вопрос №10. Функции операционной системы.

Функции операционных систем

Основные функции:

  • Выполнение по запросу программ (ввод и вывод данных, запуск и остановка других программ, выделение и освобождение дополнительной памяти и др.).
  • Загрузка программ в оперативную память и их выполнение.
  • Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).
  • Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).
  • Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.
  • Обеспечение пользовательского интерфейса.
  • Сохранение информации об ошибках системы.

Дополнительные функции:

  • Параллельное или псевдопараллельное выполнение задач (многозадачность).
  • Эффективное распределение ресурсов вычислительной системы между процессами.
  • Разграничение доступа различных процессов к ресурсам.
  • Организация надёжных вычислений (невозможности одного вычислительного процесса намеренно или по ошибке повлиять на вычисления в другом процессе), основана на разграничении доступа к ресурсам.
  • Взаимодействие между процессами: обмен данными, взаимная синхронизация.
  • Защита самой системы, а также пользовательских данных и программ от действий пользователей (злонамеренных или по незнанию) или приложений.
  • Многопользовательский режим работы и разграничение прав доступа (см. аутентификация, авторизация).

Вопрос №11. Обзор операционной системы Linux.

Системы программирования

К этой категории относятся программы, предназначенные для разработки программного обеспечения:

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

Перечисленные инструменты могут входить в состав интегрированных сред разработки

Виды инструментального ПО

  • Текстовые редакторы
  • Интегрированные среды разработки
  • SDK
  • Компиляторы
  • Интерпретаторы
  • Линковщики
  • Парсеры и генераторы парсеров (см. Javacc)
  • Ассемблеры
  • Отладчики
  • Профилировщики
  • Генераторы документации
  • Средства анализа покрытия кода
  • Средства непрерывной интеграции
  • Средства автоматизированного тестирования
  • Системы управления версиями
  • и др.

Вопрос №17. Классификация языков программирования.

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

Машинно–ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

К языкам программирования высокого уровня относят Фортран (переводчик формул – был разработан в середине 50–х годов программистами фирмы IBM и в основном используется для программ, выполняющих естественно – научные и математические расчеты), Алгол, Кобол (коммерческий язык – используется, в первую очередь, для программирования экономических задач), Паскаль, Бейсик (был разработан профессорами Дармутского колледжа Джоном Кемени и Томасом Курцом.), Си (Деннис Ритч – 1972 году), Пролог (в основе языка лежит аппарат математической логики) и т.д.

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

Программу, написанную на языке программирования высокого уровня, ЭВМ не понимает, поскольку ей доступен только машинный язык. Поэтому для перевода программы с языка программирования на язык машинных кодов используют специальные программы – трансляторы.

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

Языки программирования также можно разделять на поколения:

– языки первого поколения: машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.

– языки второго поколения: с мнемоническим представлением команд, так называемые автокоды.

– языки третьего поколения: общего назначения, используемые для создания прикладных программ любого типа. Например, Бейсик, Кобол, Си и Паскаль.

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

– языки программирования пятого поколения: языки декларативные, объектно–ориентированные и визуальные. Например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi.

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

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

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, К непроцедурному программированию относятся функциональные и логические языки.

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

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

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

Первый объектно-ориентированный язык программирования Simula был создан в 1960-х годах Нигаардом и Далом.

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

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

Вопрос №18. Парадигмы программирования.

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

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

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

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

Вопрос №20. Встроенные типы данных.

Обычно в состав встроенных типов данных включаются такие типы, операции над значениями которых напрямую или, по крайней мере, достаточно эффективно поддерживаются командами компьютеров. В современных компьютерах к таким "машинным" типам относятся целые числа разного размера (от одного до восьми байт), булевские значения (поддерживаемые обычно за счет наличия признаков условной передачи управления) и числа с плавающей точкой одинарной и двойной точности (обычно четыре и восемь байт соответственно). В более ранних компьютерах часто поддерживалась десятичная арифметика с фиксированной точкой (например, в мейнфреймах компании IBM и супер-миникомпьютерах компании Digital), но в настоящее время прямая аппаратная поддержка такой арифметики отсутствует практически во всех распространенных процессорах. В соответствии с этим, в традиционный набор встроенных типов обычно входят следующие (мы будем говорить про размеры внутреннего представления значений этих типов, хотя в спецификациях языков такая информация, как правило, отсутствует):

Тип CHARACTER (или CHAR) в разных языках - это

  1. либо набор печатных символов из алфавита, зафиксированного в описании языка (для большинства языков англоязычного происхождения этот алфавит соответствует кодовому набору ASCII);
  2. либо произвольная комбинация нулей и единиц, размещаемых в одном байте.

В первой интерпретации (свойственной языкам линии Паскаль) для значений типа CHAR определены только операции сравнения в соответствии с принятым алфавитом. Например, при использовании ASCII выполняются соотношения 0 < 1 < ...< 9 < A < B < ...< Z < a < b < ...< z; известно, что если значение переменной x удовлетворяет условию 0 <= x <= 9, то это значение - цифра; если A <= x <= Z, то значение x - прописная буква; если a <= x <= z, то значение x - строчная буква и т.д. При использовании этой интерпретации арифметические операции над символьными значениями не допускаются.

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

Наконец, в некоторых языках явно различают тип CHAR как чисто символьный тип и тип сверхмалых целых (TINY INTEGER) как тип целых чисел со значениями, умещающимися в один байт.

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

Тип BOOLEAN в тех языках, где он явно поддерживается, содержит два значения - TRUE (истина) и FALSE (ложь). Несмотря на то, что для хранения значений этого типа теоретически достаточно одного бита, обычно в реализациях переменные этого типа занимают один байт памяти. Для всех типов данных, для которых определены операции сравнения, определены также и правила, по которым эти операции сравнения вырабатывают булевские значения. Над булевскими значениями возможны операции конъюнкции (& или AND), дизъюнкции (| или OR) и отрицания (~ или NOT), определяемые следующими таблицами истинности:

TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
FALSE AND TRUE = FALSE
FALSE AND FALSE = FALSE

TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
FALSE OR TRUE = TRUE
FALSE OR FALSE = FALSE

NOT FALSE = TRUE
NOT TRUE = FALSE

При работе с булевскими значениями в языках баз данных некоторую проблему вызывает то, что по причине возможности хранения в базе данных неопределенных значений операции сравнения могут вырабатывать не два, а три логических значения: TRUE, FALSE и UNKNOWN. Поэтому в языке SQL-92, например, используется не двухзначная, а трехзначная логика, в результате чего логические операции при их обработке в серверах баз данных определяются расширенными таблицами (мы приводим их с учетом коммутативности двуместных операций):


TRUE AND TRUE = TRUE
TRUE AND FALSE = FALSE
TRUE AND UNKNOWN = UNKNOWN
FALSE AND UNKNOWN = FALSE

TRUE OR TRUE = TRUE
TRUE OR FALSE = TRUE
TRUE OR UNKNOWN = TRUE
FALSE OR UNKNOWN = UNKNOWN

NOT FALSE = TRUE
NOT TRUE = FALSE
NOT UNKNOWN = UNKNOWN

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

В языках линии Си прямая поддержка булевского типа данных отсутствует, но имеется логическая интерпретация значений целых типов. Значением операции сравнения может быть "0" (FALSE) или "1" (TRUE). Значение целого типа "0" интерпретируется как FALSE, а значени

Наши рекомендации