Nega faqat o’zbek tilini bilgan holda dasturchi bo’lish mumkin emas?
Xorijiy tillarni bilish ko’pchilik sohada Sizga qo’shimcha imkoniyat yaratib berishi mumkin. Bunday sohalarda xorijiy tillarni bilishingiz Siz uchun shunchaki qo’shimcha qobiliyat hisoblanib, uning mavjud bo’lmasligi Sizni sohadan chiqib ketishga majbur qila olmaydi. Dasturchilikda esa hammasi aksincha.
O’zim bir necha yildan buyon dasturchilikni o’rganayapman. Imkon qadar ko’proq dasturlash tillarini bilib, o’zimga eng ma’qul bo’lganida professional darajaga yetishni maqsad qilganman. O’rganishim davomida juda ko’p martalab muammolarga duch kelaman va ularga yechim topish uchun yana ko’proq izlanish, o’rganish kerak bo’ladi. Internetda dasturchilikni bepul o’rganishingiz, har qanday muammoga yechim topishingiz, istalgan savolni ijtimoiy tarzda ommadan so’rashingiz mumkin. O’rganish va izlanishda hech qanday muammo yo’q, ammo xorijiy tillarni bilmaydigan o’rganuvchilar uchun til bilmaslik katta to’siq bo’lishi mumkin.
Tahminan bir yil avval men dasturchilikni bepul o’rgatadigan sayt tashkil qilmoqchi edim. w3schools.com saytini o’zbekchalashirib, huddi shu usulda o’zbek tilida so’zlashuvchi, xorijiy tilni bilmaydigan yoshlarga dasturlashning sodda tushunchalarini o’rgatishni maqsad qilgandim. Keyinchalik dasturchilik hech bo’lmaganda rus tilini yaxshi bilish orqali o’rganilishini, ingliz yoki rus kabi xorijiy tillarni bilmasdan dasturchilikni o’rganib bo’lmasligini anglaganimdan keyin harakatlarimni to’xtatgan edim.
Dasturchilikni o’zbek tilining o’zida o’rganishning imkoni hozircha yo’q. Chunki o’zbek tilidagi saytlarda dasturlash, dasturchilikka oid ma’lumotlar juda kam. O’rganishni endi boshlagan dasturchilarning bir muammoga duch kelganda kimdan savol so’rashi masalasi esa deyarli yechimi imkonsiz muammo hisoblanadi. Qachonlardir dasturlashni o’rganish uchun o’zbek tilining o’zi kifoya qilishi mumkin. Buning uchun dasturchilik haqida ko’plab ma’lumotlarni jamlagan saytlar huddi hozir klip va kino saytlari ommalashgandek rivojlanishi kerak.
Bugungi kunda dasturchilikni mukammal o’rganish uchun zarur bo’lgan xorijiy til – bu ingliz tili! Ingliz tilini 1)o’qiganini tushuna oladigan, 2) video darsni ko’rib, tinglab tushuna oladigan va 3) fikrini yozma ravishda ifoda eta oladigan darajada bilgan kishi dasturchilikni internet orqali o’rganishni boshlashi mumkin, deb hisoblayman. Rus tilini bilish ham huddi shu tarzda yordam berishi mumkin.
Ingliz tilini mukammal bilsangiz, dasturchilikni o’rganish uchun quyidagi saytlardagi darslarni tavsiya etaman:w3schools.com , tutsplus.com , tutorialspoint.com. Agar o’rganishingiz davomida muammoga duch kelsangiz, savol tug’ilsa, quyidagi saytlardan izlashingiz mumkin: stackoverflow.com , quora.com , reddit.com , codeproject.com ,groups.google.com , coderanch.com , findnerd.com. Savol-javob saytlarida Siz duch kelgan muammo yuzasidan 99% holatda avvaldan savol so’ralgan va batafsil javob berilgan bo’ladi. Imkon qadar savol berishdan avval javoblarni izlab, o’rganib chiqishga harakat qiling.
Xulosa o’rnida maqolam sarlavhasidagi savolga javob bermoqchiman: dasturchilikni hozirgi holatda faqat o’zbek tilini bilgan holda o’rganish imkonsiz. Professional dasturchi bo’lib yetishishingiz uchun albatta rus yoki ingliz tilini mukammal bilishingiz shart. Dasturchilikni faqat o’zbek tilida o’rganish uchun bu soha bizda rivojlanishini bir necha o’n yil, balki yuz yil kutishingiz kerak bo’lishi mumkin. Yaxshiroq yechim esa rus yoki ingliz tilini yetarli darajada o’rganib, shu asosda dasturchilikni o’rganish bo’lib qolaveradi.
O’rganishdan hech qachon charchamang!
Dasturchi uchun eng muhim 4 ko’nikmalar
Bugungi kunda juda ko’plab texnologiya, til va platforma tanlovlari mavjudligi evaziga dasturchi sifatida o’zining ko’nikmalarini rivojlantirish uchun vaqtni qayerga sarflashni aniqlab olish juda mushkul.
Ko’pchilik tez-tez qanday qilib yaxshiroq dasturchi bo’lish haqida so’rashadi.
Ko’pincha ular bu savolni vaqtlarini ma’lum bir dasturiy til yoki texnologiyaga sarflashlari kerakmi yoki yo’qmi – shuni aniqlashtirish maqsadida berishadi.
Quyida dasturchilar o’zlashtira oladigan, ularga eng yaxshi martaba imkoniyatlarini beradigan va ularni eng samarali qiladigan muhim va vaqtga bog’liq bo’lmagan ko’nikmalar haqida to’htalib o’tamiz.
#1 Muammolarni hal qilish
Dasturiy ta’minot tuzish bu yuz foiz muammoni hal qilish haqidadir.
Muammolar bo’lmaganda dasturiy ta’minotga ehtiyoj bo’lmagan bo’lardi.
Barcha dasturiy ta’minotlar foydalanuvchining ma’lum bir muammosini hal qilish uchun mo’ljallangan.
Qaysi dasturlash tili yoki texnologiyadan foydalanishingizning farqi yo’q, agar siz muammolarni hal qila olmasangiz, siz dasturiy ta’minot tuzishda eng yashi bo’la olmaysiz.
#2 O’zingizni o’rgatish
Hayotda o’rganishni o’rganishdan ko’ra muhimroq ko’nikma bo’lmasa kerak.
Bu ko’nikma ayniqsa dasturiy ta’minot ishlab chiqarishda juda ahamiyatli, chunki hech bir sohada dasturiy ta’minot ishlab chiqarish sohasidagidek tez o’zgarishlar yo’q.
Siz hamma narsa haqida hamma narsani bila olmaysiz. Hatto siz ma’lum bir freymvork yoki texnologiyada usta bo’lish uchun zarur vaqtni ham investistsiya(sarf qilmoq ma’nosida) qila olmaysiz, chunki hamma narsa o’ta tez harakatlanmoqda!
Aksincha, siz qo’lingizdagi ish uchun kerak bo’lgan bilimni tez o’zlashtirish qobiliyatiga muhtojsiz.
Agar siz dasturiy ta’minot ishlab chiqarishda yuqori martabaga ko’tarilishingizga sabab bo’ladigan ko’nikmaga haqiqatta ega bo’lishni xohlasangiz, o’zingizni o’rgatishni o’rganing.
Bu ko’nikmani rivojlantirishning yagona yo’li uni amalda qo’llashdir. Yangi dasturlash tili yoki texnologiyani o’rganing, garchi uni hech qachon ishlatmayman deb o’ylasangiz ham. O’rganishni o’rganib olganingizdan so’ng qanday tez o’zlashtira olganingizdan o’zingiz ajablanasiz, chunki sizda allaqachon asos ko’nikma mavjud.
Agar siz tez o’zgarayotgan dasturiy ta’minot ishlab chiqarish bozori va texnologiyalariga, hamda ularga bog’liq platformalarga darhol moslasha olsangiz, siz har doim talab qilingan ko’nikmalarga ega bo’lasiz.
#3 Nomlash
Har safar kod yozayotganizda siz narsalarni nomlaysiz. Qachonki siz o’zingiz yoki boshqalar yozgan kodni o’qiyotganingizda, asosan o’sha koddagi narsalarning nomlaridan kod nima haqida ekanligini tushunib olasiz.
Aksariyat hollarda, dasturchilar yozgan koddagi metod, o’zgaruvchi va klaslarning qanday nomlanganiga qarab ularning mahorat darajasini aytib berish mumkin.
O’zi yozgan dasturdagi ma’lumot va konsepsiyalarga yaxshi nom berishda no’noq bo’lgan dasturchi soqov tarjimonga o’xshaydi. Agar siz biror narsani tushunsangizu, uni tushunarli tarzda ifodalab berolmasangiz – sizning tushunishingiz ahamiyatga ega emas, balki bu tushunmaslik bilan barobar.
Bu ko’nikmani rivojlantirishning eng yaxshi yo’li har doimgidek uni amaliyotga kiritish. Tajribali dasturchilar ko’pincha, kodni tushunish uchun o’qiyotganida undagi narsalarni qayta nomlaydi. Biror metod nima qilishini tushunishni boshlasa, o’sha tushunganiga moslab uning nomini o’zgartiradi. Buni ular kodni o’qiyotganida qiladi, unga hech qanday mantiqiy o’zgarish qilmaydi.
Siz narsalarga yaxshi nom berishga ko’proq e’tibor qaratsangiz, bu ishda siz yaxshiroq bo’lib borasiz.
Shuningdek, bu sizning kodingizdagi eng ko’zga tashlanadigan narsa. Kodga qarab turib uning to’g’ri yoki samarali ekanini bilish juda mushkul, lekin uni mutahassis odam o’qisa va tushuna olsa, hulosa qilish mumkinki, siz nima qilayotganingizni bilasiz.
#4 Odamlar bilan ishlash
Bu ko’nikma ro’yhatda oxirgi o’rinda kelyapti, lekin ko’p hollarda siz uni birinchi va eng muhim ko’nikma deb ayta olasiz.
Hamma joyga borsangiz odamlar bor.
Agar siz yolg’iz ishlamasangiz va faqat o’zingiz uchun dasturiy ta’minot ishlab chiqarmasangiz, boshqa odamlar sizni dastur tuzuvchi sifatidagi kariyerangizga ta’sir qiladi.
Asosiy muammo inson aksariyat hollarda mantiqiy emas, balki hissiy yondashadi. Albatta, biz mulohaza qilish qobiliyatimiz bilan maqtanishni yaxshi ko’ramiz, lekin voqeylikda esa, biz qabul qiladigan aksariyat qarorlarga ongdan ko’ra, hissiyotning ta’siri katta.
Bu, siz dasturchi uchun nimani anglatadi? Ya’ni, agar siz boshqa dasturchilar, menejer va hatto mijozlar bilan ham samarali ishlolmasangiz, siz doimiy qiyinchilikka duch kelasiz, garchi sizning g’oyalaringiz qanchalik yaxshi yoki sizning ko’nikmalaringiz qanchalik qimmatli bo’lsa ham.
Umuman olganda, faol bo’lish va dastur ishlab chiqarish jamiyatida ishtirok etish sizning kariyerangizga yordam beradi. Bularni muvaffaqqiyatli amalga oshirish odamlar bilan ishlash ko’nikmangizga to’g’ridan-to’g’ri ta’sir qiladi.
Amaliy ko’nikmalarchi?
Sezganingizdek, bu ro’yhatda biror bir tehnologiya, veb dasturlash yoki mobil dasturlash kabi keng tarqalgan ko’nikmalar haqida hech narsa kiritilmagan. Bu haqda, avvalgi maqolalarimizda tanishishingiz mumkin:Link
Albatta, bir necha tehnologiyalarda yaxshi asosga ega bo’lish juda muhim, ammo u narsalar yuqorida sanab o’tgan 4 ta ko’nikmalarchalik muhim emas.
Agar siz muammolarni hal qila olsangiz, tez o’rgana olsangiz, narsalarni yaxshi nomlay olsangiz va odamlar bilan yaxshi ishlasangiz sizda ma’lum bir tehnologiyada ixtisoslashganingizdan ko’ra yuqoriroq muvaffaqqiyatga erishish imkoningiz bo’ladi.
Hulosa qiladigan bo’lsak, bir yoki ikki dasturlash tillarini chuqur o’rganish va umumiy ihtisoslikka ega bo’lish albatta muhim, ammo bu tanlovlarning o’zi bilan siz o’z yo’lingizda uzoqqa bora olmaysiz. Siz bu muhim 4 ko’nikmalarga e’tibor qarating va sizda hammasi joyida bo’ladi.
Dasturchi bo’lishning 6 yo’li
Olti yo’l:
- Web dasturlash
- Desktop(ish stoli kompyuterlari uchun) ilovalarini dasturlash
- Taqsimlangan ilovalarni dasturlash
- Dasturiy vositalar(Library/Platform/Framework/Core)ni dasturlash
- Tizim dasturlash
- Ilmiy dasturlash
Dasturchi bo’lish sizning mahoratingizni kundan-kunga, yildan-yilga asta-sekin, bosqichma-bosqich rivojlanib boruvchi to’plangan jarayon hisoblanadi, va dasturlash qiziq va mukofotlaydigan(aqliy, ma’naviy va moliyaviy) jarayon bo’ladi. Bu yo’riqnoma dasturchi bo’lishga sehrli oson yo’l taqdim qilishga vada bermaydi, qadamlar ketma-ketligi ham ilohiy emas, ammo siz bitta zamonaviy dasturlash sohasida dasturchi bo’lish haqida umumiy ma’lumot olasiz.
Quyidagi sohalardan bittasi(yoki hammasi)dan kirish kurslariga boring.
- Mantiq(Logic)
- Diskret matimatika(Discrete mathematics)
- Programming language(C++/Java/Python-boshlovchular uchun yaxshilari)
Ma’lumotlar bazasi(Database) tushunchalarini o’rganing: jadvallar(tables), manzaralar/so’rovlar(views/queries) va bajarilish ish tartiblari(procedures) kabilarni:
- MS Access
- DB V
- Fox Pro
- Paradox
- MySQL – yaxshi ma’lumotlar bazasi o’rganish uchun, chunki u tekin, odatiy ishlatiladigan, ma’lumotlar bazalari SQL so’rovlari bilan odatda huquq berilgan hisoblanadi.
Qaysi turdagi dasturchi bo’lishingiz haqida qaror qabul qiling. Dasturchilar quyidagi kategoriyadan biri bo’lishadi.
- Web dasturchi
Desktop ilovalari dasturchisi
Operatsion tizim dasturchini aniqlaydi(yagona operatsion tizimga yoki operatsion tizimlar to’plamiga bog’langanligini) - Mustaqil platforma dasturchisi
- Taqsimlangan ilovalar dasturchisi
- Dasturiy vositalar(Library/Platform/Framework/Core)i dasturchisi
- Tizim dasturchisi
asos(kernel, core) dasturchisi
qurilmalar(driver) dasturchisi
tuzuvchi(compiler) dasturchisi - Ilmiy dasturlash
Sizning tanlovingizdagi sohaga bog’liq bo’lgan texnologiyalarni va dasturlash tillarini o’rganing. Quyidagi bo’limlarda vazifalarni dasturlashning turli toifalar uchun tahlil qilib chiqamiz.
I. WEB DASTURLASH
- Web dasturlashni nimasi jalb qilishini bilib olasiz. Web ilovalari internet arxitekturasini yuqorisida ishlashi loyihalashtirilgan dasturiy ta’minot komponentlari hisoblanadi. Bu shuni anglatadiki, veb brouzer dasturi(Firefox yoki Internet Explorer ga o’xshash) orqali ilovalarga huquq olinadi. Internet arxitekturaning cho’qqisida qurilgan bo’lishi internetga ulangan bo’lishini zaruriy darajada talab qilmaydi. Bu esa web ilovalari quyidagilarga o’xshash standart web texnologiyalarini ustiga qurilganligini anglatadi:
- HTTP
- FTP
- POP3
- SMTP
- TCP
- IP protocols
- HTML
- XML
- Coldfusion
- ASP
- JSP
- PHP
- ASP.NET
Ko’rib chiqing ko’pgina bir-biriga o’xshamagan web saytlarni, odatiy uslublari haqida o’rganish uchun. (o’ng qo’lni bosing, keyin kodni ko’rish(View Source) yoki F12 bosing) Web saytlarning toifasi/mazmunini rang-barangligi uchun qarang, web satyga tashriflarning soni uchun emas. Umuman olganda, siz quyidagi web saytlar toifasining har biriga kamida bir marta kirishingiz kerak:
- Korporativ qatnashish saytlari(tijoriy tashkilot, foyda uchun bo’lmagan tashkilotlar, davlat tashkilotlari)
- Web indeksga kirituvchi moshinalar(qidiruv moshinalari, meta izlash saytlari, maxsus qidiruv moshinalari, papkalar)
- Kon sanoati ma’lumotlari saytlari
- Shaxsiy saytlar
- Ma’lumot beruvchi/ensiklopediya saytlar(wikilar, malumot sahifalari, texnikaviy xususiyatlar, qo’llanmalar ro’yxatlari papkalari, bloglar va gazeta-jurnallar, yangilik va yangilik agentliklari saytlari, sariq sahifalar(yellow pages),…)
- Ijtimoiy saytlar(ijtimoiy portallar, linklarni saqlovchi(bookmarking) saytlar, qaydlarni olish saytlari)
- Hamkorlik qiluvchi saytlar(wiki saytlari va bloglar kiradi)
Kamida bitta brainstorming texnikasi/uslubini va ushbu uslubni amalga oshiradigan dasturiy ta’minotni o’rganing. Misol uchun: brainstorming diagrammasi va MS Visio.
Web sayt tuzilishi bilan yaqin bo’lganini oling. Bu sinalmagan web diagrammalari, sayt xaritalari va navigatsiya strukturasini hosil qilish.
Дастурлаш муҳити (IDE) тушунчаси ҳақида биласизми?
IDE — бу сиз англаётган «ғоя» дегани эмас ))
IDE(Integrated development environment) — дастурлаш тиллари учун муҳит ҳисобланади, кўпчилик бу тушунчани айнан шундайлигича билади, лекин бу таърифнинг маъноси нималигини унчалик тушунмайди. Бу мақола айнан шу IDE абревиатурасини тушунтиришга бағишланади.
Дастурлаш муҳити деганда, сиз ёзаётган кодларни айнан қаерга ёзиш кераклиги тушунилади. Мисол учун, оддий «Блокнот» ҳам IDE вазифасини бажариши мумкин. IDE сифатида, дастурлар ёки дастурлар йиғиндиси ишлатилади. Замонавий ва машҳур дастурлаш муҳитларига қуйидагиларни мисол қилиш мумкин (мақолада Windows тизими назарда тутилган):
PHPStorm — асосан PHP дастурчилар учун;
VisualStudio — .Net дастурчилар учун;
NetBeans — асосан Java, PHP дастурчилар учун;
PHPDesigner — асосан web (PHP) дастурчилар учун;
…
Агар ҳали ҳам тушунарсиз бўлса, бошқа мавзуда мисол келтираман. Сиз компьютер тузатувчи устасиз, сиз ўз ишингизни қилишингиз учун яхши шароит керак: электр токи билан таъминлаган хона, керакли қуриламаларга(тестер, паялник, отвёрка..) эга бўлишингиз, ҳар ҳил турдаги уланувчи ва уловчи симлар бўлиши, компьютернинг асосий эҳтиёт қисмларининг нусхаси ва бошқалар. Умуман олиб қараганда, бундай шароит бўлмаса ҳам уста бўлаверасиз, лекин бирор компьютерни тузатиш учун анча вақт керак бўлиб қолади (керакли жиҳозларни кимдандур сўраш керак бўлади, ток ўчиб қолса, уни келишини кутиш). IDE ҳам шундай, қанчалик яхши ва қулай муҳит бўлса, ишингиз ҳам шунча тез ва сифатли битади.
Мукаммал дастурлаш муҳитларида, дастурчилар учун ҳамма шароитлар яратилган бўлади, яъни бирор лойиҳани тузиш учун қўшимча дастурлар керак бўлмаслиги лозим, мисол учун қуйидаги имкониятлар бўлади:
— матн муҳаррири;
— компилятор/интерпретатор;
— лойиҳанинг барча қисмларини автомат йиғувчи (Сборщик);
— хатоларни аниқ кўрсатувчи функцияси;
— код синтаксисларини ёзишда ёрдам берадиган кутубхона;
— кодни ишлатиб кўриш учун шароит (емуляторлар, браузерлар);
— терминал (консоль учун);
— версиялар билан ишловчи модуль (github);
— каталог иерархияси;
Бундай дастурлаш муҳитлари, дастурчиларни бироз дангаса қилиб қўяди деган гап рост, лекин тез бирор лойиҳани тузмоқчи бўлсангиз, буларсиз анча вақт кетиб қолади.
Дастурлаш муҳитлари ҳам, бошқа дастурларга ўхшаб пуллик ёки бепул бўлиши мумкин, пуллик муҳитлар:
— PHPStorm;
— VisualStudio;
— RAD Studio;
— KomodoIDE;
— PHPDesigner;
…
Бепул дастурлаш муҳитлари:
— KomodoEdit
— VS Express;
— NetBeans;
— Aptana Studio;
— Eclipse;
…
Дастурлаш тилига қараб, керакли IDE танланади, ўзимни оладиган бўлсам, wеb учун Sublime матн муҳаририрни ишлатаман (нимагадир ўрганиш бўлиб қолган), .Net дастурлаш учун VisualStudio.
Охирида, бошқа соҳаларда ҳам ишлатилган саволни бермоқчиман, дастлаб дастурлаш тили тузилганми ёки дастурлаш муҳитими? ёки, дастлаб дастурлаш тили тузилганми ёки компилятор? )