Knjiga - "The C Programming Language"
(1 korsinik/a gleda/ju temu) (1) Gost

Knjiga - "The C Programming Language"


22.02.2014 | 17:57
Nakon kratkog vremena nećkanja, odlučio sam pročitati(proučiti) tu, kako svi kažu legendarnu knjigu - K&R. Odluka je pala, jer sam znao(znam) C jezik površno, i zato jer me zanima low level programiranje, dobro ipak ne sada asembler, ali zanima me memory managment, ono što se recimo kod drugih jezika, tipa Jave uopće ne treba ni brinuti.

Ulgavnom, neki ljudi govore kako je ta knjiga pisana previše "tehnički", i da je zastarjela, u smislu da te uči stilu programiranja koja vodi do loše održivog koda i previše izložavanju buffer overflowa, a da se tada prije 30. godina, o tome nije toliko vodilo računa. O ovom prvo, da je pisana previše "tehnički" je točno ali i odlično, jer u ovoj knjizi nema okolišanja, znači ona detaljno ne opisuje osnove programiranja i ugl. traži da imaš nekakvo predznanje o programiranju, i nastoji te što brže naučiti C jezikom(knjiga je relativno tanka). Kompajliranje koda,i općenito o kompajleru isto ne piše, tako da taj dio treba naučiti negdje drugdje. Dobro mi je kod knjige to što te vuče na to da sam pišeš kod i eksperimentiraš s primjerima, i da sam dokučiš neke stvari npr. kod poglavlja 1.6 Arrays primjer
#include <stdio.h>
/* count digits, white space, others */
main()
{
    int c, i, nwhite, nother;
    int ndigit[10];
    nwhite = nother = 0;

    for (i = 0; i < 10; ++i)
        ndigit[i] = 0;

    while ((c = getchar()) != EOF)
        if (c >= '0' && c <= '9')
            ++ndigit[c-'0'];
        else if (c == ' ' || c == '\n' || c == '\t')
            ++nwhite;
        else
            ++nother;

    printf("digits =");

    for (i = 0; i < 10; ++i)
        printf(" %d", ndigit[i]);

    printf(", white space = %d, other = %d\n", nwhite, nother);
}

Na 14. liniji gdje se array ndigit iterira u uglatoj zagradi je napisano[c-'0'], logično mi je bilo da je tamo samo varijabla c u zagradi, jer bi dobio isti broj, ali eto eksperimentiranjem došao sam da ako ostavim samo varijablu c, neće mi ostaviti taj broj, nego će dati broj koji u ascii kodu reprezentira taj broj u decimalnoj vrijednosti. Zaključio sam da C jezik, tretira znakove kao integer vrijednosti, odnosno decimalna vrijednost u ascii kodu, ali ako radimo računske operacije između znakova, nećemo dobiti decimalnu vrijednost u ascii kodu, nego ćemo dobiti točnu vrijednost, i zato je trebalo na 14. liniji dodati [c-'0'].

Ako je netko pročitao knjigu, volio bi čuti razmišljanja o knjizi
22.02.2014 | 21:37
Knjigu nisam nikad "pročitao" kao što bi pročitao neku beletristiku, ali sam je često koristio dok sam morao programirati u C-u, za vrijeme studija. Inače izrazito ne volim C, smatram ga nedonoščetom od jezika. Niti je pravi low level kao ASM, niti je pravi high level jezik, nego nešto, što bi rekli tu kod nas, u Primorju - "pol miš, pol 'tić". K tome, moja prva iskustva s C-om su vezana za neke jako loše C kompajlere na Atariju ST i neke još lošije za MS DOS tako da nikad nisam znao da li program ne radi kako treba jer sam ja nešto pogriješio ili se radi o bugu u kompajleru. I zato sam ga zamrzio zauvijek. Jedino sam ga koristio intenzivnije dok sam malo bio (kao student) čačkao po sistemskom programiranju za Unix.

