Алгоритмический язык — формальный язык, используемый для записи, реализации или изучения алгоритмов. Всякий язык программирования является алгоритмическим языком. Первым алгоритмическим языком стал Fortran, созданный в 1957г. специалистами фирмы IBM под руководством Джона Бекуса. Сейчас существует большое множество алгоритмических языков: Pascal, C, Algol, PL1, Basic, Lisp, Prolog и многие другие. Алгоритмические языки являются языками высокого уровня и понятны человеку, однако компьютер способен выполнить только программу, состоящую из машинных слов (кодов), которые человеку непонятны, поэтому используют трансляторы.
Транслятор (англ. translator — переводчик) — это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд.
Трансляторы бывают 2-х типов: компиляторы и интерпретаторы.
Интерпретатор последовательно читает предложение, переводит их на машинный язык и выполняет.
Компиляторы переводят весь текст в машинный код, который в дальнейшем может быть запущен на выполнение.
Лекция. Seq2Seq, машинный перевод.
Источник: studwood.net
9. Языки программирования. Машинный код. Трансляторы . Двоичное кодирование информации.
Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах.
Машинный код процессора Процессор компьютера все команды и данные получает в виде электрических сигналов. Их можно представить как совокупности нулей и единиц, то есть числами. Разным командам соответствуют разные числа.
Поэтому реально программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом . Уровни языков программирования Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня . Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком самого низкого уровня является язык ассемблера , который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками.
Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка.
Чем машинный код отличается от ассемблера
Популярными на сегодня являются языки программирования: Pascal (Паскаль), создан в конце 70-х годов основоположником множества идей современного программирования Никлаусом Виртом и имеет возможности, позволяющие успешно применять его при создании крупных проектов. Basic (Бейсик), д ля этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире.
Он создавался в 60-х годах в качестве учебного языка и очень прост в изучении. Его современная модификация Visual Basic, совместимая с Microsoft office, позволяет расширять возможности пакетов Excel и Access. С (Си), Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый.
Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора. На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix). Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми.
А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной.
Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime. 10.Языки программирования.
Классификация языков программирования. Трансляторы. Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы.
Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими данными при различных обстоятельствах. Машинный код процессора Процессор компьютера все команды и данные получает в виде электрических сигналов. Их можно представить как совокупности нулей и единиц, то есть числами. Разным командам
соответствуют разные числа. Поэтому реально программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом . Транслятор — программа, которая принимает на вход программу на одном языке (он в этом случае называется исходный язык, язык высокого уровня), и преобразует её в программу, написанную на другом языке (соответственно, целевой язык и объектный код, язык низкого уровня). Транслятор
Интерпретатор разновидность транслятора. Переводит и выполняет программу с языка высокого уровня в машинный код строка за строкой.
Компилятор выдает результат в виде исполняемого файла (в данном случае считаем, что компоновка входит в компиляцию). Этот файл: • транслируется один раз — может быть запущен самостоятельно • не требует для работы наличия на машине создавшего его транслятора Компиляторы полностью обрабатывают весь текст программы (он иногда называется исходный код). Они просматривают его в поисках синтаксических ошибок (иногда несколько раз), выполняют определенный смысловой анализ и затем автоматически переводят (транслируют) на машинный язык — генерируют машинный код.
11.Алгоритмы и программы. Способы изображения алгоритмов. Блоксхемы. Схемы основных алгоритмов. . Алгоритм — это точно определенное описание способа решения задачи в виде конечной (по времени) последовательности действий . Под алгоритмом понимают последовательность действий, приводящих к решению задачи или достижению какого-либо результата.
Другими словами, алгоритм – синоним слов план, программа действий. Блок-схема — распространенный тип схем, описывающий алгоритмы или процессы, изображая шаги в виде блоков различной формы, соединенных между собой стрелками . Другой способ – операторный, к которому относятся алгоритмические языки, отличается меньшей наглядностью и большей строгостью правил, что мешает на начальных этапах планирования. На блок-схеме действия различного характера изображают фигурами разной формы, а их последовательность показывают стрелками. Внутри фигур текстом или другими изобразительными средствами описывают действия, которые нужно выполнить. Основные фигуры международного стандарта для блок-схем
| Фигура | Характер действий | ||
| Начало, конец алгоритма | |||
| Любые действия, чаще всего арифметические; | |||
| блоки действий | |||
| Да | Нет |
Проверка условий Начало, конец цикла
| Ввод, вывод данных | |||||||||
| Соединитель в разветвляющихся | |||||||||
| алгоритмах. | |||||||||
| Ссылка при переносе части алгоритма на | |||||||||
| другую страницу (хотя этого следует избегать) | |||||||||
| Виды алгоритмов | |||||||||
| Линейный | Разветвляющийся | Циклический | |||||||
| Один вход | Один вход | Один вход | |||||||
| Выполнить а | Проверить | Повторить | |||||||
| Выполнить б | Выполнить а | ||||||||
| Выполнить а | Выполнить b | ||||||||
| Один выход | |||||||||
| Один выход | Один выход | ||||||||
12.Технологии программирования. Основные принципы структурного программирования. Еще в начале развития вычислительной техники специалисты стали говорить о необходимости технологии программирования, обеспечивающей достаточно быструю и качественную реализацию программных проектов.
| Структурное программирование | Объектно-ориентированное программирование |
| Чтобы составить большой вычислительный | Компьютерную модель представляют как объект , |
| алгоритм, его делят на небольшие независимые | характеризующийся набором свойств , |
| составные части – программные модули | выраженных числами или наборами чисел, и |
| (подпрограммы, процедуры). При этом следует | процедурами (методами), которые задают или |
| придерживаться основного принципа: выделять | изменяют эти свойства. |
| составные части не по размеру программы, а по |
функциям , придумывая и четко формулируя, какую часть всей работы будет выполнять каждый модуль принципы:
| четыре основных принципа – правила: | • | абстрагирование | |
| • | модульность | • | Инкапсуляция |
| • | Наследование | ||
| • | нисходящее проектирование | ||
| • | Модульность | ||
| • | простота структуры | ||
| • | Иерархия | ||
| • | сквозной структурный контроль . | • | Типизация |
| • | Параллелизм | ||
| • | Устойчивость . | ||
Структурное программирование 1. Модулями называют отдельные независимые составные части, из которых можно собирать разные конфигурации инженерного объекта. 2. Нисходящее проектирование, т.е. проектирование сверху вниз, имеет два смысла: вниз по уровням иерархии модулей и последовательная детализация каждого модуля, от общего плана к частным мелким деталям.
3. Под простой структурой программы подразумевают ее блок-схему, которая не должна быть запутанной и должна легко просчитываться, проверяться при простых исходных данных (соответствовать одному или нескольким видам алгоритмов). 4. Сквозной структурный контроль означает для больших проектов необходимость коллективной работы, документирования всех этапов и взаимной проверки на всех этапах проектирования в соответствии с первыми тремя принципами.
13.Реляционная модель данных. Основные объекты СУБД Access и их назначение. База данных (БД) — структурированный организованный набор данных, описывающих характеристики какой-либо физической или виртуальной системы. База данных — это организованная структура, предназначенная для хранения информации.
СУБД — инструментальное программное обеспечение, предназначенное для организации ведения БД. СУБД Access входит в состав Microsoft Office и предназначена для работы с реляционными БД, т.е. представленными в табличной форме. Достоинством Access является возможность создания СУБД (т.е. программы управления) без программирования. Основные объекты окна БД имеют следующее назначение: • таблица — основное средство для хранения информации в БД; • запрос — это инструмент для извлечения необходимой информации из исходных таблиц и представления ее в удобной форме. • форма — это основное средство для ввода данных, управления СУБД и вывода результатов на экран монитора; • отчет — это специальное средство для формирования выходных документов и вывода их на принтер; • макросы в Access представляют собой совокупность внутренних команд, предназначенных для автоматизации работы с БД; • модули являются программами, создаваемыми средствами языка VBA, и похожи на макросы в Word и Excel. Таблицы и запросы связываются между собой с помощью схемы данных.
Источник: studfile.net
Алгоритмические языки. Трансляторы
Алгоритмический язык – это язык записи алгоритма.
Последовательность команд, записанных на алгоритмическом языке, называется программой. Соответственно, алгоритмические языки представляют собой средства описания данных и алгоритмов решения задач, и разработаны для составления программы пользователем. Они отличаются друг от друга различными свойствами и областью применения.
1. Класс машинно-зависимых языков. Центральный процессор ЭВМ предназначен для выполнения команд, которые представляются в виде групп двоичных цифр (битов), т.е. в виде последовательностей из нулей и единиц. Команды, представленные в таком виде, считаются записанными в машинном коде или на машинном языке.
Двоичный код очень удобен для использования в ЭВМ, но чрезвычайно не удобен для человека и поэтому в наши дни почти не применяется. Цифровая форма записи команд, необходимость разбивать алгоритм на мелкие операции делают программу ненаглядной и громоздкой, затрудняют ее отладку. «Индивидуальный характер» языков ЭВМ исключает прямой перенос программы с машины одного типа на машину другого типа. Процесс программирования на машинном языке сложен и трудоемок, требует тщательности, большого внимания, хорошего знания особенностей ЭВМ, на которых предстоит производить расчеты.
Переход от более абстрактной формы записи к машинному коду можно автоматизировать. Первые программы, которые выполняли такое преобразование, назывались ассемблерами. Главное преимущество ассемблеров в том, что они дают возможность пользователям оперировать символическими наименованиями, состоящими из букв и цифр, вместо того, чтобы запоминать их двоичные эквиваленты.
Язык ассемблера делает доступными все программно-управляемые компоненты компьютера, поэтому он применяется для написания программ, использующих специфику конкретной аппаратуры. Ассемблер – это наиболее трудоемкий язык программирования, и из-за его низкого уровня (уровень языка характеризует степень его близости к естественному, человеческому языку) не удается построить средства отладки, которые существенно снизили бы трудоемкость разработки программ. Команды Ассемблера очень примитивны, так как соответствуют операциям, которые центральный процессор может непосредственно выполнить, – например, команды сравнения двух символов или сложения двух чисел, поэтому программирование на ассемблере требует от программиста детальных знаний технических компонентов ПК. Ассемблер используется, в основном, для системного программирования (компоненты ОС, драйверы и др.).
2.Класс машинно-ориентированных языков. Данный класс представляют языки группы С, С++, Турбо С. Разработчики данных языков попытались объединить возможности ассемблера со встроенными структурами данных.
3. Класс универсальных языков. Важным шагом в развитии языков программирования было появление машинно-независимых языков. Разработчики этих языков стремились: во-первых, создать языки, воспринимаемые любым компьютером; во-вторых, максимально учесть специфику класса задач, для решения которых данный язык предполагалось использовать.
Например, для многих научно-технических задач характерны большие расчеты по сложным формулам, поэтому в ориентированные на такие задачи языки вводят удобные средства для их записи. Использование понятий, терминов, символов, привычных для специалистов соответствующей области знаний, облегчает им изучение языка, упрощает процесс составления и отладки программ.
К настоящему времени разработано большое количество машинно-независимых языков программирования: Бейсик, Паскаль, Фортран и др. Машино-независимые языки обычно называют языками высокого уровня.
Каждая команда языка высокого уровня обычно соответствует сразу нескольким машинным командам. В связи с этим для различных ЭВМ можно использовать один абстрактный, т.е. не встроенный в определенный процессор, язык высокого уровня.
Важным преимуществом алгоритмических языков высокого уровня по сравнению с машинным языком является их универсальность, независимость от конкретного типа ЭВМ. Программа, написанная на таком языке, может выполняться на разных машинах, при переходе на другую ЭВМ не требуется никаких переработок.
Чтобы программы на языках высокого уровня работали, необходимы специальные программы-переводчики. Программа-переводчик называется транслятором. Транслятор переводит исходную программу (на языке высокого уровня) в объектную программу, т.е. программу на машинном языке. Трансляторы делятся на компиляторы и интерпретаторы.
Компилятор переводит исходную программу в объектную целиком. Интерпретатор транслирует и выполняет команды исходной программы по одной.
4. Класс проблемно-ориентированных языков представлен языками Лого, РПГ, системой программирования GPSS и др. Язык Лого был создан с целью обучения школьников основам алгоритмического мышления и программирования. Лого – диалоговый процедурный язык, реализованный на основе интерпретатора с возможностью работы со списками и на их основе с текстами, оснащенный развитыми графическими средствами.
РПГ, или генератор отчетов, представляет собой язык, включающий многие понятия и выражения, которые связаны с машинными методами составления отчетов и проектирования форм выходных документов. Язык используется главным образом для печати отчетов, записанных в одном или нескольких файлах баз данных.
Система программирования GPSS ориентирована на моделирование систем с помощью событий. В терминах этого языка легко описывается и исследуется класс моделей массового обслуживания и другие системы, работающие в реальном масштабе времени.
5. Класс функциональных языков программирования представлен языками Лисп, Пролог и др. Лисп является инструментальным средством для построения программ с использованием методов искусственного интеллекта. Особенность этого языка заключается в удобстве динамического создания новых объектов. В качестве объектов могут выступать и сами исходные объекты.
В настоящее время для Лиспа определились две сферы активного применения: проектирование систем искусственного интеллекта и анализ текстов на естественном языке.
В последние годы развивается объектно-ориентированный подход к программированию. Наиболее полно он реализован в языках Форт, СМОЛТОК, Delphi и т.п. Например, Форт сочетает в себе свойства операционной системы, интерпретатора и компилятора одновременно. Основной чертой языка является его открытость.
Программист может легко добавлять новые операции, типы данных и определения основного языка. Форт позволяет поддерживать многозадачный режим работы, использует принцип одновременного доступа программ.
Источник: studopedia.org