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

С появлением машин второго поколения возникла потребность создания языков, целиком ориентированных на особенности задач и не зависящих от конкретной машины. Символом второго поколения ЭВМ стали проблемно-ориентированные языки программирования. Их развитие все в большей степени определялось спецификой задач, а не особенностями машин. Эти языки назвали алгоритмическими языками . Одним из первых и наиболее удачных языков такого рода стал Фортран (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) - положение теории типов, согласно которому имена (например, переменных) могут обозначать объекты разных (но имеющих общего родителя) классов. Следовательно, любой объект (метод), обозначаемым полиморфным именем, может по-своему реагировать на некий общий набор операций (аргументов).

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

Basic. Он был разработан в 1963 году профессорами Дартмутского колледжа Томасом Курцем и Джоном Кемени. Язык предназначался для обучения программированию и получил широкое распространение в виде различных диалектов, прежде всего как язык для домашних компьютеров. При проектировании языка использовались следующие восемь принципов: 1.Быть простым в использовании для начинающих 2.Быть языком программирования общего назначения 3.Предоставлять возможность расширения функциональности, доступную опытным программистам 4.Быть интерактивным 5.Предоставлять ясные сообщения об ошибках 6.Быстро работать на небольших программах 7.Не требовать понимания работы аппаратного обеспечения 8.Защищать пользователя от операционной системы. Язык был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Синтаксис языка напоминает Fortran, и многие элементы - явные заимствования из него. Язык задумывался для обучения, поэтому его конструкции максимально просты. Как и в других языках программирования, ключевые слова взяты из английского языка. Основных типов данных два: строки и числа. Объявление переменных не требует специальной секции (в отличие, например, от Паскаля). Объявление переменной - это первое её использование.

C Sharp - C# (произносится си шарп) - объектно-ориентированный язык программирования. Разработан в 1998-2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft.NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Переняв многое от своих предшественников - языков C++, Java, Delphi. С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).


Язык программирования C++ - компилируемый статически типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования, но, в сравнении с его предшественником - языком Си, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «Си++» происходит от Си, в котором унарный оператор ++ обозначает инкремент переменной.В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения. При создании Си++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором Си++. Си++ имеет синтаксис, основанный на синтаксисе Си.

