• 34 odgovora
  • 10.876 pregleda
bogatstvo tipova u C 20.11.2018. u 18:34 · pre 96 meseci #1
80% vremena na tipove i 20% na ostatak jezika.

malko su preterali...
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 20.11.2018. u 20:44 · pre 96 meseci #2
O cemu ti to ?
Pa imas dovoljno za tipova za vecinu stvari, jedino ako ti ne treba nesto specificno veliko. A za kastom tipove ti svakako treba vremena, + kako C je namenjen i za primene gde su ti resursi ograniceni pa onda svakako pravis ono sto ti zadovoljava potrebe i ono sto mozes da smestis u ram i rom.
Re: bogatstvo tipova u C 20.11.2018. u 21:56 · pre 96 meseci #3
Ovaj momak tek otkriva C i nema veze o čemu priča.

Recimo, ne zna da u C postoje 32 rezervisane reči, od kojih je 17 u vezi tipova podataka (više od pola jezika).
C je "mali" jezik. Učenje jezika je brzo. Tek kada se nauče osnove jezika, počinju da se uče biblioteke.
Uzgred, 99% učenja C je da naučiš kako da rukuješ pokazivačima.
Re: bogatstvo tipova u C 21.11.2018. u 04:03 · pre 96 meseci #4
mislim da se oko pokazivaca nepotrebno dize buka. Meni je konkretno poziv funkcija i scope promenljivih mnogo komplikovanija stvar.
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 21.11.2018. u 07:10 · pre 96 meseci #5
^^ Znači da još nisi počeo da radiš sa pokazivačima. ^^

Code (c):

