Forum.hr

Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje
Korisničko ime
Lozinka

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 08.04.2004., 23:24   #1
Mlaen
No Limits!
 
Mlaen Avatar
 
Registracija: Apr 2003.
Postova: 1,842
Pošalji poruku preko ICQ korisniku Mlaen
Zašto je još C toliko bitan?

Ovdje na programiranju se dosta o tome piše a i čitao sam prilikom zaposlenja, zašto toliko gnjave oko C-a ako znaš recimo C++. Šta nije ovo drugo bolje...
Ko će prije dobit posao onaj ko zna C ili C++ (zanemarimo ono da se traži znanje više jezika)?
Mlaen is offline  
Odgovori s citatom
Old 08.04.2004., 23:40   #2
Shadowman
Mladić
 
Shadowman Avatar
 
Registracija: Nov 2002.
Lokacija: Chicago
Postova: 5,165
Pa C++, naravno. C++ sadrži skoro sav C.
__________________
Ja sam mladić u najboljim godinama i čovjek za sutra, a nekad sam bio sretno dijete. U mojoj općini problema nema, jer rade veze i poznanstva.
Shadowman is offline  
Odgovori s citatom
Old 09.04.2004., 09:55   #3
fastcode
Registrirani korisnik
 
Registracija: Jan 2003.
Lokacija: Mostar
Postova: 88
Posao ćeš vjerojatno prije dobiti ako znaš c++
fastcode is offline  
Odgovori s citatom
Old 09.04.2004., 10:25   #4
Mlaen
No Limits!
 
Mlaen Avatar
 
Registracija: Apr 2003.
Postova: 1,842
Pošalji poruku preko ICQ korisniku Mlaen
Pa to mi se i čini logičkim, ali mi se čini da sam negdje pročitao da se više traže C programeri ili da oni imaju nekakvu prednost ili tako nešto
Mlaen is offline  
Odgovori s citatom
Sponsored links
Advertisement
 
Advertisement
Old 09.04.2004., 10:54   #5
TomK
Registrirani korisnik
 
Registracija: Dec 2002.
Postova: 1,980
Ipak postoje situacije gdje je detaljno poznavanje C-a, kao i znacajno iskustvo u proceduralnom programiranju vaznije nego znanje C++-a i OOP-a. Prije neki dan smo bili u posjeti Danskom odjelu Nokia-e, gdje se pravi software za jedan dio Noikia telefona. Tamo su nam objasnili da je software u njihovim telefonima napisan iskljucivo u C-u, i to zbog hardverskih ogranicenja koje tako mali aparat namece. Jer, iako ne koristimo niti jedan dio C++-a u programu (dakle code je cisti C), ipak ce svaki C++ kompajler proizvesti veci izvrsni file.
Druga stvar je da za jedan veliki dio procesora ne postoji C++ kompajler, dok C kompajler postoji. Takva je situacija u industriji, gdje procesori upravljaju automatizacijskim procesima.
Ipak, kao sto je netko rekao, C++ sadrzi sve sto i sam C sadrzi, pa bi u teoriji svatko tko je savladao C++ zapravo savladao i C. No pitanje je ovo: Koliko je moguce biti dobar programer u proceduralnom programiranju, ako smo od samog pocetka naucili razmisljati OO, koristiti OO osobine, tehnike, prednosti?
Ja na to pitanje ne mogu odgovoriti jer sam najprije naucio C, a potom C++. I mislim da je dobro da je redosljed bio takav. Mozda netko ima obrnuto iskustvo koje moze podijeliti s nama?

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 09.04.2004., 11:08   #6
banderas
jetra na mukama
 
banderas Avatar
 
Registracija: Dec 2002.
Lokacija: Zagreb
Postova: 24,167
bas me zanima kako se moze znati C++ ako se ne zna C
banderas is offline  
Odgovori s citatom
Old 09.04.2004., 12:06   #7
borut
Registrirani korisnik
 