Sama knjiga je jako dobra. Toliko dobra da zapravo nikad nitko nije ni trebao (niti je ozbiljno pokušavao) napisati bolju. Prvi put čujem da netko smatra "previše tehničkom". Što bi to uopće trebalo značiti? To je priručnik za C programere. Kakva bi trebala biti? Umjetnička?
22.02.2014 | 21:58
smayoo kaže:

Prvi put čujem da netko smatra "previše tehničkom". Što bi to uopće trebalo značiti? To je priručnik za C programere. Kakva bi trebala biti? Umjetnička?

Pa vjerovatno je mislio jer u knjizi nema tog okolišanja, dodatnih objašnjenja ili zato jer knjiga uopće nema slika. Nego se podrazumijeva da sve to shvatiš i bez toga. Ne znam, možda je loša riječ "previše tehnička" ali razumijem na što je ciljao. Točno, takve knjige nisu za čitanje od lista do lista, već kao "manual", dokumentacija.
23.02.2014 | 21:27
S obzirom da me dežurni mrzitelji ionako smatraju zlim, sasvim mi je svejedno što će tko misliti pa mogu baš i reći točno to što mislim - jedan od glavnih razloga zašto je danas sve više smeća na tržištu softvera i zašto aplikacija koja radi istu identičnu stvar kao i ona napisana prije 25 godina - danas ima 4-5 MB, a nekad je imala 30-40 kB - je upravo taj što se svatko predstavlja programerom i što ljudi očekuju da se programiranje može naučiti kao što se uči priroda i društvo za 3. osnovne.
Tko iz K&R ne kuži o čemu se tu radi (a nije desetogodišnje dijete), nego mu trebaju neke ilustracije i što ja znam što, taj nije za programera. Neka se uhvati nekog drugog posla.
24.02.2014 | 00:12
smayoo kaže:

Tko iz K&R ne kuži o čemu se tu radi (a nije desetogodišnje dijete), nego mu trebaju neke ilustracije i što ja znam što, taj nije za programera. Neka se uhvati nekog drugog posla.

Ne slažem se, jer postoje razni pristupi učenja, netko može bolje i brže vizualizirati neki problem, dokle drugima pomaže i slikoviti način, recimo u knjizi, Jesse Liberty "Sams Teach Yourself C++ in 21 Days" lijepo na slikoviti način opisuje što je Stack(hrv.stog).
Citiram "Stek je posebno područje memorije, locirano za čuvanje podataka, koje zahtevaju sve funkcije u određenom programu. Nazvano je tako, jer je to red sa osobinom zadnji-unutra,prvi napolje, slično kao stek tanjira u kafeteriji, kao što je prikazano na slici 5.5.Zadnji-unutra, prvi-napolje znači da će ono što je zadnje dodano na stek biti prvo što se uzima. Većina redova je kao red u pozorištu: prvi u redu je prvi koji ulazi. Stek je više kao stek novčića: porđeate u nizu 10 penija na vrhu stola, a onda neke uzmete i zadnja tri će biti prva tri koja ćete uzeti.
Kada se podaci "gurnu" u stek, on raste;dok se podaci "vade" sa steka, on se skuplja.Nije moguće izvaditi tanjir iz steka bez vađenja svih tanjira koji su stavljeni posle njega..."
, dalje se nastavlja s analogijom, ali evo još jedne.
"NASLEĐIVANJE I PONOVNO KORIŠĆENJE.Kada inžinjeri u firmi Acme Motors žele da izgrade nova kola,oni imaju dva izbora:mogu da počnu ispočetka,ili mogu da modifikuju postojeći model. Možda je njihov model "Zvezda" skoro savršen, ali možda žele da dodaju turbopunjač i menjač sa šest brzina. Glavni inžinjer tada ne bi želeo da počne ispočetka,već bi radije rekao:"Hajde da napravimo još jednu 'Zvezdu',ali dodajmo nove mogućnosti. Kola ćemo nazvati 'Kvazar'". "Kvazar" je vrsta "Zvezde",ali sa dodatnim osobinama."
smayoo kaže:

