Ритчи и сложность

May. 21st, 2025 12:38 pm
vak: (Daemon)
[personal profile] vak
Хотите глянуть, чем занимался молодой Деннис Ритчи до того, как Кен Томпсон увлёк его игрой в Space Travel на PDP-7?

Статья Альберта Мейера и Денниса Ритчи "The complexity of loop programs" (PDF)

А сама игра вот тут: github.com/mohd-akram/st
vak: (бэсм-6)
[personal profile] vak
Парсер теперь можно вызывать из командной строки. Фактически это первый проход будущего компилятора. Сейчас он умеет выгружать синтаксическое дерево AST в форматах YAML или Grapviz DOT.

Соберём:
$ git clone https://github.com/besm6/c-compiler.git
$ cd c-compiler
$ make
$ cd build
$ ./cast
Usage:
    cast [options] input-filename [output-filename]
Options:
    --ast            Emit AST in binary format (default)
    --yaml           Emit YAML format
    --dot            Emit Graphviz DOT script
    -v, --verbose    Enable verbose mode
    -D, --debug      Print debug information
    -h, --help       Show this help message
Возьмём классический Hello World и перепрём в YAML:
$ cat hello.c
int main()
{
    printf("Hello, World!\n");
}
$ ./cast --yaml hello.c -
program:
  - external_decl:
    kind: function
    type:
      kind: function
      return_type:
        kind: int
        signedness: signed
      variadic: false
    name: main
    body:
      kind: compound
      body:
        - stmt:
          kind: expr
          expr:
            - expr:
              kind: call
              func:
                - expr:
                  kind: var
                  name: printf
              args:
                - expr:
                  kind: literal
                  kind: string
                  value: "Hello, World!\n"
Нарисуем картинку:
$ ./cast --dot hello.c hello.dot
$ dot hello.dot -Tpdf -ohello.pdf
Смотрим hello.pdf:

Bon motto

May. 20th, 2025 11:37 pm
spamsink: (Default)
[personal profile] spamsink
Спросил я у ChatGPT (по-английски), дескать, девизы некоторых стран хорошо известны, тех же США или Бразилии, а с Россией как дела обстоят?

Не стал он галлюцинировать, изложил как на духу: был, вот, у РИ девиз - "Съ нами Богъ!", был и у СССР - "Пролетарии всех стран, соединяйтесь!", а у РФ - нету.

Ну хорошо, говорю, а исходя из текущей политики РФ, как внутренней, так и внешней, а также экономики и культуры, какая крылатая фраза, цитата или афоризм подошли бы в качестве девиза?

Ой, говорит, any answer will inevitably carry a degree of interpretation or satire.

Но предложил несколько, конечно. Один из предложенных вариантов был "Правда в силе", обыгрывая цитату из "Брата 2", другой - "The state is eternal; the people endure" (типа "Res publica longa, populus brevis", надо полагать), еще один - "Feared is better than loved" (оборванная цитата из Макиавелли).

Теперь и Debian

May. 20th, 2025 11:43 am
vak: (Робот 1)
[personal profile] vak
businesswire.com/news/home/20250520907355/en/SiMa.ai-and-Wind-River-Collaborate-to-Enable-Seamless-AIML-for-Intelligent-Edge-Applications

"Delivering a convenient and seamless experience for developers, SiMa.ai’s MLSoC platform integrated with enterprise-grade Debian derivative eLxr project with commercial support provided by Wind River’s eLxr Pro, allows developers to easily customize and accelerate time to production. This integrated solution combines the freedom of open source with enterprise grade security, stability and compliance."

"The combined solution will be demonstrated at the Embedded Vision Summit in Santa Clara during May 20-22th at the SiMa.ai booth #603. In the demonstration, the SiMa.ai platform uses eLxr, a stable Debian derivative, which is the foundation for Wind River's eLxr Pro commercial Debian support."

Кто работает в embedded - знают компанию Wind River Systems и их знаменитую RTOS VxWorks. А нынче они ещё и embedded Linux поставляют, вкупе с нашим чипом.

Russian nuclear weapons, 2025

May. 20th, 2025 09:23 am
vak: (Путиномедвед)
[personal profile] vak
Статья про текущее состояния российского ядерного оружия.

https://www.tandfonline.com/doi/epdf/10.1080/00963402.2025.2494386
spamsink: (Default)
[personal profile] spamsink
Брат нашел в лабазах каменных папку-скоросшиватель примерно 40+летней давности и отсканировал из него несколько страниц.

Read more... )
Собственно текст представляет лишь слабый исторический интерес, а вот кому не лень будет написать (с помощью ИИ, например) программу, которая: поправляет потенциальный завал горизонта; делит изображение на знакоместа; классифицирует символы; усредняет их, делая на ходу поправку на возможный сдвиг глифа в знакоместе; и, наконец, выдает идеализированные глифы?