borut Avatar
 
Registracija: Feb 2003.
Lokacija: Zagreb
Postova: 49
Da - to je kao da kazes: "Znam trčati, ali neznam hodati"
borut is offline  
Odgovori s citatom
Old 09.04.2004., 12:22   #8
TomK
Registrirani korisnik
 
Registracija: Dec 2002.
Postova: 1,980
Quote:
bas me zanima kako se moze znati C++ ako se ne zna C
Ako mislis na sintaksu jezika (koji je samo manji dio onoga sto programer mora znati), onda su doista ta dva jezika gotovo identicna (kazem "gotovo", zbog prosirenja koje C++ uvodi). No kada pricamo o nivou apstrakcije koji je moguce primjeniti koristeci jedan ili drugi jezik, stvari su bitno razlicite, i vjerovatno se ne mogu svesti u nekoliko recenica ili bizarnih komentara.

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 09.04.2004., 12:42   #9
Outcast
Registrirani korisnik
 
Registracija: Nov 2003.
Postova: 2,089
Ima smisla prvo znati c, a zatim učiti c++, ali to može biti dvosjekli mač.

Oni koji najprije nauče c, s vremenom će veliku većinu svojih budućih vještina orijentirati na pointere. C je kao strukturirano orijentirani programski jezik idealan da se dobro nauče i shvate pointeri. Zapravo, usporedite li bilo koji drugi koncept sa konceptom pointera, izgleda da su pointeri daleko teži za shvatiti od npr. struktura, enumeracija ili cast operatora. Programeri u c-u čak ne trebaju razmišljati o scope-u, jer su pravila jako dobro definirana.

C++ kao što kažu koristi pointere, ali za razliku od c-a sam koncept je daleko kompliciraniji (OO) od c-ovog koncepta. To bi moglo biti ozbiljno ograničenje za nove programere, jer bi se daleko više usredotočili na neke druge koncepte, a ne na pointere, koji su najvjerojatnije najčešći uzročnici pojave bugova.

S druge strane, ljudi koji su prethodno dosta programirali u c-u imaju tendenciju preslikavati koncepte specifične za strukturirano programiranje u novu OO C++ okolinu, zato jer su na taj način naučeni razmišljati, ali isto tako zato jer im C++ to dopušta.

Vrlo nezgodna situacija.

Pozdravljeni!
Outcast is offline  
Odgovori s citatom
Old 10.04.2004., 00:03   #10
Rick23
Registrirani korisnik
 
Rick23 Avatar
 
Registracija: Jan 2004.
Postova: 1,127
Quote:
Ja na to pitanje ne mogu odgovoriti jer sam najprije naucio C, a potom C++. I mislim da je dobro da je redosljed bio takav.
Ko da sam ja reko.

Quote:
bas me zanima kako se moze znati C++ ako se ne zna C
Ko da sam ja reko.

Quote:
Da - to je kao da kazes: "Znam trčati, ali neznam hodati"
Ko da sam ja reko.

Kako da covjek shvati zasto enkapsulirati entitete i logike kad nikad drugacije nije ni vidio ? Kako objasniti klasu kad covjek jos nezna sto je struct ?
__________________
Transparent na jednoj Anti-Bush Demonstraciji:
bombing for peace is like fucking for virginity
Rick23 is offline  
Odgovori s citatom
Old 10.04.2004., 22:07   #11
Basta
Pacijent
 
Postova: n/a
Često poželim da je bilo obratno, da sam prije naučio C++ pa onda C.
 
Odgovori s citatom
Old 11.04.2004., 17:27   #12
lijencina
Registrirani korisnik
 
lijencina Avatar
 