zašto aplikacija koja radi istu identičnu stvar kao i ona napisana prije 25 godina - danas ima 4-5 MB, a nekad je imala 30-40 kB

Uzmimo za primjer program Gedit za OS X, Gedit je obični program za obradu teksta, tipa wordpad. A velik je 198 MB, a zašto?. Pa zato jer ne koristi nativni API od OS X-a, Cocoa, već koristi razne biblioteke(eng. library), kao: GTK+ za widgete(prozor programa,dugmići...)koji je cross-platform, kao i Pango koji služi za rendiranje teksta(specijalni zankovi koji koriste određeni jezici), pa onda Cairo, biblioteka za crtanje vektorske grafike.
Na kraju, kada se pakira program, i kopiraju sve te bibilioteke, program teži tonama:-D. Ali to je tako, jer zašto bi ti trebao raditi sve ispočetka kada postoje već napisane biblioteke. Možda tebi treba samo neka trivijalna funkcija iz određene biblioteke ali na kraju je trebaš cijelu upakirati.
24.02.2014 | 01:29
Eto, sam si sve rekao.
Standardne biblioteke nisu ni pola problema. 80% današnjih programera nisu programeri, nego kopirači kôda. Radije će tjedan dana izgubiti surfajući raznim repozitorijima i kopajući po tuđim sourceovima dok ne nađe komad kôda koji otprilike radi to što mu treba i onda to motornom pilom utjerati u svoj kôd (i unijeti 3-4 buga koja nikad neće uspjeti naći jer ne kuži što je netko drugi napisao), nego da dva dana uključi mozak, razmisli, složi vlastito rješenje i primjeni ga. I, nakon što to ponovi 10 puta, pa onda da otkaz (jer je našao drugu budalu od poslodavca koja ćemu platiti još malo više), pa dođe drugi takav, pa napravi istu stvar još 10 puta, itd....