struct net_device_ops {
int                     (*ndo_init)(struct net_device *dev);
void                    (*ndo_uninit)(struct net_device *dev);
int                     (*ndo_open)(struct net_device *dev);
int                     (*ndo_stop)(struct net_device *dev);
netdev_tx_t             (*ndo_start_xmit) (struct sk_buff *skb,
struct net_device *dev);
 


http://www.acodersjourney.com/2018/05/top-20-c-pointer-mistakes/
Re: bogatstvo tipova u C 21.11.2018. u 18:43 · pre 96 meseci #6
Citat:
Whitewater:
mislim da se oko pokazivaca nepotrebno dize buka. Meni je konkretno poziv funkcija i scope promenljivih mnogo komplikovanija stvar.


Poziv funkcija ?? scope promenljivih ????, ako ti pointeri nisu frka sto onda ovo napisa ?
Re: bogatstvo tipova u C 21.11.2018. u 20:02 · pre 96 meseci #7
ja kazem koji je meni koncept bio tezi.

Ne mogu jos uvek da sagledam u cemu je prava prednost pointer. Shvatio sam kako mogu da pristede memoriju kod dinamickog dodeljivanja lokacija i ucine kod elegantnim, npr liste stack... jedino da budem iskren ne nam koliko je to danas narocito potrebno. Ali to je vec posebna tema...
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 21.11.2018. u 22:25 · pre 96 meseci #9
dobro to je nivo 2 na ETF, necemo sad preterivati
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 21.11.2018. u 23:36 · pre 96 meseci #10
dajte mi 3 razloga zasto da dobro procitam Understanding and using C pointers
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 22.11.2018. u 06:22 · pre 96 meseci #12
Ako se budeš bavio programiranjem na C/C++ jezicima, bićeš prinuđen da razumeš, modifikuješ i koristiš već gotov C/C++ kod, ili da izrađuješ kod koji je usaglašen sa ostatkom projekta.

Nepoznavanje funkcionisanja i primene pointera (npr. link koji ti je ostavio djoka_l) tada postaje veliki hednikep.

Naravno da imaš pravo na svoje mišljenje, ali mislim da si poranio sa ocenama o jeziku.

E sad, niko nije zaljubljen u pointere, takav je jezik.

Citat:
Whitewater: mislim da se oko pokazivaca nepotrebno dize buka. Meni je konkretno poziv funkcija i scope promenljivih mnogo komplikovanija stvar.

Ovo može da ime veze upravio sa pointerima.
Re: bogatstvo tipova u C 22.11.2018. u 06:35 · pre 96 meseci #13
C je zamisljen kao jezik koji ce zameniti asembler da bi se mogao napisati operativni sistem Unix.
Sa te strane treba razumeti dizajn odluke u vezi jezika.
Re: bogatstvo tipova u C 22.11.2018. u 06:47 · pre 96 meseci #14
da, nekako oseca se u C taj neki low level.

evo sad bas kad radim pointere susreo sam se sa konceptom steka i heapa. Nazalost nisam bas nigde nasao lepo objasnjnje kako operativni sisitem dodeli C programu memoriju i koji deo C onda brine o dodeljivanju adresa ? Ili pak brine sam OS ??

zivim za dan kad cu naci lepo napisanu knjjigu, Evo ovaj o pointerima kaze hajmo prvo memoriju to je vazno, yaay, ali nema ni jedan dijagram. Da li ima neko neki link na neki lep yt koji objasnjava the stack and the heap u C ?

(inace nije mi jeasno kako sam dospeo ovde)
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 22.11.2018. u 06:50 · pre 96 meseci #15
ahh ok, evo u drugom poglavlju

A C program executes within a runtime system. This is typically the environment provided
by an operating system. The runtime system supports the stack and heap along
with other program behavior.


idem sada da vidim sta je runtime system
Potpis
I saw a USO last night.
Re: bogatstvo tipova u C 22.11.2018. u 06:56 · pre 96 meseci #16
Stek i heap su strukture podataka nevezano za OS. Stek je struktura gde se alokacija vrsi dodavanjem na kraj (raste u memoriji na dole uglavnom
ali ne mora), i oslobadja se brisanjem sa kraja samo tako sto se podesi stek pointer. Zgodan je za lokalne varijable zato sto svaki put
kada udjes u f-ju alocira se n bajtova koji se zovu frame, a svaki put kad izadjes iz f-je zadnji frame je upravo ono sto je alocirala
data f-ja pa se jednostavno oslobodi podesavanjem stek pointera.
Heap je struktura koja moze biti bilo kakva i koristi se za dinamicko alociranje memorije (malloc) koja se mora eksplicitno osloboditi
pozivom recimo f-je free. Kako ce to biti izvedeno zavisi od alokatora koji se koristi. Neoslobadjanje ovakve memorije ima za posledicu
tzv "memory leak".

edit: runtime sistem je biblioteka koja inicijalizuje sve potrebne strukture i poziva "main" f-ju kojoj prosledjuje sve potrebne parametre.
Znaci nije "main" ono sto OS poziva nego neku skrivenu f-ju iz libc-a, a ista poziva main.
Re: bogatstvo tipova u C 22.11.2018. u 08:53 · pre 96 meseci #17
Citat:
Whitewater:Ne mogu jos uvek da sagledam u cemu je prava prednost pointer. Shvatio sam kako mogu da pristede memoriju kod dinamickog dodeljivanja lokacija i ucine kod elegantnim, npr liste stack... jedino da budem iskren ne nam koliko je to danas narocito potrebno. Ali to je vec posebna tema...


Bez pointera nemas dinamicku memoriju. Gomila biblioteka ocekuju da im proslijedis nekakav kontekst ili handle koji je cesto pointer. Ako neces da koristis pointere, postavljas drasticna ogranicenja na arhitekturu aplikacije, npr. pointeri omogucavaju nivo indirekcije koji je cesto potreban da razdvojis slojeve u aplikaciji.

Npr. zamisli da imas strukturu Context koja sadrzi gomilu parametara (npr. CLI parametri isparsirani za lak pristup). Razlicite funkcije unutar programa moraju da rade drugacije u zavisnosti od proslijedjenih parametara koje je korisnik proslijedio. Ovo se uglavnom radi tako sto proslijedis pokazivac na konstantnu strukturu (const ctx*), tako da svaka funkcija moze da cita polja iz te strukture, a ne moze da ih mijenja (read only). Alternativa bi bila da kopiras komplet strukturu prilikom svakog pozivanja funkcije, sto je veoma neefikasno (sizeof(*ctx) vs sizeof(ctx)). Da ne spominjem tek slucaj ako zelis da funkcije mogu da mijenjaju dio ove strukture, bez pointera to ne mozes efikasno da uradis.

Na kraju, ako ne znas razliku izmedju sledece 3 linije, tesko da mozes da se zoves C programerom.

Code:

const int *a;
int * const a;
const int * const a;
Re: bogatstvo tipova u C 22.11.2018. u 09:20 · pre 96 meseci #18
Upravo mi je pala na pamet analogija zasto su korisni pointeri.

Zamisli da trebas da das nekom psa da ga proseta. Kako ces to uraditi? Stavices mu povodac i daces povodac setacu. Mozes umesto toga i da odvedes psa u neki istrazivacki centar i da ga kloniraju pa da uzmes klona i pruzis ga ovom sto treba da ga seta. Ali.. Ipak ces koristiti povodac.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: bogatstvo tipova u C 22.11.2018. u 10:04 · pre 96 meseci #19
Citat:
Whitewater:
idem sada da vidim sta je runtime system


Runtime system ti je kod koji obicno dolazi ili od pisca operativnog sistema ili od pisca kompajlera.

Taj kod inicijalizuje tvoju aplikaciju, radi neke osnovne stvari koje su neophodne pre nego sto se uopste pozove main() i pruza interfejse za razne standardne C biblioteke (recimo kad pozoves printf(), to je funkcija implementirana u C runtime biblioteci).

Takodje, obicno runtime system se bavi i menadzmentom memorije u tvojoj aplikaciji - jako retko postoji potreba da direktno zoves operativni sistem da alociras memoriju (osim ako ne radis nesto vrlo specificno, recimo hoces da mapiras memoriju izmedju procesa ili ti treba jako veliko parce memorije sa specificnim osobinama npr. da mora da bude u fizickoj memoriji ne u swap-u i sl.). Takodje, C runtime biblioteka za tebe radi i menadzment malih alokacija memorije iz heap-a i stara se o tome da se memorija alocirana od OS-a optimalno koristi.

Zamisli "runtime system" kao sloj izmedju OS-a i tvoje aplikacije koji pruza API-je neophodne C programu da funkcionise.
Potpis
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Re: bogatstvo tipova u C 22.11.2018. u 13:39 · pre 96 meseci #20
Evo jednog izvanrednog tutorijala o pointerima u C-u:

Code:
https://pdos.csail.mit.edu/6.828/2014/readings/pointers.pdf


Topla preporuka. Bez šale, čudo jedno koliko valja :)
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme