Среда, 17.10.2018, 20:21
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта
Форма входа
Категории раздела
Мои статьи [1]
Поиск
Друзья сайта
  • Форум про степлер
  • Кабардинка Компьютерс
  • Сайт Абадябера
  • Вики по Эзотерическим языкам программирования
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Язык программирования СТЕПЛЕР.
    Главная » Статьи » Мои статьи

    Язык программирования СТЕПЛЕР

    В настоящее время существует множество различных языков программирования, каждый из которых имеет свою область применения: одни созданы для веб - программирования, другие – для математических программ, третьи – ещё для чего-то. Есть также языки программирования,  созданные не для практического применения – эзотерические, например, brainfuck, befunge или intercall. А сейчас мы рассмотрим один достаточно интересный язык программирования, который можно отнести одновременно к обеим группам – и к эзотерическим, и к практическим. Итак, знакомьтесь – язык программирования СТЕПЛЕР.


    1.    Концепция языка.
    Давайте здесь рассмотрим, чем СТЕПЛЕР интересен, что он представляет собой и где может быть использован.
    Начнём с истории. Степлер был разработан автором этой статьи Kakos_nonos’ом 14 февраля 2011 года, и планировался как минимальный язык программирования с максимальными возможностями. Если внимательно присмотреться, то получается, что идея языка очень похожа на идею даунгрейда – «имея малое - добиться многого», из чего можно сделать вывод, что степлер – Даундрейд язык программирования. И это действително так: он содержит совсем не большое количество команд, его полное описание помещается всего на нескольких страницах, но, тем не менее, на Степлере можно писать достаточно серьёзные программы. 
    Теперь давайте поговорим о степлере как о языке программирования. К какой парадигме он относится? Вот тут-то и начинаются проявляться особенности языка: его нельзя однозначно отнести ни к одной из известных на данный момент парадигм. В нём собраны элементы из различных парадигм, но, к тому же, его нельзя назвать мультипарадигмным, для этого он слишком мал. Например, в степлере есть процедуры, значит, его можно назвать процедурным, но, в это же время, процедуры никак не отделены от основной программы, то есть, вы можете перейти на процедуру как на метку, или наоборот, вызвать метку как процедуру. Также в степлере есть стек, поэтому, язык можно назвать стековым, но можно писать программы, без использования стека, используя только переменные, а можно использовать стек и не использовать переменные.
    Также в степлере есть несколько особенностей, которых нет в других языках программирования, например, запись числа, с помощью которой можно делать достаточно интересные вычисления, или методы модификации чисел, аналога которых нет ни в одном другом языке программирования. 
    Где  может применяться степлер? Конечно,  для создания больших коммерческих программ он вряд ли будет применяться, поскольку из-за необычного подхода к программированию, написание сложных программ на нём является не очень простым занятием. Однако степлер, как нельзя лучше, подходит для теоретического и экспериментального программирования, например, для реализации некоторых алгоритмов, поскольку, как уже говорилось выше, программирование на степлере отличается от программирования на других языках, а это значит, что алгоритм, который может запросто реализоваться на обычном языке, потребует для реализации больших умственных вложений, или наоборот, некоторые задачи, которые на обычных программах требуют большого кода, на степлере решаются буквально в одну строчку. К тому же, степлер можно использовать как тренировку для ума, а ведь ум для программистов – главное оружие.
    Давайте теперь рассмотрим сам язык, его команды и программы на нём.

    2.Описание языка
    Мы не будем рассматривать язык полностью, для этого есть дополнительная литература, ссылки на которую будут в конце  статьи. Мы лишь рассмотрим  команды, которые используются в большинстве программ и являются основными.
    Самой главной и, по сути, основной командой в языке является команда присваивания. То есть команда, которая присваивает ячейке памяти какое – либо значение. Но чтобы с ней разобраться, надо вначале понять структуру памяти степлера. Степлер имеет множество пронумерованных ячеек памяти, то есть, у каждой переменной есть свой номер, и доступ к ней осуществляется по этому номеру.
    Теперь можно говорить уже и о команде присваивания. Она имеет такой формат:
    $(приёмник)(источник)
    То есть, вначале идёт идентификатор команды (знак доллара), дальше в скобках пишется номер переменной приёмника, а потом, в следующих скобках, - значение, которое мы туда будем заносить. Вот для примера:
    $(5)(77)
    Эта команда даст пятой ячейке значение 77.
    А теперь начинается самое интересное. Вы, наверное, удивитесь, но с помощью этой, на первый взгляд кажущейся примитивной команды, можно делать очень много: ввод/вывод, сложные вычисления и даже некоторые условные конструкции. Как же это может быть?  Всё дело в том, что в поля «источник» и «приёмник» можно помещать не только обычные числа, но и выражения, написанные с помощью обратной польской нотации. Например, вот эта запись означает 2+2: 
    2^2+
    Если вы знакомы с этим методом записи, то для вас не составит труда разобраться в языке. Надо будет лишь изучить  операторы. Вот некоторые из них:
    ^  подняться на один уровень вверх на стеке.
    +  сложить вершину стека с подвершиной
    *  умножить вершину стека с подвершиной
    -  отнять от подвершины вершину.
    $  Берём с вершины стека число и возвращаем туда значение переменной с этим номером.
    |  Отрицание на ноль. Если на вершине стека 0, то он превращается в 1, а если же не ноль, то в ноль.
    Это не все операторы, которые есть в языке, есть ещё несколько, но описывать их здесь мы не будем, вы можете прочитать о них в книге.
    Вот несколько примеров команд, использующих эти операторы.
    $(5)(8^9+) Копировать в пятую ячейку число 17 (8+9)
    $(4^3*)(771) Копировать в 12-ую ячейку число 771
    $(3)(6$) Копировать в третью ячейку число, находящееся в шестой ячейке.
    А как же с помощью этой команды можно производить ввод/вывод? Устройства ввода/вывода обозначены специальными ячейками памяти, и при попытке чтения из этих ячеек будет происходить чтение из устройства ввода вывода, а при записи в эти ячейки будет, соответственно, запись в это устройство. Есть две такие ячейки: первая и вторая. Первая предназначена для символьного ввода/вывода, а вторая – для числового. То есть, чтение из первой ячейки будет сопровождаться чтением символа с клавиатуры, а именно: выполнение программы остановится до тех пор, пока вы не нажмёте какую-либо клавишу, и после этого  переменная примет значение нажатой клавиши. Запись же в эту переменную будет сопровождаться выводом на экран соответствующего символа. 
    Есть ещё численный ввод/вывод. Он отличается от символьного только тем, что вместо первой переменной там вторая.
    Вот примеры:
    $(2)(50) Вывести на экран число 50.
    $(4)(2$) Ввести с клавиатуры число и поместить его в четвёртую ячейку.
    $(1)(100) Вывести на экран букву d.

    Есть ещё вот такой способ вывода строки:
    [Hello world]
    А вот уже достаточно интересная программа:
    $(2)(2$^2$+)
    Она просит ввести с клавиатуры два числа, вычисляет их сумму и выводит её на экран. Как видите, всего одна строчка, а ведь если писать на другом языке программирования, то программа будет намного больше.
    Теперь давайте разберём команды управления. Есть два типа команд управления: переход на метку и вызов процедуры. В этой статье мы разберём только первый тип  – команды перехода на метку. 
    Эта команда имеет следующий формат:
    #(условие)<метка>
    Работает эта команда так: переход на метку осуществляется только тогда, когда число в поле «условие» равно нулю. Например, вот команда условного перехода, где переход будет проходить,  если в седьмой переменной находится ноль, в противном же случае выполнение программы продолжится:
    #(6)<label>
    Метка же обозначается так:
    {label}
    Но как же нам использовать другие условия перехода? Неужели есть только одно условие – «переменная равна нулю»? Нет, конечно. Есть разнообразные другие условия переходов, больше, меньше и много других. Например, вот переход: если пятая переменная равна семи.
    #(5$^7-)<label>
    Здесь используется правило, что если A=B, то A-B=0. Подобным образом делаются и другие условия.

    3.Дополнительные возможности
    Нет, возможности языка не ограничиваются одним лишь консольным вводом/выводом, он может также работать с графикой в разрешении 640*480 256 цветов, работать с файлами, портами ввода/вывода и прерываниями.
    Именно поэтому и достаточно трудно назвать степлер чисто эзотерическим языком, поскольку на нём можно написать программу практически любой сложности, то есть по возможностям он не уступает другим языкам программирования для DOS, таким как Pascal или Basic. Ниже приведён пример простейшей графическо программы, рисующей две линии.
    Program
    ~(1)(1)
    ~(3)(10,30,70,50,10)
    ~(3)(30,50,50,30,14)

    Думаю, что для простого ознакомления с языком этой информации вполне достатоно. 

    4.Пример программы.

    Ниже приведён  пример простенькой программы на этом языке. Что она делает?  Она выполняет поиск простых чисел в заданном диапазоне. Поиск производится методом перебора делителей, то есть для каждого числа проверяется делимость его на числа от двух до корня из числа, и если же на одно из чисел оно делится, значит, число не простое. Вот код программы:

    Program
    [Prime number Founder 2.0]
    [From]
    $(6)(2$^1-)
    [To]
    $(7)(2$)
    {next}
    $(6)(6$^1+)
    $(5)(6$@)
    $(4)(1)
    {nl}
    $(4)(4$^1+)
    #(6$^4$%)<l>
    #(4$^5$-|)<nl>
    $(2)(6$)
    {l}
    #(6$^7$-|)<next>


    Разбор этой программы слишком большой, поэтому приводить его здесь не будем – он есть в книге.

    5.Заключение.
    Вот мы и вкратце познакомились с интересным языком программирования – степлером. Как вы заметили, он достаточно сильно отличается от других языков как по синтаксису, так и по стилю программирования. Но, не смотря на это, степлер достаточно многофункциональный язык и на нём можно писать серьёзные программы.
    Если же вам понравился язык и вы хотите познакомиться с ним поближе, то можете скачать книгу, в которой очень подробно описан сам язык, алгоритмы работы на нём и примеры программ. Также вы можете присоединиться к сообществу «степлеристов» - любителей языка степлер, где можно проконсультироваться по поводу языка, показать свои программы или просто пообщаться.


    Категория: Мои статьи | Добавил: Kakos_nonos (09.02.2012)
    Просмотров: 879 | Рейтинг: 2.3/3
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Бесплатный конструктор сайтов - uCozКабардинка Компьютерс © 2018