PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Programmieren anfangen


Gast
2009-10-08, 17:37:42
Hi LEute



Ich bin seit meiner Kindheit schon an der IT interessiert, vorallem im Bereich Technik (Prozessoren usw.). Deswegen wollte ich jetzt endlich mit dem programmieren anfangen und meine eigenen Programme schreiben um später genug Kenntnisse für das programmieren für das iPhone und anderen Sachen zu haben. Deswegen brauche ich eure Hilfe: Welches Buch empfehlt ihr mir für C++? Ich würde gerne eins haben was sehr gut für Anfänger ist, die überhaupt keine Programmierkenntnisse haben. Also es sollten keine komplizierten Definitionen sein usw. sondern alles anschaulich usw. Ich hatte vor 2 Monaten mit C# angefangen. Dabei benutzte ich das Buch von Frank Eller (Anfangen, Anwenden, Verstehen C#), jedoch war das noch ein bisschen zu schwer für mich. Der Grund weshalb ich mit C++ anfange ist der, dass ich gehört habe das C++ für Spiele, OS usw. augelegt ist und C# nur für .NET-Framework Programme gedacht ist. Ich hoffe ihr könnt mir weiterhelfen!

urpils
2009-10-08, 18:06:57
zunächst einmal:
wenn du bei "spiele programmieren" auch nur ansatzweise an 3D-shooter denkst und mit c++ in diese Richtung gehen willst, dann wird es schwierig ;)
so schnell (und vor allem allein) entwickelt sich das nämlich nicht. Wenn es dir wirklich darum geht spiele zu entwickeln, schau dir vielleicht erstmal einfachere Sprachen wie blitz basic oder ähnliches an... damit kommst du schneller zu dem, was du machen möchtest.

wenn es dir darum geht die ganze thematik zu verstehen und tief einzusteigen, dann wird dir ein "einfaches und anschauliches c++-lernbuch für schüler" wenig helfen :/

hast du schonmal die Foren (oder google)Suche benutzt?

maximAL
2009-10-08, 18:18:16
Wer mit C# nicht klar kommt, sieht bei C++ sowieso kein Land.
Besser: erstmal Python lernen.

Monger
2009-10-08, 18:28:31
Der Grund weshalb ich mit C++ anfange ist der, dass ich gehört habe das C++ für Spiele, OS usw. augelegt ist und C# nur für .NET-Framework Programme gedacht ist. Ich hoffe ihr könnt mir weiterhelfen!

Ich sage hier, was in solchen Fällen immer wieder predige: versuch dir mal SEHR genau darüber klar zu werden was du eigentlich tun möchtest!

Was genau meinst du mit "OS"? Richtig ist: C# beschäftigt sich mit allem im sogenannten User Space - also Anwendungssoftware, Spiele, Tools, Services etc. ...
Wenn du tiefer ins System rein willst, um Treiber für spezielle Hardware zu schreiben, oder z.B. auf Windows Funktionen aufzusetzen die bisher nicht durchs .NET Framework abgedeckt sind (dazu gehören z.B. Plugins für den Windows Explorer), musst du auf C++ (bzw. C++/CLI, was auch Bestandteil der .NET Welt ist) zurückgreifen.

Was GENAU meinst du mit Spieleentwicklung? Meine Erfahrung ist: die meisten Menschen die sagen: "Ich möchte gerne ein Spiel programmieren!" meinen eigentlich: "Ich möchte gerne ein Spiel entwerfen!", und meinen damit eigentlich den Beruf des Spieledesigners - und nehmen stillschweigend an, dass sie auch gleichzeitig noch den Job des Programmierers dafür übernehmen müssen.

In der Praxis haben Spieleprogrammierer sehr wenig mit Spielen zu tun. Sie entwickeln die Tools für die Content Pipeline und das Grundgerüst - das Spielkonzept dagegen wird vom Designer festgelegt, die Levels dann vom entsprechenden Mapper, die Figuren vom Modeller etc. ... das sind alles Berufe, die mit dem technischen Hintergrund nicht mehr viel zu tun haben.

Ein Spieleprogrammierer ist ein sehr hoch spezialisierter Programmierer, weil halt vorallem die Performance Ansprüche die Entwicklung dazu zwingen, sehr nah an die Hardware ranzugehen. Außerdem bildet C++ derzeit den kleinsten gemeinsamen Nenner bei allen Konsolenportierungen.


Deshalb meine Vermutung: bis du tatsächlich an dem Punkt bist wo deine Programmierkenntnisse ausreichen um dich mit Spieleentwicklung zu beschäftigen, gibt es das alles auch für C#. Tatsächlich gibt es schon jetzt das XNA Framework, mit der zumindest kleinere, nichtkommerzielle Spiele entwickeln kannst.

Demirug
2009-10-08, 18:55:56
Deshalb meine Vermutung: bis du tatsächlich an dem Punkt bist wo deine Programmierkenntnisse ausreichen um dich mit Spieleentwicklung zu beschäftigen, gibt es das alles auch für C#. Tatsächlich gibt es schon jetzt das XNA Framework, mit der zumindest kleinere, nichtkommerzielle Spiele entwickeln kannst.

Inzwischen kannst du damit auch kommerzielle Spiele entwickeln. Wenn man aber damit was einnehmen will muss man schon was gutes abliefern.

Oid
2009-10-08, 19:15:42
Wer mit C# nicht klar kommt, sieht bei C++ sowieso kein Land.
Besser: erstmal Python lernen.

Oder zumindest erstmal reines C.

Gast
2009-10-08, 20:17:36
Oder zumindest erstmal reines C.
Lieber nicht.

