Wengi wanaoingia katika teknolojia wanatamani kuwa na ujuzi wa kuweza kuiambia simu au computer ifanye na kwa wakati gani. Ujuzi huu wa kuweza kuwa na mamlaka juu ya computer/simu na kuipa amri ifanye vile unataka tunaita Programming.
Ni kama kuwa na uwezo wa kimungu ambao sio wengi wanao uwezo huu. Unaweza kusoma hii makala kwenye simu yako kwa sababu kuna code zimeandikwa ili wewe uweze kusoma hii makala bila shida.
Wakati programming ni kuweza kuiambia computer ifanye nini, Coding ni kuandika hizo program za kuiambia computer ifanye nini. Hapa kwenye coding ndipo huwa panawashinda wengi na wanaamua kuachana na programming.
Njia moja wapo ya watu kuanza kujifunza programming ni kuchagua programming language maarufu na kuanza kujifunza bila kuwa na uelekeo wowote. Ni sawa na mtu kwenda tu kupanda basi yoyote ya shabiby bila kujali inaenda wapi. Ukiuliza sababu ya yeye kupanda anakwambia, “Ni basi maarufu na nzuri.”
Kwenye programming watu wanakimbilia kuanza soma tutorial YouTube au UDEMY kwa kuwa wamesikia wengi wanasema lugha fulani ni nzuri. Njia sahihi ya kujifunza programming inakutaka kwanza ujue uelekeo wako ni wapi. Uelekeo kwa maana ya kuwa wewe unataka kuwa developer (Huyu ni mtu anayetengeneza programs/apps) wa aina gani? Lakini kwa wewe ambaye ndo unaanza kabisa kujihusisha na teknolojia, unatakiwa kufata hatua hizi.
1. Ijue Vizuri Computer Architecture na Misingi ya Data
Developers wengi wa kisasa watakwambia haina umuhimu kuijua Computer Architecture. Hii ni kwa sababu programming languages za kisasa hazituhitaji kujua computer inafanya vipi kazi na program zinazungumza vipi na hardware ili tuweze kutoa app nzuri. Wanaweza kuwa sahihi, lakini binafsi nakushauri kuwa ni muhimu sana kujua computer inafanya vipi kazi.
Kuweza tengeneza program bila kujali program na hardware zinawasiliana vipi tunaita Abstraction. Kwa maana hiyo uelewa unaotakiwa kuwa nao, ni kujua hiyo programming language inafanya vipi kazi.
Kwanini nasema ni muhimu kujua computer/simu inafanya vipi kazi?
Ukishaelewa namna comuter inafanya kazi, utakuwa na uelewa mzuri juu ya matumizi ya CPU na memory (RAM). Hivyo hata unapotengeneza program unakuwa unajua uandike vipi hiyo program iweze kufanya kazi kwa ubora bila kuchosha kifaa cha mtumiaji wako.
2. Jifunze Namna Programming Languages Zinafanya Kazi
CPU ndiyo akili ya computer na inaelewa vitu kwa maagizo yanayokuwa katika mfumo wa 0 na 1. Hivyo tunaweza kuandika program kwa mfumo wa 0 na 1 na computer itaelewa. Ninaposema 0 na 1, isikuumize kichwa ngoja nikuelezee ni nini.
Binadamu tuna lugha zetu tunazo zungumza na kuelewana. Mfano mimi na wewe tukitumia kiswahili tunaelewana na wazungu wanatumia Kiingereza. Computer inaongea lugha inayoitwa Binary Language. Lugha hii ina haina herufi ila inatumia namba mbili tu, ambazo ni 0 na 1.
Mfano neno “Computer” katika lugha ya computer itakuwa “01100011 01101111 01101101 01110000 01110101 01110100 01100101 01110010“
Nadhani unaona namna ambavyo inakuwa shida kuandika katika lugha ya computer?
Binary au Machine Code ni lugha ambayo inatumika na computer kuwasiliana na vifaa vyake ndani, sisi tukitaka kuongea nayo tunatumia lugha ya kibinadamu ambayo ndani ya computer itabadilishwa kuwa lugha ya computer.
Lugha za kibinadamu zinaitwa “Higher Level Programming Language (HLPL)“. Hii ni lugha ambayo inaturuhusu kutumia maneno ambayo binadamu tunaelewa, ili kuweza kuandika na kuchakata hizo programs. Tukiandika program kwa lugha yetu inabidi ifanyike tafsiri kwenda kwenye machine code ili computer iweze kuelewa.
Tunapofanya tafsiri kuna namna mbili ambazo huwa zinatumika kulingana na aina ya programming language unayotumia. Kuna lugha ambazo tafsiri yake inafanyika kwa Compilation na ambazo inafanyika kwa Interpretation. Tafsiri hii hufanyika kwa program maalumu ambazo huitwa Compiler au Interpreter.
Mfano kuna lugha kama JavaScript na Python zinatumia interpreter, wakati C++ na Java zinatumia Compiler. Lugha kutumia interpreter au compiler huwa inaleta utofauti katika error handling, performance na baadhi ya maeneo mengine ya program, ila hiyo ni mada utajifunza zaidi kwa muda wako.
3. Elewa Namna Internet Inafanya Kazi
Programming language yoyote unayotumia lazima kuna wakati itakuhitaji kujua namna program yako itaweza kuwasiliana na computer/simu nyingine. Mawasiliano haya mara nyingi huwa ni kupitia internet.
Mawasiliano ya computer huwa ni usambazaji na ubadilishaji wa data. Data hizo zinaweza kuwa web pages, picha, video, email, maandishi n.k ambazo zinakuwa katika mfumo wa 0 na 1.
Internet ni kikundi kikubwa cha computer/simu ambacho kinaweza badilishana data bila kubadili maana ya hizo data. Mawasiliano ya binadamu yanahitaji uwepo wa watu wawili ambapo mtu mmoja anazungumza/kuuliza na mwingine anajibu. Katika internet computer inayoanzisha mawasiliano inaitwa mteja (client) computer inayojibu inaitwa server.
Hii ni kwa ufupi namna internet inafanya kazi, unapoandika program utahitaji kujifunza kwa undani sana kujua vitu kama ufanyaji kazi wa API. Na huo ndiyo umuhimu wa kujua namna internet inafanya kazi.
4. Chagua Programming Language
Hakuna njia moja wala standard moja ya kusema ni lazima mtu anayeanza ajifunze lugha fulani ili aje kuwa programmer mzuri.
Unapochagua programming language inategemeana na una malengo ya kufanya development ya aina gani. Huwezi kutaka kuwa web developer alafu ukaanza kujifunza C++. Huo ni uongo utakuwa unapoteza muda.
Wakati mwingine tunachagua programming language kulingana na project inatutaka kutumia lugha ipi. Hapa nakupa baadhi ya programming languages na matumizi yake.
JAVA
Hii inatumika kuunda program za server-side na wakati mwingine kuunda video games. JAVA ni maarufu sana kutumika kutengeneza apps za simu za android.
Python
Python inatumika katika web development, Artificial Intelligence, Machine Learning, Operating System, Mobile Applications Development na katika Video Games.
PHP
Hii ni server side scripting language ambayo huwa inatumika katika utengenezaji wa static websites na dynamic websites au web applications. Websites nyingi zinazokusanya data za watu zinatumia PHP kuchakata data hizo.
C++
Hii ni lugha ambayo mara nyingi inashauriwa kuanza nayo unapojifunza programming, lakini leo nakwamba sio lazima sana. C++ inatumika katika utengenezaji wa games na gaming engines. Mara nyingi C++ inatumika katika uundani wa game tools kulingana na wepesi wake wa kufanya kazi.
Java Script
JAVA na JavaScript hazina uhusiano hata kidogo. Haya majina mawili yasikuchanganye. JavaScript inatumika katika pande zote mbili za client-side na server-side ili kukuruhusu kufanya web pages ziwe na muingiliano mzuri.
Chagua programming Language kulingana na wewe unataka kuwa developer wa aina gani sio kulingana na ipi ni maarufu zaidi duniani. Hizi ni baadhi tu ya programming languages. Sio unataka kujifunza HTML kwa kuwa umeona meme inasema, “Nimedukua NASA kwa kutumia HTML.”
5. JIFUNZE Lugha Kiingereza (English)
Asije kukudanganya mtu kwamba English haina umuhimu au kwamba ni lugha ya watumwa. Ukitaka kujua vizuri programming na uweze kuwa katika jamii za wataalamu wa programming hakikisha unaijua hii lugha hata ya kuombea maji.
Kwa asilimia 90% ya maarifa yote ya programming yameandikwa kwa kiingereza. Na hata programming languages zenyewe zinatumia kiingereza. Hivyo ni vizuri ukaijua hii lugha hata ile misingi yake tu inatosha.
6. Chagua Tutorial au Couse Sahihi za Kujifunzia
Kujua tu hizi hatua zote haitoshi, ni muhimu pia kujua tutorial zipi zinafaa au tutor yupi anatoa maelekezo vizuri. Mfano leo hii ukiniambia unataka kununua UDEMY course ya Flutter nitakwambia tafuta course za Angela Yu kwa kuwa ni hakika utaelewa kulingana na ufundishaji wake.
Kabla hujachukua course za tutor yoyote pitia reviews zake uone waliosoma kwake wana maoni gani kuhusu yeye.
Ukiona bado unapata tabu kujua utumie course zipi, nina courses zote ambazo zinaweza kukusaidia kujifunza Python, JAVA, C & C++, JavaScript, Hacking, Web Development, Android Development, Machine Learning na Networking.
Hizi ni course zinazomfaa mtu yeyote anayeanza au ambaye tayari alikwishaanza kujifunza hivi vitu. Course hizi katika kila kundi zinauzwa Tsh. 10,000 tu.
Unaweza kuzipata kwa kunitafuta Whatsapp (0686757930).
Kuhusu hizo Course
Hii ni collection ya eBooks mbali mbali juu ya mada tofauti tofauti za development. Kila category ina zaidi ya vitabu viwili na kila category utapata vitabu vyote kwa Tsh. 20,000 tu, badala ya kulipia kila kitabu peke yake.
Vitabu hivi vinawafaa beginners, intermediate na expert developers.
PROGRAMMING (Tsh 20,000)
-Python
-Java
-C & C++
-JavaScript
WEB DEVELOPMENT (Tsh 30,000)
-Web Development with Node Express
-web dev and design foundations
-PHP and Web Dev
-Django Web Dev
-Art of Java Web Dev
ANDROID DEV (Tsh 20,000)
MACHINE LEARNING (Tsh 20,000)
NETWORKING (Tsh 20,000)