Sun'iy Intellekt

Sunʼiy intellekt zamonida kod yozadigan dasturchilar uchun zarur “qattiq” (hard skills) va “yumshoq” (soft skills) koʻnikmalar

Sunʼiy intellekt (SI) dasturlash sohasida oʻziga xos inqilobga sabab boʻlayotgan boʻlsa-da, u hanuz dasturchilar koʻrsatmasi asosida ishlaydi. Bu maqolada sunʼiy intellekt asosidagi yangi dasturlash muhitida dasturchilar qanday koʻnikmalarga ega boʻlishi kerakligi haqida gaplashamiz.

 

SI dasturlash maydonini shakllantirishda davom etayotgan boʻlsa ham, dasturchilar ularning faoliyatini eskirtiradigan emas, balki har doimgidan koʻproq koʻnikma va instinktlar talab qilinadigan yangi frontga chiqarmoqda.

Albatta, SI dasturiy taʼminot ishlab chiqarishda revolyutsiyaga sabab boʻlyapti, ammo bu revolyutsiya aynan dasturchilar bilan boshlanib, dasturchilar bilan tugallanmoqda. Buning sababi, SI vositalarini kimdir nazorat qilib turishi kerakligidadir. Ular kodlash va mahsulotni tayyorlash davrini qisqartirsa ham, inson nazorati va kodlash qobiliyatining oʻrnini bosa olmaydi.

Biz yaqinda dasturchilar va SI instrumentlari oʻrtasida rivojlanib borayotgan aloqalarni oʻrgandik hamda SI dasturchilar uchun murakkab vazifalarning kognitiv yukini yengillashtirishi mumkinligini aniqladik. SI vositalari shunchaki ikkinchi juft qoʻl boʻlishdan tashqari, bir yoqadan chiqarilgan ikkinchi bosh kabi dasturchilarga yanada koʻp tarmoqli va samarali ishlashda yordam berishi mumkin.

Mohiyatan, dasturchilar yangi til oʻrganishdan tortib murakkab muammolarga yuqori sifatli yechim topishga eʼtibor qaratishi uchun SI aqliy zoʻriqishni kamaytirishi mumkin. Demak, agar siz dasturlashni oʻrganish yoki SI hozirgi dasturchilik faoliyatida qanday qoʻl kelishi haqida oʻylanib oʻtirgan boʻlsangiz, SI davrida faoliyatingiz toʻgʻrisida nimalarni bilishingiz kerakligini aytamiz.

 

SI asosidagi vosita va metodlarning qisqacha tarixi

Generativ SI haqida OAVdagi shov-shuv yangi boʻlsa ham, SI asosidagi kodlash vositalari u yoki bu shaklda kutganimizdan koʻproq vaqtdan beri mavjud. Sizni jarayonga olib kirish uchun bugun bizda mavjud murakkab kodlash vositalariga yoʻl ochgan SI asosidagi qurilma va metodlarning qisqacha roʻyxatini keltiramiz:

1950-yillar: avtokoder avtomatik kodlash yoʻlidagi ilk urinishlardan edi. 1950-yillarda IBM kompaniyasi tomonidan ishlab chiqilgan avtokoder simvolik tilni mashina kodiga oʻgirib, ilk kompyuterlar uchun dasturlash vazifalarini yengillashtirib berardi.

1958-yil: LISP – Jon Makkarti tomonidan yaratilgan yuqori darajadagi, eng eski dasturlash tillaridan boʻlib, SI dasturlashi uchun asos boʻlgan simvolik qayta ishlash va rekursiv funksiyalardan iborat edi. Qayishqoqligi va sezilarli kuchi tufayli u SI doirasidagi tadqiqot hamda dasturlash ishlari uchun mashhur tanlovga aylandi.

"(defun factorial (n) 
(if (<= n 1) 
1 
(* n (factorial (- n 1)))))"

Bu funksiya LISPʼda “n” manfiy boʻlmagan butun sonning faktorialini hisoblaydi. Agar “n” 0 yoki 1 ga teng boʻlsa, faktorial 1 ga teng boʻladi. Boshqa hollarda u “n” 1 ga yetmaguncha rekursiv tarzda “n”ni n-1 faktorialga koʻpaytiradi. 

1970-yil: Massachusets texnologiya institutida faoliyat yuritadigan Terri Vinograd tomonidan ishlab chiqilgan SHRDLU tabiiy tilni tushunish boʻyicha ilk dasturlardan boʻlgan. U ingliz tilidagi cheklangan toʻplamdagi buyruqlarni interpretatsiya qilib, ularga javob bera olgan va shu bilan SIning inson tilini tushunish va qayta ishlash qobiliyatini koʻrsatib bergan.

