Dasturlashni qanday o'rgandim?
Salom. Dasturlashni o‘rganamiz — qanday? maqoladagi izohlardan kelib chiqib o'zim dasturlashni qanday o'rganganim haqida yozmoqchiman. Chunki kimdir MATEMATIKA juda kerak desa yana kimdir MATEMATIKA dasturlashga umuman aloqasi yo'q deydi.
Shu har xil gaplardan kelib chiqib man o'zimning dasturlashga bag'ishlagan 12 yilim haqida gapirmoqchiman. Balki shunda MATEMATIK kerakmi? yo'qmi? degan savolga javob topilib qolar.
Matematika — ochig'ini etaman mani eng yaxshi ko'rgan fanlarimdan bittasi, bulardan keyin Astronomiya, Fizika, Ximiya va Biologiya (ozgina bo'lsada xabarim bor). Tarix, Falsafa kabi fanlar umuman yoqmaydi :).
Dasturlashga kirib kelgan paytim (litseyda, 8-sinf) QuickBasic ni o'rgatishgan. Shu paytlar manga haqiqatda ham matematikaning juda foydasi tekkan. Chunki deyarli 11-sinfgacha bo'lgan barcha dasrlikda: ikki sonning kattasini toping, qaysi son katta, 1 dan N gacha bo'lgan sonlar yig'indisini toping, agar x > 0 bo'lsa y1, aks holda y2 ni qiymatini toping degan misollar yechganman faqat.
Bulardan ko'rinib turibdiki ko'paytirish, tenglama yechishni, shunga o'xshagan matematik misollarni yechishda matematikani bilmagan odam juda qiynaladi.
Demak 1-hulosa: Matematika — dasturlashga endi kirib kelayotgan odamga juda foydasi tegadi. Chunki dasturlashni o'rganayotgan har qanday dasturchi 2 ta sonni qo'shishdan boshlaydi. Man MATEMATIKA ni bilishi shart demadim, foydasi tegadi dedim. Chunki oddiy matematik misollarni yechishda dasturlash tili standard funksiyalarni ham o'rganishni boshlaysiz, ya'ni sin/cos/tan/max/min… kabi funksiyalarni ishlatasiz. Bu sizga keyinchalik funksiya, prosedura tushunchalarida ast qotadi. Chunki o'zingizning my_sin funksiyangizni yaratishga imkon beradi.
Shu yergacha matematika haqida gapirdim. Endi keling shu 4 yilda man nimalar qilganman. 8,9-sinflarda basicda sonlar bilan ishlaydigan dasturlar tuzardim faqat, o'rtada fayllar bilan ishlash va grafika bilan ishlashlar bilan birga. Bularning ichida fayldagi so'zlar soni, fayldagi eng uzun so'z, fayldagi eng ko'p ishlatilgan harf, fayldagi harflar soni, fayldagi ikkita sonni qo'shadigan ..., grafikada uchburchak chizishdan boshlab to mini o'yinlargacha.
10-sinfda: VisualBasic ni komputerdan topil olganman va shunga qiziqib VisualBasic da oynali dastur tuzishga o'tdim. Ochig'i bitta:
shu kod formani sarlavhasini o'zgartirishini bilishimga 10 oy vaqtim ketgan. Ungacha har xil narsalar qilganman, lekin umuman tushunmaganman. 10 oyda har xil dasturlar hatto ScreenSaver ham yozib ko'rganman. Shu bir qator kodni tushunganimdan keyin Event larni ham tushunib qolganman. Lekin funksiyar haqida tushuncha bo'lmagan. Shunday bo'lsada 10,11-sinflarda quyidagi dasturlarni tuzganman. Ochig'ini etaman man uchun bu dasturlar haqligacha qadrli.
Dasturlarni ko'chirish.
Bitta dasturda parol bor «111». Faylda saqlanadi. Bulardan tashqari 2 html sahifa ham bor. Alisher Navoiyni 11-sinfda tuzganman. 2-sini 1 yoki 2-kursligimda tuzgandim.
kodni ko'rsam kulaman, hozi shuni qilsam o'zim yozgan kodimni 80% qisqartirsam kerak :).
VisualBasic ga o'tganimda MATEMATIKA manga faqat oddiy hisob kitoblarda kerak bo'lib qoldi, nechta, nechchi foiz, qanchasi to'g'ri, keyingisi kabi oddiy hisob kitoblar uchun ishlatilardi. Buni hozirda deyarli barcha biladi.
Demak 2-hulosa: Matematika qo'yilgan maqsadga qarab sizdan x% bilib talab qiladi. Ya'ni agar fayldagi ma'lumotni ekranga chiqaradigan dastur tuz desa man bu yerda MATEMATIKANI umuman ko'rmayapman. Bundan kelib chiqadiki, matematikani sizga qo'yilgan talabdan va sizning bilimingizdan kelib chiqib dasturingizda qo'llaysiz.
TATU dagi davrim ning 2 yili o'qish bilan va shu paytgacha bo'lgan 6 yili esa ishlash bilan o'tdi. Ko'p narsalarni ishlash davrida o'rganganman, ya'ni har xil muammolarni hal qilguncha. Shu jumladan o'zim ham vaqt bo'ldi deguncha internetdan o'zim bilmagan narsani topaman va shuni o'rganishni boshlayman. Misol uchun RSA ni ham shu opennet ga yozguncha o'rganganman.
Keling endi quyidagicha holatni etsam: Web dasturlashda man deyarli matematikani ishlatmiman, chunki u yerda asosan manga SQL va PHP ni bilganim ko'proq foydasi tegadi MATEMATIKA ga nisbatan.
Yana quyidagiga o'xshagan misollar mavjud: 1 dan N gacha bo'lgan sonlar yig'indisini toping. Bu holatda 2 xil yechim qilsa bo'ladi:
1. Arifmetik progressiya
2. Oddiy FOR/WHILE lar orqali
o'zi o'zidan ma'lumki 1-holatda ishlashi tezligi juda yuqori bo'ladi, FOR/WHILE larga nisbatan. Demak matematikani kompyuterda hisoblashda ko'p vaqtni oladigan jarayonlarni osonlashtirish maqsadida ishlatsa bo'ladi.
Lekin HAFVSIZLIK da faqat matematika ishlatiladi. Matematikasiz iloji yo'q, bundan tashqari deyarli barcha HASH funksiyalar, tarmoqdagi jarayonlar, shifrlashlarda matematikasiz iloji yo'q. Lekin bularni bizgacha tayyorlab yozib qo'yishgan shuning uchun bizga xuddi matematika keramasday tuyiladi. Aslida hamma yoqda faqat hisob-kitob bo'lib yotibdi.
Keling oddiy faktni ko'rsak: Nimaga barcha matematiklar dasturchi emas? Agar 50% qiziqmaydi desak, qolgani nimaga bo'lmaydi. Chunki dasturlashda faqat MATEMATIKA mas, LOGIKA ham kerak. Ya'ni masalaga qanday yondashish.
Kelin maqolamni ko'p cho'zmayda oxirgi bitta misol bilan tugatsam, chunki bu haqida yozaman desam juda ko'p yozadiganga o'xshiman.
Aslida MATEMATIKA boshqa yo'nalish, DASTURLASH boshqa yo'nalish. Kosmosda uchub yurgan aparatlar misolida ko'rsak. Matematiklar — hisob kitob qilib qachon qaysi tezlikda, qayerda to'xtashi kerak, qachon qayerga qarashi kerak va qaysi traektoriya bo'yicha yurishi kerak deb DOC yozib beradi. Dasturchilar esa — kosmosdagi temir tersakka matematiklarning qog'ozidan kelib chiqib buyruq beradi ya'ni jon kiritadi.
Shunda qilib dasturchi bo'laman desangiz nafaqat matematikani bilishingiz kerak, sizdan kuchli iroda, sabrga qo'shib yana faqat dasturchilarda ko'p uchraydigan LOGIKA ham bo'lishi kerak. Matematikani bilganingiz bu sizga foyda, lekin matematikani bilmaydigan dasturchini — dasturchi emas deb yozmanglar.
Manimcha yaqinda qidirish tizimlarida «matematika» degan so'z bo'yicha 1-o'rinda chiqsak kerak.
Shu har xil gaplardan kelib chiqib man o'zimning dasturlashga bag'ishlagan 12 yilim haqida gapirmoqchiman. Balki shunda MATEMATIK kerakmi? yo'qmi? degan savolga javob topilib qolar.
Matematika — ochig'ini etaman mani eng yaxshi ko'rgan fanlarimdan bittasi, bulardan keyin Astronomiya, Fizika, Ximiya va Biologiya (ozgina bo'lsada xabarim bor). Tarix, Falsafa kabi fanlar umuman yoqmaydi :).
Dasturlashga kirib kelgan paytim (litseyda, 8-sinf) QuickBasic ni o'rgatishgan. Shu paytlar manga haqiqatda ham matematikaning juda foydasi tekkan. Chunki deyarli 11-sinfgacha bo'lgan barcha dasrlikda: ikki sonning kattasini toping, qaysi son katta, 1 dan N gacha bo'lgan sonlar yig'indisini toping, agar x > 0 bo'lsa y1, aks holda y2 ni qiymatini toping degan misollar yechganman faqat.
Bulardan ko'rinib turibdiki ko'paytirish, tenglama yechishni, shunga o'xshagan matematik misollarni yechishda matematikani bilmagan odam juda qiynaladi.
Demak 1-hulosa: Matematika — dasturlashga endi kirib kelayotgan odamga juda foydasi tegadi. Chunki dasturlashni o'rganayotgan har qanday dasturchi 2 ta sonni qo'shishdan boshlaydi. Man MATEMATIKA ni bilishi shart demadim, foydasi tegadi dedim. Chunki oddiy matematik misollarni yechishda dasturlash tili standard funksiyalarni ham o'rganishni boshlaysiz, ya'ni sin/cos/tan/max/min… kabi funksiyalarni ishlatasiz. Bu sizga keyinchalik funksiya, prosedura tushunchalarida ast qotadi. Chunki o'zingizning my_sin funksiyangizni yaratishga imkon beradi.
Shu yergacha matematika haqida gapirdim. Endi keling shu 4 yilda man nimalar qilganman. 8,9-sinflarda basicda sonlar bilan ishlaydigan dasturlar tuzardim faqat, o'rtada fayllar bilan ishlash va grafika bilan ishlashlar bilan birga. Bularning ichida fayldagi so'zlar soni, fayldagi eng uzun so'z, fayldagi eng ko'p ishlatilgan harf, fayldagi harflar soni, fayldagi ikkita sonni qo'shadigan ..., grafikada uchburchak chizishdan boshlab to mini o'yinlargacha.
10-sinfda: VisualBasic ni komputerdan topil olganman va shunga qiziqib VisualBasic da oynali dastur tuzishga o'tdim. Ochig'i bitta:
My.Caption = "Salom";
shu kod formani sarlavhasini o'zgartirishini bilishimga 10 oy vaqtim ketgan. Ungacha har xil narsalar qilganman, lekin umuman tushunmaganman. 10 oyda har xil dasturlar hatto ScreenSaver ham yozib ko'rganman. Shu bir qator kodni tushunganimdan keyin Event larni ham tushunib qolganman. Lekin funksiyar haqida tushuncha bo'lmagan. Shunday bo'lsada 10,11-sinflarda quyidagi dasturlarni tuzganman. Ochig'ini etaman man uchun bu dasturlar haqligacha qadrli.
Dasturlarni ko'chirish.
Bitta dasturda parol bor «111». Faylda saqlanadi. Bulardan tashqari 2 html sahifa ham bor. Alisher Navoiyni 11-sinfda tuzganman. 2-sini 1 yoki 2-kursligimda tuzgandim.
kodni ko'rsam kulaman, hozi shuni qilsam o'zim yozgan kodimni 80% qisqartirsam kerak :).
VisualBasic ga o'tganimda MATEMATIKA manga faqat oddiy hisob kitoblarda kerak bo'lib qoldi, nechta, nechchi foiz, qanchasi to'g'ri, keyingisi kabi oddiy hisob kitoblar uchun ishlatilardi. Buni hozirda deyarli barcha biladi.
Demak 2-hulosa: Matematika qo'yilgan maqsadga qarab sizdan x% bilib talab qiladi. Ya'ni agar fayldagi ma'lumotni ekranga chiqaradigan dastur tuz desa man bu yerda MATEMATIKANI umuman ko'rmayapman. Bundan kelib chiqadiki, matematikani sizga qo'yilgan talabdan va sizning bilimingizdan kelib chiqib dasturingizda qo'llaysiz.
TATU dagi davrim ning 2 yili o'qish bilan va shu paytgacha bo'lgan 6 yili esa ishlash bilan o'tdi. Ko'p narsalarni ishlash davrida o'rganganman, ya'ni har xil muammolarni hal qilguncha. Shu jumladan o'zim ham vaqt bo'ldi deguncha internetdan o'zim bilmagan narsani topaman va shuni o'rganishni boshlayman. Misol uchun RSA ni ham shu opennet ga yozguncha o'rganganman.
Keling endi quyidagicha holatni etsam: Web dasturlashda man deyarli matematikani ishlatmiman, chunki u yerda asosan manga SQL va PHP ni bilganim ko'proq foydasi tegadi MATEMATIKA ga nisbatan.
Yana quyidagiga o'xshagan misollar mavjud: 1 dan N gacha bo'lgan sonlar yig'indisini toping. Bu holatda 2 xil yechim qilsa bo'ladi:
1. Arifmetik progressiya
2. Oddiy FOR/WHILE lar orqali
o'zi o'zidan ma'lumki 1-holatda ishlashi tezligi juda yuqori bo'ladi, FOR/WHILE larga nisbatan. Demak matematikani kompyuterda hisoblashda ko'p vaqtni oladigan jarayonlarni osonlashtirish maqsadida ishlatsa bo'ladi.
Lekin HAFVSIZLIK da faqat matematika ishlatiladi. Matematikasiz iloji yo'q, bundan tashqari deyarli barcha HASH funksiyalar, tarmoqdagi jarayonlar, shifrlashlarda matematikasiz iloji yo'q. Lekin bularni bizgacha tayyorlab yozib qo'yishgan shuning uchun bizga xuddi matematika keramasday tuyiladi. Aslida hamma yoqda faqat hisob-kitob bo'lib yotibdi.
Keling oddiy faktni ko'rsak: Nimaga barcha matematiklar dasturchi emas? Agar 50% qiziqmaydi desak, qolgani nimaga bo'lmaydi. Chunki dasturlashda faqat MATEMATIKA mas, LOGIKA ham kerak. Ya'ni masalaga qanday yondashish.
Kelin maqolamni ko'p cho'zmayda oxirgi bitta misol bilan tugatsam, chunki bu haqida yozaman desam juda ko'p yozadiganga o'xshiman.
Aslida MATEMATIKA boshqa yo'nalish, DASTURLASH boshqa yo'nalish. Kosmosda uchub yurgan aparatlar misolida ko'rsak. Matematiklar — hisob kitob qilib qachon qaysi tezlikda, qayerda to'xtashi kerak, qachon qayerga qarashi kerak va qaysi traektoriya bo'yicha yurishi kerak deb DOC yozib beradi. Dasturchilar esa — kosmosdagi temir tersakka matematiklarning qog'ozidan kelib chiqib buyruq beradi ya'ni jon kiritadi.
Shunda qilib dasturchi bo'laman desangiz nafaqat matematikani bilishingiz kerak, sizdan kuchli iroda, sabrga qo'shib yana faqat dasturchilarda ko'p uchraydigan LOGIKA ham bo'lishi kerak. Matematikani bilganingiz bu sizga foyda, lekin matematikani bilmaydigan dasturchini — dasturchi emas deb yozmanglar.
Manimcha yaqinda qidirish tizimlarida «matematika» degan so'z bo'yicha 1-o'rinda chiqsak kerak.
Ana endi aniq matematika deb qidirsa, birinchi bo‘lib chiqamiz! :)
xullas 1 kurs yarimi i 2 kursda matematikadan qolib kettim, «bir amallab» baholarimni oldim, chunki 2 semestrdan boshlab man uchun undan muhimroq, dasturlash (OOP,HTML,JS,...) degan narsalari boridi.
3 kursda matematika fanida asosan mantiq oqitildi, man odatdagiday qiziqmadim xam, lekin sessia paytida qandaydir qilib misollarni osongina echdim, huddi man bu narsalarni oldin o'qiganday, bular mantiqiy/binar misollar edi.
qissadan hissa: matematikani yotib turib o'rgangan bn odam programmist bulib qolmaydi :), matematikani kamroq bilgan odam (xech bulmasa kollej kursi) programmist bula oladi, albatta yuqorida aytilganday oldinroq yaratilib uje liblari tayyor
velosipedlarnishifrovanielarni qaytadan yarata olmas, lekin qoyilgan masalani hal qila oladi deb o'ylayman.fursatdan foydalanib aytib qolay, kupchilik bu narsani tan olmaydi. programmistda boshqalarda bulmagan qandaydir qobiliyat bulishi kerak, agar usha qobiliyat bulmasa 30 yil
tuitdaprogrammirovanieni urgansayam programmist bula olmaydi. oddiy misol, birinchi marta ishga kirgan joyimda bir bola ishlardi, man 2 yildan keyin bushab kettim, mandan keyin yana 2 yil ishlabdi. keyin kuchada kurib qoldim, «qale ishlar desam...», mandan programmist chiqmas ekan, 4-5 yillab programmistlarni yonida programmistday bulib yurdim, kod yozdim, ammo ohir oqibat mandan programmist chiqmasligini tushunib yettim dedi.judayam chuzilib ketti :)
Lekin bu faqatgina kriptografiyada kerak bo'ladi degani emas!
OS yaratishda, kompilyatorlar, «tanuvchi» sistemalar, simulyasiya, ma'lumotlarni qayta ishlash, tahlil qilish, subd yaratish, tovushli ma'lumotlarni ishlash va yana anchagina narsalarda kerak.
Matematika deganda boshqa narsalar tushunilyapti shekilli, shuning uchun algoritmizasiya deb qo'ya qolaman.
P.S. Yuqorida aytilgan dasturlash olimpiadalarida beriladigan masalalar man aytgan «matematika»ga misol.