Apr 01

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:

  1. Ņem problēmu/vajadzību. Kaut kas pietrūkst, kaut ko vajag, kaut kas nestrādā, kā vajadzētu utt.
  2. Ja tas ir kaut kas jau eksistējošs, puslīdz izproti, kā tas darbojas šobrīd.
  3. Izdomā, kā tam vajadzētu darboties.
  4. 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!).
  5. 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ē.
  6. Uzraksti kodu, kas veic šo tikšanu no 2. uz 3.
  7. 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/):

scratch_demo

(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”.

Feb 18

Kā Sony izspiego PSN lietotājus

Hakeru grupa, kas sevi sauc par The Anonymous Data Protection Officers, ir izpētījusi, kādus datus Sony ievāc par PS3 lietotājiem, izmantojot PlayStation Network. Rezultāti diezgan skarbi: papildus pašsaprotamajai lietotājvārdu, paroļu un kredītkaršu informācijai, kas tiek izmantota, autentificējoties un iepērkoties PSN, Sony ievāc arī statistiku par lietotāja mājas tīklu, spēlēšanas paradumiem, pie USB pieslēgtām iekārtām, TV veidu (tā kā HDMI ir digitāls, tad pa to ir iespējams nosūtīt jebkādu informāciju, ne tikai video un audio) u.tml. Lieki piebilst, ka PSN lietošanas noteikumos nekur nav atrunāts, kāda inormācija tiek ievākta un kur un kā glabāta vai izmantota…

Jan 05

PlayStation 3 un PlayStation Portable konsoles uzlauztas pilnībā

Pateicoties hakeru (kas, starp citu, norāda uz Sony lēmumu likvidēt OtherOS iespēju kā galveno iemeslu, kāpēc vispār parādījās vajadzība pēc hakošanas) pūlēm un fundamentālai kļūdai PlayStation kriptēšanas algoritmā, publiski tapušas zināmas privātās atslēgas, ko Sony izmanto, lai šifrētu visas licenzētās spēles, programmas utt.

Tas nozīmē, ka jebkurš var izstrādāt programmu PS3 vai PSP programmu, un aizšifrēt to, izmantojot Sony oficiālās atslēgas. Rezultātā konsole būs pārliecināta, ka programma nāk no Sony, un izpildīs tās kodu bez jebkādas lietotāja iejaukšanās (tātad bez jebkādas specializētu USB spraudņu izmantošanas) un uz jebkuras sistēmas versijas. Sony nevar šīs atslēgas tā vienkārši atcelt, jo ar tām jau ir parakstītas visas līdz šim iznākušās spēles, kuras atslēgu atsaukšanas gadījumā kļūtu nelietojamas.

Kopš atslēgu izpaušanas ir pagājušas vien dažas dienas, bet jau ir parādījies pirmais pielāgotas sistēmas aizmetnis — oficiālās 3.55 sistēmas pielāgojums, kas “Game” izvēlnei pieliek papildiespēju homebrew instalēšanai. Tas ir pirmais solis uz pilnīgi atvērtu PlayStation 3 platformu, kas šobrīd izskatās visai nenovēršami.

Nov 23

Morālā novecošana

Nesaprotu terminu “morāli novecojis”. Ja iekārtas nespēj pildīt savas funkcijas vai vairs neatbilst ikdienas prasībām, tad tā ir vienkārši novecojusi. Pēc kā mēra morālo novecošanu? Man tas izklausās pēc percieved obsolescence reklāmu mīta, ka “jaunāks=labāks”, ar mērķi likt cilvēkiem atbrīvoties no pilnīgi ejošām lietām un to vietā pirkt tādas pašas, tikai par 5% jaudīgākas, 2% spīdīgākas un ar papildus sapierlāpstiņām (par šo tēmu ir vērtīgi pavērot Story of Stuff video; ja ir slinkums skatīties visu, jālec pa taisno uz “Consumption”).

Protams, ka jaunāks ne vienmēr ir labāks, jo īpaši datoru u.c. eletroiekārtu jomā. Jauns nozīmē — tāds, kas iepriekš nav bijis, un tas nozīmē — 0 pieredzes. Tas nozīmē augstu cenu (gan tāpēc, ka par jaunu “pienākas” prasīt augstu cenu, gan tāpēc, ka vienkārši vēl nav optimizēta ražošana) un augstu problēmu iespējamību. Vislabākais, ko darīt, ja vēlies iegādāties elektroiekārtu, kas iznāca tikai vakar vai iznāks tikai rīt — pagaidi pāris mēnešus un paskaties, kas notiek. 90%, ka vai nu cena kritīsies, vai arī iekārtai tiks atrasti un izlaboti kādi trūkumi vai nepilnības. Visbiežāk — abi divi.

Šodien lasīju, ka dators, kas ražots 2008. gadā, uzskatāms par morāli novecojošu, ja tas ir paredzēts kam vairāk kā ofisa līmeņa darbiem. Papētīju sava aparāta pēdēju “inkarnāciju” — videokarte no 2008 gada, pārējās detaļas no 2007. Komplektēts 2008. vidū par ~350 Ls, neskaitot korpusu (monitors no iepriekšējā datora), t.i. — cenā ietilpst pamatplate, atmiņa, procesors, barošanas bloks, cietais disks, videokarte. Viss jauns, no veikala. Joprojām spēlēju visas videospēles ar grafikas uzstādījumiem “high” un “ultra” robežās, bez problēmām darbinu arī PlayStation 2 un citus emulatorus.

Protams, ka pasaule ir pilna ar jaudīgākiem datoriem, kas strādā vēl ātrāk un spēles darbina vēl glītāk un droši vien arī kafiju gatavo, bet ko tas pierāda? Lai ko tu nopirktu, ja ne jau pirkšanas brīdī, tad mēneša laikā pēc nopirkšanas būs nopērkams labāks, jaudīgāks, glītāks aparāts, nekā tev ir. Ja mēs skatītos pēc tā, “morālā novecošana” kā termins vispār pazaudētu jebkādu jēgu, jo tādas būtu 90% veikala plauktos atrodamu lietu.

Manuprāt, vienīgie gadījumi, kad var runāt par kaut kādu “morālo novecošanu” ir tie, kad jaunākas preces versijas ievērojami atvieglo dzīvi. Piemēram, ja uz galda ir maz vietas, CRT monitors kļūst morāli novecojis, kad parādās plānie LCD. Klēpja datoriem bieži svarīgs faktors ir izmērs un svars — par morālo novecošanu varētu sākt runāt, ja apkārt visi svilpodami žonglē savējus kompjus, bet tu zem savas nastas staigā salīcis un nosvīdis. Bet citādi — WTF?