Blok dunyoda ishlaydigan SHRDLU tabiiy tildagi buyruqlarni tushunish va bajarishga yoʻnaltirilgan boʻlib, bundan maqsad turli shakldagi bloklardan iborat virtual obyektlarni boshqarishdir.                                                          [Manba: Cryptlabs]

1980-yillar: 1980-yillarga kelib, The Last One kabi kod generatorlari paydo boʻlgan. Ular foydalanuvchining oʻziga xosliklari yoki avvaldan tayyorlangan shablonlar asosida avtomatik ravishda kod generatsiya qiladigan uskuna sifatida yuzaga kelgan. U zamonaviy tushunchadagi SIga toʻla asoslanmagan boʻlsa ham kod generatsiyasi va avtomatizatsiya sohasidagi kelgusi yutuqlar uchun poydevor boʻla oldi.

"Personal Computer jurnalining The Last One dasturiga bagʻishlangan 1982-yil soni muqovasi.
[Manba: Devid Tebbatts]"

1990-yillar: neyron tarmoqlar asosidagi prognoz modellari kod bilan bogʻliq masalalar, jumladan, dasturning ishlashini prognoz qilish, dasturiy taʼminot kamchiliklarini topish va kod sifatini tahlil qilish kabilarga koʻproq tatbiq qilina boshlagan. Bu modellar neyron tarmoqlar imkoniyatlaridan namunalarni tanib olish maqsadida kod namunasida oʻrganish va prognoz qilish uchun foydalanilgan.

2000-yillar: bu davrga kelib, kodning tashqi koʻrinishini oʻzgartirmasdan uni qayta tizimlash va yaxshilashda avtomatlashgan koʻmakchi SI imkoniyatlariga ega refaktoring uskunalari paydo boʻlgan. Bu uskunalar kod shablonlarini tahlil qilish, refaktoring imkoniyatlarini aniqlash va dasturchiga mos refaktoringni taklif qilish uchun SI metodlaridan foydalangan.

SI asosidagi ilk kodlash uskunalari dasturiy taʼminot ishlab chiqish evolyutsiyasini shakllantirishga yordam bergan. Shuningdek, u hozirda kundan kunga rivojlanayotgan SIga asoslangan kodlash va avtomatizatsiya uskunalari uchun poydevor boʻlgan.

 

IDE chegaralaridan tashqarida

Avvaliga SI uskunalari dasturlashning integratsiyalangan muhiti (IDE) bilan cheklanib, dasturchilarga kod yozish va uni mukammallashtirishda yordam bergan. Endi esa SI dasturiy taʼminot ishlab chiqish hayotiy siklining (SDLIC) har bir qismiga aloqadorligini koʻryapmiz, bu bilan samaradorlikni oshirishi, birgalikdagi ishni optimallashtirishi va muhandislik jamoalari uchun innovatsiyalarni tezlashtirishi mumkinligini aniqladik.

2023-yilda AQSHda 500 nafar dasturchi orasida oʻtkazilgan soʻrovnomaga koʻra, ulardan 70 foizi ishda bir qancha afzalliklarga erishilganini, 80 foizdan ortigʻi esa bu uskunalar jamoalar ichida kuchliroq kolloboratsiyaga sabab boʻlishini xabar qilgan. Bundan tashqari, bizning tadqiqotimizda SI asosidagi dasturlash uskunalaridan foydalanilganda ishlar oʻrtacha 55 foizga tezroq bajarilgan.


SI asosidagi zamonaviy kodlash uskunalari qayerdaligi va ular hozirda berayotgan texnik afzalliklar nimalardan iboratligini qisqacha koʻrib chiqamiz.

  • Kodni toʻldirish va tavsiyalar. GitHub Copilot kabi vositalar kod kontekstini tahlil qilish va kodlash samaradorligini oshirish boʻyicha tavsiyalar ishlab chiqishda katta til modellari (LLM)dan foydalanadi. Dasturchilar endi samaradorlik oshganini his qilishi mumkin, chunki SI nafaqat muharrirdagi kod, balki dasturchilarning kod repozitoriylaridan olingan kontekst va shablon asosida kodning toʻliq satrlarini taklif qiladi. Copilot turli dasturlash tillari, freymvork va kutubxonalarni tushunish darajasini yaxshilash va dasturchilarga kod boʻyicha qimmatli tavsiyalar berish uchun GitHub’dagi ochiq manbali kod (open-source)lardan foydalanadi.

  • Repozitoriydagi generativ SI. Dasturchilar savollar berish va oʻz kod bazasini real vaqtda chuqurroq tushunish uchun GitHub Copilot Chat kabi vositalardan foydalanishi mumkin. Repozitoriylardagi eski kod va jarayonlar kontekstini yigʻadigan SI tufayli GitHub Copilot Enterprice tashkilotning kod bazasidagi eng yaxshi ishlardan foydalanib tavsiya berishi va barqarorlikni saqlashda koʻmaklashishi mumkin.

  • Tabiiy tilni qayta ishlash (NLP). Oxirgi vaqtlarda SI tabiiy tildagi namunalar asosida kod yozishda katta muvaffaqiyatlarga erishdi. ChatGPT kabi vositalar orqali dasturchilar oʻz maqsadlarini oddiy tilda bayon etishi, SI esa ishlaydigan kod yoki shu kodning ishlashini tushuntiradigan natijalarni chiqarib berishi mumkin.

  • SI yordamida kengaytirilgan saralash. Bu vositalar koddan ehtimoliy xatolarni izlab, ehtimoliy tuzatishlarni taklif qiladi, xatolarni samarali topish va yoʻqotishda xotiradagi maʼlumot va shablonlardan foydalanadi.

 

