Есть ли язык программирования, который использует символы, отличные от символов в (нерасширенной) таблице ascii?
Я не вижу, кто примет такое решение, но есть ли такой язык?
Причина, по которой я спрашиваю это (или некоторые мелочи, если хотите), заключается в том, что я только что закончил делать восьмую итерацию моей версии dvorak для "разработчиков" (большой акцент на специальные символы). И четыре ключа в настоящее время не используются!
Так как я никогда не хочу наткнуться на новый язык, чтобы попробовать, только чтобы узнать, что в моем макете не хватает решающего специального персонажа, я решил спросить сообщество.
Если нет необходимости в каких-либо других символах, кроме основных, то что было бы наилучшим образом (для программиста, конечно, это SO) неиспользуемых ключей? Что-то из расширенной таблицы ascii? Или намеренно оставить их неиспользованными и сделать что-нибудь классное с AutoHotKey?
9 ответов
Да, есть (хотя бы один): APL
Вот игра жизни Конвея, написанная в APL:
Он использует эту раскладку клавиатуры:
Де-факто стандартная реализация Haskell, GHC, поддерживает синтаксис Unicode, если
{-# LANGUAGE UnicodeSyntax #-}
указан в верхней части файла. Это позволяет вам использовать →
для типов функций и лямбд, ⇒
для классов типов, ←
для понимания списка и т.д..
Точнее, поддерживаемый синтаксис:
ASCII Unicode alternative
:: ∷ U+2237 PROPORTION
=> ⇒ U+21D2 RIGHTWARDS DOUBLE ARROW
forall ∀ U+2200 FOR ALL
-> → U+2192 RIGHTWARDS ARROW
<- ← U+2190 LEFTWARDS ARROW
-< ↢ U+2919 LEFTWARDS ARROW-TAIL
>- ↣ U+291A RIGHTWARDS ARROW-TAIL
-<< U+291B LEFTWARDS DOUBLE ARROW-TAIL
>>- U+291C RIGHTWARDS DOUBLE ARROW-TAIL
* ★ U+2605 BLACK STAR
Кроме того, различные библиотеки предоставляют операторы Unicode (используя поддержку Haskell для символов Unicode в именах операторов): http://www.haskell.org/haskellwiki/Unicode-symbols
Fortress, математический / научный язык программирования, разработанный (среди прочих) Гаем Л. Стилом из Java, когда он еще был в Sun, широко использует математические операторы Unicode и т. Д.
Существует не только определенное представление языка в ASCII, но также есть определенный способ преобразования ASCII в "визуализированную" версию с использованием TeX. Вы также можете (насколько я понимаю, я) использовать операторы Unicode непосредственно в вашем источнике - есть просто "ярлык" ASCII для вещей, которые трудно напечатать (насколько я понимаю - я признаю, что не уверен в этом).
На сайте есть пример источника и как он отображается.
C# позволяет переменным содержать символы Unicode. Например, символ ɢ (латинская заглавная буква G, U+0262) является совершенно допустимым символом в переменной C#.
Мой форк F#: https://github.com/Heather/fsharp
let ° msg = System.Console.WriteLine( msg.ToString() )
let ◄ = 5
let ★ x = x + ◄
let (-★-) x y = x + y
let © = "© 2013"
let ► =
fun x -> 2 + x
sprintf "Heather %s" project version © |> °
► ◄ |> fun ▼ ->
★ <| (▼ -★- ▼) |> °
Язык сценариев для старой Мастерской программистов Macintosh (MPW) использовал множество не-ASCII-символов для реализации того, что было в основном версией оболочки Unix. Фактически, некоторая документация все еще доступна. Например, он использовал ∑ для перенаправления.
PL/I использует символ "вверх ногами-L" для оператора "not"; VM360, который я когда-то использовал, использовал "^" в качестве эквивалента ASCII (я не думаю, что у EBCDIC было "^").
Будет ли это рассчитывать?
Китайская версия Python
http://www.chinesepython.org/doc/tut/tut/node3.html
Китайский язык:
>>> 甲 = 12
>>> 乙 = 3
>>> 甲 + 乙
15
>>> 甲 + 乙**乙
39
>>> 甲 = 0 #(可以重新指定值)
>>> 乙 = 甲 + 1
>>> 寫 乙
1
Английский:
>>> j = 12
>>> y = 3
>>> j + y
15
>>> j + y**y
39
>>> j = 0
>>> y = j + 1
>>> print y
1
В Perl 6 есть дополнительные операторы Unicode, а также возможность добавлять пользовательские операторы.
Вы, вероятно, не должны ждать этого перед перераспределением ваших ключей. Я не знаю, может ли Rakudo работать с операторами Unicode.