AVL trees

May. 19th, 2025 03:10 pm
vak: (бэсм-6)
[personal profile] vak
Состряпал реализацию map<string, int> на скорую руку на Си, не без помощи ИИ. Грок неленивый программист, если ему прямо говорить что делать.Выбрано представление в виде AVL деревьев. Они компактнее по памяти и вроде эффективнее красно-чёрных деревьев на всех операциях. Хэш был бы неплох, но вычисление хэш функций на словном процессоре типа БЭСМ-6 неэффективно.

Заодно узнал, что AVL деревья представляют собой наследие советской науки. Изобретены в 1962 году Адельсон-Вельским и Ландисом, на десять лет раньше красно-чёрных деревьев.

Георгий Максимович Адельсон-Вельский стоял у истоков шахматной программы Каисса. В 1992 году эмигрировал в Израиль.

Евгений Михайлович Ландис родом из Харькова. В 1968 году подписал нашумевшее письмо в защиту А. С. Есенина-Вольпина.
vak: (Знайка)
[personal profile] vak
Микрософт выложил в открытый доступ исходники текстового редактора edit. Свободная опенсорсная лицензия MIT. Реализация на языке Rust наследует не букву, но дух древнего редактора edit.com из MS-DOS 5.0. Работает под Линуксом и Windows. На маке скомпилировать мне пока не удалось.

Было тридцать пять лет назад:



Стало:

vak: (бэсм-6)
[personal profile] vak
Грамматика языка Си хитро устроена: её невозможно однозначно распознать, не строя таблицу имён. Объясню на примере. Рассмотрим конструкцию:
foo bar : qux;
Как её должен интерпретировать парсер? Выглядит полной бессмыслицей. Однако же представим, что перед этим имелось:
typedef int foo;
enum { qux = 1 };
Тогда конструкция превращается в:
int bar : 1;
Честное определение поля структуры размером один бит.

То есть парсер во время разбора входного потока должен строить таблицу имён. Достаточно различать три категории: тайпдефы, именованные константы enum и всё остальное. Но надо отслеживать область действия. При выходе из блока имена, определённые в нём, следует забывать.

Я уже почти добил самопальный парсер Си, осталось добавить тайпдефы.
vak: (Кризис так себе)
[personal profile] vak
Российская пропаганда утверждает, что цель войны - «создание условий для долгосрочного устойчивого мира и обеспечения безопасности российского государства, обеспечения безопасности интересов наших людей на тех территориях, о которых мы всегда говорим, где проживают люди, считающие русский язык родным языком и считающие Россию своей родиной».

Получается, для долгосрочного устойчивого мира всем странам следует депортировать товарищей, “считающих русский язык родным языком и считающих Россию своей родиной”. Во избежание безопасности их интересов.

Гебешники надеются всякого русского использовать как подрывного агента.

Модуль от SiMa.ai

May. 17th, 2025 12:02 pm
vak: (Робот 1)
[personal profile] vak
Теперь наш чип доступен и в виде стандартного модуля SO-DIMM 260. Можете вынуть свой NVidia Jetson Orin NX/Nano, вставить на его место SiMa Modalix, и получить систему на порядок более эффективную по потреблению.

Документация: SoM-Product-Brief.pdf

vak: (Путиномедвед)
[personal profile] vak
(Александр Невзоров)

16 мая стало чрезвычайно тяжелым днем для мировых СМИ и каналов. Необходимо было всеми силами избегать того единственного слова, которое способно охарактеризовать русскую делегацию в Стамбуле.

Это слово - «подонки». Да, мелкие, да кривые и косноязыкие. Но безусловно - подонки.

Копируя стиль пославшего их пахана, подонки были наглы, высокопарны и болтливы.

Они сообщили, что собираются еще бессчетное количество лет убивать и грабить.

Делать «перерывчик небольшой» (30 дней) они «не видят смысла», т.к. за этот срок они успеют украсть и оккупировать еще что-нибудь.

Мединский ухмылялся, умничал и сыпал нахватанными в интернете фейковыми цитатами Бисмарка и Наполеона, напоминая о том, что русские, по праву «величия и гена победы» имеют полное право на беспредел и на геноцид «под корень» любого народа.

Им подвывала из Москвы блюстительница русских скреп Симонян и все прочие соловьевы.

Ради объективности надо отметить, что семечной шелухой подонки особо не плевались и сидели на стульях, а не на кортах.

Но лишь потому, что побаивались мрачного крупнокалиберного турка, который остался в зале следить за тем, чтобы гости из России не изрезали столы и не мочились на стены исторического дворца Долмабачхе.

Философское

