Qazanclar:
- Aydın giriş-çıxış və məhdudiyyət tərifləri ilə AI-yə funksiyaları, sinifləri və modulları yazmaq bacarığı
- Süni intellektdən cüt proqramlaşdırma tərəfdaşı kimi istifadə etmək və kiçik, yoxlanıla bilən hissələrdə addım-addım irəliləmək bacarığı
- Süni intellekt tərəfindən yaradılan kodu tərtib etmək və kiçik nümunələrlə işlətməklə məntiqi və kənar vəziyyət səhvlərini tutmaq bacarığı
Cüt proqramlaşdırma, iki tərtibatçının eyni problem üzərində işlədiyi zaman, biri yazı, digəri isə düzəliş edir. AI ilə kodlaşdırma bu əlaqənin rəqəmsal versiyasıdır: siz istiqaməti, məhdudiyyətləri və qəbul meyarlarını təyin edirsiniz; AI sürətli qaralama istehsal edir; Siz hər bir addımı tərtib edib sınaqdan keçirərək yoxlayırsınız. Buradakı ən böyük tələ süni intellektə “mənə bu ərizəni başdan sona yaz” demək və 200 sətirlik bloku kor-koranə qəbul etməkdir. Yaxşı cüt proqramlaşdırma kiçik addımlarla davam edir: hər bir addım başa düşülən, sınaqdan keçirilə bilən və geri çevrilə bilən olmalıdır.
Bu bölmədə siz aydın giriş-çıxış müqaviləsi ilə funksiyaları, sinifləri və modulları çap etməyi öyrənəcəksiniz; AI-yə addım-addım necə rəhbərlik etmək olar; və onun istehsal etdiyi kodu kiçik nümunələrlə işlətməklə məntiqi və kənar vəziyyət səhvlərini necə tutacağımızı görəcəyik. Məqsəd sürət deyil, təsdiqlənmiş sürətdir.
Konsepsiyalar: Giriş-çıxış müqaviləsi: Bir funksiyanın hansı girişi qəbul etdiyini və onun hansı çıxış və səhv davranışını vəd etdiyini aydın tərifi. Edge case: Adi olmayan, lakin əslində baş verə bilən daxiletmə (boş, sıfır, mənfi, çox böyük, null). Artan inkişaf: Kiçik, iş parçaları ilə davam etmək və hər bir addımı təsdiqləmək.
Net Müqavilə ilə Çap Kodu
Keyfiyyət kodunun əsası işə başlamazdan əvvəl "nə istədiyinizi" dəqiq müəyyən etməkdir. Süni intellektə funksiya yazarkən ona beş şey verin: dil və versiya, giriş növləri və mənaları, çıxış, səhv şərtləri və məhdudiyyətlər (performans, xarici kitabxana qadağası, üslub). Bu, AI-nin təxmin etməsinə mane olur.
- Müqaviləni yazın. Giriş, çıxış, xəta, məhdudiyyət.
- Kiçik bir vahid tələb edin. Tək məsuliyyət daşıyan funksiya; Bu, böyük bir modul deyil.
- Test bloku tələb edin. Kodun yanında bir neçə nümunə sınaq/test əlavə edin.
- Kompilyasiya edin və işləyin. Bunu kənar qutularla sınayın, çıxışı gözlə yoxlayın.
- Növbəti addıma keçin. Parça təsdiqləndikdən sonra onun üzərində qurun.
Müqavilə edilmiş funksiya sorğusu: "TypeScript 5 üçün funksiya yazın. Məqsəd: alış-veriş səbətindəki maddələrin ümumi miqdarını hesablayın. Daxil edin: { qiymət: sayı, kəmiyyət: sayı }[] massivi. Çıxış: sayı (ümumi). Qaydalar: Kəmiyyət və ya qiymət mənfi olarsa, xəta atmaq; boş massiv üçün 0 qaytarın; 2-dən aşağı rəqəmlər üçün sınağın rəqəmsal kitabxanasını yoxlayın. (normal, boş, mənfi kəmiyyət, onluq qiymət, tək maddə).”
Cüt olaraq AI-yə rəhbərlik
Cüt proqramlaşdırmada yaxşı irəliləyiş bir böyük tələbdən daha çox dialoqdur. Əvvəlcə skeleti tələb edin və onu işə salın; sonra kənar vəziyyəti əlavə edin; sonra bir səhv düzəldin. Bu yanaşma kodu başa düşülən saxlayır və hər addımda nəzarəti sizə verir.
Artan irəliləyiş xəbərdarlığı: "Biz CSV faylını oxuyan və sətirləri obyektə çevirən oxucu yazacağıq. Gəlin ADDIM-ADDIM gedək, mən hər addımı təsdiqləmədən növbəti addıma keçək. 1-ci addım: sadəcə faylı sətirlərə ayıran və başlıq xəttini ayıran skeleti yazın. Növə çevrilmə və ya xətanın idarə olunmasını hələlik qısa saxlamayın."
Kod sorğusunu izah edin və əsaslandırın: "İndicə yazdığınız funksiyanı sətir-sətir deyil, qərara görə izah edin: hansı dizayn qərarını verdiniz və niyə, hansı kənar işi idarə etdiniz və necə, hansı halları bilərəkdən istisna etdiniz? Kodda qaçırmamalı olduğum 3 fərziyyəni sadalayın."
İpucu: Süni intellekt tərəfindən yaradılan kodu başa düşmədən qəbul etməyin. "Bunu mənə izah et, hansı fərziyyələri irəli sürdün?" Sual həm gizli səhvləri üzə çıxarır, həm də bu kodu müdafiə etməyə imkan verir, çünki kod sizin məsuliyyətiniz olaraq qalır. Anlamadığınız kodu istehsalata yerləşdirmək müqaviləni imzalamadan göndərməyə bənzəyir.
Zəif Tələb / Güclü Tələb
ZƏFS:"Çeşidləmə funksiyası yazın."(Nəticə: hansı dildə, nə çeşidlənir, sabitdir, performans məhdudiyyəti nədir, qeyri-müəyyən və yəqin ki, tələbə uyğun olmayan koddur.)GÜÇLÜ:"Java 17 üçün List<İşçi> obyektini əvvəlcə şöbəyə (əlifba sırası ilə), sonra isə R Siyahını (əlifba sırası ilə) sıralayan, sonra isə orijinalı DEYİL siyahıya qaytararaq (yeni EPLADOce) qaytarın. Şərh sətirində null departamenti ən sonda gəlsin.
Güclü tez; Çeşidləmə meyarı (iki səviyyəli), yan təsir qaydası (orijinalın dəyişdirilməsi), sıfır davranış və test gözləməsi daxildir. Bu təfərrüatlar olmadan süni intellekt ağlabatan, lakin düzgün olmayan bir həll yaradır; məsələn, o, orijinal siyahını poza bilər və bu, başqa yerdə səssiz səhvə səbəb olacaq.
Edge Cases və Kiçik Nümunələrlə Doğrulama
Xoşbəxt ssenaridə işləyən kod düzgün kod deyil. İstehsal olunan hər bir funksiyanı şüurlu şəkildə məcbur edin:
Kənar qutu növü
nümunə girişi
gözlənilən davranış
boş giriş
Boş massiv/sətir
Səhv deyil, məntiqi boş nəticədir
Sıfır/mənfi
0, -1
Müəyyən edilmiş və düzgün davranış
böyük dəyər
Milyonlarla rekord
Daşma/performans nəzarəti
null/müəyyən edilməmiş
boş yer
Nəzarət edilən xəta və ya defolt
Dublikat/qeyri-adi
təkrarlanan, tərs qaydada
düzgün nəticə
Mini Çantalar
Case 1 - Səssiz yuvarlaqlaşdırma xətası. AI onluq (float) növləri ilə pul toplayan funksiya yazır; 0,1 + 0,2 0,30000000000000004 verir. Mühəndis "2 rəqəmə yuvarlaqlaşdır və bütün qəpiklərdən istifadə et" qaydasını əlavə etdikdə xəta aradan qaldırılır. 3 sətirli qayda aylıq uzlaşmada minlərlə qəpiklik fərqin qarşısını alır.
2-ci hal - Yan təsir tələsi. Süni intellekt siyahını “çeşidləyən”, lakin orijinal siyahını yerində dəyişdirən bir üsul yazır. Başqa modul eyni siyahıdan istifadə etdiyi üçün gözlənilməz davranış baş verir. Əgər "orijinalın dəyişdirilməsi" məhdudiyyəti sorğuda olsaydı, xəta heç vaxt baş verməzdi; kodun nəzərdən keçirilməsində tutulur və 2 saatlıq sazlamanın qarşısını alır.
3-cü vəziyyət - Addım-addım qazanc. Tərtibatçı bir anda 150 sətirlik idxal modulunu çap edir; Səhv tapdıqda onun haradan gəldiyini tapa bilmir. Başqa bir tərtibatçı eyni işi 5 kiçik addıma bölür, hər addımı 2 dəqiqə ərzində sınaqdan keçirir və səhvi 3-cü addımda dərhal tutur.
Ümumi səhvlər
- Bir sorğuda böyük blokların çapı. Anlaşılması və sazlanması çətin olan riskli kod doğulur.
- Müqavilə vermədən kod istəmək. Əgər giriş-çıxış-səhv birmənalı deyilsə, AI təxmin edəcək və səhv edəcək.
- Sadəcə xoşbəxt ssenarini sınaqdan keçiririk. Boş, null, mənfi və böyük giriş sınanmazsa, səhv istehsala buraxılır.
- Anlamadan qəbul etmək. Açmadığınız kod müdafiə edə bilməyəcəyiniz bir borcdur.
- Yan təsirlər və pul/tarix kimi həssas növlərə məhəl qoymamaq. Əbədi tarixə malik olan pullar klassik səhv mənbəyidir.
Xülasə
AI ilə kod yazmaq intizamlı cüt proqramlaşdırmadır: aydın müqavilə, kiçik addımlar, qurmaq və hər addımda sınaqdan keçirmək. Əvvəldən giriş-çıxış-səhv-məhdud kvartetinin verilməsi kodun keyfiyyətini müəyyən edir. İstehsal etdiyi kodu izah etmək və kənar vəziyyətlərlə məcbur etmək xoşbəxt ssenarinin altında gizlənən səhvləri üzə çıxarır. Sürətin mənbəyi kor-koranə qəbul deyil; sürətli qaralama və sürətli yoxlamadır.
Tətbiq tapşırığı
Kiçik, lakin real funksiya seçin (məsələn, ümumi səbət, tarix fərqi, mətn təhlili). Müqavilə edilmiş funksiya sorğusundan istifadə edərək çap edin; Yanına ən azı 5 sınaq ssenarisi əlavə edin. Kodu işə salın və cədvəldən bələdçi kimi istifadə edərək, şüurlu şəkildə 5 kənar vəziyyəti sınayın. Ən azı bir kənar halda səhv tapın (əgər deyilsə, funksiyanı məcbur etmək üçün yeni giriş dizayn edin), onu AI ilə düzəldin və düzəlişin işlədiyini yenidən yoxlayın.
yoxlama siyahısı
- [ ] Mən daxiletmə, çıxış, səhvlər və məhdudiyyətləri ehtiva edən müqavilə yazdım.
- [ ] Mən kodu bir böyük blok yerinə kiçik addımlarla yaratdım.
- [ ] Kodun yanında test/nümunə işləmə bloku əlavə etdim.
- [ ] Mən şüurlu şəkildə ən azı 5 kənar işi sınaqdan keçirmişəm.
- [ ] Mən AI-yə kodu izah etdim və onun fərziyyələrini nəzərdən keçirdim.
- [ ] Tapılan xətanı düzəltdim və yenidən sınaqdan keçirərək düzəlişi təsdiqlədim.