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, которым, видимо, ну очень надоело нижнее подчеркивание.
Page 1 of 3 << [1] [2] [3] >>

Date: 2011-11-04 01:02 am (UTC)
From: [identity profile] alta-voce.livejournal.com
Хмм, мне кажется, я это давно знала.

круто! :)

Date: 2011-11-04 01:26 am (UTC)
From: [identity profile] niobium0.livejournal.com
#define цел int
#define коль if
#define доколь while
#define уменябудетсвойсипласплассблекджекомишлюхами 1

Date: 2011-11-04 01:27 am (UTC)
From: [identity profile] spamsink.livejournal.com
Осторожно, ящик Пандоры открывается...

Re: круто! :)

Date: 2011-11-04 01:49 am (UTC)
From: [identity profile] meshko.livejournal.com
Ну, был же Русский Алгоритмический Язык. Начать Созидание, Кончить Созидание.

+1

Date: 2011-11-04 01:50 am (UTC)
From: [identity profile] meshko.livejournal.com
Голосую за немедленное удаление поста.

Re: +1

Date: 2011-11-04 02:09 am (UTC)
wizzard: (Default)
From: [personal profile] wizzard
в узких кругах CS-теоретиков и практиков уже давно используют всякие греческие символы вместо идентификаторов (года три как видел блог-посты), и ничего...

Date: 2011-11-04 02:28 am (UTC)
From: [identity profile] ygam.livejournal.com
В Джаве и Сишарпе это уже давно.

Date: 2011-11-04 02:36 am (UTC)
From: [identity profile] eldarm.livejournal.com
К сожалению, использование нестандартных символов - это такая задница... Надо сохрянать в UTF-8, и прочее. Поэтому, увы, пока все это всерьез не работает. Поскольку серьезный програмиист готов при необходимости ("фикс это дерьмо поскольку мы теряем пользвателей на миллион баксов в десять минут!!!") программу чем угодно править, хоть vim'ом, а что угодно unicode еще не поддерживает.

Date: 2011-11-04 02:39 am (UTC)
From: [identity profile] qehgt.livejournal.com
с прошлого века поддерживает.

Date: 2011-11-04 02:52 am (UTC)
From: [identity profile] zhengxi.livejournal.com
Обратил внимание на юникодные символы, то даже не подумал, что это есть в стандарте.

Те C и ASM файлы в исходниках Go, где применяются идентификаторы с unicode, компиляются не gcc, а их собственным компилятором C (8c,6c,5c) и ассемблером, которые все из себя нестандартые.

Date: 2011-11-04 02:58 am (UTC)
From: [identity profile] eldarm.livejournal.com
Смееетесь? Я в vim'e чуть ли не много раз в день сижу...

Date: 2011-11-04 03:03 am (UTC)
From: [identity profile] max-gashkov.livejournal.com
Я тоже. Вплоть до японских глифов все отлично у него с поддержкой utf8.

Date: 2011-11-04 03:09 am (UTC)
From: [identity profile] eldarm.livejournal.com
Афигеть. Обязательно попробую. Что значит старая закалка...
Правда, компиляторы все равно не все поддерживают. И не все vim любят (и в чем-то я их понимаю).

Date: 2011-11-04 03:38 am (UTC)
From: [identity profile] salas.livejournal.com
Ну да, некоторые предпочитают Emacs. Но он с utf8 вроде как тоже не имеет проблем.

А вот в gcc всё это как раз не работает.

Date: 2011-11-04 03:42 am (UTC)
From: [identity profile] msh.livejournal.com
А U+1F4A9 использовать можно? Мне бы пригодился.

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

Date: 2011-11-04 05:04 am (UTC)
From: [identity profile] vitaly-il.livejournal.com
совсем уже хотел было прокомментировать "нету их и все разрешено", но потом прочитал след. абзац про то что этому стандарту уже 10 лет :-)
интересно, не знал.

Date: 2011-11-04 06:13 am (UTC)
From: [identity profile] toothedgoo.livejournal.com
Отвратительно же. Столь же отвратительно, как и 1 и l, отличающиеся одним пикселом.

Date: 2011-11-04 07:01 am (UTC)
From: [identity profile] greena.livejournal.com
Все, окончательно перевожу себя в разряд динозавров.

Date: 2011-11-04 07:33 am (UTC)

Date: 2011-11-04 07:52 am (UTC)
From: [identity profile] beldmit.livejournal.com
Куда катится этот мир.

Я до сих пор стараюсь файлы по-русски не называть, а тут ТАКОЕ!

Date: 2011-11-04 07:55 am (UTC)
From: [identity profile] vyhuhol.livejournal.com
> программу чем угодно править, хоть vim'ом, а что угодно unicode еще не поддерживает.

не надо об этом с таким ужасом говорить, у меня gvim -- основная среда разработки, много раз пытался пересесть на netbeans, и ни фига не получилось
и, кстати, unicode там уже лет десять как поддерживается, из них лет пять -- искаропки.

Date: 2011-11-04 08:36 am (UTC)
From: [identity profile] efix.livejournal.com
Так то оно так, но вот только миддл дот в идентификаторе на с# нельзя использовать.

Date: 2011-11-04 09:13 am (UTC)
From: [identity profile] egorfine.livejournal.com
Ну и в самом деле - как такой код править vim'ом? Как прогонять через ctags? Оно может и поддерживается, но какой практический смысл?...

Date: 2011-11-04 09:23 am (UTC)
From: [identity profile] triampurum.livejournal.com
http://vimdoc.sourceforge.net/htmldoc/digraph.html
практический смысл: меньше места визуально на экране занимает, чем подчеркивание, выглядит чище.
Page 1 of 3 << [1] [2] [3] >>

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:22 am
Powered by Dreamwidth Studios