Алгоритмы

Автор работы: Пользователь скрыл имя, 01 Ноября 2011 в 18:39, реферат

Описание

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

Работа состоит из  1 файл

срс по инф.doc

— 271.00 Кб (Скачать документ)

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

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

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

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

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

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

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

       Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.

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

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

       При классификации языков выделяют следующие  типы языков:

  1. Ассемблерные языки — являются символьным представлением машинных языков конкретного компьютера.
  2. Метаязыки — языки, используемые для формального описания других языков.
  3. Императивные языки — это языки, оперирующие командами, изменяющими значение элементов данных, располагают операциями присваивания и циклами. К ним относятся все современные языки программирования.
  4. Декларативные языки — языки, оперирующие инструкциями данным и отношениями между ними. Алгоритм скрывается семантикой языка. Это аппликативные языки, языки логики и объектно-ориентированные языки. Примеры декларативных свойств - сложные множества и инструкции поиска по шаблону.
  5. Процедурные языки — позволяют определять отдельные методы вычисления какой-нибудь проблемы. Включают в себя императивные и функциональные языки.
  6. Аппликативные языки — функции применяются к значениям без побочного эффекта. Это Функциональные языки во всем своем многообразии.
  7. Функциональные языки — оперируют функциями высокого порядка. В них манипуляции совершаются напрямую функциями, а не данными. К категории функциональных языков относятся Lisp, FP, APL, Nial, Krc.
  8. Объектно-ориентированные языки — языки, в которых данные и функции, имеющие доступ к ним рассматриваютс как один модуль. Пример: Object Pascal, С++, Java, Objective Caml.
  9. Языки запросов — обеспечивают интерфейс к базам данных.
  10. Языки четвертого поколения (4GL) — высокоуровневые языки, могут использовать естественный английский язык или визуальные конструкции. Алгоритмы или структуры данных обычно выбираются компилятором.
  11. Языки логики — языки, оперирующие предикатами и их отношениями p(x, Y). Программы состоят из набора заключений Хорна, которые могут быть:
  12. фактами - p(X,Y) есть истина;
  13. правилами - p истинно, если q1, q2 и qn истинны;
  14. запросами - верны ли q1, g2 и gn? Где gi - цель.

       Известные языки логического программирования: Prolog, KLO, Mandala и Mercury.

  1. Параллельные языки могут быть многопрограммными (разделяющими один процессор) или мультипроцессорными(отдельные процессоры разделяют одну распределенную память). Параллельные языки различаются различными способами организации процессов и управления программами. Примеры: Modula, Ada, Concurrent Pascal.

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

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

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

 

        6. BASIC

       Бе́йсик (от BASIC, сокращение от англ. Beginner’s All-purpose Symbolic Instruction Code — универсальный код символических инструкций для начинающих; англ. basic — основной, базовый) — семейство высокоуровневых языков программирования.

       Был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени.

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

       В 1975 году Пол Ален, молодой программист из Бостона, в содружестве со студентом Гарвардского университета Биллом Гейтсом написали программу, реализующую для микрокомпьютера Альтаир 8800 язык Бейсик, впервые использовав его для программного обеспечения персональных компьютеров. Впоследствии Гейтс и Аллен основали собственную фирму Microsoft.[1]

       История

       Предпосылки

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

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

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

         Рождение

       Бейсик  был придуман в 1963 году преподавателями Дартмутского Колледжа Джоном Кемени и Томасом Курцем, и под их руководством был реализован командой студентов колледжа. Со временем, когда стали появляться другие диалекты, а изначальную реализацию стали называть Dartmouth BASIC.

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

       При проектировании языка использовались следующие восемь принципов. Новый  язык должен:

  1. быть простым в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступную опытным программистам
  4. быть интерактивным
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

       Язык  был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

         Взрывной рост

       Несмотря  на то, что язык уже использовался  на нескольких миникомпьютерах, его  настоящее распространение началось с его появления на микрокомпьютере Altair 8800. Многие языки программирования были слишком большими, чтобы поместиться в небольшую память, которую пользователи таких машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее — аудиокассета) и без подходящего текстового редактора такой небольшой язык как Бейсик был отличной находкой.

       В 1975 году Microsoft (тогда это были лишь двое — Билл Гейтс и Пол Аллен, при участии Монте Давидова), выпустила Altair BASIC. Затем его версии появились на другой платформе под лицензией и скоро в использовании были уже миллионы копий и вариантов; один из вариантов, Applesoft BASIC, стал стандартным языком на Apple II. Для операционной системы CP/M был создан диалект BASIC-80, надолго определивший развитие языка.

       В 1979 году Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одна из версий (ROM BASIC) была включена в ПЗУ IBM PC — компьютер мог автоматически загружаться в Бейсик. Так как IBM не придавала тогда большого значения персональным компьютерам (основным полем её деятельности были мейнфреймы), то, вопреки своим принципам, она разрешила Microsoft продавать интерпретатор отдельно. Это сделало последнюю пионером в выпуске ПО нового поколения — не привязанного к конкретной аппаратуре и поставляемого отдельно от компьютера.

Информация о работе Алгоритмы