Ja jūs interesē, kā iemācīties programmēt, bet jums vēl nav pieredzes ar kodēšanu, tad šajā raksta uzrakstīšu dažus padomus ar ko sākt, lai apgūtu programmēšanu. Mācīšanās plānošana ir ilgs process, tāpēc jums ir jāatrod tam laiks. Būtiski ir arī saprast, ko tieši no programmēšanas vēlaties iemācīties un kā to darīt. Vai lasot grāmatas, vai meklējot informāciju internetā vai apmeklējot speciālos kursus programmēšanā. Apzinoties dažus svarīgus punktus, jūsu mācīšanās pieredze būs daudz vieglāka.
1. IZDOMĀJIET, KĀPĒC VĒLATIES APGŪT PROGRAMMĒŠANU
Šis būs viens no vissvarīgākajiem punktiem, lai apgūtu programmēšanu.
Kāpēc jūs interesē mācīšanās programmēt?
Centieties būt informēti un analītiski par iemesliem, kādēļ vēlaties apgūt programmēšanu. Tas var prasīt vairākas dienas vai nedēļas, lai saprastu iemeslus. Bet apdomājiet kārtīgi un pārliecinieties, ka jūs zināt iemeslus un, ka jums ir motivācija apgūt programmēšanu. Atcerieties, ka mācīšanās programmēt ir process, kas jūs ilgstoši sasaistīs. Un ne vienmēr viss notiek tā, kā jūs plānojat.
2. SAPRAST, KO VĒLATIES SASNIEGT PROGRAMMĒJOT
Šis solis galvenokārt noteiks prasmes, kas nepieciešamas, lai sasniegtu savus mērķus. Tāpēc, pirms sākat izvēlēties savu pirmo programmēšanas valodu, ir jāsaprot mērķis.
Varat sākt ar šādiem jautājumiem:
- Vai esat ieinteresēts izveidot tīmekļa vietnes?
- Vai jūs drīzāk veidotu mobilās lietojumprogrammas?
- Jūs interesē datu analīze un vizualizācija?
- Vai attīstīt spēles vai programmatūru?
Neatkarīgi no tā, ko jūs vēlaties izveidot, esiet uzmanīgi izvēlē. Protams, jūs varētu vienkārši sākt mācīties programmēšanas valodu, un tas būs ļoti interesanti. Tomēr jūsu pieeja mācībām būtu pilnīgi atšķirīga no mērķiem. Kad jūs jau zināsiet, kādas problēmas un ko vēlaties sasniegt ar programmēšanu, mācīšanās būs daudz vieglāka.
3. IZVĒLIETIES PAREIZO PROGRAMMĒŠANAS VALODU
Tiklīdz jums ir skaidrs mērķis, jūs nonākat pie nākamā jautājuma: kas jums ir jāiemācās, lai varētu to sasniegt? Programmēšanas valodas piedāvā rīkus, lai risinātu un palīdzētu sasniegt mērķus.
Ja jūs interesē, piemēram, tīmekļa izstrāde, jūs uzzināsiet par šādām programmēšanas valodām:
- HTML
- CSS
- JavaScript
- Python
- Ruby
- PHP
Pirmās trīs valodas (HTML, CSS, JavaScript) tiek izmantotas front-end izstrādei , kas nozīmē, ka tās nosaka, piemēram, tīmekļa vietnes izskatu. Šīs valodas ir pamat instrumenti, kas jums jāapgūst, lai kļūtu par tīmekļa izstrādātāju. Pēdējie trīs (Python, Ruby, PHP) tiek izmantoti backend izstrādē. Šīs valodas ir atbildīgas par loģiku un dažādām funkcijām.
4. SĀCIET AR VIENKĀRŠIEM UZDEVUMIEM UN PROGRAMMĒŠANAS PAMATIEM
Pievērsiet uzmanību sākumā, lai uzzinātu un saprastu pamatus. Tādā veidā jūs veidosiet spēcīgāku pamatu jūsu nākotnes centieniem ar kodēšanu. Sāciet ar vienkāršiem uzdevumiem, piemēram, rakstot nelielu programmu, kas tikai dara vienu funkciju. Rakstot vienu programmu, jūs jau saņemsiet priekšstatu par nākamo. Šis cikls ir mācīšanās process, ko veicina tikai jūsu zinātkāri.
Katrai programmētai funkcijai, ko uzrakstīsiet, jums pieaugs prasmes un zināšanas programmēšanā. Sasniedzot mazus mērķus pa vienam, lietas sāks sanākt kopā. Tad lēnām jūs izveidosiet prasmi, kas ļaus jums rakstīt sarežģītākās funkcijas un risināt sarežģītākas problēmas ar kodēšanu.
5. IZPRAST DATORA ZINĀTNES PAMATUS
Pirms sākat mācīties programmēšanu, ir jāizprot datora zinātnes pamatus. Izpratne par to, kā datori darbojas, padarīs mācību programmu daudz vieglāku. Galvenais ir tas, ka jūs vienkārši sasniegsiet savus mērķus ātrāk, kad esat iepazinušies ar datorzinātnes pamatiem.
Daži noderīgi avoti, programmēšanas apgūšanai:
Free Code Camp - https://freecodecamp.com (bezmaksas)
Codecademy - https://codecademy.com (galvenokārt bezmaksas)
edX - https://www.edx.org (pārsvarā bezmaksas, jāmaksā par sertifikātu)
Udemy - https://www.udemy.com (pāris kursi ir bezmaksas)
Udacity – https://www.udacity.com (galvenokārt bezmaksas, jāmaksā par sertifikāts)
Khan Academy - https://www.khanacademy.org (bezmaksas)
SoloLearn - https://www.sololearn.com (bezmaksas)
Skill Crush - https://skillcrush.com (galvenokārt bez maksas)
CSS triki - https://css-tricks.com (bezmaksas)
Quora - https://www.quora.com (bezmaksas)
Stack Overflow - https://stackoverflow.com (bezmaksas)
Hacker Rank - https://www.hackerrank.com (bezmaksas)
Coderbyte - https://coderbyte.com (bezmaksas)
17 Responses
1. Weblapas neveido programmētājs bet gan webmasters.
2. Mobilās appenes nav īstas programmas bet gan drīzāk skripti. Neviens īsts datorists mobilos telefonus un planšetes par īstiem kompjūteriem neuzskata.
3. Datu analīzi un vizualizāciju veic nevis programmētājs bet gan sekretāre ar Microsoft Excel
4. Spēles pēc būtības tās pašas programmas vien ir, tikai spēlēm papildus vajag 3D mākslinieku karšu veidošanai un pārējos māksliniekus. Tas pat ir savā ziņā svarīgāk nekā uzprogrammēt pliku 3D endžini.
Tātad, ja negribi būt mileniālis, tad programmēt jāsāk mācīties ar QBASIC, tad Turbo Pascal un beigās C/C++ un ASM kaut kur pa vidu. Visi Pritoni ir domāti lai ražotu mileniāļus, kuri vienkāršai utilītai izveido 10MB lielu EXE failu un kura neiet uz visām Windows versijām.
Drausmas, cik daudz aplamību, kas ar tādu aizrautību tiek postulētas 😀
Tu laikam esi ļoti tālu no šīs nozares kā tādas.
1. Totālas muļķības. Tev derētu noskaidrot, kas ir webmasters, ko noteikti nevarētu nosaukt par plaši izmantotu “jēdzienu”, un kas ir dizaineris un kas ir Front End izstrādātājs.
2. Īsts datorists vai arī cilvēks, kam par to nav nekādas sajēgas, kā tu? Tu tak zini, ka priekš mobilajiem tu vari programmēt entajās programmēšanas valodās, ko neviens pie pilna prāta neidentificētu kā “skriptu” valodas? Java, SWIFT, Objective-C, C# u.t.t. Nosaukt mobilās lietotnes par skriptiem var tikai … tu.
3. Sekretāre – lol. Kaut ko esi dzirdējis par R, MATLAB u.t.t.?
4. Visiem nopietniem projektiem/produktiem vajag komandu.
Programmētājs neesmu, bet ar datoriem aizraujos kopš 2000. gada un ar viņiem pelnu naudu kopš 2005. gada.
1. Webmasters ir čalis, kas izveido un uztur weblapu. Pats raksta HTML, kaut ko izveido no PHP vai ASP server-side skriptiem. Uztaisa JavaScript lai parādītos popups ka apmeklētājs ir laimējis miljonu. Apstrādā bildītes fotošopā priekš weblapas. Ja mūsdienās tas ir kaut kā savādāk, tad viss jau var būt. Mileniāļiem laikam vajag tāpat kā meksikāņiem 3 cilvēkus lai ieskrūvētu spuldzīti. Viens tur viņu rokās, pārējie divi griež riņķī trepes.
2. Manā skatījumā īsta programma ir tāda, kas no sources sakompilējas uz mašīnkodu. Java diez vai kvalificējas.
3. R neesmu dzirdējis. MATLAB laikam bija FORTRAN kaut kāda jaunāka versija.
4. Vēlreiz atkārtošu anekdoti par spuldzīti un 3 meksikāņiem. Ja cilvēks ir talantīgs un zinošs, arī vienatnē var izdarīt ļoti lielus projektus, kurus nespēs pat vesela komanda ar vegānismu sirgstošiem mileniāļiem. Piemēri -Bitcoin sākumā uzrakstīja viens čalis.
“2. Manā skatījumā īsta programma ir tāda, kas no sources sakompilējas uz mašīnkodu. Java diez vai kvalificējas.”
Diezgan interesanta pieeja… Java uz mobilā, tāpat kā uz PC izmanto JVM, un pa tiešo uz mašīnkodu nekompilējas, bet uz PC skaitās programmas, kamēr uz mob. tikai skripti? Tiešām interesanti. Ko tādā gadījumā teiksi par to pašu C#, VB.Net, F# kas kompilējas uz CLR izpildāmu kodu? Arī nav programmēšanas valodas? Par interpretētajiem PHP, JS, Python u.c vispār nerunāšu. Tos es pats neatzīstu 😀
Pēc šādas izpratnes, šķiet ka vienīgās valodas varētu būt bez maz vai tikai C un C++, nu un vēl dažas zema līmeņa valodas. Bet tad ir jautājums – kā uztversi Android appus, kas sarakstīti ar NDK (C++)? Tad sanāk ka Android appi var būt gan programmas, gan skripti?
>>>Pēc šādas izpratnes, šķiet ka vienīgās valodas varētu būt bez maz vai tikai C un C++, nu un vēl dažas zema līmeņa valodas.
Jā, tā es arī uzskatu. Ja tu nemāki braukt ar manuālo ātrumkārbu, tu neesi īsts šoferis. Ja gribi būt smagās mašīnas šoferis, tev arī jāmāk braukt arī ar nesinhronizēto manuālo ātrumkārbu un lietot starpgāzi. Tāpat kā ja nemāki zema līmeņa programmēšanas valodas, tu neesi īsts programmētājs. Ja gribi būt labs programmētājs, tev ir jāmāk asamblerī optimizēt kodu katram procesoram. Es gan arī piekrītu ka mūsdienās šī robeža ir diezgan neskaidra palikusi starp programmēšanu un skriptēšanu.
Tam visam rezultāts ir tāds, ka WEB pārlūki vieni paši tērē gigabaitus ar atmiņu un nepieciešami 4+ kodoli. Agrāk šai pašai funkcionalitātei pietika ar 64MB RAM un 500MHz procesoru.
Tad skrūvē savus datorus tālāk un nekomentē par lietām (izstrādi), par kuru tev nav ne mazākās sajēgas 😉
Vergs ir apsteidzis betonu autismā ar pāris kārtām
Šis protams ir baigais pļūtāmais gabals. Cik prātu tik viedokļu.
Bet es noteikti rekomendētu, jau sākotnēji ieskicēt +/- sakarīgu prouktu, kuru pat vēlētos palaist dzīvē. Ne pārāk sarežģītu un ne pārāk vienkāršu (Šeit jāaizmirst par Mobile Dev). Tad noskaidrot, kādas būtu piemērotākās (ne vienkāršākās) tehnoloģijas šāda tipa projektam un sākt rakt tajā virzienā. Poga, ikona, tabula, klikšķis, utt… Un vēlams, lai tur būtu arī backend, jo manuprāt backend mācīšanās dod labāku pamatu par to, kas notiek tīkla līmenī. Nevajag mācīties visu pēc kārtas. Mācies to, kas nepieciešams konkrētajam projektam. Tā tu spēsi saglabāt motivāciju un iedvesmu, jo ar laiku, katru dienu Tev būs maza uzvara kādas jaunas fīčīņas izskatā.
Bet, ja gribās būt vienkāršam koda mērkaķim un grābt rubli Accenture vai jebkurā no kantoriem, tad tik novazātais WordPress, CSS un JS… pusgada laikā varēs jau skriet ar savu CV.
Pa lielam diezgan akurāti, taču dažas lietas tomēr jālabo.
HTML/CSS nav programmēšanas valodas. Pamatā, HTML ir dokumentu “konstruktors/lego” un CSS ir konfigurācijas fails. Tas pats, pamatā, attiecas uz SCSS/SASS/etc.
JavaScript izmanto gan frontend, gan backend, un izmanto plaši (arī derivatīvus, kā TypeScript, etc).
PHP un Ruby ir pa lielam web valodas, taču nekas neliedz izmantot PHP un Ruby kaut kam pilnīgi citam, īpaši Ruby. Python ir tīrs multi-purpose, no web, līdz sistēmām, “tools”, utt. Python ir milzīga komūna zinātniskiem darbiem un darbiem ar datu apstrādi. De-facto Python ir līderis “data science” ar R, Julia utt. tieši iepakaļ.
C-family (C,C++, etc) valodas ir sistēmu un biznesa izstrādes valodas – ir piemēri arī web izstrādē, bet tādu ir maz un tālu starp. Spēļu dzinēji ir vēl viens populārs pielietojums.
Piedevām tam visam, C# un Java/JVM family, t.s. mid-level valodas. Ne gluži skriptiem, ne gluži arī zema līmeņa. C# klasiski ir “windows” valoda, aplikācijām, web utt. Kopš diezgan nesen, ASP un C# var lietot diezgan pieklājīgi arī NIX – .NET Core. Mono vienmēr bijusi opcija, taču, meh…
Java/Scala/JVM valodas in general purpose, klasiski multi-purpose/general/”enterprise” valodas, taču kopš Java versijas 8 piedzīvo “renesanci” un tiek izmantotas daudz un plaši, un dažādiem darbiem.
Java/JVM valodas (īpaši Kotlin) plaši izmanto Android aplikāciju izstrādē. Scala bieži vien atrodama “big data” un augstas veiktspējas sistēmās, bet pēdējā laikā nedaudz pamirisu popularitātē.
Par pirmo valodu iesaku izvēlēties jebkuru valodu kas der iecerētajam mērķim un ar lielu komūnas atbalstu. Kaut kādu eksotisku valodu kuru lieto varbūt 3 cilvēki, no kuriem 2 ir pensijā izvēlēties nav jēgas. Internets ir pilns ar mācību līdzekļiem, bet angliski – ja programmēt ir vēlme profesionāli, angļu valodas prasme ir obligāta. Java, C#, Python, PHP, Ruby, JavaScript – visas ir vienādi derīgas pirmās valodas, pieņemot ka izvēlētas atbilstoši mērķim. Gala beigās, pēc gadiem 10-15 iemācīsies tās visas šā vai tā…
Es gan pievienotu Go, kā lielisku valodu priekš iesācējiem. Patīkama sintakse, augsta ražība, nedaudz velk uz C pusi, bet ar savu musara savācēju. Mācoties Go var iemācīties ļoti daudz Computer Science pamatus, kas manuprāt ir ļoti svarīgi labam programmētājam. Vnk ideālas standarta bibliotēku atbalsts. Praktiski visu var izdarīt ar standrata bibliotēkām (no 3rd party dependencies). Par Java no savas puses varētu piebilst, ka aiz dīķa notiek diezgan masīva migrācija uz Go tieši dēļ tā, ka Go kompilējas vienā binārajā failā bez nekādām atkarībām un ātrdarbībā gandrīz līdzinās C. Nav jāčakarējās ar JVM (izniekoti resursi uz dzelža). Java manuprāt ir pieprasīta tieši SAPistiem, kā Tieto, Accenture utt. Sēdi un makarējies ar savu OOP makaronu caurām dienām.
Go mikroservisi tipiski ir ap 5MB izmērā ar visu to, ka jau ir iestūķēti Dokerī. Turklāt (vēl neesmu mēģinājis) Go var palaist pa tiešo kā izolētu OS servisu (ne tev VM, ne tev Dockeris vajadzīgs). – https://www.youtube.com/watch?v=Utf-A4rODH8
Latvijā protams atrast darbu Goferim būs praktiski neiespējami, bet … tepat no vāczemes tev paši atbrauks pakaļ, savāks tavas pekelītes, iedos dzīvokli. utt. Štatos/Kanādā pieprasītākā (maz izstrādātāju – daudz pieprasītāju) un labāk apmaksātā valoda. Daudz Offsite piedāvājumu.
Un Go nav domāts tikai mikroservisiem. Var drukāt arī savus monolītus.
BTW – Docker pats ir uzrakstīts Go. 🙂 Un pa lielam, lielākā daļa Docker ekosistēmas. Kubernetes, Traefik, Etcd utt. Jūsu iemīļotais Netflix lielā mērā griežas uz Go. Nav jēgas pat visus uzskaitīt. 🙂
Mana personīgā mīļākā fīča ir iebūvētais http serveris. Weblapu/serveri var palaist kādās… 10 rindiņās laikam.. Un aizmirsti par Apachiem, Nginxiem un citiem zvēriem.
Go milzu popularitātes iemesls ir hype un Google marketings. Tas pats attiecas uz limitēta pielietojuma sistēmām, kā Kubernetes, OpenStack, Istio, Mesos, utt. utjp. Javai un JVM valodām in general nav nekādas vainas, pieņemot ka zini, ko dari.
Un par pielietojumu runājot, Netflix ir Netflix, Google ir Google un 99% pasaules nav ne viens, ne otrs. Netflix un Google vēl joprojām liela, ja ne lielākā daļa infrastruktūras griežas uz Java. Kad reizēm nākas ķimerēties ar Golang fiber spagetti, vēmiens nāk ne mazāks kā no Accentūres Java’s. Par kādu migrāciju Tu tagad runā arī nesaprotu, kaudze uzņēmumu tagad apsviedušies cik patiesībā maksā uzturēt tādu Go mikroservices mesh un skatās pilnīgi pretējā virzienā, e.g. micro-monolith. Google un Netflix, utt. utjp. Golang vispār izmanto infrastrukturas kodam (nevis kaut kādām tizlām web lapām), un ierobežotā apmērā. I wonder why? Jo eksotika maksā naudu. Un ar naudu neviens negrib mētāties ne Latvijā, ne aiz-Okeānijā. Izmēra argumentu vispār nesapratu, kāda atšķirība vai tavs mikroserviss ir 5MB uz diska vai 500. Datu centrā ar 1G/10G kabeli atšķirība praktiski neeksistē. Memory usage? Pff. Kā Golang ar JIT, ko? Dynamic class loading/reloading? Hot-swap un zero-downtime deployments? Tikai immutable infrastructure, edge routeri utt. – protams, paša radītām problēmām noteikti vajag paša radītus risinājumus. 😀
Galu galā, kods ir tikai tik labs, cik labs ir koda autors. Valodu un platformu pie sūdīga koda vainot nevajag. Tā pat, arhitektūra ir tikai tik laba, cik arhitekts kas aiz tās stāv. Ja nejēdz ko dari, ne mikroservisi, ne Golang, ne Kubernetes neglābs. It īpaši ja pieņem random risinājumus bez kaut kādas sapratnes ko ar to visu pasākt nu tagad.
Iespējams, ka Tu protams labāk zini, kas šodien notiek Netflix, bet man vismaz šādu bildi rāda… https://pasteboard.co/HVujFHY.png
Protams tiek izmantota arī Java, C, C++, bet user-faced servisi pārsvarā visi ir Go. Noteikti stingri lielākā daļa codebase.
Piekrītu, ka vairumam iesācēju Kubernetes&Co virzienā nav pat jēgas skatīties, bet tādēļ es teicu, ka Go ir tiešām ļoti labs arī mūsdīķī ierasto monolītu skribelēšanai.
Un 5MB vai 500MB… vecīt… man liekas, ka nedaudz iebrauci auzās… esi dzirdējis tādu teminu kā Attack Surface!? Pēc diviem-trīs mēnešiem taviem 500 MB būs kādas 300 ievainojamības garantēti. Turklāt, cik laika tiks patērēts, lai katru reizi pušotu, pūlotu un buildotu N*500MB. Protams, tas viss atkarīgs no konteksta kurā esi pieradis strādāt.
Un kopumā šķiet Tev ir vāja izpratne par to, kur īsti pielieto Go. Tas, ka Tev ir iedzimta alerģija pret kaut ko jaunu, kā to ko esi mācījies, nenozīmē, ka tas ir mēsls. Es nevienu sliktu vārdu neteicu par Java tik to vien, ka rakņāties legacy Java nav patīkamākā nodarbe. Bet, ja runā par servisu un mikroservisu arhitektūrām, es domāju, ka ir labākas alternatīvas.
Par uzturēšanu arī absolūti piekrītu, ka mikroservisi ir pilnīgi cits stāsts no ierastajiem monolītiem. Es nerekomendēju nevienam jauniņajam vai greenfield projektam sākt uzreiz ar mikroservisiem. Noteikti ir jāsāk ar monolītu vai servisiem (micro-monolītiem) un tikai tad, kad ir skaidrs vai projekts būs dzīvotājs vai nē, tikai tad sākt dalīt micro-servisos. Service Mesh ir sarežģīts topiks un parasti tam ir izdalītas veselas komandas. Turklāt mikroservisu gadījumā ļoti svarīgs ir tooling, kam arī nepieciešams daudz resursu. Ja jauniņais šajā visā iebāzīs degunu, tad ātri vien pincītis uz programmēšanu nokārsies.
+ Go pasaulē ir vēl tāda lieta, kā visnotaļa stingras idiomas, kas sākumā daudziem varētu besīt, piemēram tas pats Error handling, kas ir jādara visu laiku, bet long-term visas šīs idiomas atmaksājas ar uzviju, jo visu izstrādātāju kods ir rakstīts līdzīgi. Pat go fmt formatē kodu tavā vietā, lai nav jākaujas par tabiem, 2 vai 4 space utt. Tas nozīmē, ka projekta menedžement nav atkarīgs no viena gīka, kur tikai viņš viens kodu saprot(antipaterns). Jebkuru Go kodu ir viegli saprast. Setapot jaunu developeri ir viegli.
> Un 5MB vai 500MB… vecīt… man liekas, ka nedaudz iebrauci auzās… esi dzirdējis tādu teminu kā Attack Surface!?
Nerunā muļķības. Vairāk koda, lielāks attack surface? Wut 🙂
> Iespējams, ka Tu protams labāk zini, kas šodien notiek Netflix, bet man vismaz šādu bildi rāda…
Acīmredzot, jā.
> Protams tiek izmantota arī Java, C, C++, bet user-faced servisi pārsvarā visi ir Go. Noteikti stingri lielākā daļa codebase.
Tavs 5 Oct scrīnšots no kaut kāda help projekta man pilnīgi neko neizsaka. 🙂 Netflix līdz diezgan nesen bija pilnīgi pārsvarā Java shop. Tagad klāt arī Python un Ruby + JS. Golang tiek izmantots, bet ne tik daudz kā Tu pasniedz, un pat ne tuvu ne lielākā daļa codebase. Es nezinu no kāda sētas bloga Tu esi izrāvis šitos murgus, bet es atsakos piedalīties.
Pārējais vispār kaut kāds joks. Diskusiju izbeidzu. Ir diezgan acīmredzami, ka Tu draudziņ īsti nejēdz ko runā.
Man liekas Tu toč esi auns, kurš tā arī maļās pa kaut kādiem sūdainiem projektiem. Par Netflix tu zini tik vien cik man melns aiz naga, tā ka vnk paklusē. To bildi neatradīsi nevienā blogā. Būtu atļauts varētu vēl kaudzīti parādīt, bet ne jau tādam iedomīgam aunam kā tu. Ģēnijs atradies! Ej uz savu webskolu! Pamācies. Pie viena pamācies normālu ētiku.
Hmm jautājums, zinu ka c++ var apvienot ar web, kā var uztaisīt scriptu, kas kopē manus ievadītos parametrus un automatiski palaiž piem 5x vienlaicīgi?
Gribēju keylogeri uztaisīt, laika nepietika, uzrakstīt uzrakstīju, tikai “windows” neatpazīst, jo redz tur pasā registrā izmaiņas vajag (neatceros, bet nu vajag registret sertefikātos pc)
Forums podnjalsa, nevar izdzēst postus..