Добавить в корзинуПозвонить
Найти в Дзене

Что такое C и с чем его едят?

Всем привет! Сегодня вы узнаете: 1. Что такое С? 2. История С 3. Какие компиляторы этого языка существуют? 4. Почему C - это не просто буква в английском алфавите? 5. Примеры программирования на C 6. Почему программирования на C для Linux и Windows систем отличается, хоть и похожи? Стоит сказать: в прошлой статье про Assembler (советую её прочитать для полной картины) я сказал, что у Assembler так называемый "компилятор" - это "транслятор", который транслировал человечекий код в машинный. Но тут идёт именно компилятор потому, что он компилирует (переводит) код на C в код на Assembler, а уже транслятор переводит код Assembler в машинный код. "Глава 1 - Что такое C?" C - это язык программирования относительно низкого уровня, идея которого была создана в 1969 году. Но давайте по порядку: Я буду называть "Денниса Ритчи" Денисом, так как мне это ближе. Как это было: В 1969 году Деннис Ритчи сидел в офисе Bell Labs, и ему пришла идея создать язык программирования C. Так же, Денис был к

Всем привет!

Сегодня вы узнаете:

1. Что такое С?

2. История С

3. Какие компиляторы этого языка существуют?

4. Почему C - это не просто буква в английском алфавите?

5. Примеры программирования на C

6. Почему программирования на C для Linux и Windows систем отличается, хоть и похожи?

Стоит сказать: в прошлой статье про Assembler (советую её прочитать для полной картины) я сказал, что у Assembler так называемый "компилятор" - это "транслятор", который транслировал человечекий код в машинный. Но тут идёт именно компилятор потому, что он компилирует (переводит) код на C в код на Assembler, а уже транслятор переводит код Assembler в машинный код.

"Глава 1 - Что такое C?"

C - это язык программирования относительно низкого уровня, идея которого была создана в 1969 году. Но давайте по порядку:

Я буду называть "Денниса Ритчи" Денисом, так как мне это ближе.

Как это было: В 1969 году Деннис Ритчи сидел в офисе Bell Labs, и ему пришла идея создать язык программирования C. Так же, Денис был как создателем идеи языка, так и был создателем компилятора этого языка.

В чём суть: Нужно было создать язык программирования, который упрощал бы разработку сложных программ при этом по скорости практически не уступая Assembler-у, который сделал бы код переносимым везде, и чтобы он компилировался (собирался в программу). Он взял концепцию языка программирования B и добавил ключевые возможности в C, как например типизация данных. Первый компилятор C был доделан в 1973 году. Данный компилятор работал на операционной системе UNIX.

Итог: Деннис Ритчи в 1969 году создал идею C, и с 69 по 73 года додумывал и доделывал компилятор C.

Так же, в 1978 году была создана книга "The C Programming Language" (язык программирования C). Книгу так же называют K&R C в честь 2-х её создателей: Брайан Керниган и Деннис Ритчи.

Случайный факт: Именно в книге K&R C была описана программа "Hello, world!" как первая, и теперь её используют половина программистов когда делают что-то новое (в их числе нахожусь и я).

Дальше уже пошёл компилятор PCC ("Portable C Compiler", ну или же "Портативный компилятор C"), и он придал данному языку славу. А потом случилось то, что изменит всё сообщество языка C - GCC (изначально - GNU C Compiler, после - GNU Compilers Collection). Этот компилятор стал самым популярным компилятором C.

Кстати, вот список популярных и известных мне компиляторов:

1. RCC (Ritchi C Compiler - самый первый компилятор, и я его так называю)

2. PCC (Portable C Compiler)

3. GCC (GNU Compiler Collection)

4. MSМC (Microsoft Visual C++ Compiler, только для Windows)

5. ICC (Intel C++ Compiler, и такой есть)

6. Clang (Компилятор)

7. TCC (Tiny C Compiler)

8. CompCert

"Глава 2 - C - это не просто буква в английском алфавите"

Помните я говорил, что на Assembler построен весь компьютерный мир? Так вот, это правда, но отчасти, и с разных сторон цифры меняются очень сильно. Если смотреть истоки (что стоит сразу после машинного кода), то Assembler занимает здесь 100% всего кода.

Но если смотреть на Assembler как на отдельный язык, а не как истоки всего - то он тут уже занимает 1% от кода операционных систем и 0.1% всех программистов знают синтаксис Assembler.

И тут вступает C. Если смотреть с точки зрения истоков всех машин, то тут C от Assembler-а занимает 80-70%. А если смотреть с точки зрения отдельного языка, то для операционных систем C это 90-95% всего кода, а в общей сложности уже 30% программистов знают синтаксис данного языка, а профессионально его знают 10-15% людей (в их числе я).

