Programmēšana ir problēmu risināšana. Programmēšanas valodas ir nesvarīgs sūds.
Programmēšanas valodas ir sūds. Programmēšanas valdoas ir gluži kā cilvēku valodas, tikai daudz, daudz vienkāršākas, jo to gramatikas likumiem praktiski nav izņēmumu. Tāpēc arī nopietniem programmatūras izstrādātājiem būtībā ir vienalga, kādā programmēšanas valodā darboties (personal preferences always apply, of course). Jo valodas ir sūds; ja tu proti programmēt, tu esi apguvis vismaz vienu no populārākajām, un ar to pietiek, lai katru nākamo apgūtu “pa ceļam”. (Starp citu, HTML tiešām nav programmēšanas valoda. Noķer mani dzīvē, ja gribi, lai pastāstu, kāpēc.) Jo progvalodas ir sūds un programmēšana ir problēmu risināšana.
Kā notiek programmēšana:
- Ņem problēmu/vajadzību. Kaut kas pietrūkst, kaut ko vajag, kaut kas nestrādā, kā vajadzētu utt.
- Ja tas ir kaut kas jau eksistējošs, puslīdz izproti, kā tas darbojas šobrīd.
- Izdomā, kā tam vajadzētu darboties.
- Ja rezultāts ir pārāk apjomīgs, lai to galvā varētu apstrādāt, sadali mazākās problēmās, ej atpakaļ uz 1. un sāc ar katru no tām individuāli (rekursija, bitches!).
- Izdomā veidu, kā tikt no 2. uz 3. ar pēc iespējas mazāk darba. Jā, tieši tā. Visi grib, lai darbs noritētu ātri, bet visātrāk var izdarīt tas, kuram ir jādara vismazāk. Gudri sliņķi vinnē.
- Uzraksti kodu, kas veic šo tikšanu no 2. uz 3.
- Pārbaudi rezultātu. Ja kaut kas nav, kā vajag, atpakaļ uz 1 (Yo dawg, I heard you like recursion…). Ja viss OK, tu esi vinnējis internetu, divus minetus (YMMV, protams) un vari ķerties pie nākamā uzdevuma.
Tieši šis pats process, starp citu, tiek izmantotas arī pašas programmēšanas apgūšanā (META RECURSION!!!). Kaut ko vajag, bet nezini, kā panākt — izpēti, kas ir, kā tas darbojas, un gan jau risinājums atradīsies.
Un vai pamanīji āķi? 7 punkti un tikai viens no tiem ir koda rakstīšana. Tas ir vienīgais, kur parādās progvaloda, un tāpēc progvaloda ir sūds. Īstā programmēšana ir šie 7 punkti, un programēšanas, “sāls” — tas, kas atšķir “parastos programmētājus” no “programmatūras arhitektiem”, kas liek reāli iesvīst un piepūlēt smadzenes, ir punktos 2, 3 un 5 (un nevis 6, maķtvaju!). Un tā ir neatkarīga no valodas, tehnoloģijām, metodoloģijām, projektu vadītājiem un klientiem. Jo tā ir tā pati vecā, labā problēmu risināšana, ar ko cilvēki nodarbojas jau kopš dienas, kad iegādājās to smadzeņu daļu, kas atbild par to mikroskopisko veselā saprāta apjomu, ar kuru pietika, lai mēs kļūdu par dominējošo sugu mums zināmajā visumā (sentence chaining FTW).
Un tāpēc es nevaru ņemt nopietni nevienu programmētāju, kurš uzskata, ka programmēšana nav jāmāca jau no bērna kājas. Sintaksi? Jā, C++ nevajag, nepacels. Bet arī šī ir programmēšana (reāla programmēšanas valoda, BTW, apskaties http://scratch.mit.edu/):
(vai es jau pieminēju, ka progvalodas ir sūds?)
Programmēšanu ir jāmāca un jāmācās, neatkarīgi no tā, vai cilvēks jebkad kļūs programmētājs. Jo vienalga, par ko viņš kļūs, problēmas būs un būs jārisina. Programmēšana māca izprast situāciju un pielāgot(ies) pēc vajadzības un iespējām — also known as “izdzīvot un attīstīties”.
Manuprāt tas viss jau sen ir common knowledge.
Un, vai tad kaut kur kāds taisās sīkajiem C++ mācīt? Tur, kur tas tiek mācīts no pirmās klases, viņiem tikai algoritmisko domāšanas veidu māca – ar spēļu klucīšiem utml shit.
Nez. Man jau šķiet, ka, ja tas būtu common knowledge, mēs nebūtu situācijā, kur LU joprojām pirmajā kursā māca C++, toties otrā kursa students vispār nezina, kas ir statisks mainīgais / metode. Liekas, ka cilvēki nav pamanījuši, ka nu jau 10+ gadus computer science un lietišķā programmēšana lielākoties ir kā automehānika un braukšana rallijā — saistītas, bet tomēr stipri atšķirīgas lietas. No kurām augstskolas joprojām māca gandrīz tikai pirmo, bet darba devējiem vajag otro.
Cik zinu, C++ bērnu dārzā neviens nav taisījies mācīt, bet tas ir viens no pirmajiem pretargumentiem — ka programmēšana ir apmēram tas pats, kas augstākā matemātika, un cik slimam jābūt, lai nabaga bērnus mocītu ar tik sarežģītām eksaktām lietām, jo īpaši, ja tā vispār ir uz humanitārajiem priekšmetiem orientēta izglītības iestāde.
Nesvarīgs sūds? Tas, ko tu raksti ir rīki lai tev palīdzētu tikt līdz galam. Un tā pat kā tavs kods, programmēšanas valodas arī ir rīki, kuri tev palīdz.
Tu neizklausies pēc meistera, ja tu domā, ka uztraukšanās par rīkiem ir muļķiem un tie ir „sūdi“.
Varbūt tas, ko gribēji teikti ir, ka var mācīties bez reāla datora un sintakses, bet tādā gadījumā der jau jebkāda veida problēmu risināšana un var iztikt ar vienkārši matemātiku.
Sūds ir tavs raksts.
Būsi pārpratis. Nav domāts, ka programmēšanas valodas nevajag apgūt, vai ka programmēt var uz papīra. Doma ir, ka cilvēki pārāk daudz koncentrējas uz valodām kā programmēšanas būtību vai prasmju rādītāju. Regulāri sastopos ar cilvēkiem, kas uzskata, ka programmēšana nav priekš viņiem tikai tāpēc, ka valoda izskatās sarežģīta. Tāpat, kā ir daudzi, kas uzskata, ka pieredzējis Java programmētājs kļūst par diletantu, jo ir piesēdināts pie PHP, C# vai Ruby.
“Būšana šoferim ir auto vadīšana. Auto modeļi ir nesvarīgs sūds.” Tas nenozīmē, ka var būt šoferis bez automašīnas vai ka visi auto ir vienādi. Bet labs šoferis ir labs šoferis arī tad, ja viņu piesēdina pie auto, ko par kuru viņš līdz šim ir tikai dzirdējis. Un arī par šoferi kļūstot ir visai nesvarīgi, ar kādu modeli iemaņas tiek apgūtas.