May. 16th, 2025 11:30 am
vak: (Аристипп)
[personal profile] vak
Путина нет, сказал Зеленский.
Мединский стал пред ним ходить.
Сильнее бы не мог он возразить;
Хвалили все ответ замысловатый.
vak: (Украина)
[personal profile] vak
В старейшем здании бывшего анатомического театра на улице Богдана Хмельницкого находится один из самых интересных музеев Украины. Об истории анатомического театра, его знаменитом леднике, и самом Национальном музее медицины рассказывает его директор профессор Вадим Шипулин.

vak: (Знайка)
[personal profile] vak
Простой ли язык Си? Я покажу вам как в нём строятся типы, и вы сами решите. (Подсказка: непростой.)

Я задумал некий сложный тип. Будем строить его по шагам. Что он по большому счёту представляет? Указатель. Ставим звёздочку.
*
На что указывает наш указатель? На массив. Ставим круглые скобки вокруг звёздочки и дописываем квадратные скобки справа.
(*)[]
Сколько элементов в массиве? Пять. Ставим пятёрку внутри квадратных скобок.
(*)[5]

Что находится в каждом элементе массива? Указатель. Добавляем звёздочку слева.
*(*)[5]
На что указывает этот указатель? На функцию. Какие аргументы принимает функция? Один аргумент типа char. Заворачиваем нашу конструкцию в круглые скобки и справа в круглых скобках добавляем аргументы.
(*(*)[5])(char)
Что возвращает функция? Тип int. Дописываем слева.
int (*(*)[5])(char)
Таким образом, мы имеем указатель на массив из пяти указателей на функции, принимающие char и возвращающие int. Не пытайтесь повторить на трезвую голову. 😀

А чтобы совсем весело стало, добавим внутрь слово static.
int (*(*)[static 5])(char)
Получили указатель на массив из не менее чем пяти указателей на функции, принимающие char и возвращающие int.
vak: (U.S.A.)
[personal profile] vak
Девушка-туристка нашлась живой и невредимой в Сьерре, после трёх недель поисков. Не делайте так. Не ездите в Сьерру на авось. Тщательнее путешествие планировать надо.

'Miraculous': Missing Sierra camper found alive in cabin after 3 weeks

Гуглоперевод, извините.
Этой зимой владелец курорта в национальном лесу Сьерра решил держать двери домиков открытыми, если кому-то понадобится укрытие, чтобы выжить, пока местность занесена снегом. На всякий случай.

В среду днем ​​он встретил женщину, которая так и сделала: Тиффани Слейтон, туристка из Джефферсонвилля, штат Джорджия, которая пропала три недели назад. Она шла сквозь метель за день до того, как ее нашел владелец курорта, ища убежища в одном из домиков.

«Она выскочила, не сказала ни слова, просто подбежала», — сказал Кристофер Гутьеррес, владелец курорта Vermilion Valley, на пресс-конференции в среду вечером. «Она просто хотела, чтобы ее обняли».

Во время предыдущей неудачной попытки добраться до своего курорта Гутьеррес заметил поисковую группу во главе с офисом шерифа округа Фресно в этом районе, и он знал, что там пропал турист, похожий на женщину, стоящую перед ним. Слейтон была голодна, и он сделал ей сэндвич с арахисовым маслом и желе.

Как только они поймали сигнал сотовой связи, спускаясь с горы, Слейтон позвонила своему отцу, Бобби Слейтону, когда он был в продуктовом магазине в Джорджии. Он не слышал ее голоса с 18 апреля.

«Она сказала: «Папа, я жива, и мне жаль», — сказал Бобби во время пресс-конференции. «Поскольку я не хотел тешить себя надеждами, я спросил: «Кто это?» Она ответила: «Это Тиффани». Тонна веса была поднята».

Ее мать, Фредрина Слейтон, сказала, что схватила ближайшего человека в продуктовом магазине и спросила, может ли она обнять его. «Она была просто близко, и мне нужно было кого-то обнять», — сказала Фредрина в записи Zoom.

Семья Слейтон ничего не слышала о ней с 20 апреля и сообщила о ее пропаже 29 апреля. Неясно, как Слейтон, которой в четверг исполнилось 28 лет, выжила почти месяц.

«Таких историй не увидишь», — сказал Тони Ботти, представитель офиса шерифа округа Фресно, во время пресс-конференции. «Это неслыханно. Она явно неумолима».

В последний раз Слейтон видели 24 апреля около озера Шейвер, к северо-востоку от Фресно. Ее нашли примерно в 40 милях — примерно в двух часах езды — восточнее того места, где ее видели в последний раз. Она проехала мимо Моно-Хот-Спрингс, последнего места, куда ее семья знала, что она направляется. Чиновники сначала подумали, что она повернула назад, когда поняла, что местность занесена снегом.

Слейтон путешествовала на электровелосипеде с красным прицепом, решив посетить Калифорнию в рамках своей миссии посетить все 50 штатов в рамках «списка желаний», который превратился в «абсолютный кошмар» для семьи, как ранее сказал Бобби.

