2010-10-14 17 views
9

To jest ciekawość bardziej niż cokolwiek: czy istnieje język programowania, który pozwala na nazw zmiennych, funkcji i klas przy użyciu Unicode zamiast ASCII (z wyjątkiem, oczywiście, znaków specjalnych, takich jak ' + ")? Czy jakieś popularne języki mają na to wsparcie?Język programowania oparty na Unicode

Co więcej, jeśli jakiś wspólny język obsługuje Unicode, czy istnieje sposób na konwersję istniejącego interfejsu API na język wybrany przez użytkownika? Wydaje się, że byłoby pomocne dać programistom możliwość uczenia się API w ich własnym języku. Wyobrażam sobie pobieranie standardowego interfejsu API (na przykład doładowanie), a następnie pobieranie standardowego mapowania tłumaczeń, a następnie możliwość programowania w moim ojczystym języku.

+8

Nie zgadzam się, że warto nauczyć się API w swoim własnym języku. Prawie żaden interfejs API tego nie obsługuje, więc od razu możesz zmoczyć stopy językiem angielskim. Przy okazji przetłumaczono nazwy funkcji w formułach Excel. To sprawia, że ​​jest to królewski ból w tyle, aby porozmawiać z kimś o formułach programu Excel, jeśli nie używasz tego samego języka/wersji. –

+4

Czy potrafisz nazwać rozsądnie nowoczesny i profesjonalny język programowania, który * nie jest *? (PHP nie liczy się jako profesjonalny :)) – Timwi

+4

Wątpię, czy byłoby to sensowne użycie dla takiego języka. Wyobraź sobie, że masz język, w którym angielski użytkownik pisze "jeśli var jest większy niż 5, a następnie wykonaj somefunction()", a drugi pisze po niemiecku "wenn var größer als 5 dann mache irgendeinefunktion". Nie warto pisać kodu, w którym variablenames są chińskie. język musi być jednakowy dla wszystkich, a jeśli chcesz programować, angielski jest w zasadzie obowiązkowy (jestem niemiecki). Dzięki temu programowanie jest łatwiejsze dla wszystkich, nie dla ograniczonej lokalnej publiczności – Tseng

Odpowiedz

6

Jak widać z innych odpowiedzi, pozwala na to większość nowoczesnych języków, w tym Perl, Python, Go, Ruby, Java, C♯, warianty seplenienia, Fortess, ADA i wiele innych. C i C++ nie, ale nie są nowoczesne.

chodzi C♯ od MSDN:

Zasady identyfikatorów podanych w tej sekcji odpowiadają dokładnie te zalecane przez standard Unicode załączniku 15


Jak do konwersji API do wybranego języka - nie jest to wykonalne. Będziesz potrzebował tłumacza, który zrozumie niuanse i znaczenie każdej metody, zmiennej i nazwy klasy i przetłumaczy je poprawnie - to nie to samo, co używanieznaków z wybranego języka w kodzie.

+0

Wierzę, że również ruby. – Ikaso

+0

Jeśli chodzi o konwersję API na inny język. Nie chcę sugerować automatycznego tłumaczenia maszynowego. Raczej, gdybym był Chińczykiem, chciałbym użyć Boost w połączeniu z jakąś standardową * skórką API *, która konwertuje API Boost na chiński. W ten sposób łatwiej się nauczyć. Oczywiście, byłoby trochę trudniej o tym mówić z anglojęzycznym, ale myślę, że skórka API pozwoliłaby na tłumaczenie również w innym kierunku. Poza tym, gdy przeciętny chiński programista mówi o programowaniu, prawdopodobnie rozmawia z inną Chińczyką. – JnBrymn

+0

Nie pisanie kodu w języku, który uważasz/mówisz, jest zaletą IME, ponieważ pozwala nadać terminom technicznym znaczenie techniczne, które nie jest naruszone przez zwykłe znaczenie terminów, z których oba mają zazwyczaj niewiele więcej niż luźny związek. –

3

Ada (między innymi) umożliwia stosowanie identyfikatorów międzynarodowych przy użyciu standardu UNICODE.

