Всем привет!
Сегодня вы узнаете:
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++.
С вами был Сам Самыч, всем пока!