1. Классификация программного обеспечения

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

В первом приближении все программы, работающие на компьютере, можно условно разделить на три категории (смотри рисунок) :

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

2. системные программы , выполняющие различные вспомогательные функции, например:

    управление ресурсами компьютера;

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

    проверка работоспособности устройств компьютера;

    выдача справочной информации о компьютере и др.;

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

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

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

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

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

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

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

    операционные системы и оболочки;

    системы программирования (трансляторы, библиотеки подпрограмм, отладчики и т.д.);

    инструментальные системы;

    интегрированные пакеты программ;

    динамические электронные таблицы;

    системы машинной графики;

    системы управления базами данных (СУБД);

    прикладное программное обеспечение.

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

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

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

В функции операционной системы входит:

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

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

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

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

3. однопользовательские многозадачные , которые обеспечивают одному пользователю параллельную обработку нескольких задач. Например, к одному компьютеру можно подключить несколько принтеров, каждый из которых будет работать на "свою" задачу;

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

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

Операционная система для персонального компьютера, ориентированного на профессиональное применение, должна содержать следующие основные компоненты:

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

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

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

Современные операционные системы для ПЭВМ отличаются друг от друга, прежде всего ориентацией на машины определенного класса, поддерживаемыми ими режимами обработки, предоставляемыми сервисными возможностями. Примерами ОС для ПЭВМ являются СР/М, MS DOS, OS/2 Warp (IBM), Windows 95 (Microsoft).

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

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

    редакторы;

    средства компоновки программ;

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

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

    графические пакеты программ и т.п.

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

НХИ-1, 20.02.12

Инструментальные системы программирования.

Транслятор, компилятор, интерпретатор

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

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

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

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

· компилятор и/или интерпретатор;

· средства создания и редактирования текстов программ;

· библиотеки стандартных программ и функций;

· диалоговая среда для пользователя;

· графические библиотеки и утилиты для работы с библиотеками

· и другие средства.

К инструментальным системам программирования относятся Turbo Basic , Quick Basic , Turbo Pascal , Turbo C, Delphy, Builder .

Язык Бейсик создан как язык для начинающих.

Язык Паскаль разработан Никласом Виртом для обучения студентов программированию. Паскаль – это язык структурного программирования . Расширенный вариант языка – Turbo Pascal .

Язык Си соединяет свойства языка высокого уровня с возможностями использования программирования как на языке Ассемблера.

Современныесистемы программирования: Borland Delphi , Microsoft Visual Basic, Borland C++ , которые предназначены для создания программ в среде Windows и предоставляют удобные средства визуальной разработки.

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

· редакторы;

· средства компоновки программ;

· отладочные программы;

· графические пакеты программ и т.п.

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

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

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

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

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

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


Рис. 4.1.

Первым значительным шагом был переход к языку ассемблера ( assembly language , или assembler ). Не очень заметный, казалось бы, шаг – переход к символическому кодированию машинных команд – имел на самом деле огромное значение . Программисту не надо было больше вникать в хитроумные способы кодирования команд на аппаратном уровне. Более того, зачастую одинаковые по сути команды кодировались различным образом в зависимости от своих параметров.

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

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

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

В 1954 году в корпорации IBM группой разработчиков во главе с Джоном Бэкусом (John Backus) был создан язык программирования Fortran. Значение этого события трудно переоценить. Это первый язык программирования высокого уровня. Впервые программист мог по -настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от ассемблера, была концепция подпрограмм.

Напомним, что это современные компьютеры поддерживают подпрограммы на аппаратном уровне, предоставляя соответствующие команды и структуры данных ( стек ) прямо на уровне ассемблера, а в 1954 же году это было совершенно не так. Поэтому компиляция Fortran"а была процессом отнюдь не тривиальным. Кроме того, синтаксическая структура языка была достаточно сложна для машинной обработки, в первую очередь , из-за того, что пробелы как синтаксические единицы вообще не использовались. Это порождало массу возможностей для скрытых ошибок.

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

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

Вторым в истории высокоуровневым языком программирования стал Lisp . Он использовался и по сей день используется в основном для разрешения сложных задач. Датой рождения Лиспа был 1958 год, известность к нему пришла чуть позже. В 1960 в журнале Communications of the ACM вышла статья Джона Маккарти (автора Лиспа) с подробным описанием нового языка. Он стал отцом не только Лиспа, но и основоположником всего функционального программирования. Язык Lisp – язык для обработки списков. Получил достаточно широкое распространение в системах искусственного интеллекта. Имеет несколько потомков: Planner (1967), Scheme (1975), Common Lisp (1984). Многие его черты были унаследованы современными языками функционального программирования.

В 1960 году в США был создан язык программирования Cobol. Он был рассчитан специально для создания коммерческих приложений. На Коболе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных, что характерно именно для коммерческих приложений. Популярность Кобола столь высока, что даже сейчас, при всех его недостатках ( по структуре и замыслу Кобол во многом напоминает Фортран), появляются новые его диалекты и реализации. Так, недавно появилась реализация Кобола, совместимая с Microsoft . NET , что потребовало, вероятно, внесения в язык некоторых черт объектно-ориентированного языка.

В 1960 году командой во главе с Петером Науром (Peter Naur) был создан язык программирования Algol . Этот язык дал начало целому семейству алголоподобных языков (важнейший представитель – Pascal ). В 1968 году появилась новая версия языка – Algol 68. Она не нашла столь широкого практического применения, как первая версия, но была весьма популярна в кругах теоретиков. Язык был достаточно интересен, так как обладал многими уникальными на тот момент характеристиками.

К середине 60-х годов прошлого века в США резко возросла потребность в обучении программированию не только специалистов в области вычислительной техники, но и широкого круга пользователей. Это было связано с резким увеличением количества компьютеров в бизнесе. Два профессора Дартмутского колледжа – Томас Курт и Джон Кемени – для обучения студентов программированию создали язык Бейсик ( BASIC ). Свое название язык получил по первым буквам английских слов " Beginner "s All-purpose Symbolic Instruction Code" – универсальный код символических инструкций для начинающих.

Есть и другой перевод – базовый, основной, что хорошо соответствовало сложившемуся положению дел в программировании для бизнеса. Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего, как язык для домашних микрокомпьютеров. Впоследствии большая часть критики этого языка строилась на том, что после Basic "а нормально программировать человек не может, и исправить это уже не удастся. Как бы то ни было, в 1963 г. язык был создан и получил имя Dartmouth BASIC .

Настоящую популярность этот язык получил в 1975 году. Тогда Microsoft (в то время только два человека – Билл Гейтс и Пол Аллен) написали интерпретатор бейсика для компьютеров Altair 8800, названный Altair BASIC . Язык стремительно разветвился на множество диалектов. Например, Apple II базировался на одной из его версий, а для операционной системы CP/M был написан BASIC -80. Заметим, что второе (или даже третье) дыхание развитию Basic дал опять же Microsoft. Произошло это в начале 90-х годов прошлого столетия, когда был выпущен Visual Basic , уже совсем не похожий на своего предка.

В 1964 году же корпорация IBM создала язык PL/1 , который был призван заменить Cobol и Fortran в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. В нем впервые появилась обработка исключительных ситуаций и поддержка параллелизма. Надо заметить, что синтаксическая структура языка была крайне сложной. Пробелы уже использовались как синтаксические разделители, но ключевые слова не были зарезервированы. В силу таких особенностей разработка компилятора для PL/1 была исключительно сложным делом. Язык так и не стал популярен вне мира IBM , однако широко использовался в бывшем Советском Союзе и странах социалистического содружества. Причина этого заключается в производстве этими странами ряда программно совместимых моделей компьютеров ЕС ЭВМ, которые практически были скопированы с компьютеров IBM /360.

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

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

Отрицательной чертой языка было отсутствие в нем средств для разбиения программы на модули. Вирт осознавал это и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 году появился язык Modula-3, в котором были добавлены объектно-ориентированные черты. Логическим продолжением Pascal и Modula являются язык Oberon и Oberon -2. Они характеризуются движением в сторону объектной и компонентной ориентированности. В этом плане интересно рассмотреть С-подобные языки.

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

