Forum: Compiler & IDEs Anfangen mit C


von Peter Zimmer (Gast)


Lesenswert?

Hallo,
ist es emfehlenswert mit C Abzufangen wenn man den Assembler nicht gut 
blickt? Wenn ja kann man gleich mit C Anfangen oder soll man erst BAsic 
lernen? Habe mal ein wenig mit GFA-Basic rumexperimentiert!
Danke schonmal.
Peter

von Berndt Brandes (Gast)


Lesenswert?

Hallo Peter,
Basic ist sehr schön, aber wenn mal irgendwas nicht implementiert ist 
(im Compiler) entsteht sehr schnell ein furchtbar unübersichtlicher 
Code, und C zu lernen ist nicht schwieriger als irgendeine andere 
Programmiersprache. C ist hochgradig portabel, Basic in der Regel 
überhaupt nicht. Alle Welt spricht C, Basic ist immer 
Implementierungssache. Meine Erfahrung (und die vieler anderer) ist: mit 
C gehts immer noch am besten, und viele können helfen. Für die AVRs 
scheint mir WINAVR das Ding schlechthin zu sein. Allerdings solltest Du 
dich schon ein bischen mit dem Assembler auskennen, hilft manchmal um 
Missverständnisse zwischen Dir und dem Compiler zu entdecken wenn man 
sich das Compilat anschaut. Besorg Dir Kernighan, Ritchie: 
"Programmieren in C", da steht alles drin, was man braucht.
Hoffe das hilft Dir
Berndt

von Markus (Gast)


Lesenswert?

Hallo Peter,

ich kann Berndt nur zustimmen. Vergiß alles und nimm C !!
Ich kann Dir aus Erfahrung sagen, daß man den Assembler-Code nicht mehr 
vollständig verstehen muß. Die 8051-Controller konnte ich damals noch 
komplett in Assembler programmieren, aber die neuen viel 
leistungsfähigeren Controller wie z.B. die C167'er von Intel haben 
bereits einen so umfangreichen Befehlssatz, daß es fast unmöglich ist 
fehlerfreie Programme oder sogar kürzere Programme als das Compilat zu 
entwickeln. Ich gehe daher so vor, daß ich ausschließlich C programmiere 
und mir immer .LST-Files generieren lasse. Die kann ich mir dann ansehen 
und "interpretieren". Das geht, wenn man grundsätzlich weiß, wie 
Assembler im Durchschnitt aussieht ganz gut, obwohl man den genauen 
Befehlssatz nicht komplett kennt. Damit kann man immerhin beurteilen, ob 
der C-Code effektiv ist oder nicht. Auch muß man nicht für jeden Befehl 
wissen, ob er nun das Carry-bit beeinflusst oder nicht. Aber das 
brauchst Du eigentlich nur machen, wenn Du zeitkritische Funktionen 
entwickelst, für kleinere Programme ist das alles völlig egal. Der 
Vorteil von C ist jedenfalls, daß du den Code ohne größeren Auffwand auf 
jedem anderen Rechner laufen lassen kanst, wenn Du den entsprechenden 
Compiler besitzt. Von allen anderen Programmiersprachen, insbesondere 
Basic, kann ich nur abraten. Das ist was für Warmduscher. Und wenn Du 
dann irgendwann in ANSI-C fit bist und die ersten objektorientierten 
Programm in C++ schreibst, wirst Du feststellen, daß diese Möglichkeiten 
andere Programmiersprache überhaupt nicht hergeben.
Also mach keine falschen Fehler.

Markus

von Peter D. (peda)


Lesenswert?

Da kann ich Markus nur zustimmen.

Basic ist so, wie mit Bauklötzern zu spielen. es geht schnell 
irgendwelche Standardsachen zu machen. Aber sobald ein Bauklotz nicht 
mehr paßt, stehst Du voll auf dem Schlauch.

Z.B. wenn Du ein LCD nicht mit 11 sondern nur mit 3 Drähten ansteuern 
willst.


Bei C nehme ich auch grundsätzlich nur die Standardbibliotheken (math.h, 
stdio.h, stdlib.h, string.h usw.).

Z.B. LCD, I2C, 1-Wire ist zu stark von dem konkreten Projekt abhängig 
(AVR-Typ, Pinbelegung, CPU-Takt), als das man dafür einigermaßen 
funktionssichere Bibliotheken hinkriegt.

Im eigenen Code kann man die Fehler wenigstens suchen und man weiß, 
welche Resourcen belegt werden (z.B. auch max / min 
Interruptlatenzzeit).


Peter

von Joerg Wunsch (Gast)


Lesenswert?

Nu ja, C ist keine für Anfänger besonders gut geeignete Sprache.
Die Syntax ist teilweise nicht ganz simpel zu verstehen.  Pascal
ist eher geeignet, ein Gefühl für eine (prozedurale, nicht
objektorientierte) Hochsprache zu erlangen.

BASIC zählt schlicht gar nicht als Hochsprache. :)

Objektorientierung auf einem Micro sollte man nur angehen, wenn
man wirklich ein gutes Verständnis für all die internen
Zusammenhänge hat.  Bis dahin sollte insbesondere für einen
Anfänger C++ tabu sein.  Man kann sich damit verdammt schnell
ins Knie schießen (besonders was den Ressourcenverbrauch
anbelangt).

Obwohl ich alles andere als ein Gegner von Hochsprachprogrammierung
für Microcontroller bin: ein grundlegendes Verständnis für
die Maschine und deren Assembler sollte man besitzen.  Das
muß nicht unbedingt so weit gehen, daß man selbst freihändig
ein Assemblerprogramm zusammenbekommt, aber man sollte sich
schon in der Anfangsphase häufiger mal ansehen, was der Compiler
so aus dem Programm tut.  Dazu bedarf es übrigens nicht
unbedingt eines Listings, avr-gcc ... -S übersetzt direkt
in den Assemblercode (Dateiendung .s).

von Peter Zimmer (Gast)


Lesenswert?

Hallo,
Danke schon mal für eure ausfürlichen Antworten! Wie gesagt ich verstehe 
auch ein wenig Assembler. Mit C++ will ich ja auch gar nicht schaffen 
sondern mit dem normalen C. Mein Bruder hat mir ja gesagt das C++ 
praktisch nur ein paar mehr befehle und die anderen vieleicht ein 
kleinwenig verändert sind. Für weitere Tips wäre ich dankbar.
Peter

von Jochen (Gast)


Lesenswert?

Oh, da hat Dein Bruder aber offensichtlich absolut keine Ahnung von 
C++...
Von der Komplexität her ist C++ einige Grössenordnungen von C entfernt, 
im Gegensatz zu C ist es da mit Syntay-Lernen nicht getan. C lernt man 
an einem Tag, wenn man das will, C++ lernt ein erfahrener Programmierer 
vielleicht in einem Jahr Vollzeit...

von MiCHEL (Gast)


Lesenswert?

nimm vitamin C

:)

von Peter Zimmer (Gast)


Lesenswert?

Hallo,
Wo lernt man den zumindesten halbwegs C in einem Tag oder Nacht? Habe 
noch kein gutes Touterial gesehen das wirklich von ganz Anfang an 
Anfängt. Werde mal schauen das ich das "Programmieren in C" ind er 
Bücherrei bekomme.
Hat sonst noch jemand einen guten vorschlag was Bücher oder 
internetseiten angeht?
DAnke schon mal für eure gute und schnelle Hilfe.
Peter
PS. Vitamin C nehme ich schon die ganze Zeit aber kann immer noch nicht 
C reichen den da nicht 10 hochdosierte Tabeletten:)

von BAB (Kai K.) (Gast)


Lesenswert?

hier das erste oben im link. ist wohl schlecht hin das beste
http://www.mikrocontroller.net/buecher.htm

dass man c an einem tag lernen kann halte ich für ein gerücht. da es 
auch viele abstrakte sachen gibt die man mit sicherheit auch an zwei 
oder drei tagen nicht lernen kann.
das meiste lernt man aus erfahrung. bücher zeigen meist nur die 
grundfunktionen. obwohl in dem oben ganannten buch auch tiefer in die 
materie eingangen wird.

gruss,
BAB

von Jochen (Gast)


Lesenswert?

Ich hatte auch von einem erfahrenen Programmierer gesprochen.
Und C hat nunmal keinen hohen Abstraktionsgrad, so dass ein erfahrener 
Programmierer da auch auf nichts Neues stösst!
In C++ ist das hingegen völlig anders.

von Peter Zimmer (Gast)


Lesenswert?

Hallo,
Kennt dann jemand ein gutes Internet Touturial?
Peter

von Berndt Brandes (Gast)


Lesenswert?

Hallo Peter,
versuchs mal hier.
http://www.mikrocontroller.net/articles/c/
Ich habs noch nicht gemacht, scheint aber bei vielen sehr beliebt zu 
sein.

von Peter Zimmer (Gast)


Lesenswert?

Hallo,
ich habe mich jetzt entschieden mit C anzufangen. Und jetzt kommt schon 
meine erste Frage wie bekomme ich aus UltraEdit-32 ein file raus des ich 
mit Ponyprog brennen kann?
Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.