Без C не было бы Linux, Windows, Mac OS, портативных UNIX, Android, IOS, AppleTV OS (и такое существует), не было бы языков Python, Java, C++, C#, JavaScript, TypeScript, CSS, и многих других языков, о которых вы могли даже и не слышать, но они важны для мира программирования. C - это основа, без которой дом бы не построили.

"Глава 3 - Примеры кода на C"

Если раньше я для Windows не смог сделать программу для вывода "Hello, world!" на экран, то тут всё намного легче. Во первых, нам нужно установить компилятор.

Для Linux:

Нужно ввести команду "sudo [ваш пакетный менеджер] install gcc". У меня (Debian/Ubuntu) это сделано командой: "sudo apt install gcc". Если раньше нам приходилось скачивать 2 разных компилятора, то тут нужно установить всего 1 - GCC.

Так же, если вы смотрели мою статью про Assembler (я советую прочитать), то у вас уже может быть установлен GCC, для подтверждения введите команду: "gcc --version". Если у вас вывелось что-то на подобии:

```bash

GCC (Debian 14.2.0-19) 14.2.0

Copyright (C) 2024 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

```

, то у вас уже установлен GCC. Если нет, установите его.

Для Windows:
Здесь я буду использовать программу Dev-C++.

Нужно зайти в браузер и перейти на сайт "www.dev-cpp.com", после скачать установочный файл и установить программу, запустив установочный файл. Далее нужно запустить программу, и создать новый проект.

Из-за того, что у меня стоит Debian 13, а Wine отказывается со мной сотрудничать (как в чистом виде, так и устанавливая все дополнения из APT), а Steam даже пиратскую GTA SA не запускает (что уж про программы говорить), я не могу сказать точно, что и как работает.

Так как C - это портативный язык программирования, тут код будет одним и тем же как для Windows, Linux, и даже для Mac OS.

Код для первой программы:

```c

#include <stdio.h> // Импортируем библиотеку для ввода/вывода информации

int main() { // Главный цикл

printf("Hello, world!\n"); // Вывод текста "Hello, world!"

return 0; // Завершение программы без ошибок

}

```

Эта программа скомпилируется в любых операционных системах.

Для Linux:

Нужно ввести команду "gcc main.c -o main", а после "./main". Да, всего 2 команды вместо 3-х, так как это вам не Assembler.

Для Windows:

Нужно сохранить проект (CTRL + S), а после нажать на F11 (или F7).

У вас должна быть надпись "Hello, world!", НО! Если раньше на Assembler у нас "Hello, world!" надпись была примерно такая в терминале: "Hello, world!sam@debian:~$", то теперь у нас в терминале просто: "Hello, world!".

"Глава 4 - Почему не всё одинаковое?"

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

Если вы программируете код для Windows, то чтобы сделать задержку, или взаимодействовать с процессами, нам нужны библиотеки:

1. "windows.h" - основное взаимодействие с Windows

2. "shellapi.h" - взаимодействие с PowerShell

3. "processthreadsapi.h" - для взаимодействия с процессами

И другие полезные библиотеки.

Если вы программируете для Linux, Mac OS, UNIX подобных систем, Android (C - как вспомогательный язык) и так далее, то библиотеки Windows нам не подойдут. Нам нужны:

1. "unistd.h" - для системных вызовов, файлов, терминала, системная информация, создание/убийство процессов и другая "база"

2. "sys/wait.h" - для ожидания и просмотра процессов

И другие полезные библиотеки.

Стоит ещё сказать, что для Linux нельзя использовать библиотеки Windows (как я раньше уже и говорил). А для Windows нельзя ставить библиотеки Linux.

Я, кстати, разрабатываю свою библиотеку, которая решала бы такие не состыковки и просто добавляла бы полезные функции, но пока что она находится в стадии глубокой разработки (там всего 250-300 строк кода).

"Глава 5 - Что в итоге?"

Вы узнали за эту статью:

1. Что такое C;

2. Кто был создателем идеи и создателем компилятора C;

3. Почему C - это не просто буква в алфавите;

4. Почему программирования на C для Linux и Windows систем отличается, хоть и похожи;

5. Как программировать на C.

Пишите в комментариях: Как вы относитесь к C? Хотели бы вы выучить данный язык? Хотели бы вы увидеть мою библиотеку? Спорим, вы не знали такого объёма информации?

Следующая статья будет про язык программирования C++.

С вами был Сам Самыч, всем пока!