В 1986 году Бьярн Страуструп создал первую версию языка C++, добавив в язык C объектно-ориентированные черты, взятые из Simula (см. ниже), и исправив некоторые ошибки и неудачные решения языка. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла новая (третья) версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов. У него имеются, однако же, и слабые стороны, вытекающие из требований эффективности.

В 1995 году в корпорации Sun Microsystems Кеном Арнольдом и Джеймсом Гослингом был создан язык Java . Он наследовал синтаксис C и C++ и был избавлен от некоторых неприятных черт последнего. Отличительной особенностью языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор ( Java Virtual Machine ) для реальных систем. Кроме того, в Java нет указателей и множественного наследования, что сильно повышает надежность программирования.

В 1998–2001 годах в корпорации Microsoft группой инженеров под руководством Андерса Хейлсберга в компании был создан язык C#. Он в достаточной степени схож с Java (и задумывался как альтернатива последнему), но имеет и отличительные особенности. Язык C# ориентирован, в основном, на разработку многокомпонентных интернет -приложений. Это основной язык разработки приложений для платформы Microsoft. NET . Компилятор с C# входит в стандартную установку самой. NET , поэтому программы на нем можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

В 1983 году под эгидой Министерства обороны США был создан язык Ada . Он замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе ( параллелизм , обработка исключений ). В 1995 году был принят стандарт языка Ada 95, который развивает предыдущую версию, добавляя в нее объектную ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис (значительно более громоздкий, чем Pascal ).

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

В 1957 году была предпринята попытка создания языка для описания математической обработки данных. Язык был назван APL ( Application Programming Language ). Его отличительной особенностью было использование математических символов (что затрудняло применение на текстовых терминалах; появление графических интерфейсов сняло эту проблему) и очень мощный синтаксис , который позволял производить множество нетривиальных операций прямо над сложными объектами, не прибегая к разбиению их на компоненты. Широкому применению помешало, как уже отмечалось, использование нестандартных символов как элементов синтаксиса.

В 1962 году появился язык Snobol (а в 1974 – его преемник Icon ), предназначенный для обработки строк. Синтаксис Icon напоминает С и Pascal одновременно. Отличие заключается в наличии мощных встроенных функций работы со строками и связанная с этими функциями особая семантика . Современным аналогом Icon и Snobol является Perl –язык обработки строк и текстов, в который добавлены некоторые объектно-ориентированные возможности. Считается очень практичным языком, однако ему недостает элегантности.

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

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

Язык JavaScript был создан в компании Netscape Communications в качестве языка для описания сложного поведения веб-страниц. Первоначально язык назывался LiveScript, причиной смены названия послужили маркетинговые соображения. Он интерпретируется браузером во время отображения веб-страницы, по синтаксису похож на Java и (отдаленно) на C/C++. Язык имеет возможность использовать встроенную в браузер объектную функциональность, однако подлинно объектно-ориентированным языком не является.

Другой скриптовый язык VBScript был создан в корпорации Microsoft во многом в качестве альтернативы JavaScript. Имеет подобную область применения, синтаксически похож на язык Visual Basic (является усеченной версией последнего); так же, как и JacaScript, исполняется браузером при отображении веб-страниц и имеет ту же степень объектной ориентированности.

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

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

Популярность объектно-ориентированному программированию принес язык Smalltalk, созданный в 1972 году. Язык предназначался для проектирования сложных графических интерфейсов и был первым понастоящему объектно-ориентированным языком. В нем классы и объекты – это единственные конструкции программирования. Недостатком Smalltalk являются большие требования к памяти и низкая производительность полученных программ. Причина – в не очень удачной реализацией объектно-ориентированных особенностей. Популярность языков C++ и Ada 95 связана именно с тем, что объектная ориентированность реализована без существенного снижения производительности.

Существует еще язык с очень хорошей реализацией объектной ориентированности, не являющийся надстройкой ни над каким другим языком. Это язык Eiffel (1986 г.). Являясь чистым языком объектно-ориентированного программирования, он, кроме того, повышает надежность программы путем использования "контрольных утверждений".

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

