(эта запись будет интересна лишь программистам, знающим 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
no subject
Date: 2011-11-04 01:27 am (UTC)Re: круто! :)
Date: 2011-11-04 01:49 am (UTC)+1
Date: 2011-11-04 01:50 am (UTC)Re: +1
Date: 2011-11-04 02:09 am (UTC)no subject
Date: 2011-11-04 02:28 am (UTC)no subject
Date: 2011-11-04 02:36 am (UTC)no subject
Date: 2011-11-04 02:39 am (UTC)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 02:58 am (UTC)no subject
Date: 2011-11-04 03:03 am (UTC)no subject
Date: 2011-11-04 03:09 am (UTC)Правда, компиляторы все равно не все поддерживают. И не все vim любят (и в чем-то я их понимаю).
no subject
Date: 2011-11-04 03:38 am (UTC)А вот в gcc всё это как раз не работает.
no subject
Date: 2011-11-04 03:42 am (UTC)no subject
Date: 2011-11-04 04:55 am (UTC)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 07:01 am (UTC)no subject
Date: 2011-11-04 07:33 am (UTC)no subject
Date: 2011-11-04 07:52 am (UTC)Я до сих пор стараюсь файлы по-русски не называть, а тут ТАКОЕ!
no subject
Date: 2011-11-04 07:55 am (UTC)не надо об этом с таким ужасом говорить, у меня gvim -- основная среда разработки, много раз пытался пересесть на netbeans, и ни фига не получилось
и, кстати, unicode там уже лет десять как поддерживается, из них лет пять -- искаропки.
no subject
Date: 2011-11-04 08:36 am (UTC)no subject
Date: 2011-11-04 09:13 am (UTC)no subject
Date: 2011-11-04 09:23 am (UTC)практический смысл: меньше места визуально на экране занимает, чем подчеркивание, выглядит чище.