Глагол (язык программирования) — Википедия

# Глагол (язык программирования)

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 62.221.113.92 (обсуждение) в 21:52, 22 ноября 2008. Она может серьёзно отличаться от текущей версии.

| Необходимо перенести содержимое этой статьи в статью «Оберон (язык программирования)». Вы можете помочь проекту, объединив статьи. В случае необходимости обсуждения целесообразности объединения, замените этот шаблон на шаблон {{к объединению}} и добавьте соответствующую запись на странице Википедия: К объединению. Пожалуйста, также проверьте историю правок. |

У этого термина существуют и другие значения, см. Глагол.

Глагол
Семантика: | императивный
Тип исполнения: | компилируемый
Появился в: | 2003
Система типов: | строгая
Основные реализации: | «Разработки на Глаголе»
Диалекты: | отсутствуют
Испытал влияние: | Оберон, Паскаль

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

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

## Основные черты языка

Консольные шашки на Глаголе (из примеров приложений)

Все данные в Глаголе имеют определённый тип, в рамках Глагола называемый видом.

Основные виды, используемые в Глаголе:

- знаковый (`ЗНАК`)
- числовые (вещественные — `ШИРВЕЩ`, `ВЕЩ` и целые — `ШИРЦЕЛ`, `ЦЕЛ`, `УЗКЦЕЛ`)
- логические (`КЛЮЧ`)
- множества (`МНОЖ`)
- составные виды (`РЯД` и `НАБОР`).

Также в Глаголе предусмотрены вид `ДОСТУП` — для обеспечения доступа к переменным и вид `ЗАДАЧА` — для обеспечения доступа к вызову задач.

Данные могут быть постоянными и переменными.

Простейшие преобразования данных выполняются так называемыми действиями. Действия можно объединять в выражения. В выражениях всегда должно соблюдаться соответствие видов. Более сложный порядок для преобразования данных задаётся указаниями. Последовательности указаний и данные можно объединять в задачи и отделы.

Обычно приложение строится из нескольких отделов. Каждый отдел существует в двух представлениях: текстовом (с которым работает человек) и машинном (которое получается из соответствующего текстового представления с помощью преобразователя Глагола).

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

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

## Примеры программ на Глаголе

Вывод на экран слова «Привет»:

     ОТДЕЛ Привет+;

     ИСПОЛЬЗУЕТ Вывод ИЗ "...\Отделы\Обмен\";

     УКАЗ
       Вывод.Цепь("Привет!")

     КОН Привет.

## Отличия Глагола от Оберона-2

### Нет в Глаголе

- связанных с типом процедур
- встроенных процедур: ASH, CAP, SIZE, EXCL, INCL, LONG
- процедур модуля SYSTEM: BIT, CC, LSH, ROT, GETREG, PUTREG, NEW
- псевдонимов в IMPORT (ИСПОЛЬЗОВАТЬ) объявлениях
- второго параметра у встроенной процедуры ASSERT (ПРОВЕРИТЬ)

### Изменено в Глаголе

- Изменены размеры некоторых типов данных.
- Процедуры: LEN (РАЗМЕР), SYSTEM.GET (ОБХОД.ИзПамяти), SYSTEM.PUT (ОБХОД.ВПамять), SYSTEM.ADR (ОБХОД.Адрес), SYSTEM.MOVE (ОБХОД.Образ) определены для типа INTEGER (ЦЕЛ), а не для типа LONGINT (ШИРЦЕЛ).
- Для переменных меткой экспорта являются знаки '-' и '+', а не '-' и '*'.
- Для констант, типов и процедур меткой экспорта является знак '-', а не '*'.
- У процедуры HALT (СТОП) параметром может быть не только целая константа, но и целая переменная.
- При объявлении формальных параметров параметры-переменные выделяются при помощи оконечных знаков '+' или '-'. Знак '-' отмечает параметры, доступные только для чтения.
- По-другому записывается оператор WITH (ДЛЯ).
- Для определения чётности-нечётности выражения целого типа вместо процедуры ODD (нечётность) используется процедура ЧЕТ (чётность).
- Формальные параметры-значения процедур не могут быть массивами и записями.

### Добавлено в Глагол

- Условная компиляция исходных текстов. Операторы условной компиляции задаются в <* *> скобках. В качестве условий эти операторы могут использовать любые постоянные выражения.
- Возможность указывать путь к используемым модулям.
- Внутри строки символов последовательность #nn, где nn - двузначное шестнадцатеричное число, обозначает знак с кодом nn.
- Процедура ДЛИНА(x), которая для 'x' типа ARRAY OF CHAR (РЯД ИЗ ЗНАК) возвращает или позицию первого 0X знака, или LEN(x), если такого знака в массиве не существует.
- Процедура ДЛИНА(x), которая для строки 'x' возвращает её длину.
- Запуск приложения осуществляется передачей управления модулю, у которого название после слова MODULE (ОТДЕЛ), отмечено "+". Модули, названия которых отмечены "-", не содержат операторов. Они служат только для объявления понятий из модулей других языков программирования.
- Процедура NEW (СОЗДАТЬ) может не только размещать строку ARRAY OF CHAR (РЯД ИЗ ЗНАК), но и присваивать ей начальное значение.
- Объявление ARRAY n OF CHAR (РЯД n ИЗ ЗНАК) можно записывать как ЦЕПЬ[n].
- Встроенная функция ЗАДАНО(ц) возвращает TRUE (ВКЛ) для строки "ц", если в настройках преобразователя задан ключ -кц.
- Встроенный тип БЕГУНОК и соответствующие процедуры ПОСТАВИТЬ и СМЕСТИТЬ служат для быстрого последовательного обращения к элементам массивов.
- Процедура ОБНУЛИТЬ(x), которая заполняет нулями все переменные, входящие в состав 'x'. 'x' может быть типа ARRAY или типа RECORD.

## Разработки на Глаголе

«Разработки на Глаголе» распространяются свободно. Среду разработки приложений на Глаголе можно изменять по своему усмотрению. Однако исходные коды преобразователя Глагола (написанного на Глаголе) не распространяются, чтобы исключить возможность появления диалектов языка.

Первый выпуск Глагола был произведён 19 мая 2003 года; в настоящий момент язык малораспространён, но постоянно развивается. Участие в проекте, в развитии языка полностью добровольно.

## Компиляторы

### Преобразователь Глагола

Преобразователь Глагола (ПГ) — компилятор языка программирования Глагол. Представляет из себя консольный исполнимый файл. Преобразователь Глагола переводит исходные тексты приложений в машинный код формата COFF, далее при помощи редактора связей создаётся исполняемое приложение.

В полученном коде переменные простых видов имеют следующий размер (в битах):

     КЛЮЧ   — 8
     ЗНАК   — 16
     ЯЧЦЕЛ  — 8
     УЗКЦЕЛ — 16
     ЦЕЛ    — 32
     ШИРЦЕЛ — 64
     ВЕЩ    — 32
     ШИРВЕЩ — 64
     МНОЖ   — 32

Дополнительно преобразователь Глагола можно настроить для создания кода, содержащего данные для внешнего отладчика, самопроверку работы приложений, отработки встроенной задачи ПРОВЕРИТЬ, установку в ПУСТО переменных доступа при каждом вызове задач, в которых определены эти переменные. Самопроверка следит за тем, чтобы не было выхода за границы ряда, переполнения при арифметических действиях, выхода за границы допустимых значений простых видов, доступа по значению ПУСТО, деления на ноль.

Преобразователь Глагола, реализованный на данный момент только под платформу Windows, способен обрабатывать тексты в Уникоде.

### Малый ПГ

14 сентября 2006 был произведён новый выпуск разработок на Глаголе. Одним из нововведений был малый преобразователь Глагола (МПГ), исходные тексты которого были добавлены в архив с разработками. Он преобразует код сокращённого Глагола в код ассемблера ARMASM, что позволяет создавать программы под ОС PocketPC. Сокращённый Глагол представляет из себя версию данного языка, упрощённую с целью повысить быстродействие программ и уменьшить нагрузку на процессор.

## Ссылки

- Разработки на Глаголе — официальный сайт языка программирования Глагол.
- «Программование по-русски» — сайт о программировании на Глаголе.

Компьютерные языки ( сравнение • IDE • история • хронология )
[скрыть]

RegExp • Fortran • Lisp • РЕФАЛ • ISWIM • Forth • C • Prolog • CLU • ML • Smalltalk • SQL • SGML • Haskell

Часто упоминаемые
[показать]

ЯСВУ | Common Lisp • Erlang • F# • Haskell • JavaScript • JScript • J • K • Lua • Nemerle • OCaml • Prolog • Python • Scala • Scheme • SML • Ruby • Tcl • РЕФАЛ •
ЯВУ | Algol • C++ ( C++11 ) • C# • Cobol • D • Java • PHP • Simula • Basic ( VB • VBA • VB.NET • VBScript ) • Pascal ( Ada • Modula / M2 / M3 • Oberon / O2 / CP • Delphi ) •
ЯНУ | Assembler • BitC[en] • C ( ANSI • C99 • C11 ) • Cyclone • Forth • IEC 61131-3 • Limbo • Objective-C • C-- • CIL ( CLR ) • JVM • LLVM • opcode ( byte • machine • p • threaded ) •
DSL | ActionScript • AutoLisp • bash • CLOS • dBase • FoxPro • .ini • ORM • RegExp ( Perl • PCRE ) • SQL • SGML ( CSS • HTML • HTML5 • XML • XSLT ) • Tcl / Tk • ΤΕΧ • UML •

Все
[показать]

Высокоуровневые, исследовательские, академические
[показать]

лямбда | Lisp ( Arc • Clojure • CLOS • Common Lisp • Emacs Lisp • EuLisp[en] • Franz Lisp[en] • ISLISP[en] • Le Lisp[en] • MultiLisp[en] • newLISP[en] • Picolisp[en] • Scheme ( Kernel[en] • Racket • T[en] ) • SKILL[en] • XLISP[en] • Zetalisp[en] ) • COWSEL[en] / POP-2[en] / POP-11[en] • Dylan • Hop[en] • Logo • MDL[en] • Planner • Tcl ( Expect • Incr Tcl • STOOOP • Tk ) •
не лямбда | APL ( A+[en] • J • K • ZPL[en] ) • Cat • Erlang ( Elixir[en] • LFE[en] ) • Joy • Pure[en] • Q[en] • SETL • SISAL[en] • Пифагор • РЕФАЛ •

тип-лямбда
(Х-М)

