Новые или не очень известные парадигмы, синтаксические особенности и поведение языков программирования? - PullRequest
4 голосов
/ 14 апреля 2010

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

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

Я хотел бы знать, не могли бы вы помочь мне с вашим творчеством:

  • Какие функции с точки зрения синтаксиса языка и встроенных функций, а также, может быть, даже новых парадигм, я могу использовать в своем языке, чтобы он оставался бесполезным, но более увлекательным, приятным, интересным и / или отличным для программирования?

Ответы [ 9 ]

3 голосов
/ 15 апреля 2010

Я всегда думал, что трудно придумать что-то хорошее

Вы были правы. Вот почему Джон Бэкус, Кен Айверсон, Никлаус Вирт, Робин Милнер, Кристен Нигард и Оле-Йохан Даль, Алан Кей и Барбара Лисков выиграли Turing Awards - они внесли хорошие новые идеи в дизайн языки программирования.

Если вы хотите добавить интерес к своим собственным проектам, это отличные люди, из которых можно украсть.

2 голосов
/ 14 апреля 2010

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

2 голосов
/ 14 апреля 2010

В дополнение к комментарию Майкла о функциональных языках, посмотрите на замыкания и блоки (как это сделано в Objective-C). Они позволяют вам рассматривать функции или фрагменты кода как первоклассные объекты, которые вы можете передавать и вызывать по требованию. С этим можно сделать кое-что интересное, и оно также станет парадигмой программирования массовых многоядерных систем.

Вы также можете изучить каррирование, что означает привязку некоторых параметров функции, чтобы вы могли использовать ее для меньшего количества аргументов. Таким образом, вы можете создать функцию логарифма base-b, которую вы можете использовать для создания функций логарифма base-2, base-10 и т. Д.

И что-то менее функциональное (как в языке): если посмотреть на то, как Руби рассматривает все как объект (даже числа), с этим можно немало поработать. Как объектно-ориентированная среда выполнения с самоанализом, интерпретатор «бесплатно» и т. Д. Реализация ООП проще, чем вы думаете.

За последние 30 с лишним лет было сделано много всего, не ограничивайтесь программированием в стиле 70-х! ;) Если вы ищете вдохновение, ознакомьтесь с Ruby, Python, Scala, Objective-C, JavaScript (читайте Дуглас Крокфорд JavaScript: The Good Parts ) и т. Д.

2 голосов
/ 14 апреля 2010

И ASM, и BASIC являются императивными языками, поэтому вы можете рассмотреть возможности функциональных языков программирования, особенно лямбд и карт.Возможно, вы захотите рассмотреть интересные потоки управления, например, возможность генерировать исключение, а затем, в результате перехвата исключения и выполнения определенного вызова, возобновить работу с того момента, когда возникло исключение (хотя и смодифицированная среда).Также часто интересны сопрограммы или другие формы параллелизма на уровне языка.

1 голос
/ 14 апреля 2010

посмотрите на Форт. Это что-то оригинальное. Слишком оригинально.

0 голосов
/ 30 апреля 2014

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

  • реальные продолжения на нефункциональном языке
  • языки, которые позволяют пользователю создавать новые элементы синтаксиса
    • FORTH и J могут быть отправными точками.
    • Pogoscript также интересен, потому что в пользовательском коде могут быть созданы такие конструкции управления потоком, как if / elseif / else и while / wend arten't special.
    • пользовательские операторы, определенные пользователем, на самом деле не новы: я думаю, что Haskell, Nemerle, Kaleidoscope и некоторые другие уже делают это, но даже это не будет "скучно"
0 голосов
/ 15 апреля 2010

См. Википедия: Языки программирования . Есть много полезных ссылок, особенно в разделе Таксономии .

Так много "нового" на самом деле просто "забытое старое". Я буду думать о некоторых «популярных» языках программирования того времени.

0 голосов
/ 14 апреля 2010

Я всегда думал, что было бы неплохо применить CSP к основанному на стеке языку. Может стать довольно интересным.

0 голосов
/ 14 апреля 2010

intercal имеет множество необычных языковых функций B -)

...