SI vositalaridan foydalanish uchun dasturchilar texnik va “yumshoq” koʻnikmalarga ega boʻlishi kerak.

Dasturchilar faoliyatiga SI vositalarini qoʻshganda ularga yordam berishi mumkin boʻlgan ikki turli koʻnikmalar — texnik va “yumshoq” koʻnikmalar mavjud. Har ikki turdagi koʻnikmalarga ega boʻlish SI loyihalariga qoʻshilayotgan dasturchilar uchun juda muhim. Ular SI vositalari oʻz manfaatlariga mos ravishda ishlashi uchun texnik koʻnikmalarni, shu bilan birga odamlar bilan yaxshi ishlashi, muammolarni ijodiy hal qilishi, taklif qilayotgan yechimlari undan foydalanadigan odamlar manfaatiga haqiqatan mos kelishiga amin boʻlish uchun umumiy manzarani ham koʻra olishi kerak.

Keling, birinchi texnik koʻnikmalarga nazar tashlasak.

Texnik bilimlarni egallash

Prompt injiniring
Prompt injiniring – kerakli javob yoki natija olish uchun SI modellariga toʻgʻri va yaxshi oʻylab tuzilgan prompt yoki yoʻriqnoma berishdan iborat. SI asosidagi kodlash assistentlari qoniqarli javob chiqarib bera olmasligi anchagina yoqimsiz holat, ammo SI bilan qanday munosabatda boʻlishni oʻrganish orqali buni tezda toʻgʻrilash mumkin. Tabiiy tilda prompt tayyorlashda esa quyidagilar eʼtiborga olinishi kerak:

  • Aniq va ravshan boʻlish. SI modellaridan samarali foydalanish uchun toʻgʻri va kontekstga mos promptlar yarating.

  • Tajriba oʻtkazing va takrorlang. Turli xildagi promptlardan foydalaning va olingan javobga koʻra ularni takrorlang.

  • Tekshirish, tekshirish va yana tekshirish. Hamkasbingiz tomonidan yozilgan kodni tekshirganingiz kabi SI algoritmlari tomonidan yozilgan kodni ham tekshirish, tahlil qilish va baholash juda muhim.

Kodni koʻzdan kechirish

SI foydali, ammo u ideal emas. LLM katta hajmdagi maʼlumotlar bilan ishlashga oʻrgatilgan boʻlsa ham, u mohiyatan dasturlash konsepsiyasini insonlar kabi tushunolmaydi. Natijada SI tomonidan yaratilgan kod sintaktik, mantiqiy xatolar yoki boshqa muammolarga ega boʻlishi mumkin. Xatosi bor kodni ommaga chiqarmaslikka amin boʻlish uchun ham dasturchilar kodlashda oʻz malakasi va tashkiliy bilimlariga tayanishi kerak.

Kodni muvaffaqiyatli koʻzdan kechirishni “Koddagi bu oʻzgarish kerakli vazifani bajaryaptimi?”, degan savol bilan boshlash mumkin. Bu yerda siz SI yaratgan kodni tekshirishda nimalarga eʼtibor qaratish kerakligi haqida batafsil nazorat roʻyxatini topasiz.

Testing va xavfsizlik

SI imkoniyatlari tufayli dasturchilar endi osonlik bilan test yaratishi va uni avtomatlashtirishi mumkin. Bu esa ularning testdan o‘tkazish (testing) boʻyicha majburiyatlarini qoʻldan olib, ancha strategik qiladi. SI yaratgan testlar muhim funksiyalar, ehtimoliy holat va zaifliklarni samarali qamrab olishini kafolatlash uchun dasturchilardan soha boʻyicha chuqur bazaviy bilim, testdan o‘tkazish (testing) tamoyili va xavfsizlikni taʼminlash metodlaridan xabardorlik talab etiladi. Shu tariqa ular yaratilgan testlarni samarali tarzda tahlil va tatbiq etishi, potensial cheklovlarni aniqlashi va zarur boʻlganda qoʻlda qilingan testlar bilan toʻldirishi mumkin boʻladi.

