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

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

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); встроенные в язык средства создания многопоточных приложений; параллельное выполнение программ.

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

Информатика, кибернетика и программирование

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

15 Классификация алгоритмических языков

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

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

В мнемокоде цифровой код операции заменен буквенным (мнемоническим), а цифровые адреса – буквенными именами.

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

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

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

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

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

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

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


А также другие работы, которые могут Вас заинтересовать

39480. Расчет годовой производственной программы ЭТС 103.5 KB
Парк электрооборудования постоянно увеличивается. Опыт электрификации сельского хозяйства показывает что без хорошей работы электротехнической эксплуатационной службы только увеличение числа электроустановок не дает ожидаемого роста эффективности производства и не позволяет полностью использовать потенциальные возможности электрооборудования. Эксплуатационная надежность электрооборудования пока еще не удовлетворяет в достаточной мере требованиям сельскохозяйственного производства. Улучшение эксплуатации...
39481. Безопасность жизнедеятельности. Характеристика условий труда программиста 1.09 MB
В связи с этим была создана и развивается наука о безопасности труда и жизнедеятельности человека. Охрана здоровья трудящихся обеспечение безопасности условий труда ликвидация профессиональных заболеваний и производственного травматизма составляет одну из главных забот человеческого общества. Обращается внимание на необходимость широкого применения прогрессивных форм научной организации труда сведения к минимуму ручного малоквалифицированного труда создания обстановки исключающей профессиональные заболевания и производственный...
39483. Использование наноматериалов в строительном материаловедении 1.34 MB
«Нано» (от греческого слова «nanos» – карлик) – это приставка, обозначающая одну миллиардную долю исходной единицы. Поскольку в СИ единицей длины является метр, то нанометр означает одну миллиардную долю метра или миллионную долю миллиметра
39484. Разработка информационной системы сопровождения кредитной истории клиентов 3.89 MB
Установление структуры и форм входных и выходных данных. Расчёт освещения Постоянное развитие и совершенствование вычислительной техники и программного обеспечения приводит к возникновению все новых технологий обработки данных. Поэтому эффективность системы обработки зависит от правильной организации входных и выходных потоков информации. Представить выходную информацию в необходимых для пользователя электронных форматах и виде печатных документов.
39485. Разработка автоматизированной системы мониторинга деятельности спортивной организации «Весна» 1.61 MB
Цель и главная задача дипломной работы заключается в разработке автоматизированной системы мониторинга деятельности спортивной организации «Весна», деятельность которой состоит правильному физическому развитию и оздоровлению для подростков.
39487. Разработка сайта МКДОУ № 17 3.14 MB
Общие принципы создания webстраниц.Основные элементы webстраниц. Введение В вопросе разработки и создания Webстраниц в сети Интернет накоплен огромный багаж различных методов способов и технологий многие из которых к сожалению сейчас уже являются условно применимыми. Поэтому представляется актуальным и практически важным рассмотреть проблему проектирования Webсайта в современных условиях с использованием всего спектра достижений накопленных в данной области.
39488. Создание автоматизированной системы оптимизации затрат на доставку грузов на транспортном предприятии 882.5 KB
Логистическая организация товародвижения на практике реализуется как регулярный целенаправленный процесс воздействия на всех уровнях и на всех стадиях оборота товаров и услуг на факторы и условия обеспечивающие достижение и поддержание экономного и эффективного процесса физического продвижения товара на рынке. Организационные усилия направленные на повышение эффективности товародвижения могут быть сведены к двум аспектам: оперативному и стратегическому.3] Формирование оптимального режима товародвижения с последующей его корректировкой в...

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

Следует отличать язык программирования (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 г.

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

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

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

Существует 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

Публикации по теме