I onda dobiješ tekst editor od 200 MB. Eto.
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 3 sati, 37 minuta
  • dpasaric: Meni to zvuči kao logična prva stvar koja će se polomiti.
  • ZeljkoB: Je li tko probao iOS26, a da mu ZABA app i dalje radi OK?
  • hal9000: Sretan rođendan i dobrodošao u klub!
  • drpongrac23: Hvala svima!
  • ping: Sretan rođendan
  • dpasaric: Sretan ti! :)
  • zoranowsky: Sretan ročkas!
  • Yonkis: Sretno ti rođendanovo!
  • smayoo: Sretan ti rođendan! :)
  • drpongrac23: Danas sam ušao u 5-u DEKADU ŽIVOTA!!! Živjeli svi!!!
  • hal9000: [link]
  • Riba: Odnio vrag prisu!
  • hal9000: Za 30-ak godina većina nas ni neće više biti živo pa koga briga za responsive site! :D
  • Borisone: Ma nije to, nego se sada početna stranica učita u tren oka. Treba bar 3-4 sekunde da bi bilo moderno.
  • Riba: Uostalom, nije Jabucnjak neresponsivan nego je vama ekran premalen! :-D
  • dpasaric: I nisi boomer, ti si gen X! :)
  • dpasaric: Zašto bi itko išao na ovaj tip weba s mobitela? :)
  • Riba: Hoce, vec je u pripremi godinama ali je implementacija malo zapela...plus sto ne pomaze sto ja boomer nikada ne idem na jabucnjak sa mobilnog uredjaja. :)
  • CoffeePod: Jabucnjak*
  • CoffeePod: Hoce li Jabuvnjak ikad dobit reponsive sajt?
  • cariblanco: Danas smo u Osijeku, možda shebali turističku sezonu :D
  • dpasaric: Slijedi uskoro osvrt na naslovnici...
  • Air: ...a Applevom slučaju iako te fore drugi telefoni imaju već godinama, ali kad to Apple napravi mi bi se trebali diviti tome kao toploj vodi.
  • Air: Meni Keynote izgleda kao kad Trum hvali samo sebe i svoje odluke kao ono baš najbolje, iako ga je cijeli Svijet popljuvao...
  • drlovric: Na Mac, Spotlight je odlican, kao i boja foldera (konacno) :)
  • drlovric: iPad je odlicno profitirao. Ako sve ovo ne zakljucaju za najnovije modele only :)
  • Riba: Keynote mi je kao neka epizoda Teletubbiesa.
  • Riba: Gledam taj WWDC i razmisljam kako su teme o umiranju mozda privlacnije. :-D
  • dpasaric: Idemo mi na ljepše teme, WWDC je za sat vremena! :)
  • dpasaric: Sve pet, ali nije li zanimljiva statsitika da je od zadnjih 30-ak (toliko pratimo na jednoj internoj grupi objave u medijima) sportaša, umjetnika i ostalih poznaith osoba koje su iznenada umrle, uzorak cijepljenih 100%. A znamo da je kod nas situacija bila cca 50:50, znači nešto lomi statistiku. Evo, samo to primjećujem.
  • smayoo: To što nije u javnosti poznato što je prethodilo njegovoj smrti, ne znači da nije prethodilo ništa čega bi ta smrt bila logičan i sasvim vjerojatan ishod. Moj pokojni stari je umro u 59. godini i svima koji ga nisu jako dobro znali je to bilo "iznenada". Nas koji smo mu bili bliski nije baš *iznenadilo*, iako nam je bilo teško i bolno.
  • Riba: Obrati paznju na nepoznate osobe poput mog oca koji ne uzima lijekove kako je propisano, odbija ici na kontrole, jedva je izvukao zivu glavu nakon srcanog udara pred par godina i jos hoda naokoo unatoc tome sto se cak i cijepio. Znanost bi se trebala na takve slucajeve usredotociti. :)
  • dpasaric: Samo primjećujem uzorak. Do sada je 100% kod domaćih i stranih poznatih osoba koje su iznenada umrle. Ponavljam, možda je zaista slučajnost, ali sada već postaje statistički zanimljivo.
  • Riba: Covjek je vjerojatno pocinio suicid ili izravno ili neizravno alkoholom, nije tu potrebna velika znanost.
  • dpasaric: Sjajan umjetnik je to bio. Velika šteta.:( I gle, opet moramo primjetiti slučajnost koja povezuje sve "prerano" umrle. :( Nadam se da će znanost potražiti uzroke takvoj statistici.
  • smayoo: RIP, Matija :(. Stvarno prerano.
  • dpasaric: Večeras u 19 sati po našem vremenu Appleov #WWDC25 keynote!
  • Maxxy: RIP Matija Dedić :(
  • smayoo: RIP :(
  • dpasaric: Umro Bill Atkinson! :(
  • drpongrac23: @Zdravac - Nemoj ići lijevo ako semafor je desno :) :)
  • Zdravac: hahahah
  • Zdravac: A da se, umjesto palac dolje/gore, uvede palac lijevo/desno?!
  • tino1: Gjuro, bola, Mazlum i to s veliko "M".
  • Gjuroo: Možda "mamlaz"?
  • tino1: Mazlum- na Herceg- Bolansanski- Budala.
  • Yonkis: Mazlum - Mazlum (maẓlūm) is an Arabic term for "oppressed, ill-treated, injured, sinned-against" (the antonym being ẓālim "oppressor"; root ẓlm "to oppress";).
  • tino1: Riba! Vraćaj karmu! Ej ne ćeš se imat kamo vratit.
  • tino1: Ej ukinuo Mazlum Karmu!! Šta vam je odmah vraćaj karmu Riba!!
  • smayoo: :(

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

drlovric, hal9000, Nikx, Riba, robee, Anonimci (473)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 0.84 Seconds

Provided by iJoomla SEO