Irgendwas wo man weniger leicht was kaputt macht wär besser zum Anfangen. Python klingt ja recht vernünftig, auch Ruby oder dergleichen halte ich für gut geeignet -> Programmieren ohne sich mit den "hässlichen" Dingen rumzuschlagen. :)

Coda
2009-10-08, 22:27:43
Die Frage nach der ersten Sprache ist immer ein der Zielsetzung. Wenn man verstehen will wie die Dinge wirklich funktionieren ist C schon nicht schlecht.

Falls man aber nur etwas fertigbekommen möchte würde ich auch eher etwas wie Python empfehlen.

Ganon
2009-10-08, 23:27:10
Jup. Man lernt Autofahren ja auch nicht am Anfang bei 200km/h auf der Autobahn ;)

Lieber erst mal eine Sprache nehmen, die einen an die Hand nimmt (Python, C#, Java) und dann bei Bedarf mal über den Tellerrand schauen.

Erst mal dort mit der objektorientierten Programmierung vertraut machen. Danach kannst du immer noch mal zu C++ rüber schauen.

Bei Spieleprogrammierung als einzelne Person ist C++ sowieso eher hinderlich. Hier sollte man es lieber mit Java oder C# und entsprechenden Bibliotheken machen (OpenTK bzw. LWJGL) oder direkt erst mal was in 2D probieren. Oder vllt. sogar noch etwas höher anfangen und erst mal etwas mit z.B. Processing machen.

So bekommen man ein gutes Gefühl, was eine 1-Man-Spieleproduktion überhaupt bedeutet. Fang z.B. einfach mal mit Tetris an.

RMC
2009-10-09, 00:19:53
Da scheiden sich die Geister bei der Frage, womit man anfangen soll.

Wesentlich ist in dem Fall nicht nur wohin man will, sondern mit welchen Mitteln man das erreichen kann. Sich selbst programmieren beizubringen ist ja ungefähr so, wie sich selbst from scratch ein Instrument anzueignen.

Verstehen, wie die Dinge tatsächlich funktionieren (wofür C, C++ etc. geeignet wär), wird man am Anfang, vorallem wenn man ohne Lehrkaft und auf sich allein gestellt ist, nur schwer. Man will ja nur, im wahrsten Sinne des Wortes, nur spielen (oder Spiele programmieren) ;)

Ich würde daher auch eher zu den moderneren Sprachen wie z.B. Java oder C# greifen, da hier das Erfolgserlebnis einfach schneller greift, ohne sich sofort mit den komplexeren, tieferen Mechanismen im Detail beschäftigen zu müssen - das kann man dann hinterher auch noch.

Tiamat
2009-10-09, 07:05:33
Es gibt übrigens ein Buch "JAVA will nur spielen" , dass sich gerade an Anfänger richtet und die Sprache mit sehr einfachen Spielchen als Übungen vermittelt. Soll ziemlich gut sein und kostet ca. 25€.

Shink
2009-10-09, 09:32:40
Deswegen wollte ich jetzt endlich mit dem programmieren anfangen und meine eigenen Programme schreiben um später genug Kenntnisse für das programmieren für das iPhone und anderen Sachen zu haben. Deswegen brauche ich eure Hilfe: Welches Buch empfehlt ihr mir für C++?
iPhone und C++ vertragen sich übrigens nicht. iPhone heißt normalerweise Objective C - eine Sprache die z.B. am PC nicht wirklich heimisch ist.
Java geht übrigens am iPhone, wenn das auch nicht wirklich erste Wahl ist.

Ansonsten: Naja, prinzipiell erstmal egal. Mit C# oder auch Java machst du eigentlich nichts falsch und wenn man will kann man auch Spiele oder Betriebssysteme damit schreiben:
Betriebssystem in Java: jnode.org
Betriebssystem-GUI in Java: Project Looking Glass
Spiele in Java: Alien Flux, Tribal Trouble, Call of the Kings, Jake2

