Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
обзорная лекция2.doc
Скачиваний:
1
Добавлен:
15.09.2019
Размер:
289.79 Кб
Скачать

Конкуренция между ibm pc и Apple Macintosh.

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

Постепенно IBM-совместимые компьютеры завоевали львиную долю рынка персональных компьютеров. Все IBM-совместимые компьютеры могут использовать операционную систему Microsoft DOS (PS-DOS у IBM, MS-DOS у ПК других производителей) или Windows и процессоры Intel (или совместимые с ними). Поэтому в конце 1990-х годов их стали называть компьютерами на платформе Wintel (Windows+Intel).

В настоящее время единственной серьезной альтернативой IBM-совместимым персональным компьютерам являются компьютеры Macintosh американской фирмы Apple, основаной в 1977 году молодыми учеными Стивом Джобсом и Стивом Возняком.

В 1981 году на рынке микрокомпьютеров появилась продукция фирмы IBM, что заставило Apple активизировать разработку принципиально нового компьютера — с графическим интерфейсом. Первые работы в этом направлении были начаты инженерами Apple совместно с компанией Xerox еще в 1979 году, а с 1982 года были продолжены Apple самостоятельно в рамках исследовательской группы Macintosh Developer Group. В 1983 году появился первый результат работы этой группы — компьютер Lisa. Несмотря на все достоинства нового компьютера, его цена оказалась слишком высокой, что помешало его продвижению на рынке.

24 января 1984 года Apple начала энергичную кампанию на американском телевидении по рекламе своего нового компьютера Macintosh 128K. Этот день считается датой рождения нового семейства компьютеров. Интерфейс первого «Мака», как фамильярно называют компьютеры Macintosh, значительно отличался от IBM-совместимых компьютеров того времени: окна, раскрывающиеся меню, пиктограммы кардинальным образом упрощали общение с компьютером. Благодаря дизайну all-on-line (все в одном), при котором системный блок и монитор объединены в одном корпусе, компьютер занимал минимум места на столе.

В 1985 году компания Microsoft разработала электронную таблицу Excel for Macintosh, версия которой для PC появилась лишь год спустя. Программы для Macintosh Aldus PageMaker и LaserWriter совершили настоящую революцию в издательском деле, обеспечив продукции Apple устойчивый сбыт в этом секторе рынка.

В 1989 году Apple продала компьютеров больше, чем сама IBM, ее новые разработки привлекли внимание заказчиков из среды промышленных предприятий и исследовательских центров. В 1990 году на рынок вышел Macintosh 2fx — самый быстрый персональный компьютер своего времени (и самый дорогой за всю историю Apple — ценой в десять тысяч долларов).

В 1991 году начался выпуск модели Macintosh LC, относительно дешевого компьютера в ультраплоском корпусе, ставшего одним из самых удачных коммерческих проектов Apple.

Основными алгоритмическими структурами (ОАС) - являются следование, развилка и цикл.

Ниже приведены графические обозначения (обозначения на блок-схемах) ОАС.

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

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

 

Структурное программирование - методология и технология разработки программных комплексов, основанная на принципах:

- программирования "сверху-вниз";

- модульного программирования.

При этом логика алгоритма и программы должны использовать три основные структуры: последовательное выполнение, ветвление и повторение. Примеры языков: Паскаль, Basic

 

Объектно-ориентированное программирование

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

Сравнительный анализ языков программирования

 

 Паскаль, Visual Basic, Java

 

С точки зрения принципов программирования языки программирования можно разбить на 3 группы: процедурные, функциональные и логические

 

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

 

Процедурные языки программирования

 

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

 

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

 

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

 

Функциональные языки программирования

 

Функциональное программирование основывается на использование списков и функций. Переменные могут отсутствовать вообще.

 

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

 

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

 

Языки низкого уровня(машинный код и Ассемблер) являются по принципам работы процедурными языками программирования. Но, это языки такого низкого уровня, что к ним даже не подходит термин “процедурные”. Скорее, лучше называть их императивными языками программирования.

 

Большинство современных процедурных языков программирования развивается в направлении объектно-ориентированного программирования.

 

Объектно-ориентированное программирование

 

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

 

Особое место занимает язык программирования Java. Это обуславливается 2-мя его великолепными свойствами. Во-первых, реализация этого языка не привязана к конкретной архитектуре вычислительного устройства (компьютера, мобильного телефона и так далее) и конкретной операционной системе. Программа на языке Java транслируется в промежуточной код, который может быть выполнен на любом компьютере, на котором запущена виртуальная Java-машина. Чтобы перенести Java-программу на новый тип компьютера, не нужно переписывать транслятор для языка Java и другие средства разработки. Более того, не нужно иметь исходные тексты Java-программ и выполнять их перекомпиляцию. Достаточно переписать для новой архитектуры компьютера виртуальную Java-машину и запускать на ней Java-приложения в промежуточном коде, одним и тем же для любых архитектур компьютеров.

 

Во-вторых, на языке Java можно разрабатывать не только стандартные программы, но и особые виды приложений, так называемые апплеты и сервлеты, которые естественным образом встраиваются в Интернет-приложения (HTML-страницы и в Web-сервера). Это придает Java очень высокую степень автономности и делает его языком программирования будущего. Java является процедурным, объектно-ориентированным языком программирования.

 

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

 

 

 

Скриптовые (тэговые)-декларативные языки программирования

В последнее время получили широкое распространение тэговые языки описания различных структур данных, преимущественно связанных с передачей информации через Интернет. Одним из таких языков является XML - тэговый язык описания  древовидных структур с аттрибутами, используемый при построении различных типов документов. XML постепенно заменяет собой HTML, на его основе строятся файлы в формате MS Word и PDF-файлы. Для преобразования XML-файлов, например, для переформатирования его по новому шаблону, был разработан опять же тэговый язык XSLT. Структура XSL-файл (файл XSLT-преобразований) полностью соответствует спецификации XML. По своей сути, XSLT является языком функционального программирования.

 

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

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

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

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

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

Формат описания процедуры имеет вид:

procedure имя процедуры (формальные параметры);

  раздел описаний процедуры

begin

 

  исполняемая часть процедуры

 

end;

Формат описания функции:

function имя функции (формальные параметры):тип результата;

  раздел описаний функции

begin

 

  исполняемая часть функции

 

end;

 

 

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

При выходе из функции они уничтожаются.

 

Если же объявить переменную вне всяких функций (такие переменные называются глобальными), то её можно использовать во всех функциях без объявления.

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

Константа -  это число, текст или логическое значение, которые не изменяются в процессе реализации алгоритма, решения задачи на компьютере.

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

Массив -  это объединенное одним именем (идентификатором массива) множество однотипных элементов. К основным параметрам массивов относят его тип (числовой, символьный, логический),размерность (одномерный, двухмерный и т.д.)и размер (количество элементов массива в каждом измерении).

Рекурсия - это такая организация алгоритма, при которой процедура обращается к самой себе. Сама процедура называется рекурсивной.