После интенсивных пятидневных поисков на земле, которые начались 6 мая, не было обнаружено ни единого признака Слейтон. В поисковую группу входило около 30 волонтеров, джипы, лошади и небольшие самолеты, которые охватили территорию в 600 квадратных миль и поднялись в Моно-Хот-Спрингс. Не имея возможности проехать по земле, вертолет обследовал район озера Эдисон и горячих источников, но ни Слейтон, ни ее вещей не нашли.

В субботу власти сократили поиски, чтобы найти больше зацепок, прежде чем проводить еще один наземный поиск. Не было подозрений в преступлении, но представитель офиса шерифа Ботти начал считать это «сомнительным» и был обеспокоен ограниченностью улик после 24 апреля.

«Продержаться так долго... Я даже не могу этого понять или уложить в голове», — сказал Гутьеррес на пресс-конференции в среду. «Я не хочу быть мрачным, но обычно это не заканчивается хорошо. Это было довольно чудом, что она добралась туда, где она была».

Родители Слейтон отправятся во Фресно в четверг и воссоединятся со своей дочерью, пока она восстанавливается, а детективы будут собирать воедино ее историю выживания.

Одно можно сказать наверняка, сказала Фредрина Гутьерресу в среду: «Если бы вы не решили оставить свои сараи открытыми, я не думаю, что у нас был бы счастливый конец».

Там прекрасные места. Если не занесено снегом.

vak: (Путиномедвед)
[personal profile] vak
Вы не верите, когда я говорю что Путин уже дал дуба. Но сегодня имеем прямое подтверждение. Приехал Путин в Стамбул? Не приехал. Сие обстоятельство трудно опровергнуть.

Российская элита сейчас решает трудную задачу: как продолжать войну, когда гавнокомандующий отдал богу душу. Пока удаётся скрывать от публики.

Ещё про буковки

May. 14th, 2025 07:04 pm
vak: (Знайка)
[personal profile] vak
Пост с буковками из Юникода понравился, как я вижу. А вот вам ещё шелл скриптов для показа буковок.
$ latin-extended
Latin Extended-A and part of Latin Extended-B (U+0100 to U+01FF)

0100 Ā 0110 Đ 0120 Ġ 0130 İ 0140 ŀ 0150 Ő 0160 Š 0170 Ű
0101 ā 0111 đ 0121 ġ 0131 ı 0141 Ł 0151 ő 0161 š 0171 ű
0102 Ă 0112 Ē 0122 Ģ 0132 IJ 0142 ł 0152 Œ 0162 Ţ 0172 Ų
0103 ă 0113 ē 0123 ģ 0133 ij 0143 Ń 0153 œ 0163 ţ 0173 ų
0104 Ą 0114 Ĕ 0124 Ĥ 0134 Ĵ 0144 ń 0154 Ŕ 0164 Ť 0174 Ŵ
0105 ą 0115 ĕ 0125 ĥ 0135 ĵ 0145 Ņ 0155 ŕ 0165 ť 0175 ŵ
0106 Ć 0116 Ė 0126 Ħ 0136 Ķ 0146 ņ 0156 Ŗ 0166 Ŧ 0176 Ŷ
0107 ć 0117 ė 0127 ħ 0137 ķ 0147 Ň 0157 ŗ 0167 ŧ 0177 ŷ
0108 Ĉ 0118 Ę 0128 Ĩ 0138 ĸ 0148 ň 0158 Ř 0168 Ũ 0178 Ÿ
0109 ĉ 0119 ę 0129 ĩ 0139 Ĺ 0149 ʼn 0159 ř 0169 ũ 0179 Ź
010A Ċ 011A Ě 012A Ī 013A ĺ 014A Ŋ 015A Ś 016A Ū 017A ź
010B ċ 011B ě 012B ī 013B Ļ 014B ŋ 015B ś 016B ū 017B Ż
010C Č 011C Ĝ 012C Ĭ 013C ļ 014C Ō 015C Ŝ 016C Ŭ 017C ż
010D č 011D ĝ 012D ĭ 013D Ľ 014D ō 015D ŝ 016D ŭ 017D Ž
010E Ď 011E Ğ 012E Į 013E ľ 014E Ŏ 015E Ş 016E Ů 017E ž
010F ď 011F ğ 012F į 013F Ŀ 014F ŏ 015F ş 016F ů 017F ſ

Latin Extended-B (U+0200 to U+024F)

