Почему япву являются машинно независимыми языками программирования?

19 ответов на вопрос “Почему япву являются машинно независимыми языками программирования?”

  1. Goldenseeker Ответить

    Значительным событием в истории языков программирования стало создание в 1969году языка Паскаль. Его автор — швейцарский профессор Никлаус Вирт разрабатывал Паскаль как учебный язык структурного программирования.
    Наибольший успех в распространении языка Паскаль обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Turbo Pascal (Турбо Паскаль) для ПК. Турбо Паскаль — это не только язык и транслятор с него, но еще и интегрированная среда программирования, дающая пользователю возможность удобно работать на Паскале: вводить и редактировать текст программы, искать синтаксические ошибки, пользоваться библиотеками подпрограмм и модулей, работать с файлами и пр. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Паскаль стал источником многих основных современных языков программирования, например таких, как Ада, Модула-2 и др.
    Модула-2 — это еще один язык, предложенный Виртом, являющийся развитием языка Паскаль и содержащий средства для создания больших программ.
    Язык программирования Си (английское название — С) появился практически одновременно с Паскалем. Он создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Хотя Си и является языком высокого уровня, однако в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера, что ранее было возможно только в ассемблере. С появлением Си многие системные программисты перешли с ассемблера на Си. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.
    На первых ЭВМ с «тесной» памятью и небольшим быстродействием основным показателем качествапрограммы была её экономичность по занимаемой памяти и времени счёта. Чем программа получалась короче, тем класс программиста считался выше.
    С ростом памяти и быстродействия ЭВМ, с совершенствованием языков программирования и трансляторов с этих языков проблема экономичности программы становится менее острой. Все более важной качественной характеристикой программ становится их простота, наглядность, надёжность. С появлением машин третьего поколения эти качества стали основными.
    Уже в 1960-х годах программирование стало достаточно массовой профессиональной деятельностью. Возникают компании (фирмы) по разработке программ. Актуальной становится задача разработки общепринятой методологии программирования, повышающей производительность работы программистов и, что самое главное, качество программных продуктов. Основной качественный показатель программы — её работоспособность, отсутствие ошибок.
    Методология программирования— это совокупность определённых способов написания, отладки и сопровождения программ. Первая наиболее известная и распространенная методология программирования получила название « структурное программирование».
    Появление структурного программирования связано с именами Эдсгера Дейкстры и Чарльза Хоара. Начиная с 1960-х годов стали появляться языки структурного программирования. Первым из них был Алгол-60, разработанный Дейкстрой, затем был создан Паскаль. Другие, первоначально «не структурные» языки стали также приобретать «структурные свойства» (Турбо Бейсик, Фортран-77 и пр.). Структурное программирование до настоящего времени остается важнейшей методологией программирования. Соблюдение его принципов позволяет программисту составлять ясные, безошибочные, надёжные программы.
    В 1990-х годах с развитием объектно-ориентированной парадигмы программирования, а также средств графического интерфейса на персональных компьютерах, возникает новая технология программирования — визуальное программирование.Визуальная технология программирования позволяет программисту легко и быстро строить наглядный графический интерфейс для своих программ на основе стандартного набора шаблонов, графически отображаемых на экране объектов.
    Список рекомендуемой литературы:
    1. Голицына О. Л., Попов И. И. Основы алгоритмизации и программирования. 2008г.

  2. Shadrian Ответить

    Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятсямашинно-зависимые и машинно-независимые.
    Машинно-зависимые языки зависят от типа компьютера. Каждый компьютер имеет свой собственный язык программирования – машинный язык – и может исполнять программы, записанные только на этом языке. Машинный язык включает в себя набор команд, выполняемых процессором данной конкретной машины. Команды на машинном языке представляют собой набор двоичных знаков.
    Программирование на машинном языке сложно и практически не используется. Для упрощения программирования используются машинно-ориентированные языки. Различают два уровня машинно-ориентированных языков:
    языки символического кодирования (мнемокоды);
    макроязыки.
    Мнемокод отличается от машинного языка заменой двоичных кодов операций и двоичных адресов операндов буквами или буквенно-цифровыми обозначениями. Перевод мнемокода на машинный язык выполняется с помощью специальной программы, называемой ассемблером. Ассемблер заменяет каждую команду мнемокода соответствующей командой машинного языка. Мнемокод часто называют языком ассемблера.
    Макроязык, наряду с символическими аналогами машинных команд, содержит макрокоманды, не имеющие аналогов в машинном языке. При переводе на машинный язык каждая макрокоманда заменяется группой команд машинного языка. Это повышает производительность труда программиста.
    Машинно-зависимые языки позволяют в наибольшей степени использовать возможности машины, однако требуют от программиста знания особенностей устройства машины. Эти языки используются для написания специального программного обеспечения.
    Машинно-независимые языки не зависят от типа компьютера, на котором они используются. Машинно-независимые языки в отличие от машинно-зависимых называются языками высокого уровня. Они делятся на процедурно-ориентированные и проблемно-ориентированные языки.
    Процедурно-ориентированные языки предназначены для описания алгоритмов решения задач и иногда называются универсальными языками программирования. Структура процедурно-ориентированных языков ближе к естественному языку, чем к машинному. Процедурно-ориентированными языками пользуются специалисты, знакомые с математическими формулировками решаемых задач, методами их решения и приемами программирования. Это могут быть как профессиональные программисты, так и специалисты в различных областях, хорошо владеющие программированием и методами решения задач в своей области.
    При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.
    Проблемно-ориентированные языки не требуют подробной записи алгоритма решения задачи. Пользователь должен лишь указать последовательность решения задач из ранее подготовленного набора, указать исходные данные и требуемую форму выдачи результата.

  3. Centridred Ответить

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

    В настоящее время существуют тысячи
    различных языков программирования. Их
    можно классифицировать по различным
    признакам. Прежде всего, все языки
    программирования принято разделять на
    две большие группы: машинно-ориентированные
    и машинно-независимые языки.
    Машинно-ориентированные языки
    это языки, средства которых существенно
    зависят от особенностей конкретной
    ЭВМ. Одним из примеров таких языков
    является Ассемблер. Для них характерны:
    1) высокое качество создаваемых
    программ с точки зрения их компактности
    и скорости выполнения;
    2) возможность прямого использования
    конкретных аппаратных ресурсов;
    3) учет особенностей функционирования
    данной ЭВМ;
    4) трудоемкость процесса составления
    программ;
    5) низкая скорость программирования;
    6) невозможность непосредственного
    использования программ, составленных
    на этих языках, на ЭВМ других типов.
    Машинно-независимые языки
    это средства описания алгоритмов решения
    задач и информации, подлежащей обработке,
    которые не требуют от программиста
    знания особенностей функционирования
    конкретной ЭВМ. Эти языки называются
    также еще языками высокого уровня. К
    ним относятся почти все
    используемые сегодня языки.
    Программы, составленные на таких языках,
    представляют собой последовательности
    операторов, структурированные в
    соответствии с определенными правилами.
    Операторы языка описывают действия,
    которые должна выполнять система после
    трансляции программы на машинный язык.
    Машинно-независимые языки можно условно
    разделить на три группы.
    Процедурные языки
    Процедурные языки
    (называемые также
    директивными или императивными)
    – это языки, определяющие, как вычислять
    результат для какой-нибудь проблемы в
    соответствии с заданным алгоритмом. К
    ним относятся: Алгол, Фортран, Бейсик1.28
    Tf20, Паскаль, Си.
    Процедурные языки, в свою
    очередь, можно разделить на структурные
    и неструктурные языки программирования.
    1) Неструктурное
    программирование
    допускает
    использование в явном виде команды
    безусловного перехода (в большинстве
    языков GOTO). Это влечет за собой массу
    серьезных недостатков: программу,
    которая содержит бесконечные переходы
    вверх-вниз, очень трудно изменять и
    дополнять. Типичными представителями
    неструктурных языков являются ранние
    версии Бейсика и Фортрана.
    2) В структурном
    программировании
    задача
    разбивается на большое число мелких
    подзадач, каждая из которых решается
    своей процедурой или функцией. Такой
    подход позволяет разрабатывать большие
    проекты силами нескольких программистов.
    Например, на Паскале и Си.
    Декларативные
    языки
    Декларативные языки – это языки,
    оперирующие с помощью задания данных
    и отношений между ними. Вместо алгоритмов
    в таких языках используются правила
    логического вывода, которые позволяют
    системе находить нестандартные, заранее
    не определенные решения. Поэтому
    декларативные языки называют также еще
    языками искусственного интеллекта.
    Главное различие между
    декларативными и процедурными языками
    заключается в том, что декларативная
    программа заявляет
    (декларирует), что
    должно быть достигнуто
    в качестве цели, а процедурная предписывает,
    как ее
    достичь.
    Например, вам надо пройти в городе
    из пункта А в пункт Б.
    Декларативная программа – это план
    города, в котором указаны оба пункта,
    плюс правила уличного движения.
    Руководствуясь этими правилами и планом
    города, курьер сам найдет путь от пункта
    А к пункту Б.
    Процедурная программа –
    это список команд примерно такого рода:
    от пункта А по ул. Садовой на север до
    площади Славы, оттуда по ул. Пушкина два
    квартала, потом повернуть направо и
    идти до Театрального переулка, по этому
    переулку налево по правой стороне до
    дома 20, который и есть пункт Б.
    В процедурной программе
    действия задаются явными командами,
    подготовленными ее составителем.
    Исполнитель же просто им следует. Хотя
    команды в различных языках процедурного
    программирования и выглядят по-разному,
    все они сводятся либо к присваиванию
    какой-нибудь переменной
    некоторого значения, либо к выбору
    следующей команды,
    которая должна будет выполняться.
    Присваиванию может предшествовать
    выполнение ряда арифметических и иных
    операций, вычисляющих требуемое значение,
    а
    команды выбора реализуются
    в виде условных операторов и операторов
    повторения (циклов).
    Для классических процедурных
    языков характерно, что последовательность
    выполняемых команд совершенно однозначно
    определяется ее входными данными. Как
    говорят, поведение исполнителя
    императивной программы полностью
    детерминировано.
    Декларативные программы
    не предписывают выполнять определенную
    последовательность действий, в них лишь
    дается разрешение совершать их.
    Исполнитель должен сам найти способ
    достижения поставленной перед ним
    составителем программы (программистом)
    цели, причем зачастую это можно сделать
    различными способами – детерминированность
    в данном случае отсутствует.
    Декларативные языки, в свою
    очередь, делятся на функциональные
    (аппликативные) и логические языки.
    1) В основе функциональных
    языков
    лежит понятие
    функции как “черного ящика”, имеющего
    несколько параметров (аргументов) на
    входе и один результат на выходе – f(x1,
    x2, …, xn) = y.
    В таких языках отсутствуют
    операторы: все действия, в том числе и
    управляющие конструкции, выполняются
    при помощи вызовов функций. Одним из
    первых функциональных языков стал Лисп,
    созданный американским ученым Джоном
    Маккарти в 1957 году.
    2) Логическое
    программирование
    представляет
    собой попытку возложить на программиста
    только постановку задачи, а поиски путей
    ее решения предоставить транслятору.
    Логические языки (например, Пролог)
    имеют специальные конструкции для
    описания объектов и связей (отношений)
    между ними.
    Например, если дано:
    Джон – отец Джека,
    Джек – отец Майка,
    Дедушка – это отец отца или отец матери,
    то система логического вывода должна
    сама сделать заключение:
    Джон – дедушка Майка.
    Объектно-ориентированные
    языки
    Объектно-ориентированные
    языки,
    разработанные
    в середине 70-х гг., представляют собой
    отображение объектов реального мира,
    их свойств (атрибутов) и связей между
    ними при помощи специальных структур
    данных. При объектно-ориентированном
    подходе для каждого объекта создается
    своя структура данных, называемая
    классом и
    содержащая свойства объекта (поля)
    и процедуры для управления объектом
    (методы).
    При этом каждый класс может содержать
    несколько подклассов, описывающих
    частные случаи общего объекта. Все
    подклассы содержат в себе, наряду с
    общими свойствами, также еще ряд
    специфических свойств, отличающих их
    от первоначального класса. Такой принцип
    называется принципом
    наследования свойств
    (от
    общего к частному).
    Например,
    для описания объекта «геометрическая
    фигура» можно использовать класс,
    содержащий три свойства (цвет, координаты
    x и y, определяющие начальную точку
    рисования данной фигуры на экране) и
    два метода (поменять цвет и переместить
    фигуру в точку с координатами x, y). Затем
    для данного класса можно определить
    подклассы, описывающие частные случаи
    геометрических фигур за счет добавления
    новых специфических свойств: прямоугольник
    (свойства ширина и
    высота),
    круг (свойство радиус)
    и т.п. При этом и для прямоугольника, и
    для круга будут применимы общие свойства
    и методы, заданные для класса «геометрическая
    фигура».
    Типичными представителями
    объектно-ориентированных языков
    программирования являются C++,
    Java,
    Visual
    Basic.

  4. SWAG GAMER Ответить

    42. Операции со строковыми величинами, примеры.
    Цикл с предусловием в Паскале.
    В Паскале, существуют все три типа операторов
    цикла: цикл с предусловием, цикл с постусловием и цикл с параметром.
    Цикл с предусловием.Формат оператора цикла с предусловием:
    while(выражение) оператор; Цикл повторяет свое выполнение, пока значение выражения отлично от нуля, т. е. заключенное в нем условие цикла истинно. В качестве примера использования оператора цикла рассмотрим программу вычисления факториала целого положительного числа NL Сопоставим программу решения этой задачи, написанную на Паскале.
    Пример 1.
    Программа на Паскале
    ProgramFaktorial
    VarF:Longint; i,N:Integer;
    Beginwrite(‘N=’);
    ReadLn(N);
    F:=l; i:=l;
    While i
    Begin
    F:=F*i;
    i:=i+l
    End;
    WriteLn(N,’!=’,F)
    End.
    Обратите внимание на операторы в теле цикла. При практическом использовании этой программы не следует забывать, что факториал — очень быстро растущая функция, и поэтому при определенных значениях N выйдет из диапазона, соответствующего типу long int. Задав для переменной F тип unsigned long, можно сдвинуть эту границу, но этого может оказаться недостаточно. Предлагаем в качестве самостоятельного задания исследовать предельные значения N для двух указанных типов переменной F. Интересно свойство следующего оператора: while (1); Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается. Тело в этом цикле представляет собой пустой оператор. При исполнении такого оператора программа будет «топтаться на месте». Рассмотрим еще один пример использования оператора цикла while.Вернемся к задаче итерационного вычисления суммы гармонического ряда: 1 +1/2+1/3+… с заданной точностью г (см.\ разд. 3.10, пример 2
    Пример 2.
    Программа на Паскале Программа на Си++
    Varn: Integer; S,eps: // Сумма
    Real; //гармонического ряда
    Beginfinclude
    Write (‘Точность:’); #include
    ReadLn(eps); voidmain()
    n:=l; S:=0; {int n=l;
    While(l/n>eps) doubleS=0, eps;
    And(nDo
    cout«”To4HOCTb : ” ;
    BeginS:=S+l/n; cin»eps;
    n:=n+l while(1.0/n>eps &&
    End;nОтветить

    Наибольший успех в распространении языка Паскаль обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Turbo Pascal (Турбо Паскаль) для ПК. Турбо Паскаль — это не только язык и транслятор с него, но еще и интегрированная среда программирования, дающая пользователю возможность удобно работать на Паскале: вводить и редактировать текст программы, искать синтаксические ошибки, пользоваться библиотеками подпрограмм и модулей, работать с файлами и пр. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Паскаль стал источником многих основных современных языков программирования, например таких, как Ада, Модула-2 и др.
    Модула-2 — это еще один язык, предложенный Виртом, являющийся развитием языка Паскаль и содержащий средства для создания больших программ.
    Язык программирования Си (английское название — С) появился практически одновременно с Паскалем. Он создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Хотя Си и является языком высокого уровня, однако в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера, что ранее было возможно только в ассемблере. С появлением Си многие системные программисты перешли с ассемблера на Си. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.
    На первых ЭВМ с «тесной» памятью и небольшим быстродействием основным показателем качествапрограммы была её экономичность по занимаемой памяти и времени счёта. Чем программа получалась короче, тем класс программиста считался выше.
    С ростом памяти и быстродействия ЭВМ, с совершенствованием языков программирования и трансляторов с этих языков проблема экономичности программы становится менее острой. Все более важной качественной характеристикой программ становится их простота, наглядность, надёжность. С появлением машин третьего поколения эти качества стали основными.
    Уже в 1960-х годах программирование стало достаточно массовой профессиональной деятельностью. Возникают компании (фирмы) по разработке программ. Актуальной становится задача разработки общепринятой методологии программирования, повышающей производительность работы программистов и, что самое главное, качество программных продуктов. Основной качественный показатель программы — её работоспособность, отсутствие ошибок.
    Методология программирования— это совокупность определённых способов написания, отладки и сопровождения программ. Первая наиболее известная и распространенная методология программирования получила название « структурное программирование».
    Появление структурного программирования связано с именами Эдсгера Дейкстры и Чарльза Хоара. Начиная с 1960-х годов стали появляться языки структурного программирования. Первым из них был Алгол-60, разработанный Дейкстрой, затем был создан Паскаль. Другие, первоначально «не структурные» языки стали также приобретать «структурные свойства» (Турбо Бейсик, Фортран-77 и пр.). Структурное программирование до настоящего времени остается важнейшей методологией программирования. Соблюдение его принципов позволяет программисту составлять ясные, безошибочные, надёжные программы.
    В 1990-х годах с развитием объектно-ориентированной парадигмы программирования, а также средств графического интерфейса на персональных компьютерах, возникает новая технология программирования — визуальное программирование.Визуальная технология программирования позволяет программисту легко и быстро строить наглядный графический интерфейс для своих программ на основе стандартного набора шаблонов, графически отображаемых на экране объектов.
    Список рекомендуемой литературы:
    1. Голицына О. Л., Попов И. И. Основы алгоритмизации и программирования. 2008г.
    2. Колдаев В.Д, Основы алгоритмизации и программирования. Москва ИД «ФОРУМ»-ИНФРА-М 2009 г.
    3. Семакин И.Г., Шестаков А.П. Основы программирования. М.: ИД «Академия», 2008 г.
    ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ К РАЗДЕЛУ 1:
    Сформулируйте понятие алгоритма? Приведите примеры алгоритмов.
    Какие свойства алгоритмов вы знаете?
    Какие виды алгоритмов вы знаете?
    Какие способы записи алгоритмов вы знаете?
    Что такое исполнитель алгоритмов?
    Сформулируйте понятие программы?
    Приведите примеры таблиц истинности для логических операций.
    Назовите логические операции, используемые при синтезе вычисли­тельных схем.
    Приведите правила, используемые при решении логических урав­нений.
    Приведите правила, используемые при решении систем логических уравнений.
    В чем заключается основная идея метода Вонга?
    12. Что такое программирование?
    13. В какой форме составлялись программы для первых ЭВМ?
    14. Почему языки автокоды (ассемблеры) называются машинно-ориентированными языками программирования?
    15. Назовите основные процедурные языки программирования в хронологической последовательности их создания.
    16. Что такое парадигма программирования?
    17. Назовите основные парадигмы программирования и их отличия друг от друга.
    18. Что такое структурное программирование?
    19. Что такое визуальное программирование?
    Раздел 2 Программирование на алгоритмическом языке Turbo Pascal
    Тема 2.1.Основные элементы языка
    Алфавит. Алфавит языка состоит из множества символов, включающих в себя буквы, цифры и специальные символы.
    Латинские буквы: от A до Z (прописные) и от а до z. (строчные).
    Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
    Шестнадцатеричные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, E, F.
    Специальные символы: + — * / = [ ] . , ( ) : ; { } ^ @ $ #.
    Следующие комбинации специальных символов являются едиными символами (их нельзя разделять пробелами):
    : = знак присваивания; < = меньше или равно; > = больше или равно; (* *)ограничители комментариев
    не равно; (используются наряду с {});
    (..) эквивалент [ ].
    Пробелы— символ пробела(ASCI1-32) и все управляющие символы кода ASCII (от 0 до 31).
    Идентификаторы. Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются имена констант, переменных, типов данных, процедур и функций, программ. С помощью синтаксической диаграммы идентификатор можно определить, как показано на рисунке.

    Расшифровать это можно так: идентификатор — это любая последовательность букв и цифр, начинающаяся с буквы. В Турбо Паскале к буквам приравнивается также знак подчеркивания. Строчные и прописные буквы в идентификаторах и служебных словах не различаются. Например: max, MAX, MaX и mAx —одно и то же имя.
    Длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
    Комментарии. Следующие конструкции представляют собой комментарии и поэтому игнорируются компилятором:
    (любой текст, не содержащий символ «}» }
    (* любой текст, не содержащий символы «*)»*)
    Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах.
    Строка, начинающаяся с символов {$ или (*$, является директивой компилятора. За этими символами следует мнемоника команды компилятора.

  5. Nazil Ответить

    Машинно – независимые языки– это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС.
    Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка(задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на машинном языке.
    Т.о., командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
    Проблемно – ориентированные языки
    С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно – ориентированные языки. Эти языки, языки ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме.
    Проблемных языков очень много, например:
    ^ Фортран, Алгол – языки, созданные для решения математических задач;
    Simula, Слэнг — для моделирования;
    Лисп, Снобол – для работы со списочными структурами.
    Об этих языках я расскажу дальше.
    Универсальные языки
    Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ.
    Программы в ^ Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.
    Диалоговые языки
    Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками.
    Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач.
    Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе.
    Одним из примеров диалоговых языков является ^ Бэйсик.
    Бэйсик использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач.
    Непроцедурные языки
    Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами.
    Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения.
    Табличные методы легко осваиваются специалистами любых профессий.
    Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.
    34)1. MATLAB
    История
    MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACKбез необходимости изучения Фортрана. Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года, написанную на Фортране, распространяемую с открытым исходным кодом. Инженер Джон Литтл (англ. John N. (Jack) Little) познакомился с этим языком во время визита Клива Моулера вСтэнфордский университет в 1983 году. Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.
    Описание языка
    Язык MATLAB является высокоуровневым интерпретируемым языком программирования, включающим основанные на матрицах структуры данных, широкий спектр функций, интегрированную среду разработки, объектно-ориентированные возможности и интерфейсы к программам, написанным на других языках программирования.
    Программы, написанные на MATLAB, бывают двух типов — функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции не компилируются в машинный код и сохраняются в виде текстовых файлов. Существует также возможность сохранять так называемые pre-parsed программы — функции и скрипты, обработанные в вид, удобный для машинного исполнения. В общем случае такие программы выполняются быстрее обычных, особенно если функция содержит команды построения графиков.
    Основной особенностью языка MATLAB является его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге «думай векторно» (англ. Think vectorized).
    Примеры
    Пример кода, являющегося частью функции magic.m, генерирующего магический квадрат M для нечётных значений размера стороны n:
    [J,I] = meshgrid(1:n);
    A = mod(I+J-(n+3)/2,n);
    B = mod(I+2*J-2,n);
    M = n*A + B + 1;
    Пример кода, загружающего одномерный массив A значениями массива B в обратном порядке (только если векторA определен, и число его элементов совпадает с числом элементов вектора B):
    A(1:end) = B(end:-1:1);
    График sinc-функции, нарисованный с помощью MATLAB
    Пример кода, рисующего график sinc-функции:
    [X,Y] = meshgrid(-8:.5:8);
    R = sqrt(X.^2 + Y.^2);
    Z = sin(R)./R;
    Z(R==0) = 1;
    mesh(X,Y,Z);
    Пример векторизации кода. Код
    ww = repmat (w, [size(b,1) 1]);
    A = b.*ww*b’;
    выполняется значительно быстрее, чем требующий меньше памяти и арифметических операций код
    for i = 1:size(b,1)
    for j = i:size(b,1)
    A (i, j) = sum (b (i,:).*b (j,:).*w);
    end
    for j = 1:i
    A (i, j) = A (j, i);
    end
    end
    который делает то же самое.
    Применение

    Статьи к прочтению:

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

    Фиксики — Все серии подряд — Унитаз, микробы. Мультики для детей

    Похожие статьи:

    Краткая история и классификация языков программирования
    Языки программирования Основные понятия. Алфавит. Синтаксис. Семантика Обычный разговорный язык состоит из четырех основных элементов: символов, слов,…
    Выбор языка программирования, среды разработки
    ВВЕДЕНИЕ В рамках данного курсового проекта необходимо реализовать usb сниффер для операционной системы Windows. Usb сниффер – это программа,…

  6. чеLOVEчек Ответить

    Примером достижения практических результатов в области развития концепций, заложенных в Фортран, можно считать создание Лисп. Данный язык был разработан в 1958 году, однако, широкую известность он приобрел несколько позже — в 1960-м. Лисп был разработан Джоном Маккарти и опубликован в одном из популярных журналов для IT-специалистов. Основное предназначение рассматриваемого языка — обработка списков. Лисп стал популярен в среде разработчиков систем искусственного интеллекта. На его основе были созданы такие языки, как Planner, Scheme, а также Common Lisp. Также Лисп оказал значительное влияние на многие современные инструменты разработки ПО. Структура языков программирования высокого уровня, популярных сегодня, в значительной степени базируется на алгоритмах Фортран и Лисп.
    Интересно будет, однако, рассмотреть иные подходы к классификации рассматриваемых инструментов разработки средств ПО.

    Универсальные высокоуровневые языки

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

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

    Уникальные языки

    Некоторые IT-эксперты выделяют в самостоятельную категорию «уникальные языки». В числе таковых: APL, Cobol, Forth, SETL, а также CLU. Какова их специфика?
    Важнейший аспект APL — задействование массивов (векторов и матриц) в качестве ключевого структурного типа. Специфика языка Cobol — в ориентированности на коммерческую сферу. Так, его целесообразно задействовать при решении задач, связанных со стандартизированным форматом представления результатов. Язык Forth характеризуется использованием постфиксной записи программ, а также задействованием стековой нотации. В языке SETL применяются совокупности значений в качестве одного из ключевых типов данных. Языком программирования высокого уровня является также CLU. Его основная особенность — задействование концепции работы с абстрактными типами данных. Многие IT-специалисты видят логичным появление новых решений, базирующихся на уникальных языках — таких как, например, Object-Oriented Cobol.

    Средства параллельного программирования

    Данная категория может включать огромное количество решений. В свою очередь, языки параллельного программирования могут иметь большое количество оснований для классификации. Например, метод организации процессов. Данное основание предполагает классификацию средств параллельного программирования исходя из наличия в них:
    – сопрограмм;
    – разветвлений;
    – объединений;
    – параллельных скобок;
    – алгоритмов работы с процессами.
    Другое основание для классификации языков рассматриваемого типа — методы синхронизации процессов. Соответствующие решения могут, таким образом, включать:
    – семафоры;
    – мониторы;
    – «рандеву»;
    – критические участки;
    – дистанционный вызов процедур;
    – транзакции, относящиеся к категории атомарных.
    К языкам рассматриваемого типа относятся Modula-2, BLISS, Concurrent Pascal, DP, Argus.

    Семейство языков C

    Выше мы рассмотрели в качестве примера языка высокоуровневого программирования такое решение, как C. По сути дела, оно формирует целое семейство. Языки, принадлежащие к нему, являются частными конструкциями C. Так, его дополнение различными объектно-ориентированными компонентами привело к разработке C++. После существенной фильтрации ряда конструкций C появился язык Java. Можно отметить, что Java создавался во многом под влиянием концепций проекта Oberon, которым руководит Никлаус Вирт, создатель языка Паскаль. Относится ли к высокоуровневым JavaScript? Безусловно, да, несмотря на узость применения — в качестве инструмента разработки веб-страниц. Но к языкам программирования высокого уровня не относятся, в частности, HTML, XML и SGML. Они классифицируются как инструменты разметки гипертекста.

    Семейство языков Pascal

    Языки программирования высокого уровня Pascal также образуют отдельное семейство. На базе Паскаль был, собственно, создан Oberon, классифицируемый как язык объектно-ориентированного типа. Ключевая особенность Oberon — в возможности обеспечения безопасности типов. Не считая Oberon, к языкам семейства Pascal можно отнести Modula-2, а также Component Pascal.

    Семейство языков Ada

    Основополагающий в соответствующей категории языков — заказанный под нужды Министерства обороны США Ada. Он был создан в конце 70-х — начале 80-х годов. Характеризуется большим количеством функций, возможностей, универсальностью. Семейство языков Ada включает такие решения, как Cedar, Modula 3.

    Семейство языков Simula

    Язык Simula распространен в отраслях программирования, связанных с имитационным моделированием. Специфика соответствующих решений — в задействовании специфического ядра. Его использование позволяет применять различные расширения, адаптированные к тем или иным сферам применения. На основе Simula были созданы объектно-ориентированный язык Smalltalk, а также BETA, характеризующийся способностью комбинировать в рамках единой абстракции алгоритмы, отражающие работу с данными, процедурами, а также управление. Объекты BETA могут рассматриваться в различном контексте, например, в качестве переменных, функций или параллельных систем.

  7. EVIM Ответить

    Язык программирования — это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК). Программы на ЯМК программисты писали лишь для самых первых ламповых машин — ЭВМ первого поколения. Программирование на ЯМК — дело непростое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные.
    В 1950-х гг. появляются первые средства автоматизации программирования — языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры». Появление языков типа Автокод-Ассемблер облегчило участь программистов. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик — транслятор. Транслятор — это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на ЯМК.
    Языки типа Автокод-Ассемблер являются машинно-ориентированными, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер. Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. ЯПВУ легко изучаются, хорошо поддерживают структурную методику программирования.
    Первыми популярными языками высокого уровня, появившимися в 1950-х гг., были Фортран, Кобол (в США) и Алгол (в Европе)
    Языки Фортран и Алгол были ориентированы на научно-технические расчеты математического характера. Кобол — язык для программирования экономических задач.
    Большое количество языков программирования появилось в 1960—1970-х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. В 1965 г. в Дартмутском университете был разработан язык Бейсик. По замыслу авторов это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил на микроЭВМ и персональных компьютерах. Однако Бейсик — неструктурный язык, и потому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для ПК (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.
    В эпоху ЭВМ третьего поколения получил большое распространение язык PL/I (Program Language One), разработанный фирмой IBM. Это был первый язык, претендовавший на универсальность, т. е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако PL/I оказался слишком сложным языком. Для машин типа IBM 360/370 транслятор с него не мог считаться оптимальным, содержал ряд невыявленных ошибок. На ЭВМ класса мини и микро он вообще не получил распространения. Однако тенденция к универсализации языков оказалась перспективной. Старые языки были модернизированы в универсальные варианты — Алгол-68, Фортран-77.
    Значительным событием в истории языков программирования стало создание в 1971 г. языка Паскаль. Его автор — швейцарский профессор Н.Вирт — разрабатывал Паскаль как учебный язык структурного программирования.
    Наибольший успех в распространении этого языка обеспечили персональные компьютеры. Фирма Borland International, Inc (США) разработала систему программирования Турбо Паскаль для ПК
    Турбо Паскаль — это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Транслятор с Турбо Паскаля по оптимальности создаваемых им программ близок наиболее удачному в этом отношении транслятору — транслятору с Фортрана. В силу названных достоинств Паскаль стал основой многих современных языков программирования, например, таких как Ада, Модула-2 и др.
    Язык программирования Си (английское название — С) создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Так же как и Паскаль, Си — это язык структурного программирования, но, в отличие от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.
    Модула-2 — это еще один язык, предложенный Н.Виртом, основанный на языке Паскаль и содержащий средства для создания больших программ.
    ЭВМ будущего, пятого поколения называют машинами «искусственного интеллекта». Но прототипы языков для этих машин были созданы существенно раньше их физического появления. Это языки ЛИСП и Пролог.
    ЛИСП появился в 1965 г. Язык ЛИСП основан на понятии рекурсивно определенных функций. А поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП, по сути, является универсальным языком. С его помощью на ЭВМ можно моделировать достаточно сложные процессы, в частности интеллектуальную деятельность людей.
    Язык Пролог разработан во Франции в 1972 г. также для решения проблемы «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ЭВМ давать ответы на заданные вопросы.
    Реализовать тот или иной язык программирования на ЭВМ — это значит создать транслятор с этого языка для данной ЭВМ. Существуют два принципиально различных метода трансляции. Они называются соответственно компиляция и интерпретация.
    При компиляции в память ЭВМ загружается программа-компилятор. Она воспринимает текст программы на ЯПВУ как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа на ЯМК, которая выполняется, и получаются требуемые результаты.
    Интерпретатор в течение всего времени работы программы находится во внутренней памяти. В ОЗУ помещается и программа на ЯПВУ. Интерпретатор в последовательности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться. При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих быстрого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

  8. dr_vk Ответить

    Язык программирования – это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд. Программы на языке машинных команд программисты писали лишь для самых первых ламповых машин – язык машинных команд первого поколения. Программирование на языке машинных команд – дело непростое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные.
    В 1950-х гг. появляются первые средства автоматизации программирования – языки Автокоды. Позднее для языков этого уровня стало применяться название «Ассемблеры». Появление языков типа Автокод-Ассемблер облегчило участь программистов. Переменные величины стали изобра­жаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик – транслятор. Транслятор – это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на языке машинных команд.
    Компьютер, оснащенный транслятором с Автокода, понимает Автокод. В этом случае можно говорить о псевдо-ЭВМ (аппаратура плюс транслятор с Автокода), языком которой является Автокод. Языки типа Автокод-Ассемблер являются машинно-ориентированными, т.е. они настроены на структуру машинных команд конкретного компьютера. Разные компьютеры с разными типами процессоров имеют разный Ассемблер. Языки программирования высокого уровня являются машинно-независимыми языками. Одна и та же программа на таком языке может быть выполнена на ЭВМ разных типов, оснащенных соответствующим транслятором. Форма записи программ на языке программирования высокого уровня по сравнению с Автокодом еще ближе к традиционной математической форме, к естественному языку. Очень скоро вы увидите, что, например, на языке Паскаль она почти такая же, как на школьном Алгоритмическом языке. Языки программирования высокого уровня легко изучаются, хорошо поддерживают структурную методику программирования.
    Первыми популярными языками высокого уровня, появившимися в 1950-х гг., были Фортран, Кобол (в США) и Алгол (в Европе). Языки Фортран и Алгол были ориентированы на научно-технические расчеты математического характера. Кобол – язык для программирования экономических задач. В Коболе по сравнению с двумя другими названными языками слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Для первых ЯПВУ предметная ориентация языков была характерной чертой.
    Большое количество языков программирования появилось в 1960 – 1970-х гг. А за всю историю ЭВМ их было создано более тысячи. Но распространились, выдержали испытание временем немногие. В 1965 г. был разработан язык Бейсик. По замыслу авторов это простой язык, легко изучаемый, предназначенный для программирования несложных расчетных задач. Наибольшее распространение Бейсик получил на микроЭВМ и персональных компьютерах. На некоторых моделях школьных компьютеров программировать можно только на Бейсике. Однако Бейсик – неструктурный язык, и потому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для персональных компьютеров (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.
    В эпоху ЭВМ третьего поколения получил большое распространение язык PL/I. Это был первый язык, претендовавший на универсальность, т.е. на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако PL/I оказался слишком сложным языком. Для машин типа IBM 360/370 транслятор с него не мог считаться оптимальным, содержал ряд невыявленных ошибок. На ЭВМ класса мини и микро он вообще не получил распространения. Однако тенденция к универсализации языков оказалась перспективной. Старые языки были модернизированы в универсальные варианты – Алгол-68, Фортран-77.
    Значительным событием в истории языков программирования стало создание в 1971 г. языка Паскаль. Наибольший успех в распространении этого языка обеспечили персональные компьютеры. В США разработали систему программирования Турбо Паскаль для ПК. Турбо Паскаль – это не только язык и транслятор с него, но еще и операционная оболочка, обеспечивающая пользователю удобство работы. Турбо Паскаль вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. Транслятор с Турбо Паскаля по оптимальности создаваемых им программ близок к наиболее удачному в этом отношении транслятору – транслятору с Фортрана. В силу названных достоинств Паскаль стал основой многих современных языков программирования, например, таких как Ада, Модула-2 и др.
    Язык программирования Си создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Так же как и Паскаль, Си – это язык структурного программирования, но, в отличие от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам, к определенным участкам памяти компьютера. Дальнейшее развитие Си привело к созданию языка объектно-ориентированного программирования Си++.
    Модула-2 основан на базе языка Паскаль и содержит средства для создания больших программ.
    ЭВМ пятого поколения называют машинами «искусственного интеллекта». Но прототипы языков для этих машин были созданы существенно раньше их физического появления. Это языки ЛИСП и Пролог.
    Язык ЛИСП основан на понятии рекурсивно определенных функций. А поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП, по сути, является универсальным языком. С его помощью на ЭВМ можно моделировать достаточно сложные процессы, в частности интеллектуальную деятельность людей.
    Язык Пролог используется для решения проблемы «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ЭВМ давать ответы на заданные вопросы.
    Реализовать тот или иной язык программирования на ЭВМ – это значит создать транслятор с этого языка для данной ЭВМ. Существуют два принципиально различных метода трансляции. Они называются соответственно компиляция и интерпретация. Для объяснения их различия можно предложить следующую аналогию: лектор должен выступить перед аудиторией на незнакомом ей языке. Перевод можно организовать двумя способами:
    • полный предварительный перевод – лектор заранее передает текст выступления переводчику, тот записывает перевод, размножает его и раздает слушателям (после чего лектор может и не выступать);
    • синхронный перевод – лектор читает доклад, переводчик одновременно с ним слово в слово переводит выступление.
    Компиляция является аналогом полного предварительного перевода; интерпретация – аналогом синхронного перевода. Транслятор, работающий по принципу компиляции, называется компи­лятором; транслятор, работающий методом интерпретации, – интерпретатором.
    При компиляции в память ЭВМ загружается программа-компилятор. Она воспринимает текст программы как исходную информацию. После завершения компиляции получается программа на языке машинных команд. Затем в памяти остается только программа, которая выполняется, и получаются требуемые результаты.
    Интерпретатор в течение всего времени работы программы находится во внутренней памяти. В оперативное запоминающее устройство помещается программа. Интерпретатор в последова­тельности выполнения алгоритма «читает» очередной оператор программы, переводит его в команды и тут же выполняет эти команды. Затем переходит к переводу и выполнению следующего оператора. При этом результаты предыдущих переводов в памяти не сохраняются. При повторном выполнении одной и той же команды она снова будет транслироваться. При компиляции исполнение программы разбивается на два этапа: трансляцию и выполнение. При интерпретации, поскольку трансляция и выполнение совмещены, программа на ЭВМ проходит в один этап. Однако откомпилированная программа выполняется быстрее, чем интерпретируемая. Поэтому использование компиляторов удобнее для больших программ, требующих быстрого счета. Программы на Паскале, Си, Фортране всегда компилируются. Бейсик чаще всего реализован через интерпретатор.

  9. Miraron Ответить

    Внутреннее представление исходной программы.
    Внутреннее представление исходной программы в значительной степени зависит от его дальнейшего использования. Это может быть дерево, отражающее синтаксис исходной программы. Это может быть исходная программа в так называемой польской обратной записи (ПОЗ), список тетрад и т. д.
    Классификация языков.
    В настоящее время существуют и используются несколько сотен языков программирования (ЯП), предназначенных как практически для любых задач обработки информации (универсальные ЯП), так и специально для некоторого конкретного класса задач (специализированные ЯП). Современные ЯП различаются как по степени их близости к ЭВМ (машинно-зависимые, машинно-ориентированные, машинно-независимые), так и по их функциональному значению (языки реализации, описания алгоритмов, спецификации).
    Машинно-зависимые, машинно-независимые и машинно-ориентированные языки.
    Машинно-зависимые или, как их еще называют, мнемокоды или языки Ассемблера характеризуются тем, что синтаксис операторов в них соответствует структуре команды манинного языка. Основным отличием их от машинных языков является – мнемоника. Введение мнемоники заменяет характерное для машинных языков упоминания элементов программы и данных с помощью адресации именования этих элементов мнемонически удобными идентификаторами. Кодировка операций машинного языка заменяется указанием некоторого привычного символа или мнемонически удобным именем (add, sub, mov).
    Средством часто используемым для повышения уровня машинно-зависимых языков является механизм текстовых макросов. Этот механизм позволяет вводить обозначения для часто встречающихся последовательностей операторов Ассемблера.
    Мнемокоды, использующие механизм макроссов, называются языками макро-ассемблера.
    Основным свойством машинно-независимых языков или языков высокого уровня является то, что они позволяют разработчику абстрагироваться от конкретных свойств и характеристик вычислительной машины.
    Машинно-ориентированные языки используют весь арсенал повышения уровня языка, присутствующий в языках высокого уровня, вместе с тем сохраняет учет свойств любо конкретной ЭВМ, либо класса конкретных ЭВМ. В семантике машинно-ориентированных языков явно участвуют такие свойства машинных языков, как фиксированность машинного слова, наличие разноуровневой памяти, возможность размещения нескольких значений в одном машинном слове и так далее. Для большинства машинно-ориентированных языков характерно отсутствие типизации элементов памяти.
    Языки спецификации, описания алгоритмов и реализации.
    Языки спецификации предназначены для описания самой задачи, а не алгоритма ее решения. Примерами являются: язык Сетл и ряд специализированных языков для пакетов прикладных программ.
    Задачей языка описания алгоритмов является фиксация алгоритма решения задачи вне зависимости от конкретной его реализации на какой-либо вычислительной машине. К этому классы ЯП относится большинство наиболее распространенных сейчас языков (Фортран, Паскаль). Обычно языки описания алгоритмов носят универсальных характер: допускаем одинаково высокий уровень формирования алгоритмов решения разнообразных задач. В то же время для более удобного представления задач из некоторого четко определенного класса создают проблемно-ориентированные языки, которые предоставляют существенно различающиеся средства по уровню задач.
    Языки реализации служат для описания алгоритмов решения задачи в терминах машинно-ориентированных понятий, так что реализация этого алгоритма уже явно и сознательно выбрана. Языками этого класса являются, с одной стороны, такие примитивные языки, как языки Ассемблера для различных машин, а с другой, – так называемые машинно-ориентированные языки высокого уровня (Алма, Эпсилон).
    Ряду языков реализации присущи свойства системной ориентируемости. Она заключается в том, что в семантике языка присутствует на достаточно высоком уровне понятия, связанные с ОС.
    Системную ориентируемость следует отличать от системной зависимости. Связь с ОС осуществляется прямым употреблением разрешенных в языке примитивов работы с ОС. В отличие от этого системно-ориентируемые языки содержат возможности определения средствами языка высокого уровня объектов ОС и возможности операции над ними в стиле языка высокого уровня.
    Диалоговые языки.
    Налицие большого числа задач, требующих для своего решения оперативного взаимодействия с ЭВМ, привело к появлению диалоговых ЯП. Диалоговые языки обладают рядом особенностей по отношению к обычным ЯП.
    Описание данных в них либо полностью отсутстует, либо существенно упрощено; нет иерархии операторов и, как следствие, линейная структура программ.
    Как правило, язык диалога содержит средства для описания алгоритмов и средства, обеспечивающие оперативное взаимодействие с программистом. К последним отностится набор запросов, посылаемых пользователю в диалоговой системе при своей работе, а также набор директив и операторов, набираемых пользователем в качестве ответа и подлежащих выполнению. Это директивы инициализации и окончания работы, редактирования текстов программы, работа с архивами и т. п.
    Среда исполнения, которая в обычных языках задается контекстом, в диалоговых – формируется в процессе диалогов.
    Одним из примеров диалоговых языков является Бэйсик. Бэйсик использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач.
    Последнее обновление:

  10. Andro Ответить

    Машинно-независимые языки– это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ПК.
    Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т. д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ.
    Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
    Проблемно-ориентированные языки
    С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно-ориентированные языки. Эти языки ориентированы на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме.
    Проблемных языков очень много, например:
    Фортран, Алгол – языки, созданные для решения математических задач;
    Simula, Слэнг – для моделирования;
    Лисп, Снобол – для работы со списочными структурами.
    Универсальные языки
    Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т. д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков PL/1. Второй по мощности универсальный язык называется Алгол-68.

  11. Башмак Ответить

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

    Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке.
    Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита.
    Семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.
    Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка программирования, например, операторы, идентификаторы, переменные, функции и процедуры, модули и т.д. В отличие от естественных языков правила грамматики и семантики для языков программирования, как и для всех формальных языков, должны быть явно, однозначно и четко сформулированы.
    Языки программирования, имитирующие естественные языки, обладающие укрупненными командами, ориентированными на решение прикладных содержательных задач, называют языками “высокого уровня”. В настоящее время насчитывается несколько сотен таких языков программирования, а если считать и их диалекты, то это число возрастет до нескольких тысяч. Языки программирования высокого уровня существенно отличаются от машинно-ориентированных (низкого уровня) языков. Во-первых, машинная программа в конечном счете записывается с помощью лишь двух символов 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операций, ориентированных на структуру процессора. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т.п. Команда на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементарные арифметические и логические операции. Команда содержит код и адреса ячеек, с содержимым которой выполняется закодированное действие.
    Языки программирования высокого уровня имеют следующие достоинства:
    алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
    набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
    конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде;
    используется аппарат переменных и действия с ними;
    поддерживается широкий набор типов данных.
    Таким образом, языки программирования высокого уровня являются машинно-независимыми и требуют использования соответствующих программ-переводчиков (трансляторов) для представления программы на языке машины, на которой она будет исполняться.

  12. Landakelv Ответить

    Искусственные языки, предназначенные для записи программ, называются языками программирования или алгоритмическими языками. Все языки программирования делятся машинно-зависимые и машинно-независимые.
    Машинно-зависимые языки зависят от типа компьютера. Каждый компьютер имеет свой собственный язык программирования – машинный язык – и может исполнять программы, записанные только на этом языке. Машинный язык включает в себя набор команд, выполняемых процессором данной конкретной машины. Команды на машинном языке представляют собой набор двоичных знаков.
    Программирование на машинном языке сложно и практически не используется. Для упрощения программирования используются машинно-ориентированные языки. Различают два уровня машинно-ориентированных языков:
    языки символического кодирования (мнемокоды);
    макроязыки.
    Мнемокод отличается от машинного языка заменой двоичных кодов операций и двоичных адресов операндов буквами или буквенно-цифровыми обозначениями. Перевод мнемокода на машинный язык выполняется с помощью специальной программы, называемой ассемблером. Ассемблер заменяет каждую команду мнемокода соответствующей командой машинного языка. Мнемокод часто называют языком ассемблера.
    Макроязык, наряду с символическими аналогами машинных команд, содержит макрокоманды, не имеющие аналогов в машинном языке. При переводе на машинный язык каждая макрокоманда заменяется группой команд машинного языка. Это повышает производительность труда программиста.
    Машинно-зависимые языки позволяют в наибольшей степени использовать возможности машины, однако требуют от программиста знания особенностей устройства машины. Эти языки используются для написания специального программного обеспечения.
    Машинно-независимые языки не зависят от типа компьютера, на котором они используются. Машинно-независимые языки в отличие от машинно-зависимых называются языками высокого уровня. Они делятся на процедурно-ориентированные и проблемно-ориентированные языки.
    Процедурно-ориентированные языки предназначены для описания алгоритмов решения задач и иногда называются универсальными языками программирования. Структура процедурно-ориентированных языков ближе к естественному языку, чем к машинному. Процедурно-ориентированными языками пользуются специалисты, знакомые с математическими формулировками решаемых задач, методами их решения и приемами программирования. Это могут быть как профессиональные программисты, так и специалисты в различных областях, хорошо владеющие программированием и методами решения задач в своей области.
    При программировании на процедурно-ориентированных языках не требуется детального знания устройства компьютера. Наиболее широко используемыми языками высокого уровня являются БЭЙСИК, ПАСКАЛЬ, СИ.
    Проблемно-ориентированные языки не требуют подробной записи алгоритма решения задачи. Пользователь должен лишь указать последовательность решения задач из ранее подготовленного набора, указать исходные данные и требуемую форму выдачи результата.

  13. Радужная Снежинка Ответить

    Машинно-независимые языки – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ЭВМ и ВС.
    Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т.д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ. То есть, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
    Проблемноориентированные языки. С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно – ориентированные языки. Эти языки – языки ориентированные на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме.
    Проблемных языков очень много, например: Фортран, Алгол – языки, созданные для решения математических задач; Simula, Слэнг – для моделирования; Лисп, Снобол – для работы со списочными структурами. О них я расскажу дальше.
    Универсальные языки. Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков Пл/1. Второй по мощности универсальный язык называется Алгол-68. Он позволяет работать с символами, разрядами, числами с фиксированной и плавающей запятой. Пл/1 имеет развитую систему операторов для управления форматами, для работы с полями переменной длины, с данными организованными в сложные структуры, и для эффективного использования каналов связи. Язык учитывает включенные во многие машины возможности прерывания и имеет соответствующие операторы. Предусмотрена возможность параллельного выполнение участков программ. Программы в Пл/1 компилируются с помощью автоматических процедур. Язык использует многие свойства Фортрана, Алгола, Кобола. Однако он допускает не только динамическое, но и управляемое и статистическое распределения памяти.
    Диалоговые языки. Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства, обеспечивающие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми языками. Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач.
    Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе.
    Одним из примеров диалоговых языков является Бейсик. Он использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач.
    Непроцедурные языки. Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами. Позволяя четко описывать как задачу, так и необходимые для её решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены, прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения.
    Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.

  14. Максимальный максимум Ответить

    Одной из самых революционных идей приведших к созданию автоматических цифровых вычислительных машин, была высказанная в 20-х годах 19 века Чарльзом Бебиджем мысль о предварительной записи порядка действия машины для последующей автоматической реализации вычислений – программе. И, хотя использованная Бебиджем запись программы на перфокартах, придуманная для управления такими станками французским изобретателем Жозефом Мари Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в ПК, принцип здесь по существу один. С этого момента начинается история программирования.
    Аду Левлейс, современницу Бебиджа, называют первым в мире программистом. Она теоретически разработала некоторые приемы управления последовательностью вычислений, которые используются в программировании и сейчас. Ею же была описана и одна из важнейших конструкций практически любого современного языка программирования – цикл.
    Революционным моментом в истории языков программирования стало появление системы кодирования машинных команд с помощью специальных символов, предложенной Джоном Моучли. Система кодирования, предложенная им, вдохновила одну из его сотрудниц Грейс Мюррей Хоппер. При работе на компьютере «Марк-1» ей и ее группе пришлось столкнуться со многими проблемами и все, что ими придумано, было впервые. В частности они придумали подпрограммы. И еще одно фундаментальное понятие техники программирования впервые ввели Хоппер и ее группа – «отладка».
    В конце 40-х годов Дж. Моучли создал систему под названием «Short Code», которая являлась примитивным языком программирования высокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти коды в двоичный машинный код. Система, разработанная Дж. Моучли, считается одним из первых примитивных интерпретаторов.
    Уже в 1951 г. Хоппер создала первый в мире компилятор и ею же был введен сам этот термин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиотеке (компьютера), а когда вы подбираете материал из библиотеки – это называется компиляцией» – так она объясняла происхождение введенного ею термина.
    В 1954 году группа под руководством Г. Хоппер разработала систему, включающую язык программирования и компилятор, которая в дальнейшем получила название Math-Matic. После удачного завершения работ по созданию Math-Matic Хоппер и ее группа принялись за разработку нового языка и компилятора, который позволил бы пользователями программировать на языке, близком к обычному английскому. В 1958 г. появился компилятор Flow-Matic. Компилятор Flow-Matic был первым языком для задач обработки коммерческих данных.
    Разработки в этом направлении привели к созданию языка Кобол (COBOL – Common Business Oriented Language). Он был создан в 1960 году. В этом языке по сравнению с Фортраном и Алголом, слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Он задумывался как основной язык для массовой обработки данных в сферах управления и бизнеса.
    Середина 50-х годов характеризуется стремительным прогрессом в области программирования. Роль программирования в машинных командах стала уменьшаться. Стали появляться языки программирования нового типа, выступающие в роли посредника между машинами и программистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula TRANslator – переводчик формул), разработанный группой программистов фирмы IBM в 1954 году (первая версия). Этот язык был ориентирован на научно-технические расчеты математического характера и является классическим языком программирования при решении на ПК математических и инженерных задач.
    Для первых языков программирования высокого уровня предметная ориентация языков была характерной чертой.
    Особое место среди языков программирования занимает Алгол, первая версия которого появилась в 1958 году. Одним из разработчиков Алгола был «отец» Фортрана Джон Бэкус. Название языка ALGOrithmic Language подчеркивает то обстоятельство, что он предназначен для записи алгоритмов. Благодаря четкой логической структуре Алгол стал стандартным средством записи алгоритмов в научной и технической литературе.
    В середине 60-х годов Томас Курц и Джон Камени (сотрудники математического факультета Дартмунтского колледжа) создали специализированный язык программирования, который состоял из простых слов английского языка. Новый язык назвали «универсальным символическим кодом для начинающих» (Beginner All-Purpose Symbolic Instruction Code, или, сокращенно, BASIC). Годом рождения нового языка можно считать 1964. Сегодня универсальный язык Бейсик (имеющий множество версий) приобрел большую популярность и получил широкое распространение среди пользователей ПК различных категорий во всем мире. В значительно мере этому способствовало то, что Бейсик начали использовать как встроенный язык персональных компьютеров, широкое распространение которых началось в конце 70-х годов. Однако Бейсик неструктурный язык, и поэтому он плохо подходит для обучения качественному программированию. Справедливости ради следует заметить, что последние версии Бейсика для ПК (например, QBasic) стали более структурными и по своим изобразительным возможностям приближаются к таким языкам, как Паскаль.
    Разработчики ориентировали языки на разные классы задач, в той или иной мере привязывали их к конкретной архитектуре ПК, реализовывали личные вкусы и идеи. В 60-е годы были предприняты попытки преодолеть эту «разноголосицу» путем создания универсального языка программирования. Первым детищем этого направления стал PL/1 (Programm Language One), разработанный фирмой IBM в 1967 году. Этот язык претендовал на возможность решать любые задачи: вычислительные, обработки текстов, накопления и поиска информации. Однако он оказался слишком сложным, транслятор с него – недостаточно оптимальным и содержал ряд невыявленных ошибок.
    Однако линия на универсализацию языков была поддержана. Старые языки были модернизированы в универсальные варианты: Алгол-68 (1968 г.), Фортран-77. Предполагалось, что подобные языки будут развиваться и усовершенствоваться, станут вытеснять все остальные. Однако ни одна из этих попыток не увенчалась успехом.
    Язык ЛИСП появился в 1965 году. Основным в нем служит понятие рекурсивно определенных функций. Поскольку доказано, что любой алгоритм может быть описан с помощью некоторого набора рекурсивных функций, то ЛИСП по сути является универсальным языком. С его помощью ПК может моделировать достаточно сложные процессы, в частности – интеллектуальную деятельность людей.
    Пролог разработан во Франции в 1972 году для решения проблем «искусственного интеллекта». Пролог позволяет в формальном виде описывать различные утверждения, логику рассуждений и заставляет ПК давать ответы на заданные вопросы.
    Значительным событием в истории языков программирования стало создание в 1971 году языка Паскаль. Его автор – швейцарский ученый Никлаус Вирт. Вирт назвал его в честь великого французского математика и религиозного философа XVII века Блеза Паскаля, который изобрел первое суммирующее устройство, именно поэтому новому языку было присвоено его имя. Этот язык первоначально разрабатывался как учебный язык структурного программирования, и, действительно, сейчас он является одним из основных языков обучения программированию в школах и вузах.
    В 1975 году два события стали вехами в истории программирования – Билл Гейтс и Пол Аллен заявили о себе, разработав свою версию Бейсика, а Вирт и Йенсен выпустили классическое описание языка «Pascal User Manual and Report».
    Не менее впечатляющей, в том числе и финансовой, удачи добился Филип Кан, француз, разработавший в 1983 году систему Турбо-Паскаль. Суть его идеи состояла в объединении последовательных этапов обработки программы – компиляции, редактирования связей, отладки и диагностики ошибок – в едином интерфейсе. Турбо-Паскаль – это не только язык и транслятор с него, но еще и операционная оболочка, позволяющая пользователю удобно работать на Паскале. Этот язык вышел за рамки учебного предназначения и стал языком профессионального программирования с универсальными возможностями. В силу названных достоинств Паскаль стал источником многих современных языков программирования. С тех пор появилось несколько версий Турбо-Паскаля, последняя – седьмая.
    Фирма Borland/Inprise завершила линию продуктов Турбо-Паскаль и перешла к выпуску системы визуальной разработки для Windows – Delphi.
    Большой отпечаток на современное программирование наложил язык Си (первая версия – 1972 год), являющийся очень популярным в середе разработчиков систем программного обеспечения (включая операционные системы). Этот язык создавался как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си сочетает в себе как черты языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не обеспечивают такие языки как Бейсик и Паскаль.
    Период с конца 60-х до начала 80-х годов характеризуется бурным ростом числа различных языков программирования, сопровождавшим кризис программного обеспечения. В январе 1975 года Пентагон решил навести порядок в хаосе трансляторов и учредил комитет, которому было предписано разработать один универсальный язык. В мае 1979 года был объявлен победитель – группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили Ада, в честь Огасты Ады Левлейс. Этот язык предназначен для создания и длительного (многолетнего) сопровождения больших программных систем, допускает возможность параллельной обработки, управления процессами в реальном времени.
    В течение многих лет программное обеспечение строилось на основе операционных и процедурных языков, таких как Фортран, Бейсик, Паскаль, Ада, Си. По мере эволюции языков программирования получили широкое распространение и другие, принципиально иные, подходы к созданию программ.
    Существует большое количество классификаций языков программирования по различным признакам. Наиболее распространенными являются следующие классификации:
    ? языки программирования высокого (Паскаль, Бейсик) и низкого уровня (Ассемблер);
    ? строго типизированные (Паскаль) и нестрого типизированные (Бейсик);
    ? с поддержкой объектно-ориентированного программирования (Си++) и без и т. д.
    Рассмотрим другую классификацию. Языки программирования делятся на:
    1) Машинно-ориентированные языки:
    ? машинные языки;
    ? языки символического кодирования;
    ? автокоды;
    ? макрос.
    2) Машинно-независимые языки:
    ? проблемно-ориентированные языки;
    ? универсальные языки;
    ? диалоговые языки;
    ? непроцедурные языки.
    Машинно-ориентированные языки
    Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ПК (внутреннего языка, структуры памяти и т. д.). Машинно-ориентированные языки имеют следующие особенности:
    ? высокое качество создаваемых программ (компактность и скорость выполнения);
    ? возможность использования конкретных аппаратных ресурсов;
    ? предсказуемость объектного кода и заказов памяти;
    ? для составления эффективных программ необходимо знать систему команд и особенности функционирования данного ПК;
    ? трудоемкость процесса составления программ (особенно на машинных языках и ЯСК), плохо защищенного от появления ошибок;
    ? низкая скорость программирования;
    ? невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.
    Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы.
    Машинный язык
    Отдельный компьютер имеет свой определенный машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным. В команде сообщается информация о местонахождении операндов и типе выполняемой операции.
    В новых моделях ПК намечается тенденция к повышению внутренних языков машинно-аппаратным путем реализовывать более сложные команды, приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирования.
    Языки Символического Кодирования
    Языки Символического Кодирования (далее ЯСК), так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ.
    Использование символических адресов – первый шаг к созданию ЯСК. Команды ПК вместо истинных (физических) адресов содержат символические адреса. По результатам составленной программы определяется требуемое количество ячеек для хранения исходных промежуточных и результирующих значений. Назначение адресов, выполняемое отдельно от составления программы в символических адресах, может проводиться менее квалифицированным программистом или специальной программой, что в значительной степени облегчает труд программиста.
    Автокоды
    Существуют языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд – они называются автокоды.
    В различных программах встречаются некоторые достаточно часто использующиеся командные последовательности, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включением последних в язык программирования, доступный программисту. Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием. В постановочной системе содержатся «остовы» – серии команд, реализующих требуемую функцию, обозначенную макрокомандой. Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в «остов» программы, превращая её в реальную машинную программу.
    В системе с генерацией имеются специальные программы, анализирующие макрокоманду, которые определяют, какую функцию необходимо выполнить и формируют необходимую последовательность команд, реализующих данную функцию.
    Обе указанных системы используют трансляторы с ЯСК и набор макрокоманд, которые также являются операторами автокода.
    Развитые автокоды получили название ассемблеры. Сервисные программы и пр., как правило, составлены на языках типа ассемблер.
    Макрос
    Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ на более сжатую форму называется макрос (средство замены).
    В основном, макрос предназначен для того, чтобы сократить запись исходной программы. Компонент программного обеспечения, обеспечивающий функционирование макросов, называется макропроцессором. На макропроцессор поступает макроопределяющий и исходный текст. Реакция макропроцессора на вызов ? выдача выходного текста.
    Макрос одинаково может работать, как с программами, так и с данными.
    Машинно-независимые языки
    Машинно-независимые языки – это средство описания алгоритмов решения задач и информации, подлежащей обработке. Они удобны в использовании для широкого круга пользователей и не требуют от них знания особенностей организации функционирования ПК.
    Подобные языки получили название высокоуровневых языков программирования. Программы, составляемые на таких языках, представляют собой последовательности операторов, структурированные согласно правилам рассматривания языка (задачи, сегменты, блоки и т. д.). Операторы языка описывают действия, которые должна выполнять система после трансляции программы на МЯ.
    Таким образом, командные последовательности (процедуры, подпрограммы), часто используемые в машинных программах, представлены в высокоуровневых языках отдельными операторами. Программист получил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд, а сосредоточиться на основных особенностях алгоритма.
    Проблемно-ориентированные языки
    С расширением областей применения вычислительной техники возникла необходимость формализовать представление постановки и решение новых классов задач. Необходимо было создать такие языки программирования, которые, используя в данной области обозначения и терминологию, позволили бы описывать требуемые алгоритмы решения для поставленных задач, ими стали проблемно-ориентированные языки. Эти языки ориентированы на решение определенных проблем, должны обеспечить программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме.
    Проблемных языков очень много, например:
    – Фортран, Алгол – языки, созданные для решения математических задач;
    – Simula, Слэнг – для моделирования;
    – Лисп, Снобол – для работы со списочными структурами.
    Универсальные языки
    Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т. д. Первый универсальный язык был разработан фирмой IBM, ставший в последовательности языков PL/1. Второй по мощности универсальный язык называется Алгол-68.
    Диалоговые языки
    Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства, обеспечивающие оперативное взаимодействие человека с ПК их назвали диалоговыми языками.
    Эти работы велись в двух направлениях. Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач, которые составлялись на любых раннее неразработанных (не диалоговых) языках. Разрабатывались также языки, которые кроме целей управления обеспечивали бы описание алгоритмов решения задач.
    Необходимость обеспечения оперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах. При внесении изменений в программу с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь структур исходной и объектной программ. Это позволяет осуществить требуемые редакционные изменения в объектной программе.
    Одним из примеров диалоговых языков является Бейсик.
    Непроцедурные языки
    Непроцедурные языки составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов), и языков связи с операционными системами.
    Позволяя четко описывать как задачу, так и необходимые для ее решения действия, таблицы решений дают возможность в наглядной форме определить, какие условия должны быть выполнены прежде чем переходить к какому-либо действию. Одна таблица решений, описывающая некоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмов решения.
    Табличные методы легко осваиваются специалистами любых профессий. Программы, составленные на табличном языке, удобно описывают сложные ситуации, возникающие при системном анализе.
    Языки программирования служат разным целям, и их выбор определяется удобностью для пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т. д. Такая разнотипность решаемых компьютером задач и определяет многообразие языков программирования. В программировании наилучший результат достигается при индивидуальном подходе, исходящем из класса задачи, уровня и интересов программиста.
    История создания языка программирования Basic и Visual Basic
    Язык программирования Basic был создан в 1964 году двумя профессорами из Dartmouth College – Джоном Кенеми и Томасом Куртцом для обучения студентов навыкам программирования. Язык получился настолько простым и понятным, что через некоторое время его начали применять и в других учебных заведениях. В 1975 году, с приходом первых микрокомпьютеров, эстафету Basic приняли Билл Гейтс и Пол Аллен, основатели Microsoft. Именно они создали новую версию Basic для первых компьютеров “Альтаир” (MITS Altairs), способную работать в 4КБ оперативной памяти. Со временем именно эта версия и превратилась в один из самых популярных языков программирования в мире. На пути к вершине славы у Basic было множество трудностей, которые он всегда с честью преодолевал, и когда появились первые персональные компьютеры IBM PC, именно он стал стандартом в программировании, но уже в виде GW-Basic. Потом был Turbo Basic, QuickBasic, Basic PDS, но всегда при разработке новой версии языка сохранялась совместимость с прежними версиями и программа, написанная для практически первого Basic, вполне (с незначительными изменениями) могла бы работать и в последующих версиях этого языка. Но наступили новые времена, и в начале 90-х появляется операционная система Microsoft Windows с новым графическим интерфейсом пользователя (GUI).
    Жизнь программистов превратилась в ад. Чтобы создать простую программу, приходилось писать несколько страниц кода: создавать меню и окна, менять шрифты, очищать память, “рисовать” кнопки и т.д. Однако преимущества нового интерфейса были настолько неоспоримы, что уже третья версия этой операционной системы стала фактическим стандартом для персонального компьютера. В это время в недрах Microsoft велось несколько параллельных проектов по созданию нового языка программирования для Windows. И в 1991 году под лозунгом “теперь и начинающие программисты могут легко создавать приложения для Windows” появилась первая версия нового инструментального средства Microsoft Visual Basic. В тот момент Microsoft достаточно скромно оценивала возможности этой системы, ориентируя ее, прежде всего, на категорию начинающих и непрофессиональных программистов. Основной задачей тогда было выпустить на рынок простой и удобный инструмент разработки в тогда еще довольно новой среде Windows, программирование в которой представляло проблему и для опытных специалистов. Система программирования, созданная разработчиками Visual Basic, позволяла “отстраниться” от сложнейшей внутренней структуры Windows и создавать программы из “кубиков”, как в детском конструкторе. Меню, окна, списки, кнопки, поля ввода текста и другие элементы интерфейса Windows добавлялись в программу с помощью простейших операций drag&drop.
    Свою первую программу VB-программисты создавали уже через несколько минут после начала изучения этого языка! Более того, Visual Basic позволял разработчикам создавать новые объекты-“кубики”, которые также могли использоваться в программах наравне со стандартными. И хотя многие С-программисты тихо посмеивались над попытками Microsoft сделать простой и понятный инструмент разработки Windows-программ, Visual Basic начал свое победное шествие по миру, и ничто не могло остановить этот процесс. Последние барьеры упали в 1994 году с выпуском Visual Basic for Applications. Именно в это время, после включения VBA в состав Microsoft Office, Basic начинает превращаться в один из основных стандартов программирования для Windows. Для фирмы Microsoft язык Basic имеет особое значение, в свое время разработка варианта Basic для компьютера Altair 8800 положила начало трудовому программистскому пути ее основателей, Билла Гейтса и Пола Аллена. Поэтому в свое время – в 1989 году, когда пришла пора распределить основные направления создания сред разработки на различных языках программирования между различными фирмами, Microsoft оставила за собой QuickBasic – среду разработки программ на Basic’е, отказавшись, к примеру, от дальнейшей работы над языком программирования Pascal, оставив его фирме Borland, которая, в свою очередь, остановила работы над своей версией Basic’а (впоследствии Pascal стал языком Delphi).
    Первоначально задумывавшийся как игрушка, Visual Basic от Microsoft невероятно быстро завоевал программистский мир. Его популярность обусловлена двумя причинами: относительной простотой и продуктивностью. Программы на VB работают медленнее своих аналогов на C/C++, но все же они достаточно быстры для многих деловых целей и требуют гораздо меньше времени на разработку. Формы были той самой сберегающей усилия абстракцией, которую предложил VB программистам Windows. IDE VB позволила разрабатывать окна графически, перетаскивая элементы управления, такие как кнопки и списки, с панели инструментов в форму. Получив удовлетворительный внешний вид формы, можно было переходить к кодовой части и писать обработчики событий для каждого элемента управления формы.
    Разработка приложения в VB, таким образом, состояла из создания нескольких форм, которые общались друг с другом и, возможно, обращались к базе данных за необходимой информацией. В результате форма оказалась окном, которое предлагало использовать оконные методы гораздо более удобным способом. VB уменьшил число ошибок путем удаления некоторых скрытых элементов синтаксиса C/C++. Кроме специальных случаев, выражения ограничивались одной строкой кода, а переменные должны были объявляться и инициализироваться в отдельных строках кода. Операторы присваивания и сравнения использовали один и тот же символ, однако грамматика VB требовала, чтобы эти операторы применялись таким образом, чтобы их намерения были четко обозначены.
    Возможно, самым важным было то, что отсутствовали указатели — требование Билла Гейтса, начиная с первых версий Microsoft BASIC. Хотя указатели полезны, так как разрешают прямой доступ к памяти по любому адресу, их использование сопряжено с ошибками в том случае, если они применяются неаккуратно. Требование грамматической простоты BASIC восходит к тому факту, что первоначально он был создан как язык для обучения: “Beginner’s All-purpose Symbolic Instructional Code” (Многоцелевой символьный командный код для начинающих). VB версии 6 — это уже мощный язык, который можно использовать для создания распределенных приложений с применением компонентов СОМ и Microsoft Transaction Server. Microsoft предложила трехуровневый подход для архитектур “клиент-сервер”, в котором “тонкие” пользовательские интерфейсы взаимодействовали с удаленными компонентами VB для получения данных из базы данных или с другой машины.
    При помощи VBScript и VBA (VB для приложений) можно писать сценарии для web-браузеров и автоматизировать приложения Microsoft Office. Более того, VB6 можно использовать для создания элементов управления Active-X, работающих вместе с Internet Explorer, хотя это делается крайне редко, поскольку требуется, чтобы на машине клиента, работающего в Интернете, была установлена библиотека времени исполнения DLL VB. Начиная с VB5, программы VB компилировались в машинный код, но они были основаны на применении DLL, предоставляющей повсеместно используемые функции и реализующей объектные возможности VB. Интересно то, что компилятор VB для трансляции использует многопроходный режим, а в конечном счете полагается на компилятор Microsoft C++ для получения выходного машинного кода после компиляции в промежуточный язык. В этом свойстве VB — использование библиотеки времени исполнения и внутреннего интерфейса C++ — видны зародыши .NET.
    История создания языка программирования C#
    Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg). Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM — Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).
    Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990-х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.
    С# и .NET являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# е новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 20 лет.
    Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью (а) создавать оболочки (wrappers) вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними, и (б) создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ-компоненты.
    Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно-ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ — Java — лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов Java не поддерживает ни ту, ни другую возможность). С# — это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.
    Особенности С#:
    – Полный и хорошо определенный набор основных типов.
    – Встроенная поддержка автоматической генерации XML-документации. Автоматическое освобождение динамически распределенной памяти.
    – Возможность отметки классов и методов атрибутами, определяемыми пользователем. Это может быть полезно при документировании и способно воздействовать на процесс компиляции (например, можно пометить методы, которые должны компилироваться только в отладочном режиме).
    – Полный доступ к библиотеке базовых классов .NET, а также легкий доступ к Windows API (если это действительно необходимо).
    – Указатели и прямой доступ к памяти, если они необходимы. Однако язык разработан таким образом, что практически во всех случаях можно обойтись и без этого.
    – Поддержка свойств и событий в стиле VB.
    – Простое изменение ключей компиляции. Позволяет получать исполняемые файлы или библиотеки компонентов .NET, которые могут быть вызваны другим кодом так же, как элементы управления ActiveX (компоненты СОМ).
    – Возможность использования С# для написания динамических web-страниц ASP.NET.
    Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ остается в этой области наилучшим из языков низкого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода. Также этот язык активно используется для создания современных видеоигр, например игра Battlefield 3 частично написана на C#, и полностью на технологии .NET

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *