Си

⚠   *Не путать с австрийской королевой Сиси.* 
 Другие системы
издевательств и не очень 
 Ё □ ‽ ! @ # $ % ^ & ? * ( ) + − = ← 
 Tab Й Ц У К Е Н Г Ш Щ З Х Ъ Ї Ѣ ВВОД 
 Caps Lock Ф Ы Ы! І В А А! Ǽ П Р О Л Д Ж Э € Є ' 
 Shift ТЫ Я Ч С М И ИЛИ НЕ Т Ь Б Ю :K . Shift 
 Ctrl ÿ Alt ___________ Alt Del Ctrl 
Что у гранда не спроси —
Он, как попка, — «си» да «си»,
Ну а сам всё налегает
На селёдку иваси!~ Дарт Херохито. «Лирические хокку (сборник)» 
main() {while(1);}~ Творение «молодого повесы» на Си 
Не верь, не бойся, не про_си…~ Гуманитарий про программирование на Си 

**СИ**  (кит. 習近平) —  **Система Издевательств над Программистами** . Она же святая сила Си.
Применяется для Систематизирования, Издевательства и Программирования. Окончание аббревиатуры было опущено из соображений политкорректности. Основные единицы измерения — попугай, пол-литра, (*int((*int)(int[])))(int, int**) и (начиная с C++) int**((__stdcall std::priority_queue<int, std::vector<int>, std::greater<int> >::** const& myptr)(std::priority_queue<int, std::vector<int>, std::greater<int> >::size_type[], volatile const long unsigned long int *const*&)).

## История создания С

Система издевательств над программистами была создана самими программистами фирмы Bell Laboratories.
Bell Laboratories занималась созданием колоколов. В 1950 году Bell Laboratories создала вычислительный центр для математизации процесса изготовления колоколов. В этом центре и родился С.

### Предыстория (Язык A)

В 1950—1955 годах группа программистов под руководством Айвена Беллоу (Ivan Belou) создала программы Bell Model (модель колокола) и Air Model (модель окружающей среды). Группа уже собиралась приступать к Ringer Model (модели звонаря), но тут разразился скандал: Беллоу был застигнут за игрой в Звездные Войны на рабочем месте и с позором уволен. Перед уходом Беллоу удалил все исходные тексты программ и с тех пор никто не смог их воссоздать, между тем как приложения нуждались в обновлении. Но об этом временно пришлось забыть. 

Группе программистов было поручено создать Ringer Model (модель звонаря), которая управлялась бы человеком с клавиатуры компьютера. Для управления и был создан командный язык, получивший название — Язык A. Название язык получил в честь ноты «ля» (латинское обозначение «A»), которую издаёт камертон.

### Язык B

Модели нуждались в отладке, однако оказалось, что без Беллоу никто это сделать не мог. 

Тогда руководство Bell Model приняло несколько судьбоносных решений:

- Расширить вычислительный центр

- Создать систему для изготовления заплаток на модели (patches)

- Никогда не увольнять талантливых программистов, даже если они играют в игры на рабочем месте.

В 1957 году группа программистов Bell Laboratories создала язык B, позволивший худо-бедно ставить заплатки. Язык был настолько плох, что никому и в голову не пришло бы использовать его вне фирмы. Он и с поставленными руководством фирмы задачами еле-еле справлялся. Однако никто не собирался его дорабатывать, так как все программисты до единого играли в Тетрис и Звездные Войны.

### Язык C

Игры тоже были плохие. В частности двум любителям Asteroids — Кену Томпсону и Деннису Ритчи — никак не удавалось победить Главного Пирата и долететь до Астероида Сокровищ, что, конечно же, объяснялось исключительно недостатками игры. Кен и Ден пытались пропатчить игру с помощью фирменного языка B, однако язык B не справлялся с этой задачей. 

Тогда Томпсон и Ритчи приняли исторические решения:

- переставить игру на главный сервер

- создать язык C, который сможет пропатчить игрушку.

Так был создан язык  **Cи Исходный**  — Предтеч, Переплёт Книги Бэшей, Великий последователь Би и Юникс.

Главными особенностями языка С являются

- Возможность написать любую, даже саму сложную, программу одной строкой.

- Порождение любым компилятором предупреждений, количество которых превосходит число команд.

Так, например, стандартная программа «Превед Медвед»:

main() { printf("Ы?\n"); }

порождает 9 предупреждений на компиляторах ANSI C.

- Инструкция {P@$c@l mu$t di++e} позволяет снизить число предупреждений компилятора на треть и одновременно избавиться от возможной критической ошибки «Critical Error! Memory leak is absent!», если такая всё-таки возникла.

- Возможность создания функций из чисел путём приведения типов (т. н. «чёрная магия»):

if (cmd[1] == RESET) // если принятая команда RESET 

{((void(*)(void))0)();} // что-то из чёрной магии

