(эта запись будет интересна лишь программистам, знающим C)
gaal обратил мое внимание на потрясающую особенность C-кода, на котором написаны части языка Go (например, рантайм-поддержка). Кто пишет Go, нужды объяснять нет, думаю.
Вот, например:
или:
Вот что вот это такое, это "runtime·printf", например? Да-да, вы правильно углядели, в середине там не ASCII-символ. Это юникодный символ U+00B7 MIDDLE DOT, если что.
Это не какая-то специальная нестандартная директива или ключевое слово. Это просто часть идентификатора, который, оказывается, в наше время в C (в C, заметьте! Не в каком-нибудь там C++!) может быть юникодным. В стандарте C99 есть приложение D, которое описывает полный набор законных юникодных символов в идентификаторах. Этот набор включает в себя U+00B7 MIDDLE DOT, а также много других полезных символов и целых алфавитов; и русский алфавит, и ивритский, например, целиком туда уместились.
Вот живешь так, живешь, а тут оказывается официально можно русские имена переменным в C давать. Уже 10 лет причем. А я бы и не знал, если бы не авторы языка 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, которым, видимо, ну очень надоело нижнее подчеркивание.
no subject
Date: 2011-11-04 01:02 am (UTC)круто! :)
Date: 2011-11-04 01:26 am (UTC)#define коль if
#define доколь while
#define уменябудетсвойсипласплассблекджекомишлюхами 1
Re: круто! :)
Date: 2011-11-04 01:49 am (UTC)no subject
Date: 2011-11-04 01:27 am (UTC)+1
Date: 2011-11-04 01:50 am (UTC)Re: +1
From:Re: +1
From:no subject
Date: 2011-11-04 02:28 am (UTC)no subject
Date: 2011-11-04 02:36 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-11-04 08:36 am (UTC)(no subject)
From:no subject
Date: 2011-11-04 02:52 am (UTC)Те C и ASM файлы в исходниках Go, где применяются идентификаторы с unicode, компиляются не gcc, а их собственным компилятором C (8c,6c,5c) и ассемблером, которые все из себя нестандартые.
no subject
Date: 2011-11-04 03:42 am (UTC)no subject
Date: 2011-11-04 07:33 am (UTC)(no subject)
From:no subject
Date: 2011-11-04 05:04 am (UTC)интересно, не знал.
no subject
Date: 2011-11-04 06:13 am (UTC)no subject
Date: 2011-11-04 09:25 am (UTC)(no subject)
From: (Anonymous) - Date: 2011-11-04 02:03 pm (UTC) - Expandno subject
Date: 2011-11-04 07:01 am (UTC)no subject
Date: 2011-11-04 07:52 am (UTC)Я до сих пор стараюсь файлы по-русски не называть, а тут ТАКОЕ!
no subject
Date: 2011-11-04 09:59 am (UTC)no subject
Date: 2011-11-04 09:13 am (UTC)no subject
Date: 2011-11-04 09:23 am (UTC)практический смысл: меньше места визуально на экране занимает, чем подчеркивание, выглядит чище.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2011-11-04 09:32 am (UTC)no subject
Date: 2011-11-04 09:59 am (UTC)no subject
Date: 2011-11-04 08:30 pm (UTC)Но вот знак называется нижним подчеркиванием, по-другому люди путают и переспрашивают. Почему он так называется, писал Лебедев (http://tema.livejournal.com/151813.html), но это и не важно. Вам ведь не мешает отсутствие «Мертвого журнала» называть этот сайт «Живым журналом», например.
(no subject)
From:(no subject)
From:no subject
Date: 2011-11-04 11:01 am (UTC)no subject
Date: 2011-11-04 05:04 pm (UTC)no subject
Date: 2011-11-04 04:57 pm (UTC)Сначала _ на точку_которая_не_точка заменят, а в конце рыдаем над:
Сообщить("Здравствуй, Мир!"); (http://ru.wikipedia.org/wiki/1%D0%A1_%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
Пример функции, возвращающей квадрат числа:
Функция КвадратЧисла(прЧисло)
Возврат прЧисло * прЧисло;
КонецФункции
Упаси господь от такого.
Мы уж лучше в интернациональных проектах по-старинке, на какбыанглийском.
no subject
Date: 2011-11-04 07:38 pm (UTC)no subject
Date: 2011-11-05 01:50 pm (UTC)Объект, цикл, пока, до.
Вроде ещё в 1С встроенный язык по-рюсски программируется.
Адъ!
no subject
Date: 2011-11-05 02:58 pm (UTC)no subject
Date: 2011-11-06 05:18 am (UTC)identifier:
identifier-nondigit
identifier identifier-nondigit
identifier digit
identifier-nondigit:
nondigit
universal-character-name
other implementation-defined characters
nondigit: one of
_ a b c ... z A B C ... Z
digit: one of
0 1 2 3 4 5 6 7 8 9
universal-character-name:
\u hex-quad
\U hex-quad hex-quad
hex-quad:
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit
Так что средние точки эти — other implementation-defined characters, а кто хочет переносимо, должен писать \u00B7. Что не способствует.
no subject
Date: 2011-11-08 12:06 pm (UTC)То есть можно написать
int runtime\u00b7f();
но что в этом полезного?
no subject
Date: 2011-11-08 12:12 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: