[LUGOS-PROG] Kje v SLO lahko clovek najde kaksen dober tecaj za C?

Jure Koren idiots at gmail.com
Wed Jun 15 09:43:34 CEST 2005


On 6/15/05, Anze <anze at volja.net> wrote:
> > mi ne disi pa ne vem zakaj, ... C bi rabil/rad znal predvsem za racunske
> > operacije oz. analize velikih kolicin podatkov in zahtevnih aplikacij. Ce
> > se motim, je C tukaj se vedno 'top'. Ali se motim? Za kaj taksnega  kot je
> Je 'top', takoj za assemblerjem seveda... ;)

Hja, to je ze vse lepo in prav, ampak preden "obdelas veliko kolicino
podatkov" v Cju, bos moral skozi zelo obicajen postopek debugiranja.
Sam C obvladam, pa se vseeno problemov lotim tam, kjer je najmanj
moznosti, da bom kaj zamocil. V C/C++ je zamocit trivialno, najt bug
pa obicajno ne. Seveda je fino, da jezik poznas, ampak danes to ni
nujno (razen ce si ze odlicen programer in bi se rad zgolj naucil
jezika, v katerem se danes pise vecina "low level" reci).

> Mimogrede, tudi assembler je lepo poznati. Jaz sem pravzaprav sel po malo
> drugi poti, s Pascala sem sel na assembler za x86, z njega pa na C, in ta
> prehod na C je bil zelo preprost. Za assembler (ce te bo kdaj prijelo)
> priporocam knjigo Toma Swana, Mastering Turbo Assembler. Glavna prednost
> ucenja programiranja v assemblerju je v tem, da potem res razumes, zakaj je C
> tak, kot je, da niti ne govorimo o tem, da poznas masino, na kateri delas.

Ravno to je problem: arhitekture postajajo vedno bolj zapleten in
razumevanje le-teh za resevanje programerskih problemov ni pomembno.
Vse znanje o procesorjih, ki sem ga jaz pridobil, izhaja iz knjige
"Machine code programming for commodore 64". Od takrat se
ni nic bistvenega spremenilo, so pa danes na voljo orodja, ki
racunalnik vedno bolj skrivajo in ti omogocajo, da se osredotocis na
problem, ki ga resujes. Poleg tega procesorji samodejno resijo
marsikateri optimizacijski problem, ki ga je vcasih moral programer.
Vseeno je zelo dobro, da razumes matematiko in se zavedas matematicnih
implikacij svojih programov (recimo njihove casovne zahtevnosti).

Najboljsi (po mojem mnenju) nacin, da se naucis programiranja je, da
najdes problem, za katerega je C oz. C++ ustrezen jezik (mimogrede,
med C in C++ je _ogromna_ razlika, predvsem v sami "mentaliteti").
Recimo spravis se napisat kernel modul ali pa PHP razsiritev. Obdelava
velike kolicine podatkov je domena sodobnejsih orodij (Google prisega
na Python, pa bi tezko rekel, da imajo malo podatkov). Ce je kaksen
koscek prepocasen, potem samo tisti minimum prepises v C. Optimizirat
reci tam, kjer s tem pridobis manj kot 10% casa ali prostora, je
nesmiselno.

Gre preprosto za to, da je hitrost "throwaway prototyping", skratka
izdelave konceptov, ki nekaj demonstrirajo, zelo pomembna. Tega ti C
in C++ ne moreta ponuditi, zato je za razvoj potrebnega bistveno vec
dela, discipline in seveda poglobljeno znanje.


More information about the lugos-prog mailing list