C oder C++?
-
"Näher als c" wäre nur assembler.
Für mich ist c wenn überhaupt sehr einfach, kein "besonderer" ansatz. Wenn du weißt was auf der assembler ebene passiert dann kann man relativ schnell erklären wie c das abbildet.
ansonsten kannst du für den umstieg ein paar sachen beachten und schon recht weit kommen:
- Du hast Funktionen wie´in c++ oder java für operationen auf Daten, und halt die daten global oder lokal in der funktion deklariert.
- Funktionen sind halt nicht an klaasen gebunden. Daten die du in funktionen verarbeitest sind entweder global verfügbar oder werden per parameter übergeben.
-structs sind syntaktisch wie klassen(mein_struct.member = 5). bloß ohne alle extras(methoden, konstruktoren).
-pointer
-new = malloc, und alles allokierte muss man per free löschen.Jetzt noch die Syntax lernen und du hast es im großen und ganzen kapiert.
-
Kurze Frage:
was verstehst du unter Linux?
Nur den Kernel, was ja eigentlich auch mit Linux gemeint ist, oder eine komplette Distribution?
Wenn du nur den Kernel meinst, dann ist C deine Wahl. Der Kernel ist komplett in C geschrieben, allerdings objektbasiert.
Wenn du eine komplette Distri meinst, dann nimm C++, weil z.B. KDE in C++ geschrieben ist, und für GTK gibt es GTKmm welches auch in C++ geschrieben ist.
Ansonsten kannst du dich aber unter Linux mit der Sprache austoben die du willst.
-
Bei der systemnahen Programmierung ist C generell sehr üblich.
-
C und C++ sind ähnlich stark verbreitet, wenn du ernsthaft programmieren willst, musst du beide können. Die Sprachphilosophien sind zwar unterschiedlich, aber wenn du einige Quelldateien anschaust, merkst du das relativ schnell. Womit du anfängst ist relativ egal, aber bleib dann erst mal ein Jahr bei der Sprache und meine nicht, wenn du C++ kannst, könntest du auch C (und umgekehrt).
Wenn du sehen willst, wie sich OOP und C vereinbaren lassen, schau mal die GLib an (oder gleich GTK+).
Die Bücher sind gut. Für C++ wird manchmal noch der Primer empfohlen, aber dein jetziger Vorschlag passt auch.
-
compul schrieb:
Hey,
Ich hab einige Erfahrungen in PHP und auch Java, und wollte mich nun an systemnaehere Programmierung ranwagen ~~ was laege da naeher als C oder C++?Nun, meine Hauptintention ist bei OpenSource Projekten (Linux) meinen Beitrag leisten zu koennen, und mit OpenGL rumzuspielen
Nimm C, das ist für den Anfang vom Sprachwortschatz und den Features überschaubarer und daher schneller zu lernen.
Außerdem ist OpenGL selbst in C geschrieben, da liegt es nahe, erstmal OpenGL von C Code aus zu nutzen.
Desweiteren lernt man in C seine Sachen noch selbst zu implementieren, damit bist du der Systemprogrammierung näher als wenn du dich ständig auf die STL verläßt.
Denn bei kleinen Systemen, wie z.B. in der µC Programmierung üblich, wirst du oft kein C++ und keine STL haben und da der Speicher dort mickrig ist, ist selbstimplementierter Code meist sinnvoller.
-
Nimm C schrieb:
Denn bei kleinen Systemen, wie z.B. in der µC Programmierung üblich, wirst du oft kein C++ und keine STL haben und da der Speicher dort mickrig ist, ist selbstimplementierter Code meist sinnvoller.
Ich wage zu bezweifeln, dass selbst implementierter Code effizienter im Speicherverbrauch und Performance ist. Das mag man bei überschaubarem Code sagen können, aber bei größeren Projekten? Auch in C gilt die Regel: Besser Libs verwenden, die sich seit Jahren bewährt haben, als irgendetwas selbst zusammen zu basteln.
-
Steffo schrieb:
Ich wage zu bezweifeln, dass selbst implementierter Code effizienter im Speicherverbrauch und Performance ist.
also speicherverbrauch ist bei einer auf universalität ausgerichteten library keine kunst...
-
Steffo schrieb:
Nimm C schrieb:
Denn bei kleinen Systemen, wie z.B. in der µC Programmierung üblich, wirst du oft kein C++ und keine STL haben und da der Speicher dort mickrig ist, ist selbstimplementierter Code meist sinnvoller.
Ich wage zu bezweifeln, dass selbst implementierter Code effizienter im Speicherverbrauch und Performance ist. Das mag man bei überschaubarem Code sagen können, aber bei größeren Projekten? Auch in C gilt die Regel: Besser Libs verwenden, die sich seit Jahren bewährt haben, als irgendetwas selbst zusammen zu basteln.
Ich glaube nicht, daß große Projekte auf mickrige µC laufen sollen.
Wenn die µC schon so wenig RAM hat, das man an allen Ecken und Enden sparen muß, dann wird der µC sicher nur eine sehr kleine Aufgabe erledigen müssen und da ist man mit IMO spezialisiertem Code besser dran.
-
Danke fuer die vielen guten reaktionen
es wird wohl darauf hinaus laufen dass ich mir erstmal das k&r buch hole und mit C anfange, um dann spaeter auf cpp zurueckzukommen. das einfach weil ich einen alten schulfreund habe der im moment an der fh c lernt und ich mich so mit ihm austauschen kann, und weil c (nicht dass ich das genau wuesste,aber) so klingt als waere es eben naeher am system, und ich fange prinzipiell eigentlich lieber bei den roots an
lg, compul
ps: mit linux sowohl software, welche es in cpp (e.g. kde, mag ich nicht) und auch c (gnome, mag ich nicht; awesome wm, liebe ich
) gibt. ich wuerde mir aber nicht anmassen ernsthaft fuer ein system mitentwickeln zu wollen, welches ich nicht von grund auf verstehe. das kann doch nur schiefgehen
-
compul schrieb:
ich wuerde mir aber nicht anmassen ernsthaft fuer ein system mitentwickeln zu wollen, welches ich nicht von grund auf verstehe. das kann doch nur schiefgehen
Du wirst kaum jemanden finden, der ein System von Grund auf versteht. Ich denke z. B. nicht, dass Linus Torvalds noch großartig durchcheckt, was im Kernel abgeht. Zu vieles wurde von anderen commitet und zu vieles liegt über seinen Kompetenzen.
-
von grund auf war vielleicht die falsche bezeichnung.. ich meinte mehr sowas wie 'prinzipiell'? sorry, mein deutsch laesst nach hier in taiwan
-
Was machst du in Taiwan? Dein Praktikum?
-
compul schrieb:
es wird wohl darauf hinaus laufen dass ich mir erstmal das k&r buch hole und mit C anfange, um dann spaeter auf cpp zurueckzukommen.
You_choosed(!(http://www.youtube.com/watch?v=-DGFuHC75aY));
-
@Steffo: Chinesisch lernen...und KungFu, Kalligraphie. mehr noch nicht. seit september 2010 jetzt. September 2012 werd ich dann ein physikstudium beginnen, vermutlich in taiwan.
@Nimm C! ja... ich nehm doch c ^^ finde ich erstmal interessanter. wenn ich meine mit c klarzukommen, und das gefuehl habe cpp zu brauchen, dann wende ich mich dem mal zu.
-
compul schrieb:
@Steffo: Chinesisch lernen...und KungFu, Kalligraphie. mehr noch nicht. seit september 2010 jetzt. September 2012 werd ich dann ein physikstudium beginnen, vermutlich in taiwan.
Hey, du bist echt cool! *beneid*
Guck dir auch mal Tai Chi an! Eine oft unterschätzte Kampfkunst, bzw. es ist mehr als das!Liebe Grüße
Steffo
-
Es läuft so ab:
Du fängst mit C an und bist von begeistert, jedoch wunderst du dich warum so viel über C++ geredet wird und später entschliesst du dich C++ zu erlernen, da es wie C aussieht aber dieses moderne OOP syntaktisch unterstützt. Du bist wiederum begeistert von diesem C++, fällst (wie bei C) oft auf die Nase.
<Jetzt kommt die erste Verzwiegung>
Fall A: Du bleibst ein ewiger C++-Programmierer, der alles andere ablehnt, weil die Lernresistenz den Drang nach Neuheiten überdeckt. Du trampelst von nun an auf der Stelle und versuchst deine kognitive Dissonanz zu reduzieren in dem du dich in C++ Foren "über die Vorteile von C++ gegenüber anderen Programmiersprachen austauschst". Dead End.
Fall B: Du gehörst zur neugierigen Natur und bahnst dir deinen Weg durch die modernen Programmiersprachen. Du probierst neue beliebte Sprachen wie python und ruby aus, probierst bestimmt auch das so weit verbreitete Java, aus historischen Gründen (oder einfach aus Neugier) schaust du dir evtl lisp & scheme oder gar fortran an. Damit erweiterst du deinen Horizont unglaublich in Bezug zu Fall A. Früher oder später landest du jedoch bei Haskell. Jetzt wo du einen umfangreichen Überblick hast, bist du ein auf die Welt der Programmiersprachen bezogen ein Weltoffener Mensch und kannst dich weiter spezialisieren. Dein Wissen und dein Erfahrungsschatz reicht weiter als wenn du Fall A eingeschlagen hättest, unabhängig davon, ob deine Spezialisierung auf C++ fällt oder eine andere Sprache deiner Wahl. Frohes Proggen.
In dem Sinne noch: bleibe neugierig!
-
@Steffo: taiji ist mit im programm
und ist toll, ja
ich wuerde mich auch beneiden waere ich nicht in taiwanbzw... dann ja nicht mehr
ich schliesse du betreibst taiji? sehr gut@Hellseher: definitiv neugierig bleiben
Java hab ich ja schon erfahrungen mit gemacht, scheme hab ich mir mal was inner uni zu angehoert.. klang nett. und das was du beschrieben hast (B) ist so in etwa der plan gewesen von vornherein
-
Ja, ich mache seit ca. 3 Jahren Tai Chi bzw. komme seit dem Studium leider nicht mehr so oft dazu...
Oh Mann, wenn ich 19 wäre, würde ich mir das glaube ich auch leisten, aber ich habe eine andere und ebenfalls interessante Laufbahn hinter mir.Taiwan - ist sicherlich angenehmer als VR China. Man man man.
Liebe Grüße
Steffo
-
compul schrieb:
@Nimm C! ja... ich nehm doch c ^^
Nunja, deine erste C Aufgabe wird sein, nachzuschauen, was der ! Operator bedeutet, den ich oben vor die URL gesetzt habe.
-
Steffo schrieb:
compul schrieb:
@Steffo: Chinesisch lernen...und KungFu, Kalligraphie. mehr noch nicht. seit september 2010 jetzt. September 2012 werd ich dann ein physikstudium beginnen, vermutlich in taiwan.
Hey, du bist echt cool! *beneid*
Alle Menschen die reich sind und sich teure Reisen an ferne Orte leisten können, die sich der einfache normale Bürger nie leisten können wird, sind cool. Wußtest du das denn nicht?
----
Wer Ironie findet, der ist nicht doof.