Jednak moja osobista opinia jest taka, że ​​oprogramowanie powinno być napisane przy użyciu jednego, powszechnie zrozumiałego i dostatecznie prostego języka (oczywiście w języku angielskim), aby zachęcić do współpracy, zapewnić zrozumiałość i możliwość ponownego wykorzystania kodu.

+0

Pojedyncze, powszechnie zrozumiałe i wystarczająco proste ... angielskie wyniki 0,5 na 3. (0 dla pojedynczego, 0,5 dla wystarczająco prostego) –

+1

@kotlinski: Angielski jest końcem powszechnie zrozumiałym (wśród najbardziej rozpowszechnionych języków, a na pewno najbardziej rozpowszechnionym wśród techników - http://meta.stackexchange.com/questions/ 13676/is-english-required-on-stack-overflow ma kilka fajnych danych). I chociaż język angielski * jest * złożony, * wszystkie * języki naturalne są z natury skomplikowane - a angielski nie jest najgorszy (na przykład gramatyka języka niemieckiego jest znacznie większa i ma więcej nieprzyjemnych przypadków narożnych). – delnan

+0

@kotliński Jest to, na pewno, subiektywne. Moim zdaniem, myśląc o językach, które znam lub których się nauczyłem w przeszłości, złożoność i łatwość są takie: angielski

1

Java ma tę funkcję.

1

Niektóre implementacje typowego seplenie pozwoliłyby na to. AFAIK specyfikacja języka nie zabrania jej ani nie wymaga (wymaga tylko podstawowego zestawu znaków ASCII).

2

Delphi ma tę funkcję od wersji 2009

2

Javascript posiada tę funkcję.

1

Tcl pozwala na używanie znaków Unicode dla nazw poleceń i nazw zmiennych, chociaż zaleca się unikanie ich dla nazw zmiennych, ponieważ składnia skrótów nie radzi sobie w tej chwili (tzn. Trzeba użyć formularza [set Ω] z ).

2

. Net obsługuje standard Unicode i pracuję ze zmienną C# Unicode na co dzień.

2

C#, Java, Python3, o ile mi wiadomo, wszystkie są oparte na Unicode.

Nie znalazłem nikogo wyżej wspomnianego Python, więc dodałem go.Python ma funkcję fantasy: wszystko (funkcja, klasa, moduł, zmienna, instancja klasy) jest obiektem, a każdy obiekt może dołączyć dokument do jego opisania. Ta funkcja może być przydatna do interaktywnego organizowania kodu i wykonywania skryptu. Na przykład:

# Python code in interactive mode 
>>> def MyFunc(): 
    '''This is self-included document. 
It can be write in multi lines.''' 
    print('foobar') 
>>> print(MyFunc.__doc__) 
This is self-included document. 
It can be write in multi lines. 
>>> MyFunc() 
foobar 
1

schemacie PLT Racket i Lisp Aromatyzowane Erlang wszystkim umożliwić identyfikatorów Unicode (Made Simple dzięki składni prefiksu)

0

Perl and Go zarówno umożliwiają pełne identyfikatory Unicode. Perl wymaga deklaracji use utf8;, ale Go wykonuje to automatycznie.

Zobacz UAX#31: Unicode Identifier and Pattern Syntax, dla różnych problemów.

Ogólnie rzecz biorąc, identyfikator powinien pasować do wzorca ^\p{ID_Start}\p{ID_Continue}*$, chociaż języki można do niego dodać dowolnie. Na przykład Java dodaje symbole walut (\p{Sc}), w tym $.

0

Rozważmy Swift, wprowadzony przez Apple w 2014 roku Oto fragment kodu:

var 国 = "美国"

Powodzenia w poszukiwaniu najlepszego jednym!

+0

country = America? : P My Kanji jest trochę zardzewiały. – JnBrymn

+0

Przeczytanie tego zajęło trochę czasu, ponieważ 'var 國 =" 美國 "' 国 jest uproszczone dla 國 (或 → 玉) – Hector

Powiązane problemy