Kuprogramu kwa Haiba
Kuprogramu kwa Haiba ni Nini?
Kuprogramu kwa Haiba ni mbinu ya programu inayotumikia AI iliyotangazwa na Andrej Karpathy katika 2024/2025. Kwa kuprogramu kwa haiba, unaelezea unachotaka kwa maagizo ya lugha ya kawaida na kawaida miundo mikubwa ya lugha (LLMs) hutengeneza sehemu kubwa, mara nyingi zote, za msimbo unaofanya kazi kwa niaba yako. Ikiwa una muda, angalia Sanaa ya Kuprogramu kwa Haiba iliyorekebishwa na Rick Rubin ili kujifunza zaidi kuhusu njia ya kuprogramu kwa haiba.
Faida moja kubwa ya njia hii mpya ni upatikanaji kwa sababu watu wasio na uzoefu wa kubuni programu wanaweza kujenga miradi wakati waendelezaji wenye uzoefu wanaweza haraka kutengeneza mifano ya mawazo mapya kabla ya kujitolea kikamilifu kwao. Hii ni msaada hasa kwa kampuni za kuanza. Hasara ni kwamba waendelezaji huenda hawataelewa kikamilifu jinsi msimbo uliozalishwa unavyofanya kazi. Kwa miradi midogo ya pembeni, hii ni sawa, lakini kwa programu za kiwango cha uzalishaji inaweza kusababisha matatizo ya muda mrefu na deni la kiteknolojia.
Kuna zana nyingi zinazofanya kuprogramu kwa haiba kuwa laini zaidi. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0, na wengine wanakuwezesha kufanya kazi na AI moja kwa moja katika mazingira yako au kutoa kiolesura maalum kwa kuprogramu kwa haiba. Kwa upande wangu, nilibaki hasa na Cursor IDE na Claude Code CLI kwa miradi hii.
Hapa kuna jambo ingawa. Zana hizi na mifano zinagharimu pesa. Kwa programu ya jadi, unalipa kwa wakati wako zaidi. Kwa kuprogramu kwa haiba, unalipa kwa mkoba wako. Na ikiwa hujui unachofanya, unalipa kwa mkoba wako na kwa wakati wako. Kila moja ya miradi kwenye ukurasa huu inagharimu karibu $10 hadi $20 kujenga. Hiyo inakusanya ikiwa unajaribu mara nyingi. Ninafikiria kadri mifano hii itakavyoboreshwa na kuwa yenye ufanisi zaidi, gharama zitashuka hatimaye. Kwa sasa, ni jambo lenye kuzingatiwa wakati wa kuamua kama kuprogramu kwa haiba inafaa kwa mradi wako.
Nikiwa nashauku kuona kile kinachowezekana, nilijaribu kuprogramu kwa haiba mwenyewe na nikafanya ukurasa huu kuchunguza kanuni yenyewe kupitia miradi halisi. Sioni tu bidhaa, ninajaribu na kuonyesha kile kiprogramu kwa haiba kina uwezo wa kufanya. Hii ni kwa ajili ya starehe tu, lakini inatoa mtazamo wa jinsi programu inaweza kuonekana katika siku zijazo wakati mifano hii itaendelea kuboreka.
Nadharia ya Nyani Isiyo na Mwisho
Je, umewahi kusikia kuhusu Nadharia ya Nyani Isiyo na Mwisho? Ni jaribio la kifalsafa linalosema kwamba ikiwa utampa nyani zisizo na mwisho mashine za kuandika zisizo na mwisho na muda usio na mwisho, hatimaye mmoja wao atatoa kazi kamili za Shakespeare kwa kubonyeza nasibu tu kwenye vitufe.
Inaonekana ya kuchekesha, sivyo? Lakini hapa ndilo jambo la kushangaza. Kuprogramu kwa haiba ni aina ya hivyo, isipokuwa badala ya nyani tuna mifano ya AI, badala ya mashine za kuandika tunakuwa na lugha za programu, na badala ya Shakespeare tunapata programu zinazofanya kazi.
Fikiria hivyo. Miundo mikubwa ya lugha imefunzwa kwa mabilioni ya mistari ya msimbo, mifumo, na mifano. Unapotumia LLM kwa maagizo, haifanyi “kufikiria” tatizo lako hatua kwa hatua kama mwendelezaji wa kibinadamu angevifanya. Badala yake, inatabiri token inayofuata inayowezekana zaidi kulingana na mifumo ambayo ilijifunza wakati wa mafunzo. Kwa msingi huo, inafanya makisia yaliyoelimishwa kwa kuzalisha msimbo kulingana na kile kinachoonekana kihesabu kuwa sahihi.
Na kwa namna fulani, mara nyingi zaidi kuliko sivyo, inafanya kazi. Mfano hututoa msimbo ambao kweli unasomwa, unaendeshwa, na kutatua tatizo lako. Si kwa kuelewa, bali kwa kulinganisha mifumo kwa namna ya staitisti kwa kiwango kikubwa sana. Ni kama jenereta ya maandishi nasibu yenye ustadi mkubwa zaidi ulimwenguni ilipata jibu “sahihi”. Lakini hapa, tofauti ni kasi. Nyani hao wangehitaji ukomo halisi. AI yako? Inafika huko kwa sekunde au dakika.
Kwa hivyo kwa njia fulani, unapounda kwa haiba, unatumia mamilioni ya mistari ya mifumo ya msimbo, iliyochanganywa katika mfano, kuzalisha suluhisho. Si utatuzi wa tatizo mwenyewe kwa fahamu, ni uchawi wa takwimu. Na ndiyo hasa sababu ni nguvu sana na, kwa kweli, kwanini bado ni muhimu kuelewa kile msimbo unaofanya kweli.
Swali Ni Muhimu Zaidi Kuliko Jibu
Hapa kuna jambo muhimu ambalo mara nyingi halizingatiwi. Kuprogramu kwa haiba si kuhusu kupata jibu lolote, ni kuhusu kuuliza swali sahihi. Fikiria kompyuta ya msuper “Deep Thought” kutoka kwa The Hitchhiker’s Guide to the Galaxy. Ilitumia mamilioni ya miaka kukokotoa jibu la swali kuu kuhusu maisha, ulimwengu, na kila kitu, ikakupa tu nambari 42. Jibu lilikuwa kiufundi sahihi, lakini halitumiki kwa sababu tatizo halisi lilikuwa kugundua ni swali gani la kuuliza kwanza.
Kuprogramu kwa haiba inafanya kazi kwa njia ile ile. Maagizo yako ni kila kitu, lakini pia ni usimamizi wa muktadha. Maagizo yasiyoeleweka yatakupa msimbo usio wazi, na ikiwa hautatoa faili sahihi, nyaraka, au mifano kama muktadha, mfano hautaelewa unachohitaji kweli. Ikiwa wewe ni mtu anayeelewa programu, usanifu, na muundo wa mifumo, unaweza kuandika maagizo ya kina na kuchuja muktadha sahihi kumuingiza LLM kwa suluhisho bora. Lakini ikiwa huna wazo la kuuliza au muktadha wa kutoa, AI nayo haitakuwa nayo.
Hili ndiyo hasa kwanini kuprogramu kwa haiba ni nguvu kwa waendelezaji walio na uzoefu. Tunajua msimbo mzuri unaonekana vipi, tunaelewa mabaya yanayoweza kutokea, na tunaweza kuandika maagizo yanayoweka mfano mbali nao. Kwa wanaoanza wasio na msingi wa kiufundi, hii inakuwa kikwazo halisi. Unaweza kupata msimbo unaofanya kazi, lakini bila kuelewa kilichotokea au kile cha kuuliza kifuatacho, uko imekwama.
Wakati Kuprogramu kwa Haiba Hakutoshi
Mifano ya AI ya hivi karibuni ni ya kushangaza, lakini sio tiba ya kila kitu. Kuprogramu kwa haiba kunaweza kufanya kazi katika uzalishaji, lakini tu ikiwa umeiaccha kwa umakini. Unahitaji vipimo thabiti vya vitengo. Unahitaji vyanzo vya ukweli vinavyoeleweka vinavyoelezea kile mfumo wako unapaswa kufanya. Unahitaji kugundua wakati vitu vinavunjika au vinaporomoka. Na unahitaji mtazamo wa mtundu wa mvamizi (hacker’s mindset). Fikiria nje ya boksi na jaribu kuvunja mradi wako uliotengenezwa kwa haiba kwa njia zisizotarajiwa. Ni kesi za pembe gani ambazo hujazingatia? Ni udhaifu gani wa usalama mtu anaweza kutumia? Hili ndilo linalotofautisha msimbo ambao unafanya kazi tu na msimbo ambao ni thabiti kweli.
Hapa kuna jambo ingawa. AI haikumikini wewe. Wewe ndiye mmiliki wa AI. Usikubali tu kile inazalisha. Pitia. Pitia vipimo. Vunjeni. Na kwa sehemu fulani za msimbo wako, utakahitaji kurudi kwenye uprogramu wa zamani. Jifungue, fikiria kwa kina, uandike wewe mwenyewe. Kuprogramu kwa haiba hufanya mambo yawe ya haraka, lakini si mbadala wa uprogramu halisi inapokuwa muhimu.
Kuna jambo lingine niliyojifunza. Wakati mwingine unahitaji tu kumaliza kikao na AI na kuanza kipya. Kadri historia yako ya mazungumzo inavyoongezeka, utendaji wa mfano hupungua. Hufanya makosa zaidi, hutoa msimbo usio na mfululizo, na huanza kujenga waongo mara kwa mara. Ikiwa hautafuatilia hili na kusitisha, makosa haya yanajikusanya, kuyafanya mambo kuwa mabaya zaidi kwa utaratibu. Ni kama kujaribu kusoma hati ambayo imekopiishwa tena na tena. Kuanzia upya kunahakikisha mambo yanabaki safi na makali.
Miradi Iliyotengenezwa kwa Haiba
Hapo chini ni miradi miwili, stairs (repo) na transcendental (repo), niliyoijenga kutumia mbinu ya kuprogramu kwa haiba. Mara nyingi ilitengenezwa kutoka kwa maagizo, na kazi ya mkono ilikuwa mdogo kwa kutoa muktadha, kutatua hitilafu, na kupeleka kwenye GitHub Pages. Ni majaribio ya tovuti za kimya yenye kufurahisha yanayoonyesha kile kinachowezekana wakati unachanganya mawazo ya ubunifu na msimbo kupitia kuprogramu kwa haiba. Zote zimewekwa mwenyeji kwenye GitHub.