Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 23(67)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4

Библиографическое описание:
Фролов Ю.Д., Гурова Е.А. ЭЗОТЕРИЧЕСКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ // Студенческий: электрон. научн. журн. 2019. № 23(67). URL: https://sibac.info/journal/student/67/147583 (дата обращения: 22.12.2024).

ЭЗОТЕРИЧЕСКИЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Фролов Юрий Дмитриевич

студент 1 курса, ФГБОУ ВО Армавирский Государственный Педагогический Университет,

РФ, г. Армавир

Гурова Евгения Александровна

старший преподаватель кафедры информатики и информационных технологий обучения, институт прикладной информатики, математики и физики, АГПУ,

РФ, г. Армавир

Язык программирования - это формальный язык, задача которого - запись компьютерных программ. Они представляют собой комплект правил, позволяющие компьютеру исполнять конкретный вычислительный процесс, организовывать управление разными объектами и т. д. [1].

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

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

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

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

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

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

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

Рассмотрим некоторые классы эзотерических ЯП.

Эзотерические языки программирования можно разбить на следующие категории: Befunge, Brainfuck, Chef, FALSE, Feckfeck, HQ9+, INTERCAL, Lmcode, LOLCODE, Malbolge, Piet, Shakespeare, Spoon, Thue, Unlambda, Whitespace. Подробнее о классах ниже.

Brainf * ck-подобные языки. Большущий класс в эзотерических языках программирования - это Brainf * ck-подобные языки, направленные на уменьшение синтаксиса при сохранении тьюринг-полноты, в числе которых CaneCode, Ook! (язык орангутанов), COW, Brainfork (мультизадачный Brainf * ck), f * ckf * ck, DoubleF * ck, Whitespace, Spoon, LOLCODE, HQ9+ [5].

Еще в отдельном классе есть языки, использующие многомерное представление программ: двумерные Byter, Befunge, Befunge-93 (двумерный, не тьюринг-полный), одномерный Unefunge, трехмерный Trefunge, четырехмерное 4DL и применяющий цветовое кодирование Piet.

Иной класс языки, основанные на копировании своего же кода - Smetana, Smith, Muriel.

Языки «черного ящика», подобные Malbolge и Alpaca, сделанные, дабы затруднить написание кода.

В ряде языков осуществлен «литературный» синтаксис, к примеру, Chef (рецепты),Shakespeare (пьесы Шекспира), Haifu (стихотворения хокку), ArnoldC (фразы Арнольда Шварценеггера), FiM ++ (письма принцессе Селестии).

Язык Var’aq, базирующийся на логике клингонской расы из сериала «Звездный путь», относится к классу ЯП с «нечеловеческой логикой».

Иные языки, разработанные с эзотерическими целями: Cool, GOTO ++, Lithp, Paranoid, Sartre, Simple, Whenever, smilescript, emoticon, iot, Lazy K, Beatnik, reMorse [3].

Языки, как Thue и Unlambda, предусмотрены для испытания математических концепций.

К языкам, сделанным для иных целей, временами именуемых эзотерическими, относятся P ′ ′, QuakeC, MC ++, Autocode «Engineer» [5].

Более бесспорный расклад к делению эзотерических языков на группы заключается в том, считаются ли они полными по Тьюрингу: имеется ли возможность создать при помощи ЯП вычислимую функцию или же нет. Одним из языков полных по Тьюрингу считается, к примеру, INTERCAL. На сайте южноамериканского разработчика программного обеспечения, хакера и соучредителя Open Source Initiative Рэймонда, INTERCAL описывается как «предназначенный, чтобы добиться полноты по Тьюрингу и предельного отличия от имеющих место быть языков программирования» [2].

INTERCAL из-за своих особенностей, по утверждению ESR, может «вызывать слезы (смеха) у сильных мужчин» и считается «очагом интернационального общества техномазохистов».

Невзирая на свой несерьезный нрав, INTERCAL стал не только «жизнеспособным», но и послужил почвой для сотворения множества иных эзотерических языков программирования.

Но стоит и понимать, что из-за своих особенностей среди эзотерических языков имеются не Тьюринг полные языки. К примеру, HQ9 +, имея всего 4 команды. Этот забавный язык способен решить все «стандартные» задачки молодого разработчика: от «Hello, world!» до вывода квайна.

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

На теоретическом уровне, они имеют те же возможности, собственно что и всевозможные Тьюринг-полные ЯП, как эзотерические и рабочие, но по причине ограничений непросто воплотить в жизнь какие-то типы программ с их поддержкой. INTERCAL нередко именуют «трясиной» [2].

В качестве примера, рассмотрим два эзотерических ЯП.

Haskell - это стандартизированный чистый функциональный язык программирования с поддержкой отложенных вычислений.

На самом деле этот язык не такой эзотерический и его даже иногда используют в нормальных проектах. На нем был написан xmonad (это тайловый оконный менеджер для X) [4].

В общем то, это язык узкой направленности и не обычного синтаксиса.

На данный момент этот язык не так востребован, но концепции заложенные в не востребованы.

Это чисто функциональный язык программирования, который обычно используется для очень узких задач [4].

Malbolge - эзотерический язык программирования (названный в честь 8 круга ада Данте). Основная цель написания языка - это быть максимально сложным для написания программ. Лишь через два года после создания этого языка на нем был написан “Hello World”, но сделано это было с помощью другой программы, которая просто перебирала все варианты кода [1].

А вот и код программы:

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5 [m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

или

('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL (I&%$#"`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@> [1]

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

 

Список литературы:

  1. Википедия https://ru.wikipedia.org/wiki/Malbolge#Hello_world
  2. https://habr.com/ru/company/edison/blog/313334/
  3. https://tproger.ru/digest/esoteric-programming/
  4. https://www.haskell.org/
  5. Путеводитель автостопщика по потаенным знаниям. Лекция, непрочитанная автором в Потаенном Институте Несуществующих Стандартов. http://rsdn.org/article/philosophy/languages.xml

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.