0200 Ȁ 0210 Ȑ 0220 Ƞ 0230 Ȱ 0240 ɀ
0201 ȁ 0211 ȑ 0221 ȡ 0231 ȱ 0241 Ɂ
0202 Ȃ 0212 Ȓ 0222 Ȣ 0232 Ȳ 0242 ɂ
0203 ȃ 0213 ȓ 0223 ȣ 0233 ȳ 0243 Ƀ
0204 Ȅ 0214 Ȕ 0224 Ȥ 0234 ȴ 0244 Ʉ
0205 ȅ 0215 ȕ 0225 ȥ 0235 ȵ 0245 Ʌ
0206 Ȇ 0216 Ȗ 0226 Ȧ 0236 ȶ 0246 Ɇ
0207 ȇ 0217 ȗ 0227 ȧ 0237 ȷ 0247 ɇ
0208 Ȉ 0218 Ș 0228 Ȩ 0238 ȸ 0248 Ɉ
0209 ȉ 0219 ș 0229 ȩ 0239 ȹ 0249 ɉ
020A Ȋ 021A Ț 022A Ȫ 023A Ⱥ 024A Ɋ
020B ȋ 021B ț 022B ȫ 023B Ȼ 024B ɋ
020C Ȍ 021C Ȝ 022C Ȭ 023C ȼ 024C Ɍ
020D ȍ 021D ȝ 022D ȭ 023D Ƚ 024D ɍ
020E Ȏ 021E Ȟ 022E Ȯ 023E Ⱦ 024E Ɏ
020F ȏ 021F ȟ 022F ȯ 023F ȿ 024F ɏ

$ greek-coptic
Greek and Coptic characters (U+0370 to U+03FF)

0370 Ͱ 0380 ΀ 0390 ΐ 03A0 Π 03B0 ΰ 03C0 π 03D0 ϐ 03E0 Ϡ 03F0 ϰ
0371 ͱ 0381 ΁ 0391 Α 03A1 Ρ 03B1 α 03C1 ρ 03D1 ϑ 03E1 ϡ 03F1 ϱ
0372 Ͳ 0382 ΂ 0392 Β 03A2 ΢ 03B2 β 03C2 ς 03D2 ϒ 03E2 Ϣ 03F2 ϲ
0373 ͳ 0383 ΃ 0393 Γ 03A3 Σ 03B3 γ 03C3 σ 03D3 ϓ 03E3 ϣ 03F3 ϳ
0374 ʹ 0384 ΄ 0394 Δ 03A4 Τ 03B4 δ 03C4 τ 03D4 ϔ 03E4 Ϥ 03F4 ϴ
0375 ͵ 0385 ΅ 0395 Ε 03A5 Υ 03B5 ε 03C5 υ 03D5 ϕ 03E5 ϥ 03F5 ϵ
0376 Ͷ 0386 Ά 0396 Ζ 03A6 Φ 03B6 ζ 03C6 φ 03D6 ϖ 03E6 Ϧ 03F6 ϶
0377 ͷ 0387 · 0397 Η 03A7 Χ 03B7 η 03C7 χ 03D7 ϗ 03E7 ϧ 03F7 Ϸ
0378 ͸ 0388 Έ 0398 Θ 03A8 Ψ 03B8 θ 03C8 ψ 03D8 Ϙ 03E8 Ϩ 03F8 ϸ
0379 ͹ 0389 Ή 0399 Ι 03A9 Ω 03B9 ι 03C9 ω 03D9 ϙ 03E9 ϩ 03F9 Ϲ
037A ͺ 038A Ί 039A Κ 03AA Ϊ 03BA κ 03CA ϊ 03DA Ϛ 03EA Ϫ 03FA Ϻ
037B ͻ 038B ΋ 039B Λ 03AB Ϋ 03BB λ 03CB ϋ 03DB ϛ 03EB ϫ 03FB ϻ
037C ͼ 038C Ό 039C Μ 03AC ά 03BC μ 03CC ό 03DC Ϝ 03EC Ϭ 03FC ϼ
037D ͽ 038D ΍ 039D Ν 03AD έ 03BD ν 03CD ύ 03DD ϝ 03ED ϭ 03FD Ͻ
037E ; 038E Ύ 039E Ξ 03AE ή 03BE ξ 03CE ώ 03DE Ϟ 03EE Ϯ 03FE Ͼ
037F Ϳ 038F Ώ 039F Ο 03AF ί 03BF ο 03CF Ϗ 03DF ϟ 03EF ϯ 03FF Ͽ

$ cyrillic
Cyrillic characters (U+0400 to U+04FF)