ISWIM • FP[en] • FL[en] • SASL • Hope • Id[en] • KRC • Miranda • Orwell[en] •
ML ( Standard ML ( Concurrent ML[en] ) • Caml • ( OCaml • Camlp4[en] • F# ) • Lazy ML[en] • Alice ML • Extended ML[en] • Extensible ML[en] ) •
ATP ( Agda • ALF[en] • ATS ( Dependent ML ) • Cayenne[en] • Coq • Epigram[en] • HOL[en] • Idris[en] • Isabelle[en] • LCF[en] • Matita[en] • Mercury • NuPRL[en] • PVS[en] • Twelf[en] ) •
Clean • BitC[en] • Elm[en] • Felix[en] • Fortress • Frege[en] • Hume[en] • LiveScript[en] • Nemerle • Opa[en] • Orc[en] • Rust • Scala •
Haskell ( Generic Haskell[en] • Jaskell[en] • Mondrian • Ωmega[en] • Template Haskell[en] ) •

предикат | Prolog ( Constraints • Schelog • Visual Prolog ) • CLIPS • Datalog[en] • Escher[en] • Go! • Mercury • Planner • Poplog[en] •
ОО и гибрид | ABCL[en] • Alef[en] • AMPL • AspectJ[en] • Axum[en] • BETA • Boo • Chapel • Clarion • CLU • CoffeeScript • Cool[en] • Dart • E • Eiffel ( SCOOP[en] ) • F-Script[en] • Factor • Go • Groovy • Icon • Io[en] • Ioke[en] • JavaScript ( JSON ) • JScript • Joule[en] • Lua • NewtonScript[en] • Nu[en] • Oz • Python • Perl • Rebol • Ruby • Sather[en] • Smalltalk ( Self[en] ) • Snobol • XL •

Традиционные
[показать]

Algol ( Algol 68 ) • Cobol • ABAP/4 • Fortran ( Speedcoding[en] • Coarray[en] • HPF[en] • Ratfor[en] ) • PL/1 ( XPL[en] ) • Simula • Псевдокод •
Basic ( Altair Basic • GW Basic • Turbo Basic • QBasic • Quick Basic • Blitz Basic • Power Basic • XBasic • Gambas • Visual Basic ( VBA • VB.NET • VBScript ) • Dark Basic • Pure Basic • Free Basic • Small Basic ) • AutoIt •
Pascal ( Ada • Modula • Modula-2 • Oberon • Object Pascal • Modula-3 • Oberon-2 • Component Pascal • Delphi • Chrome/Oxygene • Clascal[en] • Concurrent Pascal[en] • SuperPascal[en] ) • Euclid[en] ( Concurrent Euclid[en] ) • Seed7 •
C++ ( C++11 • C++/CLI • C++/CX • Charm++ • Concurrent C++. • Managed C++ • μC++[en] • RTTI • STL ) • D • C# ( Cω • Polyphonic C# • Spec# • Sing# ) • Java ( Ateji PX[en] • J++ • J# • Join Java[en] ) • LPC[en] • Pike •
ABC • CHILL • CPL • Euphoria • Mesa[en] • Newsqueak[en] • Occam • PEARL[en] • PHP • Rexx • X10 • Рапира • РАЯ • Робик •

Низкоуровневые
[показать]

BCPL • B • BLISS[en] • C ( ANSI • C99 • C11 • C Blocks • Cilk • Concurrent C. • Parallel C • Split-C[en] • Vala ) • BitC[en] • Cyclone • Forth • Limbo • Objective-C •
IEC 61131-3 ( Instruction List • Structured Text • FBD • Ladder Diagram • SFC ) • DSSP • HAL/S •
Assembler ( high-level[en] • typed[en] ) • C-- • CIL ( CLR ) • JVM • LLVM • opcode ( byte-code • machine code • p-code • threaded code ) •

Эзотерические
[показать]

Brainfuck ( Ook! • COW • feckfeck • Whitespace • Spoon • LOLCODE ) • Befunge • FALSE • HQ9+ • INTERCAL • Malbolge • P′′ • Piet • Shakespeare • Thue • Unlambda •

Предметно-специфичные ( ЯОП • EUD[en] • Визуальное программирование • Полнота по Тьюрингу )
[показать]

Описания, структурирования, моделирования | Access • ActionScript • ADO • AutoLisp • ChucK[en] • Clipper • ColdFusion • DAO • dBase • Erlang • FoxPro • DSSSL • GPSS • IMAP • .ini • JSON • Linda • MUMPS • ODBC • ORM • Perl • PostScript ( EPS ) • QBE • sed • Snobol • ΤΕΧ • Tk ( Itk[en] • Tcl • Tkinter ) • UML • UMLS • Verilog • VHDL • Wiki • SGML ( CSS • HTML • HTML5 • SXML[en] • XML • XProc • XSLT ) • SQL ( LINQ • JDBC • PL/SQL • PL/pgSQL ) •
dm, чд | Fortran • Fortress • Julia • Maple • Mathcad • Mathematica • MatLab • Octave • R • S • SAS[en] • SETL •
ИИ ( abm, atp ) | AgentSpeak[en] • Datalog[en] • Escher[en] • Go! • GOAL[en] • JACK[en] • Lisp • OPS5[en] • Prolog ( Constraints ) • Planner • РЕФАЛ • ML ( Agda • ALF[en] • ATS ( Dependent ML ) • Cayenne[en] • Coq • Epigram[en] • HOL[en] • Idris[en] • Isabelle[en] • LCF[en] • Matita[en] • Mercury • NuPRL[en] • PVS[en] • Twelf[en] ) •
Визуальные | AgentSheets[en] • Alice • G/LabVIEW • Glade • MS VPL • ORM • Scratch • Sikuli • Spreadsheets • UML • VisSim • Yahoo! Pipes • Блок-схема ( ДРАКОН ) •
Командные | AppleScript • AWK • batch • DCL[en] • JCL • shell ( bash • Csh • grep ) • Perl • Python • Tcl • Windows PowerShell •
Встраиваемые | ( < Lisp> • CLOS • DSSSL • Qi[en] • Schelog • Shen[en] • SXML[en] ) • ( < Haskell> • Bluespec[en] • Curry • Timber[en] • Yampa ) • RegExp ( AWK • grep • PCRE • Perl • Ruby • sed • Snobol • Tcl ) • Tk ( Itk[en] • Tcl • Tkinter ) •

Источник — «http://ru.wikipedia.org/w/index.php?title=Глагол_(язык_программирования)&oldid=12147495»
Категории:

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

Скрытая категория:

- Википедия:Статьи к перемещению