Registracija: Feb 2004.
Lokacija: Hlad
Postova: 765
Quote:
TomK kaže:
Ipak postoje situacije gdje je detaljno poznavanje C-a, kao i znacajno iskustvo u proceduralnom programiranju vaznije nego znanje C++-a i OOP-a. Prije neki dan smo bili u posjeti Danskom odjelu Nokia-e, gdje se pravi software za jedan dio Noikia telefona. Tamo su nam objasnili da je software u njihovim telefonima napisan iskljucivo u C-u, i to zbog hardverskih ogranicenja koje tako mali aparat namece. Jer, iako ne koristimo niti jedan dio C++-a u programu (dakle code je cisti C), ipak ce svaki C++ kompajler proizvesti veci izvrsni file.
Druga stvar je da za jedan veliki dio procesora ne postoji C++ kompajler, dok C kompajler postoji. Takva je situacija u industriji, gdje procesori upravljaju automatizacijskim procesima.
Ipak, kao sto je netko rekao, C++ sadrzi sve sto i sam C sadrzi, pa bi u teoriji svatko tko je savladao C++ zapravo savladao i C. No pitanje je ovo: Koliko je moguce biti dobar programer u proceduralnom programiranju, ako smo od samog pocetka naucili razmisljati OO, koristiti OO osobine, tehnike, prednosti?
Ja na to pitanje ne mogu odgovoriti jer sam najprije naucio C, a potom C++. I mislim da je dobro da je redosljed bio takav. Mozda netko ima obrnuto iskustvo koje moze podijeliti s nama?

Lijepi pozdravi,
Uvijek se moze C++ kod propustiti kroz cross-compiler i na taj nacin generirati C kod. Tako da bi trebalo biti moguce koristiti C++ za bilo koji procesor koji ima C kompajler. To sam licno izveo svojedobno na jednome DSP procesoru.

A ima i jedna druga stvar. Stariji inzinjeri obicno ne znaju C++ a ne da im se nauciti, pa cesto prodaju managementu price kako je nemoguce. Osjetio sam i to par puta.

Zadnje uređivanje lijencina : 11.04.2004. at 21:47.
lijencina is offline  
Odgovori s citatom
Old 12.04.2004., 00:55   #13
TomK
Registrirani korisnik
 
Registracija: Dec 2002.
Postova: 1,980
Quote:
Uvijek se moze C++ kod propustiti kroz cross-compiler i na taj nacin generirati C kod. Tako da bi trebalo biti moguce koristiti C++ za bilo koji procesor koji ima C kompajler.
Potpuno se slazem.

Jedino pitanje koje ostaje je koliko je code koji generira cross-compiler optimiziran za odredjeni procesor!

Mozda imas nekakva iskustva vezana za to?

Lijepi pozdravi,
TomK is offline  
Odgovori s citatom
Old 12.04.2004., 02:40   #14
Lopuza
placem dakle suze postoje
 
Lopuza Avatar
 
Registracija: Dec 2002.
Lokacija: US
Postova: 1,585
C++ se moze nauciti bez znanja C-a! samo zamislite da prije C++ nema nista. kao sto mozete nauciti windows 32-bitni bez rada na 16-bitnom.
__________________
KPGS
Lopuza is offline  
Odgovori s citatom
Old 12.04.2004., 02:59   #15
Shadowman
Mladić
 
Shadowman Avatar
 
Registracija: Nov 2002.
Lokacija: Chicago
Postova: 5,165
Zar je netko rekao da nije?
__________________
Ja sam mladić u najboljim godinama i čovjek za sutra, a nekad sam bio sretno dijete. U mojoj općini problema nema, jer rade veze i poznanstva.
Shadowman is offline  
Odgovori s citatom
Old 12.04.2004., 07:40   #16
lijencina
Registrirani korisnik
 
lijencina Avatar
 
Registracija: Feb 2004.
Lokacija: Hlad
Postova: 765
Quote:
TomK kaže:
Potpuno se slazem.

Jedino pitanje koje ostaje je koliko je code koji generira cross-compiler optimiziran za odredjeni procesor!

Mozda imas nekakva iskustva vezana za to?