Wenn du unbedingt etwas Betriebssystemnahes, Schnelles ohne VM willst könntest du für den Anfang auf das quasi tote, komfortable Pferd Delphi setzen :freak: - darin werden (bzw. vor allem wurden) erstaunlich viele betriebssystemnahe Anwendungen und Spiele entwickelt. (Freie IDE gibt es hier: http://www.lazarus.freepascal.org/)

Mit C++ oder C ist der Frustfaktor leider etwas höher. Vielleicht war das aber auch nur bei mir so.

Wenn man aber damit was einnehmen will muss man schon was gutes abliefern.
Es muss nicht gut sein, nur süchtig machen bzw. gutes Marketing haben. Ein Moorhuhn-Spiel o.ä. kann man inzwischen vielleicht schon mit CSS machen.

TheGamer
2009-10-09, 10:04:36
iPhone und C++ vertragen sich übrigens nicht.

Aha und darum entwickle ich mit C++ auf dem iPhone.

Die 2 vertragen sich hervorragend. Objective C ist ein Superset von C und Objective C/C++ laesst sich ohne weiteres im gleichen Codefile mit C/C++ mischen.

Der Einstieg in die App bzw. Aufruf von Dingen wie Acceloremeter etc. ist Objective C danach kannst du C/C++ schreiben wie du willst.

Shink
2009-10-09, 10:18:31
OK, dann nimm ich alles zurück und behaupte das Gegenteil.

TheGamer
2009-10-09, 10:24:15
OK, dann nimm ich alles zurück und behaupte das Gegenteil.

Das ist das feine. Man hat ein Programm in C++ und schreibt eine GUI + Steuerung mit Objective C und flanscht den alten C++ Code dran und schon hat man eine iPhone App ohne Rewrite.

Shink
2009-10-09, 12:37:18
C++, Java und C# kann man prinzipiell auch mischen. Dass man das bei Objective C im gleichen Sourcefile bzw. je Funktion mischen kann muss man auch nicht schön finden, ebenso wie die C-Kompatibilität von C++ (auch wenns natürlich sehr komfortabel ist).
Aber das geht dann doch etwas über Thema hier hinaus.

Mr.Freemind
2009-10-09, 13:02:37
Es gibt übrigens ein Buch "JAVA will nur spielen" , dass sich gerade an Anfänger richtet und die Sprache mit sehr einfachen Spielchen als Übungen vermittelt. Soll ziemlich gut sein und kostet ca. 25€.

Dieses Buch stammt von einem Professor von mir, unter ihm hatte ich

Programmieren 1 (C), Programmieren 2(c++) und Programmieren 3 (Java).
Das Buch ist nicht schlecht, ist allerdings wirklich nur auf die Spieleprogrammierung ausgelegt, also kleine Java Spiele im Applet.

Die "wichtigsten" Grundlagen der OO Sprache Java werden angerissen, ohne jegliche Vorkenntnisse der Sprache weniger zu empfehlen, zumal der Autor es sehr gerne sehr abstrakt mag also ist enormer "Brainfuck" teils garantiert.

Ein Buch was ich empfehle und was in die Bib jedes Java Coders gehört ist "Das Hadbuch der Java- Programmierung", sehr detailliert, schöne Beispiele, alles von A bis Z!
Klick (http://www.amazon.de/Handbuch-Java-Programmierung-Standard-Version-Farbteil/dp/3827328748/ref=sr_1_1?ie=UTF8&s=books&qid=1255086093&sr=8-1)

Kinman
2009-10-09, 13:06:00
Also ich hab mit C/C++ angefangen, da wir das in der Schule hatten. Es ist nicht leicht aber schaffbar. Im Grunde hatte ich den Stoff der ersten beiden Jahren nach 3 Wochen intus gehabt, indem ich einfach ein (für den Anfang) gutes/einfaches C Tutorial (http://www.fh-augsburg.de/informatik/vorlesungen/c_cplus/tutorial/cyris/) durchgemacht habe. Natürlich war ich danach sicherlich weder ein guter C Programmierer noch habe ich Ahnung von tiefergreifenden Sachen gehabt. Aber Grundlagen wie Funktion, Arrays, Pointer usw. waren drin.

Danach schwenkten wir auf Java um, was dann eigentlich ein Kinderspiel war. Ich bin selbst aber kein Freund von Java, aber aus rein emotionalen Gründen :D

Nebenbei hab ich mir Visual Basic 6 beigebracht. Hier kam ich dann schon auf ein relativ hohes Level. Imho ist VB zwar keine optimale Sprache aber zum rumspielen fast das Beste.

Mittlerweile habe ich das alles 3 Jahre hinter mir gelassen und programmiere nur noch PHP und wenns sein muss JavaScript; Beides selbst beigebracht. Vor allem mit PHP hatte ich sehr viel Spaß, da ich die Grundlagen der Sprache im Grunde innerhalb von 2 Wochen vollkommen verinnerlicht hatte. Natürlich kamen dann so Dinge wie Sicherheit usw. noch dazu, aber das ist dann auch schon viel mehr Erfahrung und gutes Einlesen in die Materie.

Egal, mit was auch immer du anfangen willst, häng dich anfangs einfach voll rein. Auch wenns mal hakt oder trocken ist...

mfg Kinman

Gast
2009-10-09, 16:31:59
Jup. Man lernt Autofahren ja auch nicht am Anfang bei 200km/h auf der Autobahn ;)

Lieber erst mal eine Sprache nehmen, die einen an die Hand nimmt (Python, C#, Java) und dann bei Bedarf mal über den Tellerrand schauen.

Erst mal dort mit der objektorientierten Programmierung vertraut machen. Danach kannst du immer noch mal zu C++ rüber schauen.

Bei Spieleprogrammierung als einzelne Person ist C++ sowieso eher hinderlich. Hier sollte man es lieber mit Java oder C# und entsprechenden Bibliotheken machen (OpenTK bzw. LWJGL) oder direkt erst mal was in 2D probieren. Oder vllt. sogar noch etwas höher anfangen und erst mal etwas mit z.B. Processing machen.

So bekommen man ein gutes Gefühl, was eine 1-Man-Spieleproduktion überhaupt bedeutet. Fang z.B. einfach mal mit Tetris an.

Warum empfiehlt eigentlich nie jemand VB.NET, was ist faul an der Sprache?

Monger
2009-10-09, 16:35:02
Warum empfiehlt eigentlich nie jemand VB.NET, was ist faul an der Sprache?
Die hat einfach ein Coolness Problem.

Ich arbeite auf Arbeit nur in VB.NET - und fange auch langsam an, sie zu lieben. Die Syntax ist zwar geschwätzig, aber im Grunde viel ausdrucksstärker (MustInherit statt abstract, Overridable statt virtual...)- und featuremäßig ist sie mit C# ohnehin praktisch identisch.

Ganon
2009-10-09, 16:46:06
Warum empfiehlt eigentlich nie jemand VB.NET, was ist faul an der Sprache?

Ich hab's nicht erwähnt weil ich es nicht kenne. Aber im Prinzip kann man an der Stelle jede .NET-Sprache empfehlen. Ist ja "nur" Syntax. Das "an die Hand nehmen" ist ja immer gleich. Aber der Sprung von C# zu Java oder C++ ist ein bisschen leichter ;)

Gast
2009-10-09, 18:33:07
WOW! Danke für die vielen Antworten! Also ich klär mal auf:

Mich hat schon immer interessiert, welche Abläufe z.B. bei einem Programmstart durchgehen oder wie ein Prozessor funktioniert. Spieleprogrammierung ist bei mir nicht im Vordergrund, davon war auch nie die Rede, ich habe es lediglich erwähnt. Wie ich schon gesagt habe: Ich möchte einfach anfangen zu programmieren um später was eigenes schreiben zu können. Also es sollte ja nicht unbedingt C++ sein, sondern erstmal was einfacheres und dann das ganze schwere Zeug. Da ich nach der Schule an der Uni (Technische)Informatik studieren möchte, wollte ich schon mal jetzt anfangen;)


mfg

Oid
2009-10-09, 18:56:59
Also wenn du wissen willst wie ein Prozessor funktioniert, kannst auch gleich mit Assembler anfangen :)

Monger
2009-10-09, 18:59:44
Mich hat schon immer interessiert, welche Abläufe z.B. bei einem Programmstart durchgehen oder wie ein Prozessor funktioniert.

Wenn du wirklich wissen willst wie ein Prozessor funktioniert, bieten sich Embedded Systeme bzw. Mikrocontroller an. Da hast du dann auch wirklich direkten Zugriff auf den Chip - unter einem modernen Betriebssystem hast du ja ansonsten nicht die geringste Chance, tatsächlich direkt an die Hardware heranzukommen. Da wäre dann auch insbesondere C als Programmiersprache üblich.

Gast
2009-10-09, 19:48:54
WOW! Danke für die vielen Antworten! Also ich klär mal auf:

Mich hat schon immer interessiert, welche Abläufe z.B. bei einem Programmstart durchgehen oder wie ein Prozessor funktioniert. ...

From the Beginning: http://openbook.galileocomputing.de/it_handbuch/fachinformatiker_02_mathematische_grundlagen_003.htm#mje54616984d63214a63c132cbe 56626a0

Schau dir das Buch in Gänze an!

Gast
2009-10-09, 19:58:49
....Da wäre dann auch insbesondere C als Programmiersprache üblich.

Auf jeden Fall! http://openbook.galileocomputing.de/c_von_a_bis_z/

Shink
2009-10-09, 20:31:47
Die hat einfach ein Coolness Problem.
Ich würde eher vermuten das kommt aus den Pre-.NET-Zeiten bzw den Entwicklern die in diesen Zeiten hängengeblieben sind.

Gast
2009-10-09, 20:43:58
Ich würde eher vermuten das kommt aus den Pre-.NET-Zeiten bzw den Entwicklern die in diesen Zeiten hängengeblieben sind.

Das liegt auch an den Usern und den damit verbundenen VB Stereotypen. MSOffice... (*gg*) Und die stimmen sogar! Muuuuuuuuuuuuuuuuha

*scnr*

VB ist afair @.Net sogar etwas mächtiger als C#

Monger
2009-10-09, 22:17:04
VB ist afair @.Net sogar etwas mächtiger als C#

Beide Sprachen haben einige nette, exklusive Features... und das schwankt ständig ein bißchen. Zu .NET 2.0 kannte z.B. VB.NET noch keine Lambda Ausdrücke - dafür kennt VB.NET mittlerweile anonyme Typen und Typrückschließung, die zusammen mit optionalen Parametern C# erst mit .NET 4.0 bekommt. Und VB.NET kann XML Literale, was C# leider aufgrund von reservierten Zeichen zumindest so schön nicht bekommen wird...

Aber im Endeffekt sind die Unterschiede zwischen beiden Sprachen sehr, sehr gering.

Gast
2009-10-10, 23:32:14
Ich hätte da ne Frage: Sagen wir mal ich fange jetzt mit ganz normales C an, würde ich als Anfänger Probleme haben mit der Sprache oder eher nicht? Ist dieses Buch vom Gaileo Verlag anfängertauglich? Oder empfehlt ihr mir doch lieber mit C# anzufangen? Eignet sich für C# eigentlich dieses Buch? Weil es schaut ziemlich anfängertauglich an und gut erklärt laut Probekapitel?
Link:http://www.amazon.de/C-von-Kopf-bis-Fu%C3%9F/dp/3897218526/ref=sr_1_1?ie=UTF8&s=books&qid=1255210140&sr=1-1


mfg

Monger
2009-10-10, 23:54:16
Ich hätte da ne Frage: Sagen wir mal ich fange jetzt mit ganz normales C an, würde ich als Anfänger Probleme haben mit der Sprache oder eher nicht?

Sagen wir mal so: wenn du dich für Microcontroller interessierst (sprich: selber Platinen zusammenlöten und den Mikrochip darauf programmieren), nimm C. Wenn du Windows Software schreiben willst, nimm C#.

Beide Gebiete sind eigentlich meilenweit voneinander entfernt. Das ist so wie ein Maurer und ein Zimmermann: arbeiten im Prinzip beide am selben Gebäude, aber auf vollkommen unterschiedliche Weise.

Ich bin in der Hinsicht wahrscheinlich halt arg "hochsprachengeschädigt" ;) , aber meiner Meinung nach ist C unter Windows eher von akademischen Interesse. Der Praxisbezug wird da immer geringer.