0400 Ѐ 0410 А 0420 Р 0430 а 0440 р 0450 ѐ 0460 Ѡ 0470 Ѱ
0401 Ё 0411 Б 0421 С 0431 б 0441 с 0451 ё 0461 ѡ 0471 ѱ
0402 Ђ 0412 В 0422 Т 0432 в 0442 т 0452 ђ 0462 Ѣ 0472 Ѳ
0403 Ѓ 0413 Г 0423 У 0433 г 0443 у 0453 ѓ 0463 ѣ 0473 ѳ
0404 Є 0414 Д 0424 Ф 0434 д 0444 ф 0454 є 0464 Ѥ 0474 Ѵ
0405 Ѕ 0415 Е 0425 Х 0435 е 0445 х 0455 ѕ 0465 ѥ 0475 ѵ
0406 І 0416 Ж 0426 Ц 0436 ж 0446 ц 0456 і 0466 Ѧ 0476 Ѷ
0407 Ї 0417 З 0427 Ч 0437 з 0447 ч 0457 ї 0467 ѧ 0477 ѷ
0408 Ј 0418 И 0428 Ш 0438 и 0448 ш 0458 ј 0468 Ѩ 0478 Ѹ
0409 Љ 0419 Й 0429 Щ 0439 й 0449 щ 0459 љ 0469 ѩ 0479 ѹ
040A Њ 041A К 042A Ъ 043A к 044A ъ 045A њ 046A Ѫ 047A Ѻ
040B Ћ 041B Л 042B Ы 043B л 044B ы 045B ћ 046B ѫ 047B ѻ
040C Ќ 041C М 042C Ь 043C м 044C ь 045C ќ 046C Ѭ 047C Ѽ
040D Ѝ 041D Н 042D Э 043D н 044D э 045D ѝ 046D ѭ 047D ѽ
040E Ў 041E О 042E Ю 043E о 044E ю 045E ў 046E Ѯ 047E Ѿ
040F Џ 041F П 042F Я 043F п 044F я 045F џ 046F ѯ 047F ѿ

0480 Ҁ 0490 Ґ 04A0 Ҡ 04B0 Ұ 04C0 Ӏ 04D0 Ӑ 04E0 Ӡ 04F0 Ӱ
0481 ҁ 0491 ґ 04A1 ҡ 04B1 ұ 04C1 Ӂ 04D1 ӑ 04E1 ӡ 04F1 ӱ
0482 ҂ 0492 Ғ 04A2 Ң 04B2 Ҳ 04C2 ӂ 04D2 Ӓ 04E2 Ӣ 04F2 Ӳ
0483 ҃ 0493 ғ 04A3 ң 04B3 ҳ 04C3 Ӄ 04D3 ӓ 04E3 ӣ 04F3 ӳ
0484 ҄ 0494 Ҕ 04A4 Ҥ 04B4 Ҵ 04C4 ӄ 04D4 Ӕ 04E4 Ӥ 04F4 Ӵ
0485 ҅ 0495 ҕ 04A5 ҥ 04B5 ҵ 04C5 Ӆ 04D5 ӕ 04E5 ӥ 04F5 ӵ
0486 ҆ 0496 Җ 04A6 Ҧ 04B6 Ҷ 04C6 ӆ 04D6 Ӗ 04E6 Ӧ 04F6 Ӷ
0487 ҇ 0497 җ 04A7 ҧ 04B7 ҷ 04C7 Ӈ 04D7 ӗ 04E7 ӧ 04F7 ӷ
0488 ҈ 0498 Ҙ 04A8 Ҩ 04B8 Ҹ 04C8 ӈ 04D8 Ә 04E8 Ө 04F8 Ӹ
0489 ҉ 0499 ҙ 04A9 ҩ 04B9 ҹ 04C9 Ӊ 04D9 ә 04E9 ө 04F9 ӹ
048A Ҋ 049A Қ 04AA Ҫ 04BA Һ 04CA ӊ 04DA Ӛ 04EA Ӫ 04FA Ӻ
048B ҋ 049B қ 04AB ҫ 04BB һ 04CB Ӌ 04DB ӛ 04EB ӫ 04FB ӻ
048C Ҍ 049C Ҝ 04AC Ҭ 04BC Ҽ 04CC ӌ 04DC Ӝ 04EC Ӭ 04FC Ӽ
048D ҍ 049D ҝ 04AD ҭ 04BD ҽ 04CD Ӎ 04DD ӝ 04ED ӭ 04FD ӽ
048E Ҏ 049E Ҟ 04AE Ү 04BE Ҿ 04CE ӎ 04DE Ӟ 04EE Ӯ 04FE Ӿ
048F ҏ 049F ҟ 04AF ү 04BF ҿ 04CF ӏ 04DF ӟ 04EF ӯ 04FF ӿ

$ mathematical
Mathematical Symbols (U+2200 to U+22FF)