Достоинства C++ - чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. В частности : Высокая совместимость с языком С, позволяющая использовать весь существующий С-код (код С может быть с минимальными переделками скомпилирован компилятором С++; библиотеки, написанные на С, обычно могут быть вызваны из С++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова, позволяя библиотекам, написанным на С, вызывать код, написанный на С++). Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщенное программирование, метапрограммирование (шаблоны, макросы). Имеется возможность работы на низком уровне с памятью, адресами, портами. Возможность создания обобщённых контейнеров и алгоритмов для разных типов данных, их специализация и вычисления на этапе компиляции, используя шаблоны. Кроссплатформенность. Доступны компиляторы для большого количества платформ, на языке C++ разрабатывают программы для самых различных платформ и систем. Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Недостатки Отчасти недостатки C++ унаследованы от языка-предка - Си, - и вызваны изначально заданным требованием возможно большей совместимости с Си. Это такие недостатки, как: Синтаксис, провоцирующий ошибки: Препроцессор, унаследованный от С, очень примитивен. Плохая поддержка модульности (по сути, в классическом Си модульность на уровне языка отсутствует, её обеспечение переложено на компоновщик). Подключение интерфейса внешнего модуля через препроцессорную вставку заголовочного файла (#include) серьёзно замедляет компиляцию при подключении большого количества модулей (потому что результирующий файл, который обрабатывается компилятором, оказывается очень велик).

Паскаль . Появившийся в 1972 году язык Паскаль был назван так в честь великого французского математика XVII века, изобретателя первой в мире арифметической машины Блеза Паскаля. Этот язык был создан швейцарским учёным, специалистом в области информатики Никлаусом Виртом как язык для обучения методам программирования. Паскаль – это язык программирования общего назначения. Особенностями языка являются строгая типизация и наличие средств структурного(процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис интуитивно понятен даже при первом знакомстве с языком. Язык Паскаль учит не только тому, как правильно написать программу, но и тому, как правильно разработать метод решения задачи, подобрать способы представления и организации данных, используемых в задаче. С 1983 года языкПаскаль введён в учебные курсы информатики средних школ США.

Язык программирования Delphi (Дельфи) - среда разработки, использует язык программирования Delphi (начиная с 7 версии язык в среде именуется Delphi, ранее - Object Pascal), разработанный фирмой Borland и изначально реализованный в её пакете Borland Delphi, от которого и получил в 2003 году своё нынешнее название. Object Pascal - по сути является наследником языка Pascal с объектно-ориентированными расширениями. Delphi обеспечивает визуальное проектирование пользовательского интерфейса, имеет развитый объектно-ориентированный язык Object Pascal (позже переименованный в Delphi) и уникальные по своей простоте и мощи средства доступа к базам данных. Язык Delphi по возможностям значительно превзошел язык Basic и даже в чем-то язык C++, но при этом он оказался весьма надежным и легким в изучении (особенно в сравнении с языком C++). В результате, среда Delphi позволила программистам легко создавать собственные компоненты и строить из них профессиональные программы.

Java - объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems - 23 мая 1995 года. Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Достоинство подобного способа выполнения программ - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java: применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM).

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

Таким образом, в наше время существует множество языков, и у каждого из них свои особенности.

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

транслятором .

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

Существует 3 этапа:

    компиляция – создание объектного файла *.obj

Подключаем с помощью USES

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

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

Поколения :

I 50х 1ый язык ассемблера, сделанный по принципу 1строка 1 инструкция. (несимволический)

II к 50х Символический ассемблер, введено понятие переменной(она даёт относительный адрес), можно сказать первый полноценный язык программирования.

III 60е годы Пошли языки высокого уровня Fortran, Basic, Pascal и т.д. Резко повысилась производительность труда программиста.

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

V с 90х годов визуальные языки – создавались как система автоматической разработки прикладных программ с помощью визуальных средств разработки. В идеале – визуальные средства, которыми могут пользоваться и непрограммисты. Два аспекта 1- использование визуальных компонентов, 2 – кодирование.

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

Включает в себя все необходимое для создания и отладки программ

    текстовый редактор

    компилятор (перевод с высокого кода в машинный код) общее совместимое расширение *.obj

    редактор связи – компоновщик (Link).

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

Все объединения выполняют в требуемом формате (формат задается видом ОС) итогом является файл с расширением *.exe, идет размещение в реальной памяти ОЗУ, только тогда можно запустить исполняемый файл. Результат работы компоновщика – загрузочный модуль с расширением *.exe, *.com.

    Наличие библиотек стандартных функций.

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

Уровни языков программирования:

Языки близки к нашему разговору, требуется состыковка с некоторым нестандартным оборудованием. Чтобы программа занимала мало памяти и время выполнения, была более быстродействующей- тогда обращаются к ассемблированию.

    Фортран – сугубо инженерный язык. Проги оч компактны. Язык использ только профессионально

    CABOL – бухгалтерский язык есть Англ. Рус. Версии

    Algol (68)- был призван заменить фотран, но из-за сложности структуры распр не получил

    Pascal – взял идеи Algol, ужесточились требования к структ прогр

    С – изнач-но разраб-ся как массовый и планиров-ся для замены asm, имеет дополнит ср-ва

    С++ - объектно-ориентиров-е расширение С

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

    Языки программирования для Internet – html, perl, vrml

Визуальные оболочки:

    Basic – 1 место популярности в мире создавался для обучения.Microsoft Visual Basic

    Pascal – Delphi – популярен для работы с БД Borland Delphi

    Html, perl, php – для Интернета

    C++ Borland C++ Builder

    Java Symantec Cafe(сотовые телефоны, быт техника)

2.Трансляторы: назначение, классификация, примеры. Этапы прохождения программ на ЭВМ

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

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

Существует 3 этапа:

Исходный текст программы на яз паскаль должен быть сохранен в файле с расширением.pas. Этот файл подвергают обработке компилятором, и результатом является объектный код, автоматически сохраняемый в файле с расширением.tpu (turbo Pascal unit), программа обрабатывается компоновщиком – получается загрузочный модуль, автоматически сохраняемый в файле с расширением.exe. Далее программа идет на выполнение (в процессе могут быть подключены исходные данные), далее получаем результаты.

    компиляция – создание объектного файла *.obj, *.tpu

    компоновка – создает исполняемый файл *.ехе

    выполнение- результат формируемые этапами

После компиляции в Delphi получаем расширение *.dcu – статическая библиотека

Подключаем с помощью USES

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

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

Паскаль, 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С- предприятие», «Компас» - для черчения,

Введение

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

· постановка задачи;

· сбор данных, необходимых для решения задачи;

· реализация алгоритма обработки данных;

· трансляция алгоритма в структуру, способную решить поставленный алгоритм - программу или пакет программ;

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

· применение программы или пакета программ к поставленной задаче;

· анализ полученных результатов.

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

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

Язык высокого уровня - тип языка компьютерного программирования. Языки высокого уровня предназначены для выражения потребностей программиста, а не возможностей компьютера. Они используют абстрактные данные и контролируют структуры, символические обозначения и переменные. Существует много языков высокого уровня, в том числе Бейсик (BASIC), Кобол (COBOL), Паскаль (Pascal), Фортран (FORTRAN), Алгол (Algol) и Си (C). Чтобы можно было использовать программы, написанные на языках высокого уровня, их нужно перевести в машинные коды. Рассмотрим в противопоставлении языки высокого уровня Си и Паскаль.

Структура программы

Для определения множеств имен переменных используется понятие идентификатора . Идентификаторами в Паскале является произвольный набор символов. Требования к идентификаторам:

· идентификатор состоит из латинских букв и цифр (заглавные и строчные буквы не различаются);

· идентификатора должен начинаться обязательно с буквы ("а1", а не "1а");

· идентификатор может состоять из любого количества символов, но распознаются только первые 63;

· служебные слова запрещается использовать в качестве идентификаторов.

Программа составляется из операторов Паскаля, которые разделяются символом ";". Для выделения группы операторов используют операторные скобки: begin…..end. Несколько операторов, заключенных в операторные скобки, называют составным оператором. В тексте программы фигурными скобками выделяются комментарии, которые игнорируются при выполнении программы. В тексте лекций будем также использовать фигурные скобки для комментирования.

Структура программы на языке Турбо Паскаль:

· заголовок, название программы;

· подключение внешних модулей;

· описание констант;

· задание типов;

· раздел объявления переменных;

· описание функций;

· описание процедур;

· начало основной программы;

· тело основной программы;

· конец основной программы.

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

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

Два идентификатора, для получения которых применяются совпадающие строчные и прописные буквы, считают различными. К примеру: abc, ABC, A328B, a328b. Компилятор допускает всякое количество символов в идентификаторе, но значим только первый 31 символ.

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

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

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

Ключевыми словами называются зарезервированные идентификаторы, наделенные определенным смыслом. Их можно применять только в соответствии со значением, известным компилятору языка СИ. Приведемсписокключевыхслов: auto double intstruct break else long switch register tupedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while. При этом в определенных версиях реализации языка СИ зарезервированными словами являются следующие: _asm, fortran, near, far, cdecl, huge, pascal, interrupt. Ключевые слова far, huge, near дают возможность определить размеры указателей на области памяти.

Ключевые слова _asm, cdecl, fortran, pascal используются для организации связи с функциями, которые написаны на других языках, а также для применения команд языка ассемблера непосредственно в теле будущей программы на языке СИ. Ключевые слова не могут применяться в качестве идентификаторов.