SI yaratgan testlarning sifati va ishonchliligini baholash uchun quyidagi qadamlarni qilishingiz mumkin:

  • Test tasdiqlarini tekshirish. SI yaratgan test davomida qilingan tasdiqlashlarni tekshirib boʻladimi, ular dasturiy taʼminot ishlariga mos keladimi, tekshirib koʻring.

  • Testning toʻliqligini baholang. SI yaratgan testlar barcha ehtimoliy ssenariy va muhim holatlarni qamrashini tekshiring hamda toʻla qamrov uchun qoʻshimcha sinov oʻtkazilishi mumkin boʻlgan boʻshliq, maydonlarni aniqlab oling.

  • Cheklov va ogohlantirishlarni aniqlash. Maʼlumotlarning ogʻishi, algoritmlarning ishdan chiqishi va test generatsiyasi uchun ishlatiladigan SI modellarining cheklanishi kabi omillarni hisobga oling.

  • Natijalarni baholang. Asosiy sabablar va dastur uchun oqibatlarni aniqlash uchun istalgan muvaffaqiyatsiz test hamda anomaliyani oʻrganing.

 

Ana endi navbat “yumshoq” koʻnikmalarga

Dasturchilar SIdan keyingi loyihalarni yaratish uchun foydalanar ekan, hamkasblar bilan yaxshi muomala va hamkorlik qilish kabi “yumshoq” (ijtimoiy) koʻnikmalar har qachongidan ham zarur boʻladi.

Keling, SI vositalaridan foydalanish jarayonida dasturchilar eʼtibor qaratishi kerak boʻlgan “yumshoq” koʻnikmalarni koʻrib chiqamiz...

  • Kommunikatsiya. Kommunikatsion qobiliyatlar loyiha talablarini aniqlash, gʻoyalar almashish va muammolarni hal qilishda jamoa aʼzolari, masʼul tomonlar bilan muloqot qilishda birinchi oʻrinda turadigan koʻnikmalardandir. Dasturchilar prompt injiniring bilan ishlagani uchun ham bu juda muhim. Eng yaxshi SI promptlari aniq, toʻgri oʻylangan boʻladi, insonlar bilan muloqot esa bundan deyarli farq qilmaydi.

  • Muammolarni hal qilish. Dasturchilar murakkab muammolar yoki SI bilan ishlashda kutilmagan muammolarga duch kelishi mumkin. Bu paytda innovatsion yechim izlashda ijodiy fikrlash va oʻzgaruvchan muhitlarga moslashish qobiliyati muhim rol oʻynaydi.

  • Moslashuvchanlik. Tez rivojlanayotgan SI texnologiyalari dasturchilardan qayishqoqlik va yangi vositalar, metodologiya hamda platformalardan foydalanishga tayyor turishni talab qiladi. Bundan tashqari, SI tinimsiz rivojlanib borayotgan davrda tafakkurning oʻsishiga olib boradigan “yumshoq” koʻnikmalarni rivojlantirish insonlarga doimiy oʻrganish va zamon bilan hamnafas boʻlishga imkon yaratadi.

  • Axloqiy fikrlash. Axloqiy fikrlash SI bilan dasturlashda, ayniqsa, oʻzgarishlar, adolat, shaffoflik va maxfiylik kabi masalalarda juda muhim. Haqqoniylik va axloqiy fikrlash foydalanuvchilar, umuman jamiyat manfaatini ustun koʻradigan masʼuliyatli qarorlar qilishda kerak boʻladi.

  • Empatiya. Dasturchilar koʻpincha foydalanuvchilar uchun yechim va mahsulot yaratadi. Bunda qimmatli foydalanuvchi tajribasini yaratish uchun dasturchilar foydalanuvchining talab va ehtiyojlarini tushunish imkoniga ega boʻlishi kerak. SI dasturchilarga kod yoki taklif yaratish orqali buni tezroq hal qilishga yordam berishi mumkin boʻlsa ham, dasturchilar baribir kodni tekshirish va bu yechimlar turli toifadagi foydalanuvchilar manfaatiga xosligini kafolatlashi kerak boʻladi.


Bu “yumshoq” koʻnikmalarni qayrab borish dasturchining texnik tajribasini kengaytiradi, shuningdek, hamkasblari bilan ham, SI vositalari bilan ham samarali ishlashiga imkon yaratadi.

Manba: Hard and soft skills for developers coding in the age of AI

#Sunʼiy intellekt
#NLP
#Yumshoq koʻnikmalar
#SoftSkills
#HistoryOfAI
Mohirdev Telegram

Telegram kanalimizga obuna bo’lishni unutmang

Obuna bo'lish
github blog

github blog