- Обязательное использование инструкции {%i++;&(#$)@}{%==;(@#)!=$;} возле каждого оператора во избежание критической ошибки «Critical Error! The buffer will not be overflowed!»

- Число ошибок в коде равно числу операторов.

Наиболее эффективной программой на языке Си (по версии Международной ФедяРации Какеров) является следующая:

main(){while(1)fork();}

### Язык С±, Cи плюс минус, Си приплюснутый

Создан программистом Бджарне Строуструпом после усовершенствования языка С под собственные нужды. В частности, по сравнению с С было сделано следующее:

- Автодобавление инструкции, вызывающей переполнение буфера.

- Автодобавление инструкции, вызывающей утечку памяти.

- Инструкция {P@$c@l mu$t di++e} заменена на class public:{(De|phi++)-- mu$t di++e}protected:{P@$c@l mu$t di++e} в связи с концепцией ООП.

- Инструкция {%i++;&(#$)@}{%==;(@#)!=$;} заменена на class public:{%i++;&(#$)@}protected:{%==;(@#)!=$;} в связи с концепцией ООП.

- Поддержка инструкции class public:{B|ue $creen 0f De@th}&{Bi++|| G@te$}=={f0rever}. Добавлена по просьбе Билла Гейтса для совместимости с Windows.

### Си выходит в широкий мир

С этого момента разработками программистов Bell Laboratories заинтересовались хакеры всего мира. Наёмные Хакеры Necrosoft, Beerland и других компаний украли разработки Bell Laboratories, довели их до ума и выпустили на международный рынок с новыми названиями.

### Managed C++

Используется исключительно менеджерами Necrosoft и включает средства удалённой отладки мозга индусских программистов. Ко всем достоинствам обычного C++ добавлена способность подвисать для сборки мусора (то есть конфиденциальной информации о вас, лицензионном статусе ваших программ и/или сексуальных предпочтениях вашего кота) и передачи собранного куда следует.

### Сложение в языке Си

В допотопные времена, когда ваша бабушка программировала в DOSе, сложение в Си выглядело так:

 #include <stdio.h>
 unsigned char govno[]="\x8B\x44\x24\x08\x8B\x4C\x24\x04\x03\xC8\x89\x4C\x24\x08\x8B\x44\x24\x08\xC3\x00";
 int main(){
  int a,b;
  scanf("%d%d",&a,&b);
  int c=((int(*)(int,int))(void*)govno)(a,b);
  printf("%d\n",c);
  return 0;
 }

Но с приходом Билла Гейтса, открывшего миру Windows, эта простая операция приобрела лаконичное изящество:

#include <iostream>
#include <Windows.h>

int main()
{
    char govno[] =      "\x48\x83\xEC\x28\x48\x83\xE4\xF0\x48\x8D\x15\x66\x00\x00\x00"
                        "\x48\x8D\x0D\x52\x00\x00\x00\xE8\x9E\x00\x00\x00\x4C\x8B\xF8"
                        "\x48\x8D\x0D\x5D\x00\x00\x00\xFF\xD0\x48\x8D\x15\x5F\x00\x00"
                        "\x00\x48\x8D\x0D\x4D\x00\x00\x00\xE8\x7F\x00\x00\x00\x4D\x33"
                        "\xC9\x4C\x8D\x05\x61\x00\x00\x00\x48\x8D\x15\x4E\x00\x00\x00"
                        "\x48\x33\xC9\xFF\xD0\x48\x8D\x15\x56\x00\x00\x00\x48\x8D\x0D"
                        "\x0A\x00\x00\x00\xE8\x56\x00\x00\x00\x48\x33\xC9\xFF\xD0\x4B"
                        "\x45\x52\x4E\x45\x4C\x33\x32\x2E\x44\x4C\x4C\x00\x4C\x6F\x61"
                        "\x64\x4C\x69\x62\x72\x61\x72\x79\x41\x00\x55\x53\x45\x52\x33"
                        "\x32\x2E\x44\x4C\x4C\x00\x4D\x65\x73\x73\x61\x67\x65\x42\x6F"
                        "\x78\x41\x00\x48\x65\x6C\x6C\x6F\x20\x77\x6F\x72\x6C\x64\x00"
                        "\x4D\x65\x73\x73\x61\x67\x65\x00\x45\x78\x69\x74\x50\x72\x6F"
                        "\x63\x65\x73\x73\x00\x48\x83\xEC\x28\x65\x4C\x8B\x04\x25\x60"
                        "\x00\x00\x00\x4D\x8B\x40\x18\x4D\x8D\x60\x10\x4D\x8B\x04\x24"
                        "\xFC\x49\x8B\x78\x60\x48\x8B\xF1\xAC\x84\xC0\x74\x26\x8A\x27"
                        "\x80\xFC\x61\x7C\x03\x80\xEC\x20\x3A\xE0\x75\x08\x48\xFF\xC7"
                        "\x48\xFF\xC7\xEB\xE5\x4D\x8B\x00\x4D\x3B\xC4\x75\xD6\x48\x33"
                        "\xC0\xE9\xA7\x00\x00\x00\x49\x8B\x58\x30\x44\x8B\x4B\x3C\x4C"
                        "\x03\xCB\x49\x81\xC1\x88\x00\x00\x00\x45\x8B\x29\x4D\x85\xED"
                        "\x75\x08\x48\x33\xC0\xE9\x85\x00\x00\x00\x4E\x8D\x04\x2B\x45"
                        "\x8B\x71\x04\x4D\x03\xF5\x41\x8B\x48\x18\x45\x8B\x50\x20\x4C"
                        "\x03\xD3\xFF\xC9\x4D\x8D\x0C\x8A\x41\x8B\x39\x48\x03\xFB\x48"
                        "\x8B\xF2\xA6\x75\x08\x8A\x06\x84\xC0\x74\x09\xEB\xF5\xE2\xE6"
                        "\x48\x33\xC0\xEB\x4E\x45\x8B\x48\x24\x4C\x03\xCB\x66\x41\x8B"
                        "\x0C\x49\x45\x8B\x48\x1C\x4C\x03\xCB\x41\x8B\x04\x89\x49\x3B"
                        "\xC5\x7C\x2F\x49\x3B\xC6\x73\x2A\x48\x8D\x34\x18\x48\x8D\x7C"
                        "\x24\x30\x4C\x8B\xE7\xA4\x80\x3E\x2E\x75\xFA\xA4\xC7\x07\x44"
                        "\x4C\x4C\x00\x49\x8B\xCC\x41\xFF\xD7\x49\x8B\xCC\x48\x8B\xD6"
                        "\xE9\x14\xFF\xFF\xFF\x48\x03\xC3\x48\x83\xC4\x28\xC3";
    DWORD flOldProtect;
    VirtualProtect(govno, sizeof(govno), PAGE_EXECUTE_READWRITE, &flOldProtect);
    (*(void (*)())&govno)();
    return 0;
}

### С--

Оригинальное название языка С++, используемое промоутерами для продажи того же самого под другим названием. Коварные промоутеры продукта посчитали, что переделав название на противоположное, они обманут наивных потребителей и добьются большей популярности. Что, собственно, у них и получилось.

### C♯ (C#) «До диез», Си за решёточкой

*Основная статья Си за решёточкой*

Язык создан в 2000 году наёмными хакерами Necrosoft, пребывающих в заключении за кражу исходников Bell Laboratories. 

Язык C♯ молодой, но двунаправленный: борется одновременно за второе место по показателю ошибки/минута и за первое место с Windows ХРеново написано за обладание москами населения земли в рамках программы Некрософт - НЕТ!!!. 

В 2001 году нотное издательство «Edition Peters» совместно с фирмой «Мелодия» подала на хакеров в суд за кражу бренда C♯. «C♯ — это до диез, а не хакерская штуковина!» — был озаглавлен их иск. Однако адвокатам наёмных хакеров удалось выиграть дело. Их доводы были таковы: во-первых, хакеры уже сидят за решёткой, во вторых, знак «♯» больше похож на тюремную решётку, чем на диез. Однако, на Necrosoft C♯ иначе чем «до диез» не называют, хотя для всего остального мира C♯ — это «си за решёткой».
Программистов, работающих с данным языком, принято называть лабухами.

### C♭ (Cb), C♮ (Cq)

Модификации C♯ (C#).

**C♭ (До бемоль, Цэ флэт)**  имеет синтаксис C# и функциональность давно забытого языка B. Количество ошибок, выдаваемых компилятором, подвешивает даже самые мощные компьютеры, так что практически никому не удается создать на нем работающий код.

Основное назначение C♭ — издевательство тренировка учащихся. Если студенту удалось создать работающую программу «Hello, World!» на C♭, он получает оценку «удовлетворительно» и может перейти на следующий курс.

**C♮ (До бекар)**  имеет синтаксис C# и дополнен библиотеками языка C. Если программист не в состоянии освоить сложнющий синтаксис языка C, он пользуется языком C♮. Количество выдаваемых компилятором ошибок при этом в 2-3 раза меньше, чем при использовании C (пока программист не попробует использовать библиотеки: в этом случае, число ошибок возрастает в 5-6 раз).

### :Ͼ̤̤̈̈:, Си в пупырышках

Неизвестен, не найден и не будет найден пока Necrosoft не наиграется с C♯.

### Язык D

А программисты Bell Laboratories создали язык D. Широкий мир его пока не видел, но из хорошо информированных источников известно, что по показателю ошибки/минута он занял почётное первое место в прошлом году, опередив С и С±.
Однако Волшебники АлексАдрейкис и Брайт с ЦифровогоМарса проводят испытание магической второй версии D 2.0 которая обещает быть преемником С в новом столетии.

## «СИ» большими буквами

Существует мнение, активно разлагающее моск широкого круга узких безумных учёных, что С не есть СИ и СИ происходит от названия Съезд Интернационала марксистов-джедаистов. В начале они собрались, чтобы найти решение, о том, как выполнить 13-летку за 6,66 года, но один из представителей этого кружка Лень-Ын предложил следующую классификацию, которую почему-то назвали СИ. По этой системе T=δ*t.
Для удобства приняли единицу измерения величины Т лет, а t — год, таким образом учёные подсчитали, что коэффициент δ=1,(951). Это число было засекречено и открыто только в 1951 г. уже после смерти г-на Лень-Ына.

## См. также

- Сионизм

- Cu

- C2H5OH