“Software Architecture Design and Analysis” kursa kopsavilkums: esmu iemācījies jaunas abreviatūras cilvēku mulsināšanai.
(joks)
“Software Architecture Design and Analysis” kursa kopsavilkums: esmu iemācījies jaunas abreviatūras cilvēku mulsināšanai.
(joks)
Ilgi mocījos ar portatīvā datora sastingšanu (palīdzējā tikai baterijas izņemšana) un patvaļīgu pārstartēšanos, līdz atklāju, ka pie tā vainīgs Processor type and features -> Subarchitecture type -> Generic vērtība pēc noklusēšanas kodola konfigurācijā. Ar padsmito reizi atklāju…
Cilvēki tomēr nesaprata – raksts par to kādas ziepes gadās Java pasaulē beidzās ar Java vs. C/C++ kariem. Nē, es neesmu teicis, ka programmēt Java ir slikti. Pats to nopietni daru gadus āetrus, tiesa, ne jau katru dienu. Ar “nopietni” es domāju kaut ko vairāk par “Hello world”, studiju programmām un dažādām spēļmantiņām. Vēl pastāv viedoklis, ka man mīļš ir C/C++ – laikam tāpēc, ka par dažādām C/C++ lietām pēdējā laikā rakstu vairāk nekā par Java, kā to darīju bloga pirmsākumos.
Jā, konkrētā situācijā man labāk patiktu iegūt core dump C++ programmā, nevis bezgalīgu garbage collection Java programmā. Jo augstāka līmeņa valoda, jo zemāka barjera, kas jāpārvar, lai tajā programmētu – un tas noved pie cita rakstura kļūdām. Man nav pieejami pētījumi par šo tematu, bet no prakses zinu, ka procentuāli daudz lielāka daļa Java programmu izmanto vairākus pavedienus nekā to dara C/C++ rakstītās programmas un tāpēc biežāk “uzraujas” uz race condition, deadlock un līdzīgām problēmām. Tāpat kā C biežāk noved pie sliktas dekompozīcijas, jo tas ir vienkāršāk nekā nodarboties ar mainīgo un argumentu atmiņas vadību. Tāpat kā C++ kods (sevišķi ar template bagāts) biežāk noved pie “OMG! WTF?” stāvokļa pētot kompilatora ziņojumus, jo C++ pilnībā pārzin tikai kādi 5 cilvēki uz visas planētas. Tāpat kā Python, dinamiskuma dēļ, biežāk gadās exceptions.NameError vai tipu neatbilstība. Ja man būtu jāizvēlas starp Java un C++, es visdrīzāk izvēlētos Python, jo tajā ir jāraksta mazāk koda. Bet ikdienā diezgan brīvi operēju ar visām 3 valodām.
Starpcitu, interesants novērojums: jebkuras kļūdas un problēmas mēdz pāradresēt “līkroāiem”. Itkā pašu autoru taisnās rokas nekad nevienu kļūdainu programmu nav uzrakstījušas ;->
Ja ar sniegu turpinās cīnīties kā līdz šim, pēc pāris gadu desmitiem Rīgas kanalizācijā būs izveidojušās sāls atradnes.
Pēdējā laikā man arvien mazāk patīk Java… un Java radītais efekts.
Java dēļ sava drazas savācēja (Garbage Collector) un atmiņas vadības kopumā. java.lang.OutOfMemoryError rezultātā nākas meklēt kompromisu starp servera RAM apjomu un Java heap izmēru. Tas ir gadījumos, kad programma saņem java.lang.OutOfMemoryError. Š odien kārtējo reizi biju liecinieks situācijai, kad izbeidzoties atmiņai programma vienkārši “uzkaras” uм pāris stundām un atdzīvojas tikai pēc pārstartēšanas – paveicās, ka failos ir piefiksēts arvien mazāks brīvās atmiņas apjoms. Arī pēc vairākiem Java izmantošanas gadiem es nevaru uzrakstīt kodu, kas izmanto java.io, bez ieskatīšanās dokumentācijā.
Kas savukārt liek domāt par Java radīto efektu: Java ļauj (salīdzinoši) vienkārši veikt sarežģītas lietas un cilvēki to izmanto. Ir vienkārši izveidot vairākus pavedienus, lai gan synchronized dēļ vairāk par 1-1.5 pavedieniem vienlaicīgi nevar izpildīties un tikpat vienkārši iegūstam race condition. Nevajag manuāli atbrīvot atmiņu – un beigās iegūst mistisku programmas “uzkāršanos”.
Es nesaku, ka citas valodas ir labākas – arī tur var agrāk vai vēlāk iešaut sev kājā. Bet dažas (piem. C/C++) vismaz nerada mānīgu viegluma un drošības sajūtu.
Ja vēl kāds nesaprata, šis nav “Java sux, jo tajā var uzrakstīt kļūdainas programmas” ieraksts.