2200 ∀ 2210 ∐ 2220 ∠ 2230 ∰ 2240 ≀ 2250 ≐ 2260 ≠ 2270 ≰
2201 ∁ 2211 ∑ 2221 ∡ 2231 ∱ 2241 ≁ 2251 ≑ 2261 ≡ 2271 ≱
2202 ∂ 2212 − 2222 ∢ 2232 ∲ 2242 ≂ 2252 ≒ 2262 ≢ 2272 ≲
2203 ∃ 2213 ∓ 2223 ∣ 2233 ∳ 2243 ≃ 2253 ≓ 2263 ≣ 2273 ≳
2204 ∄ 2214 ∔ 2224 ∤ 2234 ∴ 2244 ≄ 2254 ≔ 2264 ≤ 2274 ≴
2205 ∅ 2215 ∕ 2225 ∥ 2235 ∵ 2245 ≅ 2255 ≕ 2265 ≥ 2275 ≵
2206 ∆ 2216 ∖ 2226 ∦ 2236 ∶ 2246 ≆ 2256 ≖ 2266 ≦ 2276 ≶
2207 ∇ 2217 ∗ 2227 ∧ 2237 ∷ 2247 ≇ 2257 ≗ 2267 ≧ 2277 ≷
2208 ∈ 2218 ∘ 2228 ∨ 2238 ∸ 2248 ≈ 2258 ≘ 2268 ≨ 2278 ≸
2209 ∉ 2219 ∙ 2229 ∩ 2239 ∹ 2249 ≉ 2259 ≙ 2269 ≩ 2279 ≹
220A ∊ 221A √ 222A ∪ 223A ∺ 224A ≊ 225A ≚ 226A ≪ 227A ≺
220B ∋ 221B ∛ 222B ∫ 223B ∻ 224B ≋ 225B ≛ 226B ≫ 227B ≻
220C ∌ 221C ∜ 222C ∬ 223C ∼ 224C ≌ 225C ≜ 226C ≬ 227C ≼
220D ∍ 221D ∝ 222D ∭ 223D ∽ 224D ≍ 225D ≝ 226D ≭ 227D ≽
220E ∎ 221E ∞ 222E ∮ 223E ∾ 224E ≎ 225E ≞ 226E ≮ 227E ≾
220F ∏ 221F ∟ 222F ∯ 223F ∿ 224F ≏ 225F ≟ 226F ≯ 227F ≿

2280 ⊀ 2290 ⊐ 22A0 ⊠ 22B0 ⊰ 22C0 ⋀ 22D0 ⋐ 22E0 ⋠ 22F0 ⋰
2281 ⊁ 2291 ⊑ 22A1 ⊡ 22B1 ⊱ 22C1 ⋁ 22D1 ⋑ 22E1 ⋡ 22F1 ⋱
2282 ⊂ 2292 ⊒ 22A2 ⊢ 22B2 ⊲ 22C2 ⋂ 22D2 ⋒ 22E2 ⋢ 22F2 ⋲
2283 ⊃ 2293 ⊓ 22A3 ⊣ 22B3 ⊳ 22C3 ⋃ 22D3 ⋓ 22E3 ⋣ 22F3 ⋳
2284 ⊄ 2294 ⊔ 22A4 ⊤ 22B4 ⊴ 22C4 ⋄ 22D4 ⋔ 22E4 ⋤ 22F4 ⋴
2285 ⊅ 2295 ⊕ 22A5 ⊥ 22B5 ⊵ 22C5 ⋅ 22D5 ⋕ 22E5 ⋥ 22F5 ⋵
2286 ⊆ 2296 ⊖ 22A6 ⊦ 22B6 ⊶ 22C6 ⋆ 22D6 ⋖ 22E6 ⋦ 22F6 ⋶
2287 ⊇ 2297 ⊗ 22A7 ⊧ 22B7 ⊷ 22C7 ⋇ 22D7 ⋗ 22E7 ⋧ 22F7 ⋷
2288 ⊈ 2298 ⊘ 22A8 ⊨ 22B8 ⊸ 22C8 ⋈ 22D8 ⋘ 22E8 ⋨ 22F8 ⋸
2289 ⊉ 2299 ⊙ 22A9 ⊩ 22B9 ⊹ 22C9 ⋉ 22D9 ⋙ 22E9 ⋩ 22F9 ⋹
228A ⊊ 229A ⊚ 22AA ⊪ 22BA ⊺ 22CA ⋊ 22DA ⋚ 22EA ⋪ 22FA ⋺
228B ⊋ 229B ⊛ 22AB ⊫ 22BB ⊻ 22CB ⋋ 22DB ⋛ 22EB ⋫ 22FB ⋻
228C ⊌ 229C ⊜ 22AC ⊬ 22BC ⊼ 22CC ⋌ 22DC ⋜ 22EC ⋬ 22FC ⋼
228D ⊍ 229D ⊝ 22AD ⊭ 22BD ⊽ 22CD ⋍ 22DD ⋝ 22ED ⋭ 22FD ⋽
228E ⊎ 229E ⊞ 22AE ⊮ 22BE ⊾ 22CE ⋎ 22DE ⋞ 22EE ⋮ 22FE ⋾
228F ⊏ 229F ⊟ 22AF ⊯ 22BF ⊿ 22CF ⋏ 22DF ⋟ 22EF ⋯ 22FF ⋿

$ emoji
Emoji symbols (U+1F600 to U+1F64F)