Язык Оccam был создан в 1982 году и предназначен для программирования транспьютеров – многопроцессорных систем распределенной обработки данных. Он описывает взаимодействие параллельных процессов в виде каналов – способов передачи информации от одного процесса к другому. Отметим особенность синтаксиса языка Occam – в нем последовательный и параллельный порядки выполнение операторов равноправны, и их необходимо явно указывать ключевыми словами PAR и SEQ.

В 1985 году была предложена модель параллельных вычислений Linda. Основной ее задачей является организация взаимодействия между параллельно выполняющимися процессами. Это достигается за счет использования глобальной кортежной области ( tuple space ). Процесс может поместить туда кортеж с данными (то есть совокупность нескольких, возможно, разнородных данных), а другой процесс может ожидать появления в кортежной области некоторого кортежа и, после его появления, прочитать кортеж с возможным последующим его удалением.

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

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

Из языков с энергичной семантикой упомянем ML и два его современных диалекта – Standard ML ( SML ) и CaML. Последний имеет объектно-ориентированного потомка – Objective CaML (O"CaML). Среди языков с ленивой семантикой наиболее распространены два: Haskell и его более простой диалект Clean. Интересен язык функционального программирования F#. Он является языком мультипарадигменного программирования. На нем можно писать функциональный, императивный и объектно-ориентированный код. Это позволяет быть более прагматичным, вместо того чтобы пытаться загнать любую задачу, стоящую перед разработчиком, в прокрустово ложе классов и интерфейсов. Язык F# включен в стандартный набор Visual Studio 2010, хотя присутствует и сейчас, в виде плагина для VS2008.

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

Важно отметить, что F# поддерживает почти все возможности, которые есть у C#. Поэтому его можно использовать, не опасаясь принципа "все или ничего". Не нужно выбрасывать существующий код и переводить все на F#. Вообще, предполагается, что код на F# будет главным образом применяться как библиотеки классов, интегрированные в большой программный продукт .

Программы на языках логического программирования выражены как формулы математической логики, а компилятор пытается получить следствия из них. Родоначальником большинства языков логического программирования является язык Prolog (1971). У него есть ряд потомков – Parlog (1983, ориентирован на параллельные вычисления), Delta Prolog и др.

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

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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Задание 1

Инструментальное программное обеспечение, его назначение и состав

Задание 2

Первый этап - постановка задачи

Второй этап - экономико-математическое описание задачи и выбор метода ее решения

Третий этап - алгоритмизация

Четвертый этап - программирование

Пятый этап - отладка

Список используемой литературы

Задание 1

Инструментальное программное обеспечение, его назначение и состав

Программное обеспечение

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

Программное обеспечение, можно условно разделить на три категории:

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

прикладное ПО, обеспечивающее выполнение необходимых работ на ПК: редактирование текстовых документов, создание рисунков или картинок, обработка информационных массивов и т.д.

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

Системное ПО

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

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

К системному ПО относятся:

операционные системы (эта программа загружается в ОЗУ при включении компьютера) метод использование прикладной программа

программы - оболочки (обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS, например, Norton Commander)

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

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

утилиты (вспомогательные или служебные программы, которые представляют пользователю ряд дополнительных услуг)
К утилитам относятся:

диспетчеры файлов или файловые менеджеры

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

средства просмотра и воспроизведения

средства диагностики; средства контроля позволяют проверить конфигурацию компьютера и проверить работоспособность устройств компьютера, прежде всего жестких дисков

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

средства обеспечения компьютерной безопасности (резервное копирование, антивирусное ПО).

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

Прикладное ПО

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

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

К прикладному ПО, например, относятся:

Комплект офисных приложений MS OFFICE

Бухгалтерские системы

Финансовые аналитические системы

Интегрированные пакеты делопроизводства

CAD - системы (системы автоматизированного проектирования)

Редакторы HTML или Web - редакторы

Браузеры - средства просмотра Web - страниц

Графические редакторы

Инструментальное ПО

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

В самом общем случае для создания программы на выбранном языке программирования (языке системного программирования) нужно иметь следующие компоненты:

1. Текстовый редактор для создания файла с исходным текстом программы.

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

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

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

Наиболее популярные редакторы (системы программирования программ с использованием визуальных средств) визуального проектирования:

Borland Delphi - предназначен для решения практически любых задачи прикладного программирования

Borland C++ Builder - это отличное средство для разработки DOS и Windows приложений

Microsoft Visual Basic - это популярный инструмент для создания Windows-программ

Microsoft Visual C++ - это средство позволяет разрабатывать любые приложения, выполняющиеся в среде ОС типа Microsoft Windows.

Задание 2

Сформируйте и заполните накопительную ведомость начисления оплаты номеров гостиницы "Старт" за март 2004 года. Номера в гостинице 1-местные стоят для каждого клиента 750 руб. в день, 2-местные - 650 руб. с каждого клиента. Номер можно забронировать. Бронь в гостинице может быть двух видов: групповая и индивидуальная и оплачивается отдельно. При бронировании на группу оплата за первый день проживания увеличивается на 25% от стоимости номера, в тех случаях, когда брони нет или она индивидуальная, доплаты нет.

Тип брони и количество дней проживания в каждом номере представлены в таблице.

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

Ведомость начисления оплаты номеров гостиницы "Старт" за март 2004 г.

Номер комнаты

Тип занимаемого номера

Тип брони

Оплата за бронь (руб.)

Кол-во дней проживания

1-местный

1-местный

1-местный

2-местный

2-местный

2-местный

2-местный

Итого:

Постройте диаграммы:

· Круговую диаграмму по графе "Количество дней проживания".

· Гистограмму по графе "Оплата за дни проживания".

Ведомость начисления оплаты номеров гостиницы "Старт" за март 2004 г.

Необходимо сформировать и заполнить ведомость начисления оплаты номеров гостиницы "Старт" за март 2004 года.

Рассмотрим этапы подготовки решения задачи на ПК.

Первый этап - постановка задачи

Целью решения данной задачи является расчет оплаты за бронь и дни проживания постояльцев гостиницы "Старт" за март 2004 года.

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

Второй этап - экономико-математическое описание задачи и выбор метода ее решения

Рассматриваемая задача решается методом прямого счета.

Обозначим исходные данные:

ОБ - оплата за бронь;

ТБ - тип брони;

СНЧД - стоимость номера с человека в день;

КДП - количество дней проживания;

ОДП - оплата за дни проживания;

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

ОБ = 0,25*СНЧД,

если ТБ = «группа», иначе 0.

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

ОДП = ОБ + СНЧД*КДП.

Для решения этой задачи воспользуемся Microsoft Excel.

Третий этап - алгоритмизация

Запустим программу Excel. Работу будем выполнять на Листе 1.

В диапазон ячеек A1:G1 введем название граф. Для придания эстетичного вида шапке таблицы названия граф расположим в центре ячейки по вертикали и по горизонтали с переносом слов. Для этого выделим диапазон ячеек A1:G1, вызовем контекстно-зависимое меню (на выделенной области щелкнем правой кнопкой мыши), в меню выберем команду Формат ячеек. В появившемся диалоговом окне выберем закладку Выравнивание, установим опции: По горизонтали - по центру; По вертикали - по центру; переносить по словам и нажмем ОК.

В столбцы A, B, C, D и F введем данные, указанные в задании. Далее произведем необходимые расчеты с использованием формул. Ниже представлена расчетная таблица в формульном и числовом виде.

Таблица в формульном виде.

Номер комнаты

Тип занимаемого номера

Стоимость номера с человека в день (руб.)

Тип брони

Оплата за бронь (руб.)

Кол-во дней проживания

Оплата за дни проживания (руб.)

1-местный

ЕСЛИ(D2="группа";0,25*C2;0)

1-местный

ЕСЛИ(D3="группа";0,25*C3;0)

1-местный

ЕСЛИ(D4="группа";0,25*C4;0)

2-местный

ЕСЛИ(D5="группа";0,25*C5;0)

2-местный

ЕСЛИ(D6="группа";0,25*C6;0)

2-местный

ЕСЛИ(D7="группа";0,25*C7;0)

2-местный

ЕСЛИ(D8="группа";0,25*C8;0)

Итого:

=СУММ(E2:E8)

=СУММ(F2:F8)

=СУММ(G2:G8)

В итоге получим следующие результаты.

Номер комнаты

Тип занимаемого номера

Стоимость номера с человека в день (руб.)

Тип брони

Оплата за бронь (руб.)

Кол-во дней проживания

Оплата за дни проживания (руб.)

1-местный

1-местный

1-местный

2-местный

2-местный

2-местный

2-местный

Итого:

537,50р.

18 737,50р.

Определим среднее количество дней проживания, величину максимальной и минимальной оплаты за дни проживания. Для этого воспользуемся статистическими функциями СРЗНАЧ(), МАКС() и МИН() соответственно. Ниже представлена таблица с дополнительными расчетами в формульном и числовом виде.

Таблица с дополнительными расчетами в формульном виде представлена ниже.

Ниже представлены круговая диаграмму по графе «Кол-во дней проживания» и гистограмма по графе «Оплата за дни проживания».

Четвертый этап - программирование

Для решения этой задачи программирование не требуется.

Пятый этап - отладка

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

Рассчитаем контрольные значения для комнаты 31.

ОБ = 0,25*750 = 187,5, так как ТБ = «группа».

ОДП = 187,5 + 750*4 = 3187,5.

Рассчитаем контрольные значения для комнаты 35.

ОБ = 0, так как ТБ не равно «группа».

ОДП = 650*1 = 650.

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

Список используемой литературы

1. Илюшечкин В., Костин А. Системное программное обеспечение - М.: Высшая школа, 2008. 127 с.

2. Руденко В.Д. Курс информатики. - К.: Феникс, 2008. - 368 с.

3. Степанов А. Информатика: Учебник для вузов. 3-е издание. 2003. - 768 с.

Размещено на Allbest.ru

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

    Системное, прикладное и инструментальное программное обеспечение. Наиболее распространённые пакеты прикладных программ. Назначение и структура системных программ. Заполнение таблицы и работа с итогами в Excel, фильтрация данных и построение диаграммы.

    контрольная работа , добавлен 29.01.2014

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

    реферат , добавлен 01.04.2010

    Определение понятия и сущности программного обеспечения. Рассмотрение основ интерпретируемых и компилируемых программ. Особенности несвободных, открытых, свободных, системных, прикладных и инструментальных программ; основные принципы их применения.

    реферат , добавлен 06.11.2014

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

    контрольная работа , добавлен 18.01.2011

    Развитие интегрированных пакетов прикладных программ, механизмы, такие, как OLE и OpenDoc, обеспечивающие их совместную работу. Анализ наиболее известных комплексов, состоящих из прикладных программ, работающих как самостоятельно, так и интегрированно.

    реферат , добавлен 03.03.2012

    Совокупность программ, используемых в работе на компьютере. Функциональное назначение программного обеспечения, правовые нормы его использования. Операционная система и сервисные программы. Разработка компьютерных программ на языке программирования.

    презентация , добавлен 10.10.2016

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

    курсовая работа , добавлен 29.06.2010

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

    презентация , добавлен 23.12.2010

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

    шпаргалка , добавлен 19.01.2014

    Классификация программного обеспечения, его особенности, назначение. Программное обеспечение для работы с текстом, изображением, прикладное, офисное, для работы в Интернете. Системы программирования, специфика программного обеспечения, что такое вирусы.

МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВПО «Воронежский государственный аграрный университет имени императора Петра I»

Кафедра информационного обеспечения

И моделирования агроэкономических систем

Контрольная работа

По дисциплине

«Экономическая информатика»

Выполнил: студент ЭПс-1

заочного отделения

Мамычев Д.А.

Шифр УЭэко-15126

Проверил:_________________

Воронеж 2016

1. Инструментальные программные средства. Трансляторы и их типы. Системы программирования.

2. Пакеты обработки графической информации.

3. Глобальная компьютерная сеть internet: основные понятия.

4. Список литературы.

Инструментальные программные средства. Трансляторы и их типы. Системы программирования.

Инструментальные программные средства – программы позволяющие модифицировать мультимедийные файлы и создавать мультимедийные приложения.

Инструментальные программные средства – это пакеты программ для создания мультимедийных приложений:

− редакторы неподвижных графических изображений,

− средства создания анимированных GIF-файлов,

− средства аудио- и видеомонтажа,

− средства создания презентаций,



− средства распознавания текстов, введенных со сканера,

− средства создания обучающих программ,

− системы создания приложений виртуальной реальности и другие.

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

Трансляторы и их типы.

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

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

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

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

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

Интерпретатор - программа или устройство, осуществляющее пооператорную трансляцию и выполнение исходной программы. В отличие от компилятора, интерпретатор не порождает на выходе программу на машинном языке. Распознав команду исходного языка, он тут же выполняет ее. Как в компиляторах, так и в интерпретаторах используются одинаковые методы анализа исходного текста программы. Но интерпретатор позволяет начать обработку данных после написания даже одной команды. Это делает процесс разработки и отладки программ более гибким. Кроме того, отсутствие выходного машинного кода позволяет не "захламлять" внешние устройства дополнительными файлами, а сам интерпретатор можно достаточно легко адаптировать к любым машинным архитектурам, разработав его только один раз на широко распространенном языке программирования. Поэтому, интерпретируемые языки, типа Java Script, VB Script, получили широкое распространение. Недостатком интерпретаторов является низкая скорость выполнения программ. Обычно интерпретируемые программы выполняются в 50-100 раз медленнее программ, написанных в машинных кодах.

Любой транслятор выполняет следующие основные задачи:

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

Генерирует выходную программу (ее часто называют объектной) на языке машинных команд;

Распределяет память для объектной программы.

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

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

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

Трансляторы с языков высокого уровня;

Средства редактирования, компоновки и загрузки программ;

Макроассемблеры (машинно-ориентированные языки);

Отладчики машинных программ.

Системы программирования, как правило, включают в себя:

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

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

Запускатель программ (Run), осуществляющий процесс выполнения программы;

Компилятор (Compile), предназначенный для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и семантических (логических) ошибок;

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

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

2.Пакеты обработки графической информации.

Программные средства создания и обработки графической информации подразделяются на:

Графические редакторы, предназначенные преимущественно для создания и обработки плоскостных изображений;

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

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

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

Все компьютерные изображения разделяют на два типа: растровые и векторные.

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

Можно создать растровое графическое изображение и непосредственно на компьютере с использованием графического редактора, загрузить с CD-ROM или DVD-ROM дисков, или «скачать» из Интернета.

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

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

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

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

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

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

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

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

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

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

Векторные графические редакторы (Adobe Fireworks, ConceptDraw PRO, CorelDRAW)

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

3.Глобальная компьютерная сеть internet: основные понятия.

Интернет (от англ. inter - «между» и net - «сеть, паутина») представляет собой совокупность компьютерных сетей, связывающих военные, правительственные, образовательные, коммерческие институты, а также отдельных граждан.

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

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

Браузер представляет собой клиентскую программу для работы в Интернете, которая обращается к серверу, читает документ, сверстанный средствами HTML, интерпретирует полученную информацию и отображает содержание документа. Наиболее известными в России браузерами являются Internet Explorer, Opera, Google Chrome, Mozilla Firefox и др.

Web-сайт (от англ. site - «участок») - это набор web-страниц, связанных между собой ссылками и хранящихся на одном сервере. Набор Web-сайтов, которые связаны между собой ссылками и хранятся на разных серверах, называется Web-порталом.

Функционирование технологии сети Интернет напрямую зависит от протокола - набора правил, оговаривающих все, что связано с работой в сети. Технология передачи данных в Интернете базируется на протоколе TCP/IP (IP (Internet Protocol) - «протокол Интернета», TCP (Transmission Control Protocol) - «протокол управления передачей») - общепринятом стандарте, описывающем правила отправки и приема информации между несколькими подключенными к сети компьютерами.

TCP/IP для каждого работающего в Интернете компьютера определяет собственный IP-адрес, состоящий из четырех числовых последовательностей, разделенных точкой (например 195.85.105.160). В любой позиции каждое значение может изменяться от 0 до 255. Для удобства пользователей в Интернете разработана система доменных имен - DNS (Domain Name System). Служба доменных имен осуществляет преобразование доменного имени в числовой IP- адрес. Компьютеры, выполняющие такое преобразование, называются DNS- серверами.

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

Com, .biz - коммерческие предприятия;

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

Edu - образовательные учреждения;

Org - некоммерческие и общественные организации;

Gov - правительственные учреждения;

Mil - военные учреждения;

Int - международные организации, которые созданы на основании договоров или являются частью инфраструктуры Интернет;

Name - частные лица;

Info - не лимитируется;

Ru, .ua и др. - сокращения для стран, принятые комитетом по стандартам ISO.

Ступенью ниже в иерархии DNS стоят домены второго уровня, которые непосредственно зависят от домена первого уровня. Домены второго уровня принадлежат муниципальными или коммерческим организациям (например, spb.ru, ifmo.ru).

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

Существуют также домены третьего уровня, входящие в состав вышестоящего домена, (например, условный домен name.spb.ru). Также можно встретить домены четвертого, пятого и т.д. уровней.

URL (Uniform Resource Locator) представляет собой универсальное обозначение местонахождения ресурса (например, www.ifmo.ru).

Таким образом, в Интернете используются несколько разновидностей адресов:

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

2) доменный адрес. Перевод доменного адреса в IP-адрес происходит автоматически с помощью DNS системы.

