Меню
Бесплатно
Главная  /  Осваиваем ПК  /  Сравнительная характеристика современных языков программирования. Сравнительный анализ языков программирования высокого уровня си и паскаль. Что представляет собой алгоритм

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

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

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

Следует отличать язык программирования (Basic, Pascal) от его реализации, которая обычно представлена в составе среды программирования (Quick Basic, Virtual Pascal) − набора средств для редактирования исходных текстов, генерации исполняемого кода, отладки, управления проектами и т.д. Синтаксис и семантика языка программирования фиксируется в стандарте языка. Каждая среда программирования предоставляет свой интерпретатор или компилятор с этого языка, который зачастую допускает использование конструкций, не фиксированных в стандарте.

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

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

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

а) характера самой задачи и технических требований;

б) наработанного инструментария и имеющихся для данной среды библиотек;

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

Зачастую при подобном выборе поступают строго наоборот: сначала решают, что программировать будут на объектах, затем − что использоваться будет конкретная библиотека, а потом подгоняют под это технические требования, объясняя все это тем, что заказчик «не знает чего хочет».

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

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

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

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

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

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

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

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

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

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

Рассмотрим популярные языки и программные среды с точки зрения приспособленности под различные классы задач.

Рожденный в 60 −е годы в Америке, Бейсик был задуман как простой язык для быстрого освоения. Бейсик стал фактическим стандартом для МикроЭВМ именно благодаря своей простоте как в освоении так и в реализации. Однако для достижения этого качества был принят ряд решений (отсутствие типизации, нумерация строк и неструктурное GOTO, и др.), негативно сказывающихся на стиле изучающих программирование. Кроме того, недостаток выразительных средств привел к появлению огромного количества диалектов языка, не совместимых между собой. Современные, специализированные версии Бейсика (такие как Visual Basic) несмотря на приобретенную "структурность" обладают все теми же недостатками, прежде всего − небрежностью по отношению к типам и описаниям. Пригоден для использования на начальном этапе обучения, как средство автоматизации (в случаях когда он встроен в соответствующие системы) либо как средство для быстрого создания приложений.

Разработанный известным теоретиком Н.Виртом на основе идей Алгола −68, Паскаль предназначался прежде всего для обучения программированию. Построенный по принципу "необходимо и достаточно", он располагает строгим контролем типов, конструкциями для описания произвольных структур данных, небольшим, но достаточным набором операторов структурного программирования. К сожалению, обратной стороной простоты и строгости является громоздкость описаний конструкций языка. Наиболее известная реализация − Turbo/Borland Pascal − несмотря на отличия от стандарта Паскаля, представляет из себя среду и набор библиотек, сделавшие из учебного языка промышленную систему для разработки программ в среде MS −DOS.

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

После продолжительной борьбы на фронте программных сред для Windows, Borland ушла на рынок корпоративных систем. Delphi − это не продолжатель дела Borland Pascal / Borland C, его ниша − т.н. быстрое создание приложений (Rapid Application Developing, RAD). Подобные средства позволяют в кратчайшие сроки создать рабочую программу из готовых компонентов, не растрачивая массу усилий на мелочи. Особое место в таких системах занимают возможности работы с базами данных.

Как яркий пример специализации, язык Java появился в ответ на потребность в идеально переносимом языке, программы на котором эффективно исполняются на стороне клиента WWW. В ввиду специфики окружения, Java может быть хорошим выбором для системы, построенной на Internet/Intranet технологии.

В основе языка C − требования системного программиста: полный и эффективный доступ ко всем ресурсам компьютера, средства программирования высокого уровня, переносимость программ между различными платформами и операционными системами. С++, сохраняя совместимость с C, вносит возможности объектно−ориентированного программирования, выражая идею класса (объекта) как определяемого пользователем типа. Благодаря перечисленным качествам, C/C++ занял позицию универсального языка для любых задач. Но его применение может стать неэффективным там, где требуется получить готовый к употреблению результат в кратчайшие сроки, либо там, где невыгодным становится сам процедурный подход.

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

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

  1. Джаррод Холингворт, Боб Сворт, Марк Кэшмэн, Поль Густавсон Borland C++ Builder 6. Руководство разработчика = Borland C++ Builder 6 Developer’s Guide. — М.: «Вильямс», 2004. — С. 976.
  2. Вик Курилович Visual Basic. − Издательство «Солон-Пресс», 2006 г., −С. 384.
  3. Андреева Т. А. Программирование на языке Pascal. − Издательство: Интернет-университет информационных технологий, Бином. Лаборатория знаний, 2006 г. − С. 240.
  4. Пильщиков В. Н. Assembler. Программирование на языке ассемблера IBM. − PCИздательство: Диалог-МИФИ, 2005 г. − С. 288.
  5. Желонкин А. Основы программирования в интегрированной среде DELPHI. − Издательство: Бином. Лаборатория знаний, 2004 г. − С. 240.
  6. Джошуа Блох Java. Эффективное программирование Effective Java. Programming Language Guide − Серия: Java Издательство: Лори, 2002 г. − С. 224.
  7. Лафоре Р. Объектно-ориентированное программирование в С++ Object-Oriented Programming in C++ − Издательство: Питер, 2011 г.

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

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

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