1F600 😀 1F610 😐 1F620 😠 1F630 😰 1F640 🙀
1F601 😁 1F611 😑 1F621 😡 1F631 😱 1F641 🙁
1F602 😂 1F612 😒 1F622 😢 1F632 😲 1F642 🙂
1F603 😃 1F613 😓 1F623 😣 1F633 😳 1F643 🙃
1F604 😄 1F614 😔 1F624 😤 1F634 😴 1F644 🙄
1F605 😅 1F615 😕 1F625 😥 1F635 😵 1F645 🙅
1F606 😆 1F616 😖 1F626 😦 1F636 😶 1F646 🙆
1F607 😇 1F617 😗 1F627 😧 1F637 😷 1F647 🙇
1F608 😈 1F618 😘 1F628 😨 1F638 😸 1F648 🙈
1F609 😉 1F619 😙 1F629 😩 1F639 😹 1F649 🙉
1F60A 😊 1F61A 😚 1F62A 😪 1F63A 😺 1F64A 🙊
1F60B 😋 1F61B 😛 1F62B 😫 1F63B 😻 1F64B 🙋
1F60C 😌 1F61C 😜 1F62C 😬 1F63C 😼 1F64C 🙌
1F60D 😍 1F61D 😝 1F62D 😭 1F63D 😽 1F64D 🙍
1F60E 😎 1F61E 😞 1F62E 😮 1F63E 😾 1F64E 🙎
1F60F 😏 1F61F 😟 1F62F 😯 1F63F 😿 1F64F 🙏

unordered_map на Си

May. 14th, 2025 05:19 pm
vak: (бэсм-6)
[personal profile] vak
К хорошему быстро привыкаешь. В Си++ нет проблем завести лишний std::unordered_map<std::string, int>. Но теперь мне такое нужно для проекта на Си. И где взять?

Слияние типов в Си

May. 13th, 2025 09:56 pm
vak: (бэсм-6)
[personal profile] vak
Согласно грамматике, в Си можно писать: signed short int. Причём в любом порядке. А можно char char char char char. Первое правильно, второе неправильно. Можно писать long long но нельзя shоrt short. Можно long double но нельзя short float. Существуют определённые правила, по которым длинная последовательность элементарных спецификаторов типа сливается в один правильный тип. Или отвергается как неверная. Вот таблица совместимости типов. Я убрал отсюда _Atomic, с ним совсем сложно и лучше рассматривать отдельно. 

void char short int long float double signed unsigned _Bool _Complex _Imaginary struct union enum MyType
--------------------------------------------------------------------------------------------------------------------
void
char
short
int
long
float
double
signed
unsigned
_Bool
_Complex
_Imaginary
struct
union
enum
MyType
Заметки о конкретных комбинациях:

void

  • Несовместимо со всеми другими спецификаторами, так как `void` является отдельным типом.
  • Пример: `void int` недопустимо.

char, short, int, long

  • Совместимо с `signed`, `unsigned` (например, `unsigned char`, `signed long`).
  • `short` и `int` объединяются как `short int`.
  • `long` и `int` объединяются как `long int`.
  • `long` может объединяться с `double` (`long double`) и самим собой (`long long`).
  • Несовместимо с `float`, `double`, `_Complex`, `_Imaginary`, `struct`, `union`, `enum`, `MyType`.

float, double

  • Совместимо с `_Complex`, `_Imaginary` (например, `float _Complex`, `double _Imaginary`).
  • `double` с `long` образует `long double`.
  • Несовместимо с `signed`, `unsigned`, целочисленными типами, `struct`, `union`, `enum`, `MyType`.

signed, unsigned

  • Применяется к `char`, `short`, `int`, `long` (например, `unsigned short`).
  • `signed` подразумевается для `int`, если он один.
  • Несовместимо с `float`, `double`, `_Bool`, `_Complex`, `_Imaginary`, `struct`, `union`, `enum`, `MyType`.

_Bool

  • Несовместимо со всеми другими спецификаторами.

_Complex, _Imaginary

  • Сочетается с `float`, `double` (например, `float _Complex`).
  • Несовместимо с целочисленными типами, `_Bool`, `struct`, `union`, `enum`, `MyType`.

struct, union, enum

  • Несовместимо с базовыми типами, `signed`, `unsigned`, `_Complex`, `_Imaginary`, `MyType`.

MyType (typedef)

  • Представляет определенный пользователем тип (например, `typedef int MyType`).
  • Несовместимо с другими спецификаторами, так как это полный тип.
  • Совместимость зависит от базового типа (например, если `MyType` - это `int`, он ведет себя как `int`).

Самосочетания

  • Большинство спецификаторов не могут сочетаться друг с другом (например, `int int` недопустимо).
  • `long` является исключением: `long long` допустимо.
  • `struct`, `union`, `enum`, `MyType` не могут повторяться.
Page generated May. 22nd, 2025 07:03 am
Powered by Dreamwidth Studios