Lijepi pozdravi,
Bas u tome DSP slucaju se C++ neefikasnost pokazala kao mit. I to sta se tice i velicine koda i brzine.

U vecini slucajeva C i C++ kod su slicni. Npr for, do, while, else itd. ce se preslikati u C kod gotovo besz izmjena. CC(cross-compiler) ce napraviti trivijalne promijene kao sto su promjene naziva varijabli i funkcija. Takodjer ako odredjeni objekt ima konstruktor onda naravno kada se objekt inicijalizira (npr. MojaKlasa A; ) tada ce naravno u C kodu postojati explicitni poziv toga konstruktora. Ali to nije neefikasnost C++ jer bi ti tu funkcionalnost u konstruktoru explicitno kodirao kada bi koristio C umjesto C++ pa bi nakraju dobio istu stvar. Isto vrijedi i za destruktore, i overloaded operatore. Ako zbog optimizacija trebas koristiti posebne pragme na odredjenim mjestima u C kodu, koliko se sjecam CC ima odredjenu pragmu koja to omogucava.

Jedine stvari koje se ne mogu trivijalno preslikati iz C++ u C su vtable, template i exceptions.

Vtables su trivijalne. One postaju jednostavne table pointera funkcija. Klasa (struktura u C) kao prvi clan dobije pointer na svoju tablu. Ali to bi slicno bilo izvedeno i ako bi u C koristio pointere na funkcije. Tako da tu isto nema bas neke neefikasnosti.

Template i exceptions ne moras koristi ako neces. To su jedine stvari kad CC treba ozbiljno raditi i koje se ne mogu trivijalno preslikati iz C++ u C. I tu kvaliteta generiranoga C koda ovisi o kvaliteti CC kompajlera.

U mojem DSP slucaju sve gore navedeno se pokazalo i u praksi. Kriticni dijelovi koda u C++ su se jednostavno preslikali u C. Radilo se o for petlji sa nekim DSP algoritmom unutra. Mnostvo zbrajanja i mnozenja. I ona je izgledala jako slicno nakon sto je prevedena iz C++ u C tako da tu nije bilo neke neefikasnosti nego je kvaliteta konacnog asm koda je ovisila o C kompajleru a ne o C++. Kasnije sam taj (jako mali)dijelic koda ionako napisao u asembleru zbog dodatnog ubrzanja 2-3X.

Tako da sto se brzine tice, nije bilo nikakovih problema. A niti sto se velicine tice. Cak ako se dobro sjecam koristio sam STL library, i nije bilo problema (nisam vise siguran za STL jer je bilo par godina). U svakom slucaju uspjesan projekt.
lijencina is offline  
Odgovori s citatom
Old 13.04.2004., 01:47   #17
The_Equilibrist
Registrirani korisnik
 
The_Equilibrist Avatar
 
Registracija: May 2003.
Postova: 2,786
Mobiteli su sitne stvarcice, sa sasvim specificnim software-skim potrebama i malom ili nikakvom potrebom mijenjanja software-a. Jos do prije par godina sav se kod pisao u asembleru. Sada naravno svi novi mobiteli podrzavaju Javu ili tako nesto. Ali istina je da se radi o jako jednostavnim stvarima gdje ne treba previse apstrahirati i u obicnom C kodu je lakse nazrijeti tok instrukcija procesora.

No, naravno, dobar kompajler ce dati savrsene nule i jedinice i za C++ i za C
The_Equilibrist is offline  
Odgovori s citatom
Sponsored links
Advertisement
 
Advertisement
Odgovor


Tematski alati
Opcije prikaza

Pravila postanja
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smajlići su On
[IMG] kôd je Off
HTML kôd je Off





Sva vremena su GMT +2. Trenutno vrijeme je: 04:25.


Marketing





Powered by vBulletin Version 3.8.4 (hrvatski)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Site content ©1999-2009 Forum.hr
Ad Management by RedTyger