Если язык близок к естественному языку программирования, то он называется языком высокого уровня, если ближе к машинным командам, – языком низкого уровня.

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Паскаль, 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;

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

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

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

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

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

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

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

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

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

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

Программное обеспечение
системное ПО прикладное ПО
Операционные системы Утилиты Системы программирования Общего назначения Специализированные программы Профессиональные программы
загружается в оперативную память и организует выполнение других программ, осуществляет взаимодействие пользователя с компьютером системная программа – оптимизирует дисковую память, защищает от вирусов и т. д. предназначены для создания новых программ текстовые табличные, графические, музыкальные, управления БД экспертные системы, гипертекстовые, мультимедийные АИСУ – автоматизационная информационная система управления, САПР – система автоматизированного проектирования, Обучающие системы, Геоинформационные поисковые
Windows, UNIX, Linux, Колибри и т. д BASIC, Pascal, Delphi, блокнот, Word, Excel, Paint, Sound Forge, Access «1С- предприятие», «Компас» - для черчения,

С появлением машин второго поколения возникла потребность создания языков, целиком ориентированных на особенности задач и не зависящих от конкретной машины. Символом второго поколения ЭВМ стали проблемно-ориентированные языки программирования. Их развитие все в большей степени определялось спецификой задач, а не особенностями машин. Эти языки назвали алгоритмическими языками . Одним из первых и наиболее удачных языков такого рода стал Фортран (For mulae Tran slation), разработанный фирмой IBM в 1954 г. Язык Фортран не только просуществовал до наших дней, но и достаточно распространен. Среди причин такого долголетия можно отметить простую структуру как самого Фортрана, так и предназначенных для него трансляторов. Фортран был заложен в основу диалогового языка Бейсик (B eginner"s A ll-purpose S ymbolic I nstruction C ode) - широко распространенного ныне в различных модификациях языка. Вскоре после создания Фортрана (1957 г.) появился язык Алгол (Algo rithmic L anguage), созданный на основе широкого международного сотрудничества. В 1960 г. было опубликовано официальное сообщение об алгоритмическом языке, названном Алгол-60. Алгол создавался после разработки и практического применения Фортрана, поэтому характеризуется как введением новых конструкций, так и обобщением понятий, имеющихся в Фортране. Несмотря на то, что и Фортран, и Алгол заслуживали название универсальных языков, ни один них, конечно, не позволял описать все без исключения возникающие задачи. Поэтому примерно в то же время появились алгоритмические языки с проблемной ориентацией (Кобол, Снобол и др.), отвечающие нуждам специфичных направлений науки и техники. Из языков для обработки символьной информации (преобразование формул, аналитическое решение уравнений, анализ и синтез текстов и т.д.) очень популярным является язык Лисп (Li st P rocessing), созданный в 1960 г. в Массачусетском технологическом институте. В этом языке вся находящаяся в обработке информация, в том числе и сама программа, организуется в так называемые списки - последовательности элементов. Третье поколение ЭВМ поставило на повестку дня выработку нового подхода к созданию действительно универсального языка. Одной из попыток такого рода являлось создание фирмой IBM алгоритмического языка PL/1 (P rogramming L anguage/1 - язык программирования один). Он основывался на языках Фортран и Кобол, ряд изобразительных средств и понятий был почерпнут из Алгола и других языков. В 1971 г. Никлаусом Виртом был предложен алгоритмический язык Паскаль (Pascal). Язык Паскаль является преемником Алгола-60, он имеет конструкции, аналогичные существующим в PL/1 и Алголе-68, однако Паскаль более лаконичен. Язык Паскаль способствовал внедрению современной технологии программирования, основанной на постепенном построении программы, состоящей из небольших четко определенных процедур, т. е. последовательно проводятся в жизнь идеи структурного программирования. Другой существенной особенностью Паскаля является концепция структуры данных как одного из фундаментальных понятий, лежащих, наряду с понятием алгоритма, в основе программирования. На основе языка Паскаль в конце 70-х годов был создан язык Ада, имеющий очень широкую сферу применения, хотя и созданный как официальный язык программирования американских военных. Язык назван так по имени первой женщины-программиста Ады Лавлейс. Это существенно структурированный язык, особенно он подходит для разработки систем реального времени. Однако язык Ада слишком громоздкий, многословный и не предоставляет программисту достаточной свободы. По синтаксической сложности он до сих пор не превзойден ни одним из языков. В отличие от перечисленных языков высокого уровня, предложенный Денисом Ритчи в начале 80-х годов язык программирования Си (название содержит одну латинскую букву С) задумывался языком сравнительно низкого уровня. Но это не значит, что этот язык недостаточно мощный. Алгоритмический язык C достаточно полно отражает возможности современных компьютеров, позволяя писать весьма эффективные программы, не прибегая к языкам ассемблера, главным образом за счет простых, последовательных конструкций потоков управления. Язык приобрел популярность благодаря остроумным решениям, сделавшим запись программы на C весьма компактной. Не накладывая на программиста особых ограничений, он дает возможность для разнообразных трюков, чем тоже многим импонирует. Язык Паскаль в оригинальной авторской версии не содержал средств раздельной компиляции - модулей, разнообразных числовых типов, строк переменной длины и многого из того, что добавлено в известные реализации. Вследствие этого Никлаус Вирт предложил язык Модула-2 , который должен был заменить Паскаль, устранив основное его ограничение - отсутствие модульности. Известно, что Модула-2 использовалась и используется в проектах, где важнейшую роль играет надежность. Средства межмодульного контроля Модулы-2 заметно совершеннее аналогичных возможностей Паскаля и C. Компилятор Турбо-Паскаль , разработанный Андерсом Хейльсбергом, был выпущен в продажу фирмой Borland в 1983 г. Эта версия уже содержала расширения языка, хотя и небольшие. В последующих выпусках расширений становилось все больше: встроенная графика, модули, средства объектно-ориентированного программирования (ООП) и т.д. Начиная с версии 7.0, язык стал называться Borland-Паскаль . В качестве мощной объектно-ориентированной версии Паскаля сейчас популярен Объектный Паскаль . Объектный Паскаль по сравнению со стандартным Паскалем содержит очень много синтаксических расширений. В результате из простого и изящного Паскаля получился язык, приближающийся по сложности к языку Ада. Объектно-ориентированный язык C++ предложил Бьярн Страуструп с первоначальным названием «Си с классами». Название отражает тот факт, что C++ является надмножеством языка C. Язык C++, по ряду оценок, сложнее C вдвое. В настоящее время это, без преувеличения, язык номер один в мире для профессиональных программистов, поскольку он перенял преимущества и популярность C и добавил мощные средства написания объектно-ориентированных программ. Его реализации поддерживаются на всех аппаратно-программных платформах, в отличие от Паскаля, который широко распространен лишь на платформе IBM PC. Язык Оберон был разработан Н. Виртом в 1987 г. Он представляет собой существенно упрощенный синтаксически вариант Модулы-2, в который добавлены расширяемые записи - основной механизм ООП. Язык необычайно прост, но при этом сохраняет универсальность и в функциональном отношении не уступает другим языкам. В 1992 г. Н. Виртом были приняты расширения Оберона, предложенные Ханспетером Мёссенбёком. В язык введены аналоги виртуальных методов в других языках. Новая версия получила название Оберон-2 . Удивительно, но Оберон-2 оказался проще Оберона, расширением которого является. Самый молодой и самый обсуждаемый ныне объектно-ориентированный язык Java (в английском произношении - Джава , русское еще не устоялось) предложен Джеймсом Гослингом (фирма Sun Microsystems). Основная особенность Java - межплат­форменная переносимость приложений, благодаря чему язык широко используется для написания приложений для Internet. Java - очень сложный синтаксически язык. Его официальное описание - 700-страничный документ - насыщен многословными и громоздкими определениями. Несмотря на эту сложность, в Java есть всего две существенные вещи, которых нет, например, в Обероне: встроенная многопоточность и обработка исключений. В целом, к настоящему моменту известно от 2-х до 3-х тысяч языков программирования, из них около 100 объектных и объектно-ориен­ти­ро­ван­ных. Критерии выбора языка программирования: Выбор языка должен производиться на основе требований к разрабатываемому продукту с учетом следующих факторов: мощность языка (возможности языка); переносимость языка; сложность языка; уровень существующей инструментальной поддержки языка. Сложность языка не всегда напрямую связана с его мощностью. Линия языков Вирта (Паскаль - Модула - Оберон) характеризуется снижением сложности при росте мощности. Ряд исследователей полагает, что существует пять основных разновидностей стилей программирования и, соответственно, языков программирования:

В настоящее время наиболее привлекательные для программистов языки базируются на так называемой объектной модели , которая имеет четыре главных элемента: абстрагирование; инкапсуляция; модульность; иерархия. Абстрагирование - выделения абстракций (abstraction), под которыми понимаются существенные характеристики объекта, которые отличают его от всех других объектов и четко определяют его концептуальные границы для наблюдателя. Инкапсуляция (encapsulation) - разделение элементов абстракции, которые образуют ее структуру и поведение. Модульность (modularity) - разделение системы на модули (module), под которыми понимаются единицы кода, служащие блоками физической структуры системы. Иерархия (hierarchy) - подчинение или упорядочение абстракций. Две типичных иерархии в сложной системе - иерархия наследования «общее/частное», присущая, обычно, типам (классам) и иерархия агрегирования «целое/часть», присущая, обычно, элементам (объектам). Иерархия присуща также модулям и другим частям системы. Наиболее явно эти черты присутствую в языках, реализующих концепции объектно-ориентированного программирования . Под последним понимается методология реализации, при которой программа организуется как совокупность сотрудничающих объектов, каждый из которых является экземпляром какого-либо класса, а классы образуют иерархию наследования. При этом классы обычно статичны, а объекты очень динамичны, что поощряется динамическим связыванием и полиморфизмом. Для ООП характерны понятия наследования и полиморфизма. Наследование (inheritance) - отношение между классами, при котором класс использует структуру или поведение другого (одиночное наследование) или других (множественное наследование). Наследование вводит иерархию «общее/частное». Полиморфизм (polymorphism) - положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект (метод), обозначаемым полиморфным именем, может по-своему реагировать на некий общий набор операций (аргументов).

Fortran (Фортран). Это первый компилируемый язык, созданный в 50-е годы. В Фортране впервые был реализован ряд важнейших понятий программирования. Удобство создания программ было положено в основу возможностей языка. Фортран продолжает активно использоваться во многих организациях.

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

Algol (Алгол). Компилируемый язык, созданный в 1960г. В 1968г. была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования.

Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов. Дальнейшим развитием этого языка явилась более эффективная версия – Object Pascal, который лег в основу современного объектно-ориентированного языка программирования Delphi.

Basic (Бейсик). Этот язык по популярности занимает первое место в мире. Для этого языка имеются и компиляторы, и интерпретаторы. Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении. Дальнейшим развитием этого языка явился язык объектно-ориентированного программирования (ООП) VISUAL BASIC FOR APPLICATION

С (Си). Данный язык был создан в лаборатории Bell (США). Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. Язык Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).

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

Java (Ява). Этот язык был создан компанией Sun (США) в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Главная особенность этого языка - компиляция не в машинный код, а в платформенно-независимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора - виртуальной Java-машины JVM (Java Virtual Machine), версии которой созданы сегодня для любых платформ. Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику; созданию платформенно - независимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами.

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

Области применения современных ЭВМ настолько обширны и разнообразны, что существует большое число специализированных языков в различных областях науки и техники. Например, язык программирования баз данных SQL, язык разметки гипертекста HTML, язык программирования задач компьютерного инженерного анализа APDL системы ANSYS и другие.

Языки программирования баз данных

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

Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных). Практически в каждой СУБД помимо поддержки языка SQL имеется свой уникальный язык, ориентированный на особенности этой СУБД и не переносимый на другие системы. Сегодня в мире насчитывается пять ведущих производителей СУБД: Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix и Sybase. Их продукты нацелены на поддержку одновременной работы тысяч пользователей в сети, а базы данных могут храниться в распределенном виде на нескольких серверах.

С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II, язык которой был интерпретируемым. Затем для него были созданы компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня похожие, но несовместимые версии языков семейства dBase реализованы в продуктах Visual FoxPro фирмы Microsoft и Visual dBase фирмы Inprise.

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

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

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

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

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

Языки моделирования

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

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

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

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

Вторым революционным шагом явилось появление визуального программирования, возникшего в Visual Basic и нашедшего блестящее воплощение в Delphi и С++Builder фирмы Borland. Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам, которые дают возможность за минуты или часы сделать то, на что ранее уходили месяцы работы.

Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява (Java), Дельфи (Delphi), С#. Для каждого из этих языков программирования сегодня имеется немало систем программирования, выпускаемых различными фирмами. Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:

Basic: Microsoft Visual Basic;

Pascal: Borland Delphi;

C++: Borland C++Bulider;

Java: Symantec Cafe.

Для разработки серверных и распределенных приложений можно использовать систему программирования Microsoft Visual C++, продукты фирмы Borland, практически любые средства программирования на Java.

Основные этапы технологии программирования

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

Постановка задачи

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

Разработка математической модели

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

Разработка алгоритма программы

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

Основные подходы к разработке алгоритмов и программ: структурное проектирование; информационное моделирование предметной области и связанных с ней приложений; объектно-ориентированное проектирование.

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

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

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

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

Программирование

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

Отладка программы

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

Научно-техническое сопровождение

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

Свойства алгоритмов

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

1) дискретность - алгоритм можно разделить на отдельные шаги (дей­ствия), выполнение каждого из которых возможно только после заверше­ния всех операций на предыдущем шаге;

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

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

4) направленность - если способ получения последующих величин из каких-либо исходных не приводит к результату, то должно быть указано, что следует считать результатом алгоритма;

5) массовость - начальная система величин может выбираться из
некоторого множества (т.е. один алгоритм может применяться для
решения класса задач).

Формализация представления алгоритмов

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

В любом языке можно выделить две составляющих - синтак­сис и семантику.

Синтаксис (грамматика языка) - совокупность правил, согласно кото­рым в данном языке строятся конструкции.

Семантика - смысловая сторона языка, соотносит единицы и конст­рукции языка с некоторым внешним миром, для описания которого язык используется.

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

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

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

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

Формами строчной записи алгоритмов являются:

1) пошагово-словесная форма - пронумерованная последовательность строк, содержащих описания конкретных действий на естественном языке;

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

3) псевдокод - ориентированный на исполнителя «человек» частично формализованный язык, позволяющий записывать алгоритмы в форме, близкой к англоподобным языкам программирования;

4) язык программирования - искусственный формализованный язык, предназначенный для записи алгоритма для исполнителя «компьютер», метаязыком которого является естественный язык.

Графическая форма записи или блок-схема для представления отдель­ных блоков алгоритма использует набор геометрических фигур согласно требованиям ГОСТ 19.701–90 «Схемы алгоритмов, программ, данных и систем, условные обозначения и правила выполнения Единой системы программной документации». Достоинство данной формы записи заключается в на­глядности: блок-схема позволяет охватить весь алгоритм сразу, отследить различные варианты его исполнения, позволяет сделать записи, как на ес­тественном, так и на формальном языках.

Процедурное, объектно-ориентированное и логическое программирование

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

Таблица 1.3 Различия концепций программирования

Концепция про­граммирования Представление программ и данных Исполнение программы Связь частей программы между собой
Процедурное Программа и дан­ные представляют собой не связан­ные друг с другом элементы Последовательное выполнение операторов Возможна толь­ко через совме­стно обрабаты­ваемые данные
Объектно-ориентированное Данные и методы их обработки ин­капсулированы в рамках единого объекта Последователь­ность событий и реакций объектов на эти события Отдельные час­ти программы могут наследо­вать методы и элементы дан­ных друг у друга
Логическое Данные и правила их обработки объ­единены в рамках единого логиче­ского и структур­ного образования Преобразование логического обра­зования в соответ­ствии с логиче­скими правилами Разбиение про­граммы на от­дельные незави­симые части за­труднительно

Контрольные вопросы:

1. Что включает в себя базовое программное обеспечение?

2. Какие программные средства относятся к прикладному прог-

раммному обеспечению?

3. Назовите классификационные признаки операционных систем.

4. Назовите наиболее известные операционные системы, применяемые на персональных компьютерах.

5. Что такое файловая система, для чего она предназначена?

6. Что такое файл?

7. Что такое имя, расширение и спецификация файла? Приведите примеры записи спецификации файла.

8. Назовите наиболее распространенные расширения имен файлов. Что они означают?

9. Поясните, что такое маска. Приведите примеры использования масок.

10. Что такое атрибут файла, какие атрибуты имеет файл?

11. Что такое каталог? Какая информация в нем содержится?

12. Что такое спецификация файла? Приведите примеры.


2 ОСНОВНЫЕ ПРОГРАММНЫЕ СРЕДСТВА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