3) URL-адрес - универсальный адрес, который применяется для обозначения имени каждого объекта хранения в Интернете.

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

Электронные доски объявлений (BBS - Bulletin Board System) создают специализированные сетевые службы, деятельность которых посвящена определенной теме. BBS обычно содержит файлы с информацией, представляющей интерес для определенных групп пользователей, а также средства, позволяющие пользователям доски объявлений обмениваться информацией по интересующим их вопросам. Через BBS осуществляется техническое обслуживание: пользователи посылают вопросы, а персонал отвечает на них.

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

Электронная почта (от англ. E-mail, email, сокр. от electronic mail) - способ передачи информации в компьютерных сетях, широко использующийся в Интернете. Основная особенность электронной почты заключается в том, что информация отправляется получателю не напрямую, а через промежуточное звено - электронный почтовый ящик, который представляет собой место на сервере, где сообщение хранится, пока его не запросит получатель. В большинстве случаев для доступа к почтовому ящику требуется наличие пароля. Доступ к почтовому серверу может предоставляться как через специальные почтовые программы (Microsoft Outlook, The Bat и др.), так и через web-интерфейс.

ICQ (акроним от англ. I seek you - «я ищу тебя») - служба, которая позволяет пользователям сети обмениваться сообщениями в реальном масштабе времени, а также организовывать чат, передавать файлы и др. Программа работает по протоколу OSCAR, который обеспечивает обмен мгновенными и оффлайновыми текстовыми сообщениями. В настоящее время служба принадлежит инвестиционному фонду Mail.ru Group (российская инвестиционная группа, специализирующаяся на инвестициях в интернет-проекты).

IRC (от англ. Internet Relay Chat - «ретранслируемый интернет-чат») - служба, в которой обмен сообщениями ведется без задержек.

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

Skype - бесплатное проприетарное программное обеспечение с закрытым кодом, обеспечивающее шифрованную голосовую связь через Интернет между компьютерами, а также платные услуги для связи с абонентами обычной телефонной сети. Создателями Skype являются Никлас Зеннстрём (Niklas Zennstrom) и Янус Фриис (Janus Friis). Первый релиз программы и сайт появились в сентябре 2003 года.

Таблица 1. Расчет прибыли фирмы

№ п/п Показатели Год Итого за год
1 кв. 2 кв. 3 кв. 4 кв.
Торговые доходы
Торговые расходы
Валовая прибыль
Расходы на зарплату
Расходы на рекламу
Накладные расходы
Общие затраты
Производственная прибыль
Удельная валовая прибыль 0,099010177 0,118613565 0,074808144 0,121404967 0,4138369

Таблица 2. Структура затрат фирмы

Диаграмма 1. Структура затрат фирмы

Список используемой литературы:

1. Интернет ресурс http://eclib.net/

2. Интернет ресурс https://ru.wikipedia.org/

3. Интернет ресурс http://studopedia.ru/