1-bo‘lim
C tili bilan tanishuv
C qanday paydo bo'lgan, nima uchun ellik yildan keyin ham eng muhim tillardan biri va uni bugun o'rganish nima beradi.
Ushbu bo‘lim mundarijasi
Kompyuteringizdagi deyarli har bir dastur ostida C turadi. Windows va Linux yadrosi, MySQL, SQLite, Git, Nginx, Python interpretatorining o'zi - hammasi C da yozilgan.
C qayerdan paydo bo'ldi? #
Dennis Ritchie (1941-2011)
Bell Labs muhandisi. 1972-yilda C tilini yaratdi va Ken Thompson bilan birga UNIX operatsion tizimini shu tilda qayta yozdi. Bu tarixdagi eng ta'sirchan qaror bo'ldi: shu paytgacha operatsion tizimlar assembler tilida yozilar va bir kompyuterdan boshqasiga ko'chirilmas edi.
1978-yilda Brian Kernighan va Dennis Ritchie «The C Programming Language» kitobini chiqardi. Uni qisqacha K&R deb atashadi. Kitob atigi 200 sahifadan iborat, lekin butun bir tilni to'liq tasvirlaydi - dasturlash tarixidagi eng ta'sirchan kitoblardan biri.
O'sha kitobdagi birinchi dastur hello, world edi. Bugun ham har bir
dasturchi o'z yo'lini shu ikki so'zdan boshlaydi.
C bugun qayerda ishlaydi? #
| Soha | Misollar |
|---|---|
| Operatsion tizimlar | Linux yadrosi, Windows yadrosi, macOS asosi |
| Ma'lumotlar bazasi | MySQL, SQLite, PostgreSQL, Redis |
| Dasturlash tillari | Python (CPython), PHP, Ruby, Lua interpretatorlari |
| Tarmoq dasturlari | Nginx, curl, OpenSSL, Git |
| O'rnatilgan tizimlar | Mikrokontrollerlar, avtomobil, tibbiy uskuna |
| Grafika va o'yin | SQLite, SDL, OpenGL drayverlari |
| Kosmik texnika | Sun'iy yo'ldosh va rover dasturlari |
Python'da print("salom") deb yozganingizda, aslida C da yozilgan funksiya
ishga tushadi. Telefoningiz, routeringiz, mashinangizning boshqaruv bloki -
ularning barchasida C kodi ishlaydi.
C ni o'rganish - bu «yana bir til» o'rganish emas, bu kompyuter qanday ishlashini tushunish.
Nima uchun C ni o'rganish kerak? #
- Kompyuterni tushunasiz. Xotira nima, stek va uyum (heap) qanday farq qiladi, o'zgaruvchi aslida qayerda yotadi - C buni yashirmaydi.
- Boshqa tillar osonlashadi. C dan keyin C++, Java, C#, Go, Rust sintaksisi tanish tuyuladi.
- Tezlik. C kodi to'g'ridan-to'g'ri mashina kodiga aylanadi.
- Ish imkoniyatlari. O'rnatilgan tizimlar, drayverlar, o'yin dvigatellari, moliyaviy tizimlar - bularda C va C++ hukmron.
- Kod hajmi. Butun til atigi 32 ta kalit so'zdan iborat. Python'da 35 ta, Java'da 50 dan ortiq.
C ning kuchli va zaif tomonlari #
| Kuchli tomoni | Zaif tomoni |
|---|---|
| Juda tez ishlaydi | Xotirani o'zingiz boshqarasiz |
| Kichik hajmli dastur | Xatolik qilish oson (segfault) |
| Har qanday platformada ishlaydi | Standart kutubxona kichik |
| Til soddaligicha qolgan | Satrlar bilan ishlash noqulay |
| Butun dunyoda hujjatlangan | Obyektga yo'naltirilgan emas |
Python'da ro'yxatning 100-elementiga murojaat qilsangiz, xatolik xabari chiqadi. C da esa dastur begona xotiraga kiradi va hech narsa demaydi - yoki noto'g'ri natija beradi, yoki keyinroq kutilmaganda qulaydi.
Bu qo'rqinchli emas - shunchaki e'tibor talab qiladi. Darslikning 12-14-bo'limlarida bu mavzuni batafsil ko'ramiz.
Birinchi dastur - oldindan ko'rish #
#include <stdio.h>
int main(void) {
printf("Salom, dunyo!\n");
return 0;
}
Salom, dunyo!
Hozircha har bir qatorni tushunish shart emas. Keyingi bo'limda muhitni sozlaymiz va shu dasturni o'z kompyuteringizda ishga tushiramiz.
C va boshqa tillar - bir vazifa #
Bir xil vazifani uch tilda solishtiring: 1 dan 5 gacha sonlar yig'indisi.
#include <stdio.h>
int main(void) {
int yigindi = 0;
for (int i = 1; i <= 5; i++) {
yigindi += i;
}
printf("Yig'indi: %d\n", yigindi);
return 0;
}
yigindi = sum(range(1, 6))
print(f"Yig'indi: {yigindi}")
Python bir qatorda qiladigan ishni C da bir necha qator bilan yozamiz.
Buning sababi: Python sum() funksiyasi ichida aynan shunday sikl bor -
faqat u sizdan yashirilgan va C da yozilgan.
C da hech narsa yashirin emas. Bu ko'proq yozishni talab qiladi, lekin har bir qadam nima qilayotganini aniq bilasiz.
Darslik qanday tuzilgan #
| Bo'limlar | Mavzu |
|---|---|
| 1-5 | Asoslar: muhit, sintaksis, turlar, kiritish-chiqarish |
| 6-8 | Boshqaruv: operatorlar, shartlar, sikllar |
| 9-11 | Ma'lumot: massivlar, satrlar, funksiyalar |
| 12-14 | Ko'rsatkichlar va xotira - eng muhim qism |
| 15-17 | Strukturalar, fayllar, ko'p faylli loyiha |
| 18-20 | Standart kutubxona, nosozliklarni tuzatish, amaliy loyiha |
Ko'rsatkichlar (pointers) - C ni qiyin ko'rsatadigan yagona mavzu. Ko'pchilik aynan shu yerda to'xtaydi.
Lekin ular tushunilgach, hamma narsa joyiga tushadi: massivlar nima uchun shunday ishlashi, funksiyaga qanday qilib katta ma'lumot uzatish, dinamik xotira nima uchun kerakligi.
Shoshilmang. O'sha bo'limni ikki marta o'qishga tayyor bo'ling.
- Kompyuteringizdagi qaysi dasturlar C da yozilganini qidiring.
- K&R kitobi haqida ma'lumot toping - u nima uchun mashhur?
- Dennis Ritchie va Ken Thompson hayoti bilan tanishing.
- Linux yadrosining kod hajmini (qatorlar soni) toping.
- C va C++ orasidagi asosiy farqni bir jumlada yozing.
- Yuqoridagi C dasturini qog'ozga ko'chirib yozing - har bir belgiga e'tibor bering.
- Nima uchun
printfda\nkerakligini taxmin qiling. - TIOBE reytingida C hozir nechanchi o'rinda ekanini tekshiring.
- O'rnatilgan tizim (embedded) nima ekanini o'rganing.
- Nima uchun C ni o'rganmoqchi ekaningizni bir abzatsda yozing.
Xulosa #
- C ni 1972-yilda Dennis Ritchie Bell Labs da yaratgan.
- UNIX ni C da qayta yozish tilni butun dunyoga tarqatdi.
- Bugun operatsion tizimlar, ma'lumotlar bazasi, tarmoq dasturlari va o'rnatilgan tizimlar C da yoziladi.
- C - yuqori darajali til bilan assembler orasidagi ko'prik.
- Tilda atigi 32 ta kalit so'z bor - o'rganish uchun kam, lekin ularni chuqur bilish kerak.
- C sizni xatolardan himoya qilmaydi - nazorat ham, javobgarlik ham sizda.
- C ni bilgan odam boshqa har qanday tilni tezroq o'zlashtiradi.
Keyingi bo'limda muhitni sozlaymiz va birinchi dasturni ishga tushiramiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.