Mivel akármilyen jó, és majdnem C sebességü is a C++, azért mégis csak majnem olyan gyors. És ez mondjuk egy kernelnél igencsak számít (méghacsak 5%-ról van szó, akkor is, de azért ennél többről van szó általában).
Szerintem full kezdő szintről néhány év, amíg értelmesen és hasznosan bele tudsz nyúlni "komolyabb" kódokba, de legalább 1 év, ha rengeteg időt rászánsz.
Én azt látom, hogy programozó szakon full kezdő szintől 1/2 év alatt szinte senki (csak ~5%) nem jut el addig, hogy egy 100 soros egyszerű feladatot megoldó programot megírjon mondjuk 20* annyi idő alatt, mint egy tapasztalt programozó.
A programozásnál nem is annyira a nyelv megismerése a fő probléma, mert ezt néhány hónap alatt megteheted, hanem a "programozói gondolkodás" elsajátítása, és az adott nyelven való gondolkodás elsajátítása.
Aműgymeg ha van egy kis időd olvasgatni, valamelyik topikban full kezdő szintről próbáltuk egyengetni Individual fejlődését C++ nyelv megismerése céljából. kb 100 hozzászólást találhatsz különböző kérdésekben az adott topikban, amiből megértheted/sejtheted, milyen problémák merülnek fel egy ilyen tanulási folyamat során.
Full kezdő vagyo, ismerem az if, while, do-while, szviccs, meg a hasonló cuccokat. Kb-ra értem az inklúdos dolgokat, és jelenleg egy C könyvet olvasgatok (Programozzunk C nyelven!, meg van egy Herbert Schildt: C/C++ Referenciakönyvem is, amit már kb-ra átolvasta, tahát abból a lényegen átrágtam magam, mégsem tudok megírni egy értelmes C programot).
Egyszerűen csak belekezdeni nehéz a dologba. Pascal-t az úgy nagyábol ismerem, de csak nagyon felületes szinten (ippeghogy). HTML-t már régóta tudok, de azt könnyű volt megtanulni, mert ha valami módosítottam a forráson, azt azonnal láttam a böngészőben, de ez a komolyabb programnyelvekkel nem így van.
Hogyan induljak neki? Mi lenne az, amivel meg tudnék birkózni? Mit tegyek? Eddig még egy olyan GPL programmal sem találkoztam, aminek értelmessen bele tudtam volna nyúlni a forrásába (najó 1 kivétel van. Elkezdtem magyarítani a Quake2-t, de az nem kötött le, mert nagyon primitív dolog volt és nem fejlődtem tőle semmit).
És még valami: szerintem a C-röl szóló könyvek az újabb szabvány megjelenéséig nem számítanak elavultnak. Azt pedig nem 1-2 évente adnak ki. Más kérdés a Borland és egyéb változatok, ahol az újabb verzióhoz, lehet, hogy újabb könyv kell, verziókat meg váltanak 1-2 évente, de az nem C könyv, hanem Borland/Turbo/... C könyv.
Erre a könyvre én azt mondtam a gyakorlaton, hogy olvasgatni szabad, mert bizonyos dolgokat tényleg könnyebb ebböl megérteni, mint a Kernighanéböl, de nem szabad túl komolyan venni. Akkor nem lesz baj.
Az egész köyvben ugyanis alig van hordozható kód. Az típusok méretét annyinak veszi, amennyi a Turbo C-ben (vagy mit tom én melyikben), a biteltoló műveletek során szerinte a felszabaduló bitek helyére 0 kerül, ...
Az általad feltett kérdésre viszont válaszol: 260. oldal.
Mar nem egy helyen lattam. Most botokat nezek(IRC), de pl az mplayer is tele van ilyenekkel, ha jol emlekszem.
Konyvben ennyit talaltam:
__DATE__ __TIME__ __FILE__ __LINE__ __STDC__
EZEK A _SZABVANYOS_ eloredefinialt makrok.
(tehat az ANSI C szabvanyban ez az _5_ van benne)
Szal sztem foleg debugnak jok ezek a makrok.
(Egoist: Nekem amit itt forgatok mint konyvet: ProgramozzunkC nyelven-Benko"-ektol.)
Nem tul sok minden van benne, de ami benne van, az jol le van irva. Bar ez meg ilyen regi MS-DOS-ra
epulo C programozas. Egy fejezet(Gafikus fugggvenyek hasznalata turbo C nyelven)40 oldalon keresztul
teljesen hasznalhatatlan. MEg a turbo pascal, es
a turbo C osszehasonlitasa is.
De 350-400 oldal hasznalhato belole.)
Az a gond ezekkel a C-s konyvekkel, hogy mar mind
elavult sajnos. Tul sok kesessel jonnek ki konyvek.
Meg olyan nincs, hogy valaki ir egy konyvet Mo-n.
Mindig leforditjak a konyveket angolbol, meg mire amerikaban is kiadjak, mar ott is el van avulva
mire leforditjak, kiadjak itthon, az mar 1-2 eves keses.
Ezert probalok programokbol tanulni.
venyek hasznalata turbo C nyelven)40 oldalon keresztul
teljesen hasznalhatatlan. MEg a turbo pascal, es
a turbo C osszehasonlitasa is.
De 350-400 oldal hasznalhato belole.)
Az a gond ezekkel a C-s konyvekkel, hogy mar mind
elavult sajnos. Tul sok kesessel jonnek ki konyvek.
Meg olyan nincs, hogy valaki ir egy konyvet Mo-n.
Mindig leforditjak a konyveket angolbol, meg mire amerikaban is kiadjak, mar ott is el van avulva
mire leforditjak, kiadjak itthon, az mar 1-2 eves keses.
Még 1 valami (bocsesz. de fáradt vagyok, és lassan jár az agyam):
az előfordító sima replacet mível. Ez valóban magába foglalhatja az üres -re való cserét is.
De azért jobban örőlnék, ha megnézhetném az ANSI C szabvány mit ír. Addigis én C alatt odaírok egy 1-est a végére, de nagyon valószínűnek tartom, hogy anélkül is jó.
Most néztem meg Stroustrup C++ könyvében az állomány örszemek címszót. Ott sincs helyettesítő valami. Ezekszerint C++ -ban tuti elég ennyi. Viszont C -ben azért nem vagyok biztos, hogy teljesen szabályos, bár a gcc -Wall -ansi nem szól semmit rá. Ez általában azt jelenti, hogy OK-s a dolog. Bár a /usr/include -ban levő header file-ok odabiggyestsztenek a végére egy 1-est, és szerintem ez így logikusabb is, és ez aztán abszolút tuti jó.
Miért használják a komolyabb dolgokhoz inkább a sima C-t
Minél inkább?
Mostanában próbálok belefogni a programozásba, de elág nehézkessen megy. Ha valaki tudna pár jó tanácsot adni, hogy hogyan fogjak neki, akkor azt szivessen fogadnám.
(mostanában a Cygwin X-Box-ra való portolása izgat a legjobban, XMMS-el és Mplayerel együtt).
Ha ezt komolyan gondolod, akkor vagy tényleg most fogtál bele a programozásba, vagy már egy ideje programozol, de akkor mit jelent az, hogy most fogtál bele? Ha abszolút kezdő vagy, akkor az első tanácsom, hogy add egy kicsit alább, majd késöbb ráérsz ilyen méretű feladatokra.
Amúgymeg milyen jellegű tanácsokat vársz? Mennyire vagy kezdő? Milyen és mennyi tapasztalatod van? Mit akarsz elérni?
Üdv: Ego
PS: Nekem úgy rémlik, hogy a fejlesztők "portolták" cygwin alá is valamelyik verzióját a MPlayernek (,,csak úgy poénból").
Lenne pár kérdésem, úgyhogy nem is halogatom a dolgot tovább és kérdezek:
- Miért használják a komolyabb dolgokhoz inkább a sima C-t. Ha jól tudom, akkor a Kernel is C-vel készül. Megszokás, vagy van valami nyomósabb ok rá?
- Hogyan detektálja ./configure mondjuk az Mplayer esetében az X-et. Nekiálltam (mivel olyan fasza gyerek vagyok) Cygwin alatt lefordítani az Mplayer-t, de nem találta meg az X-et. Aztán a Waimea-t (window manager) is megpróbáltam Cygwin alatt lefordítani, de az sem találta meg. Nem azt kérem, hogy valaki pontosan leírja a dolgot, csak instrukciókat.
Mostanában próbálok belefogni a programozásba, de elág nehézkessen megy. Ha valaki tudna pár jó tanácsot adni, hogy hogyan fogjak neki, akkor azt szivessen fogadnám.
(mostanában a Cygwin X-Box-ra való portolása izgat a legjobban, XMMS-el és Mplayerel együtt).
Ilyet se ettem még: a DB2 pár adattípust az SQLTCHAR típus felhasználásával ad meg. Gondoltam, megnézem, pontosan milyen mezítlábas C típusból jön ez ki, de hiába söpörtettem végig az mc keresőjét az egész DB2 könyvtáron (nem csak az include-on) és a rendszerheaderek mindegyiként, egyetlen fájl sem tartalmazza az "SQLTCHAR" sztringet.
Namost feladat az lenne, hogy a masodik sztringre
probaljuk meg railleszteni az elsot. Ha illik valahova(tok mindegy hova), akkor jo, ha nem, akkor valtozo=0.
A nehezseget az adja hogy az elso sztring hossza es a masodik sztring hossza is valtozhat.
Tehat valami ciklus kene.
En ezt csinaltam:
filter=0;
for(i=0;i if(filter==0){
for(j=0;j else filter=0;}
}}
Ez bugzik.
Azert is, mert a hosszabbik sztringen egyesevel vegigmegy, es megnezi, hogy illik-e ra a kisebbik sztring. De a gond ott van, hogyha a kissebbik sztring utolso betuje illeszkedik, akkor jonak veszi.
Tehat ha fr helyet ur -t adok meg, akkor az is illeszkedik.
De illszkedik a lghr is.
Szal ez igy nagyon gaz.
Valakinek lenne egy frappabs megoldasa?
(rekurziot se lenne kedvem hasznalni...)
Szal ha valakinek van egy nagyon jol bevalt modszere szivesen fogadnam....
Az lehet, hogy te huje vagy, en viszont biztos.
Van 2 mailed. Az utso mar tenyleg jo progit tartalmaz. A tmp lehet, hogy felesleges, de igy tuti a dolog.
Ehh de hulye vagyok, hisz visszakuldted javitva...
Kosz ezerrel.
Valaki ismeri a getopt fuggvenyt?
while ((c=getopt(argc,argv,"+x:y:vdtchX:Y:"))!=EOF)
Itt azt nem ertem, hogy hogyan illeszti a
karaktersorhoz, magyaran nem ertem a :-ot, es az
elejen a +-t.
Link itt:
http://www.opengroup.org/onlinepubs/007908799/xsh/getopt.html
Megnezned a csatolt fajlt?
Mert nekem ha ugy adom meg, akkor hulyeseget ir ki, ha a printfben 2 *-ot adok ,meg, akkor segfaultol...
Ize kijavitanad ami rossz?
es esetleg visszakuldened, mert analam 2*-gal segfault.
ANSI C -beli megvalositast tudok adni. Ennek a pontossaga fugg a CLOCKS_PER_SEC erteketol, ami nalam 1000000, nalad lehet ettol eltero. (hacsak nem irtad el, akkor mikrosecundomot akarsz, azaz 1/1000000 secundumot)
void usdelay(int msec) {
clock_t a;
int t;
t = CLOCKS_PER_SEC*1.0/1000000.0*msec;
a = clock();
while( clock() - a < t );
}