Eignet sich für C# eigentlich dieses Buch? Weil es schaut ziemlich anfängertauglich an und gut erklärt laut Probekapitel?
Link:http://www.amazon.de/C-von-Kopf-bis-Fu%C3%9F/dp/3897218526/ref=sr_1_1?ie=UTF8&s=books&qid=1255210140&sr=1-1

Ich hab mir auch genau dieses Buch geholt...
Ich persönlich war nicht sooo begeistert davon. Die Lerntechnik an sich ist toll - man kriegt auf die Weise enorm viel Wissen in kurzer Zeit eingetrichtert, und ich denke, für einen Anfänger ist es sehr wichtig, die Grundstock gut komprimiert vor sich liegen zu haben.

Was mir an dem Buch nicht so gefallen hat, war dieser sehr auf "Trial & Error" angelegte Ansatz - manche Dinge werden erst eingeführt, und ein paar Kapitel später wieder widerrufen, und durch was besseres ersetzt. Und durch die vielen Zeichnungen und den umgangssprachlichen Ton wirkt das Buch insgesamt recht aufgebläht auf mich.

Aber das ist halt meine persönliche Ansicht. Ich hab das schon ein paar meiner Kollegen in die Hand gedrückt, die mit C# auch noch nicht so viel anfangen konnten, und die waren davon sehr angetan.

