avva: (Default)
[personal profile] avva
(эта запись будет интересна лишь программистам, знающим C)

[livejournal.com profile] gaal обратил мое внимание на потрясающую особенность C-кода, на котором написаны части языка Go (например, рантайм-поддержка). Кто пишет Go, нужды объяснять нет, думаю.

Вот, например:
int32
runtime·funcline(Func *f, uintptr targetpc)
{

или:

        if(debug && !runtime·panicking)
                runtime·printf("funcline start pc=%p targetpc=%p line=%d tab=%p+%d\n",
                        pc, targetpc, line, p, (int32)f->pcln.len);
        for(;;) {

Вот что вот это такое, это "runtime·printf", например? Да-да, вы правильно углядели, в середине там не ASCII-символ. Это юникодный символ U+00B7 MIDDLE DOT, если что.

Это не какая-то специальная нестандартная директива или ключевое слово. Это просто часть идентификатора, который, оказывается, в наше время в C (в C, заметьте! Не в каком-нибудь там C++!) может быть юникодным. В стандарте C99 есть приложение D, которое описывает полный набор законных юникодных символов в идентификаторах. Этот набор включает в себя U+00B7 MIDDLE DOT, а также много других полезных символов и целых алфавитов; и русский алфавит, и ивритский, например, целиком туда уместились.

Вот живешь так, живешь, а тут оказывается официально можно русские имена переменным в C давать. Уже 10 лет причем. А я бы и не знал, если бы не авторы языка Go, которым, видимо, ну очень надоело нижнее подчеркивание.

Date: 2011-11-04 04:55 am (UTC)
From: [identity profile] eldarm.livejournal.com
Не забывайте, что это из серии "каждое живущее существо должно восплакать об Адонисе"...

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 05:21 am
Powered by Dreamwidth Studios