Языки программирования, использующие специальные символы - PullRequest
4 голосов
/ 14 июля 2010

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

  • Относительный (&le; &ge; &ne; для <= >= !=)

  • поразрядно и последовательно (&cap; &cup; для & |)

  • Логический (&and; &or; &not; для && || !)

  • Стрелки (&rarr; &rArr; для -> =>)

Я знаю, что APL и Крепость используют специальные символы & ndash; первый часто является предметом шуток по этому поводу & mdash; но оба они очень ориентированы на академические и научные использовать. Имеются ли специальные символы в современном неакадемическом языке?

Ответы [ 8 ]

7 голосов
/ 15 июля 2010

Специальные символы имеют место в современном неакадемическом языке?

Да, , но , поскольку на большинстве настольных компьютеров поддержка специальных символов по-прежнему ужасна (плохие редакторы, плохие шрифты, вы называете это),

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

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

Некоторым людям нравится постпроцессор , т. Е. Симпатичный принтер, который принимает последовательности символов ASCII и отображает их как нечто другое. Хотя я всегда находил этот стиль ужасно запутывающим, он довольно популярен и успешен у некоторых программистов на Haskell.

4 голосов
/ 14 июля 2010

По-моему, им нет места в языке, но они определенно принадлежат препроцессору по умолчанию .Вы можете получить проблему с клавиатурой APL, хотя.(и возможная визуальная неоднозначность).

Ограниченным примером этого в качестве предварительной / последующей обработки мог бы быть код с помощью cweaved.

3 голосов
/ 18 июля 2010

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

2 голосов
/ 17 июля 2010

Единственный язык, который я использовал, который использует символы не ASCII, это TI-BASIC , который использует для назначения, / / для сравнения,имеет встроенные константы π и , функцию и т. д.

На ПК я сомневаюсь, что я бы много использовал операторы не-ASCII, просто потому, что это такгораздо быстрее набрать !=, чем искать в карте символов.

2 голосов
/ 15 июля 2010

Специальные символы и являются зарезервированными словами в Scala. используется для введения привязок генератора, тогда как используется в определениях функций для отделения списков параметров от тела функции.

Примеры:

for {
  word ← List("Hello", "World")
  character ← word
} println(character)

val square = (x: Int) ⇒ x * x

Следует отметить, что компилятор Scala также допускает альтернативы ASCII вышеуказанным символам (т.е. <- и =>).

2 голосов
/ 14 июля 2010

Это интересная концепция, но вас не беспокоит, что многократное написание одной и той же вещи сделает анализ кода более сложным, особенно для IDE? Не говоря уже о дополнительном времени, затрачиваемом на обучение тому, что эти символы означают для начинающих новых программистов? Если вы поддерживаете юникод и, следовательно, возможно, другие языки (переменные на японском?), Это создает еще один слой непостижимости. Кроме того, насколько полезным вы нашли их логическую противоположность, триграф С (http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C)? : -)

0 голосов
/ 15 июля 2010

Не уверен насчет языка общего назначения, но в DSL есть место для домена, где они разумны. И это, безусловно, можно сделать на некоторых современных языках. Для примера в Scala см. это сообщение в блоге .

0 голосов
/ 15 июля 2010

Мне очень нравится идея использования правильных персонажей.Однако для того, чтобы использовать его, мне бы очень хотелось, чтобы клавиатура с дополнительными клавишами пунктуации использовалась для них.И пока мы это делаем, такие вещи, как { } ( ) " ? + *, тоже должны быть на их собственных ключах.

...