TheGamer
2009-10-11, 05:19:51
C++, Java und C# kann man prinzipiell auch mischen. Dass man das bei Objective C im gleichen Sourcefile bzw. je Funktion mischen kann muss man auch nicht schön finden, ebenso wie die C-Kompatibilität von C++ (auch wenns natürlich sehr komfortabel ist).
Aber das geht dann doch etwas über Thema hier hinaus.

C++ ist KEIN Superset von Java
Java ist KEIN Superset von C#
C# ist KEIN Superset von C++
Java ist KEIN Superset von C++
C++ ist EIN/KEIN Superset von C++ (Streitthema Mister Stroustrup sagt es ist KEINES)

ObjeC ist EIN Superset von C
ObjC++ ist EIN Superset von C++

In dem Sinne ist es bei ObjC logisch und sinnvoll dass es geht Schoenheit hin oder her. Die Grundlagen sind eben anderst.

Shink
2009-10-11, 10:00:32
ObjeC ist EIN Superset von C
ObjC++ ist EIN Superset von C++

In dem Sinne ist es bei ObjC logisch und sinnvoll dass es geht Schoenheit hin oder her.
Sagen wirs mal so: Es gibt wohl Gründe warum das keine moderne Sprache bietet. Aber wie immer wenns um Apple geht ist es besser man argumentiert da nicht zu lange drüber; ich will ja auch keinen religiösen Fundamentalisten vom Atheismus überzeugen.:freak:

Ganon
2009-10-11, 10:32:34
ObjC++ ist EIN Superset von C++

Naaaa, Vorsicht. Obj-C++ ist ein Modus von ObjC, der es erlaubt C++-Syntax und die STL zu nutzen. Aber auch wiederum nur mit C++/C Datentypen und nicht mit ObjC-Typen.

Daher ist ObjC++ nur ein "Compiler-Feature", damit man C++-Bibliotheken nuten kann. Superset würde ich das jetzt nicht nennen, da C++ und ObjC hier wirklich kaum interagieren.

Es gibt wohl Gründe warum das keine moderne Sprache bietet.

Also zumindest ObjC 2 muss sich nicht vor Java oder C# verstecken ;)

Gohan
2009-10-11, 11:35:41
Also ich spreche hier mal aus persönlicher Erfahrung und empfehle ANSI C zum Einstieg. Mit der Sprache kann man zwar nicht so viel unter Windows mehr machen heut zu tage, aber ich finde sie unglaublich geeignet, um erst einmal die Grundlagen alle C basierten Sprachen zu vermitteln.

Hier wird man nicht direkt mit der, für viele zu Anfang doch sehr komplexen, Objektprogrammierung konfrontiert, sondern kann sich erst einmal auf das Programmieren an sich konzentrieren. Man kann sich voll und ganz der Lösung von Problemen widmen, anstatt sich Gedanken über Klassen und GUIs machen zu müssen

Und wenn man das kann, Schleifen, Fälle, Abfragen, Unterprogramme etc., kann man sein Wissen viel entspannter auf C++ oder C# ausweiten, finde ich :)

TheGamer
2009-10-11, 13:01:14
Aber wie immer wenns um Apple geht ist es besser man argumentiert da nicht zu lange drüber; ich will ja auch keinen religiösen Fundamentalisten vom Atheismus überzeugen.:freak:

Aha, diese kindische deplatzierte Aussage disqualifiziert dich sowieso fuer ein sinnvolles Gespraech.

Wir reden hier ueber die Programmiersprache ObjC. Wie zur Hoelle kommst du auf Apple (und dann noch auf diese Art und Weise). Zumal die Sprache urspruenglich gar nichts mit Apple zu tun hatte und in der Gegenwart nicht nur von Apple verwendet wird.

Naaaa, Vorsicht. Obj-C++ ist ein Modus von ObjC, der es erlaubt C++-Syntax und die STL zu nutzen. Aber auch wiederum nur mit C++/C Datentypen und nicht mit ObjC-Typen.

Daher ist ObjC++ nur ein "Compiler-Feature", damit man C++-Bibliotheken nuten kann. Superset würde ich das jetzt nicht nennen, da C++ und ObjC hier wirklich kaum interagieren.

Ja bei dem Beispiel gings auch mehr darum aufzuzeigen das man nicht Orangen mit Birnen vergleichen kann.

THEaaron
2009-10-11, 13:16:26
In der Schule habe ich damals den Einstieg allerhand Programmiersprachen gefunden. Wir haben c, c++, java, "html", php, python und so weiter angefangen, aber nie wirklich sinnvoll vertieft. Im Abschlussjahr sollten wir dann ein etwas umfangreicheres Projekt in Java auf die Beine stellen, und mit einer sehr seichten Programmierkenntnis kam dann dieses kleine Spiel zustande:

http://img5.imagebanana.com/img/d5xx2zyy/jtanks.jpg

Es ist wirklich verdammt schlecht programmiert. :D
Seichte Programmierkenntnisse in Java haben hier auf jeden Fall genügt.

TheGamer
2009-10-11, 13:28:49
In der Schule habe ich damals den Einstieg allerhand Programmiersprachen gefunden. Wir haben c, c++, java, "html", php, python und so weiter angefangen, aber nie wirklich sinnvoll vertieft. Im Abschlussjahr sollten wir dann ein etwas umfangreicheres Projekt in Java auf die Beine stellen, und mit einer sehr seichten Programmierkenntnis kam dann dieses kleine Spiel zustande:

http://img5.imagebanana.com/img/d5xx2zyy/jtanks.jpg

Es ist wirklich verdammt schlecht programmiert. :D
Seichte Programmierkenntnisse in Java haben hier auf jeden Fall genügt.

Sieht doch gut aus. Das ist mehr als manch andere, die denken sie wollen ein Spiel programmien, hinbekommen.

Shink
2009-10-11, 15:01:39
Aha, diese kindische deplatzierte Aussage disqualifiziert dich sowieso fuer ein sinnvolles Gespraech.
Schön. Dann lassen wir das besser.
Gespräche bisher (Inlining ist so furchtbar geil, Cocoa das beste Framework, Mischung von C und Smalltalk ist das was wir eigentlich brauchen, die Syntax ist makellos etc) erinnern mich an Gespräche über iPhone, Macbook Air oder früher G4-Prozessoren.

Wir reden hier ueber die Programmiersprache ObjC. Wie zur Hoelle kommst du auf Apple (und dann noch auf diese Art und Weise). Zumal die Sprache urspruenglich gar nichts mit Apple zu tun hatte und in der Gegenwart nicht nur von Apple verwendet wird.
- Weil ich keine relevanten Windows/Linux-Projekte kenne die Objective C verwenden - außer es ist ein Apple- oder NextStep-Port...
- Objective C ist weder standardisiert noch gibt es eine Standard-Library. Da man so nicht entwickeln kann braucht man etwas wie GnuStep (naja...) oder eben Cocoa/Carbon

Die Sprache an sich... naja, Smalltalk find ich etwas zu dynamisch um schön zu sein und C gefällt mir auch nicht. Ohne Zweifel kann man damit entwickeln und zum Anhänger werden. Meine Sache ist es nicht.

TheGamer
2009-10-11, 16:37:18
Schön. Dann lassen wir das besser.
Gespräche bisher (Inlining ist so furchtbar geil, Cocoa das beste Framework, Mischung von C und Smalltalk ist das was wir eigentlich brauchen, die Syntax ist makellos etc) erinnern mich an Gespräche über iPhone, Macbook Air oder früher G4-Prozessoren.


- Weil ich keine relevanten Windows/Linux-Projekte kenne die Objective C verwenden - außer es ist ein Apple- oder NextStep-Port...
- Objective C ist weder standardisiert noch gibt es eine Standard-Library. Da man so nicht entwickeln kann braucht man etwas wie GnuStep (naja...) oder eben Cocoa/Carbon

Die Sprache an sich... naja, Smalltalk find ich etwas zu dynamisch um schön zu sein und C gefällt mir auch nicht. Ohne Zweifel kann man damit entwickeln und zum Anhänger werden. Meine Sache ist es nicht.

Gut das Wort Cocoa z.B. verwendest du gerade das erstemal in diesem Thread. Aber gut wir haben schon darueber geredet (auch wenn wir es nicht haben).

Trotzdem schoen das man zurueck zum Thema kommt. Danke :)

DanMan
2009-10-11, 17:25:05
@TE: Du hast immernoch nicht wirklich geschrieben was genau du jetzt programmieren willst. Es gibt so viele Sachen, die man programmieren kann, dass du dir wirklich erst mal klar werden solltest, in welche Richtung es gehen soll. Man kann nicht erwarten eine Sprache zu lernen, mit der man dann alles programmieren können will.

Mein grundsätzlicher Rat ist, dass du dir die äußersten Grundlagen einer einigermaßen hardwarenahen Sprache (C++ z.B.) aneignen solltest (Datentypen, ...), dann aber mit einer ziemlich hoch abstrahierten Sprache weitermachen solltest (Python, Ruby, ...). So musst du dich nicht mit Sachen wie Speicherzuweisungen und so rumärgern, hast aber eine Idee davon, wieso man besser sparsam mit Ressourcen umgehen sollte usw.

Jetzt mal stark reduziert gesagt...

Gnafoo
2009-10-11, 18:39:52
Also ich spreche hier mal aus persönlicher Erfahrung und empfehle ANSI C zum Einstieg. Mit der Sprache kann man zwar nicht so viel unter Windows mehr machen heut zu tage, aber ich finde sie unglaublich geeignet, um erst einmal die Grundlagen alle C basierten Sprachen zu vermitteln.

Hier wird man nicht direkt mit der, für viele zu Anfang doch sehr komplexen, Objektprogrammierung konfrontiert, sondern kann sich erst einmal auf das Programmieren an sich konzentrieren. Man kann sich voll und ganz der Lösung von Problemen widmen, anstatt sich Gedanken über Klassen und GUIs machen zu müssen

Und wenn man das kann, Schleifen, Fälle, Abfragen, Unterprogramme etc., kann man sein Wissen viel entspannter auf C++ oder C# ausweiten, finde ich :)

Hm naja aber das geht doch im Prinzip genauso mit z. B. C#. Niemand zwingt dich dazu wirklich Objekt-orientiert zu programmieren. Eine Klasse mit ein paar statischen Methoden und du hast im Prinzip dasselbe. Aus- und Eingabe über Console.Write/Read ist völlig unproblematisch ohne viel GUI möglich und wenn man mal mehr machen will, oder Objektorientiert loslegen will, ist das auch gar kein Problem.

Davon abgesehen spart man sich jede Menge Probleme, mit denen einem C am Anfang Konfrontiert: die Auftrennung in Header und Source, damit verbunden Header Guards, Pointer-Arithmetik im Allgemeinen, malloc/free und dynamische Arrays, sizeof, Macros, Pufferüberläufe und falsche Speicherzugriffe, char vs. wchar, Datentypen auf unterschiedlichen Plattformen, undefined behaviour!, leichte Vermischung mit C++-Konstrukten usw.

Nimmt man dann noch C++ dazu, kommt es noch einmal schlimmer: new/new[]/malloc/free/delete/delete[] und bitte nicht vermischen, iostream.h (wird immer wieder falsch gemacht), forward declarations, Konstruktoren/Destruktoren und virtuelle Methoden, Pointer vs. Referenzen, STL-Fehlermeldungen, ...

Versteh mich nicht falsch, man kann durchaus auch in C/C++ schönen und sauberen Code schreiben, wenn man weiß, was man tut. ;) Aber man kann sich auch viel leichter ins Bein schießen, OHNE dass der Compiler einen darauf hinweist oder zur Laufzeit eine Exception fliegt. Für einen Anfänger gibt es da schon eine Menge Fallstricke, um die man mit C#/Java etc. erst einmal herumkommt. Gerade das Thema "undefined behaviour" kann da richtig übel sein. Ein falscher Zugriff mit einem Pointer und auf einmal geht alles schief. Oder alles funktioniert und es ist trotzdem falsch, oder irgendwo anders geht etwas schief, oder oder oder.

Gohan
2009-10-11, 19:34:11
Hm naja aber das geht doch im Prinzip genauso mit z. B. C#. Niemand zwingt dich dazu wirklich Objekt-orientiert zu programmieren. Eine Klasse mit ein paar statischen Methoden und du hast im Prinzip dasselbe. Aus- und Eingabe über Console.Write/Read ist völlig unproblematisch ohne viel GUI möglich und wenn man mal mehr machen will, oder Objektorientiert loslegen will, ist das auch gar kein Problem.

Davon abgesehen spart man sich jede Menge Probleme, mit denen einem C am Anfang Konfrontiert: die Auftrennung in Header und Source, damit verbunden Header Guards, Pointer-Arithmetik im Allgemeinen, malloc/free und dynamische Arrays, sizeof, Macros, Pufferüberläufe und falsche Speicherzugriffe, char vs. wchar, Datentypen auf unterschiedlichen Plattformen, undefined behaviour!, leichte Vermischung mit C++-Konstrukten usw.

Nimmt man dann noch C++ dazu, kommt es noch einmal schlimmer: new/new[]/malloc/free/delete/delete[] und bitte nicht vermischen, iostream.h (wird immer wieder falsch gemacht), forward declarations, Konstruktoren/Destruktoren und virtuelle Methoden, Pointer vs. Referenzen, STL-Fehlermeldungen, ...

Versteh mich nicht falsch, man kann durchaus auch in C/C++ schönen und sauberen Code schreiben, wenn man weiß, was man tut. ;) Aber man kann sich auch viel leichter ins Bein schießen, OHNE dass der Compiler einen darauf hinweist oder zur Laufzeit eine Exception fliegt. Für einen Anfänger gibt es da schon eine Menge Fallstricke, um die man mit C#/Java etc. erst einmal herumkommt. Gerade das Thema "undefined behaviour" kann da richtig übel sein. Ein falscher Zugriff mit einem Pointer und auf einmal geht alles schief. Oder alles funktioniert und es ist trotzdem falsch, oder irgendwo anders geht etwas schief, oder oder oder.

Ja, das kann man durchaus. Das Problem was ich jedoch kenne ist, dass die meisten Bücher aus diesen Sprachen die Grundlagen mal eben schnell abklappern, und dann direkt in den Bereich GUI/Klassen gehen. Und viele lassen sich dazu hinreißen, weil das ja viel schöner aussieht als eine olle Konsole. Dann lernt man zwar unglaublich viel in der Theorie, kann aber praktisch kaum was umsetzen, weil einem die Logik einen Code aufzubauen fehlt. Zwar wird man dann schön mit automatisch generiertem Code zugemüllt, aber steht ansonsten da wie die Axt im Wald.

Sicherlich kann man in C viel falsch machen, aber gerade vieles eben auch nicht.

Gast
2009-10-11, 21:03:36
Soll ich jetzt dieses Buch von Galileo Press für C (C A bis Z) bestellen oder nicht, da es eigentlich genau auf das zutrifft was ich mag (Technik)? Eignet es sich für Anfänger? Danke für eure Antworten!


mfg

patermatrix
2009-10-11, 22:39:43
Soll ich jetzt dieses Buch von Galileo Press für C (C A bis Z) bestellen oder nicht, da es eigentlich genau auf das zutrifft was ich mag (Technik)? Eignet es sich für Anfänger? Danke für eure Antworten!


mfg
Warum liest du nicht einfach ein bisschen in der schon verlinkten HTML-Version (http://openbook.galileocomputing.de/c_von_a_bis_z/)? Danach kannst du das Buch immer noch kaufen, ich präferiere eigentlich meistens Online-Ressourcen...

PatkIllA
2009-10-11, 23:42:01
Ja, das kann man durchaus. Das Problem was ich jedoch kenne ist, dass die meisten Bücher aus diesen Sprachen die Grundlagen mal eben schnell abklappern,
Die Bedingungen hinter Schleifen, Fälle, Abfragen, Unterprogramme etc kann man auch in 10 min erklären. Was man an welcher Stelle wie benutzt ist dann Erfahrung.
Außerdem sollte man auch noch Datenstrukturen kennen. Sonst landet nach alles in Arrays (object oder string). Für Datenstrukturen ist es auch sehr praktisch mal eben eine neue Klasse anzulegen.

Gast
2009-10-12, 17:16:45
Kann mich echt nicht zwischen diesen C# Von Kopf bis Fuß und dem C Von A bis Z Buch entscheiden-.- Sind denn beide anfägnertauglich, ohne irgendwelche Vorknntnisse zu haben. Was soll ích denn eurer Meinung nach tun?


mfg

Gast
2009-10-12, 17:18:03
Kann mich echt nicht zwischen diesen C# Von Kopf bis Fuß und dem C Von A bis Z Buch entscheiden-.- Sind denn beide anfägnertauglich, ohne irgendwelche Vorknntnisse zu haben. Was soll ích denn eurer Meinung nach tun?


mfg

€: Kann einer von seine Kritik an die Bücher geben?

Gast
2009-10-13, 15:05:58
Kann mir jemand weiterhelfen???

PatkIllA
2009-10-13, 20:09:42
Das ist doch jetzt für ganz unterschiedliche Sprachen?
Ich kenne das C# von Kopf bis Fuß Buch. Du musst halt auf den Stil stehen. Ich finde ihn ganz unterhaltsam und nicht so trocken, wie normale Bücher.
Das ist halt wirklich darauf ausgelegt, dass man das von vorne an der Reihe nach durchgeht. Als Nachschlagbuch taugt das nicht.
Wobei ich selbst nicht danach gelernt habe.

Gast
2009-10-15, 13:37:53
Das ist doch jetzt für ganz unterschiedliche Sprachen?
Ich kenne das C# von Kopf bis Fuß Buch. Du musst halt auf den Stil stehen. Ich finde ihn ganz unterhaltsam und nicht so trocken, wie normale Bücher.
Das ist halt wirklich darauf ausgelegt, dass man das von vorne an der Reihe nach durchgeht. Als Nachschlagbuch taugt das nicht.
Wobei ich selbst nicht danach gelernt habe.


Ich erwarte ja nicht, dass ich mit dem Buch alles von C# verstehen soll. ICh sollte nur danach fähig sein mit C# umzugehen und eigene Programme zu schreiben. Danach könnte ich ja immer noch mit Büchern für Fortgeschrittene machen, oder?

mfg

MuLuNGuS
2009-10-15, 14:26:10
Kann mich echt nicht zwischen diesen C# Von Kopf bis Fuß und dem C Von A bis Z Buch entscheiden-.- Sind denn beide anfägnertauglich, ohne irgendwelche Vorknntnisse zu haben. Was soll ích denn eurer Meinung nach tun?


mfg


errm, jetzt solltest du dich aber mal entscheiden ob du mit C# oder C/C++ anfangen willst.

im falle von C# solltest du mit "kopf bis fuß" sicherlich was anfangen können.
fällt deine wahl auf die blaue pille....ähm..C/C++ dann kommste halt mit "A bis Z" weiter ;)

The_Invisible
2009-10-15, 15:05:25
Kann mich echt nicht zwischen diesen C# Von Kopf bis Fuß und dem C Von A bis Z Buch entscheiden-.- Sind denn beide anfägnertauglich, ohne irgendwelche Vorknntnisse zu haben. Was soll ích denn eurer Meinung nach tun?


mfg

habe jeweils das c / c++ von a bis z buch und mir hats sehr gut gefallen. hab kein zuätzliches buch gebraucht, alles wurde eigentlich ganz gut erklärt.

obs für absolute anfänger geeignet ist kann ich nicht sagen da ich schon php / java / c# intus hatte.

mfg

Gast
2009-10-16, 16:52:01
Was ich suche ist: Da ich keinerlei (und damit meine ich keine!) möchte ich ein Buch in die Einführung mit C. Daher frage ich mich, welches Buch sich für C empfiehlt, wo alles klar und verständlich mit Beispielen erklärt wird. Eignet sich das Galileo Book dazu? Oder könnt ihr mir andere Bücher empfehlen?


mfg

Gast
2009-10-16, 17:30:41
Was ich suche ist: Da ich keinerlei (und damit meine ich keine!) möchte ich ein Buch in die Einführung mit C. Daher frage ich mich, welches Buch sich für C empfiehlt, wo alles klar und verständlich mit Beispielen erklärt wird. Eignet sich das Galileo Book dazu? Oder könnt ihr mir andere Bücher empfehlen?


mfg

From the Beginning: http://www.pdf-search-engine.com/ebook---the-c-programming-language-ritchie-&-kernighan---html-madison-project.wdfiles.com/local--files/tutorials/The_C_Programming_Language.html