amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > C-Anfängerkurs [ - Search - New posts - Register - Login - ]

1 2 -3- 4 5 [ - Post reply - ]

2004-02-19, 00:13 h

Mad_Dog
Posts: 1944
User
Zu später Stunde ist mir dochnoch eine anfängergerechte do-while Schleife eingefallen (Ok. zugegeben, hab ein wenig von Herrn Wollschlaeger's "C++ - der schnelle Einstieg" abgeschaut :glow: ).

--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-02-19, 17:25 h

Holger
Posts: 8116
User
Zitat:
Original von Solar:
Damit habe (nicht nur) ich in einem Freizeitprojekt zwei Jahre verbaselt. Worte sind billig: Natürlich will Dir jeder helfen. Und natürlich hat auch jeder seine Meinung (jeder eine andere), und vertritt diese vehement.

Nur, wenn's dann an die Arbeit geht, sind sie alle weg.

Das ist ja kein unbekanntes Problem. Wenn es das nicht gäbe, hätte ich ja schon vor ein paar Jahren ein solches Projekt in Angriff genommen.
Aber jetzt scheint zumindest etwas Bewegung da zu sein, deshalb habe ich es angesprochen. Wenn eben genug Interesse vorhanden ist und man kann die Ernsthaftigkeit ja gut an der weiteren Entwicklung z.B. des C-Kurses ablesen, dann wäre ein guter Zeitpunkt für ein solches Projekt.
Es handelt sich dabei ja um eine Software, von der die Beteiligten selbst profitieren.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2004-02-19, 22:10 h

mrbbc
Posts: 101
User
Vielleicht könnte sich einer ja darum kümmern, dass der gcc einfach installiert werden kann... (z.B. Skript)

---

Das Hauptproblem bei C ist nicht die Sprache an sich, sondern die Bedienung. Hier tippt man nicht einfach sein Programm und klickt dann auf "Run".

Daher sollte man bei einem C-Tutorial erst mal erklären, wie C funktioniert, so ähnlich wie ich es bei meinem Tutorial gemacht habe:

http://www.univerc.org/doc/uctut/0start.htm


und nicht mit einem Hello World-Hingeklatsche beginnen.

- War beim ZX-81 ganz toll gemacht, ein hübsches BASIC-Handbuch dabei, Schritt für Schritt - exzellent. Nur war man beim Einschalten des ZX-81 sofort im BASIC-Interpreter; bei C ist alles eben etwas komplizierter...

[ - Answer - Quote - Direct link - ]

2004-02-19, 22:42 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von mrbbc:
Vielleicht könnte sich einer ja darum kümmern, dass der gcc einfach installiert werden kann... (z.B. Skript)


Da hat Dietmar ja was zusammengestellt...

Zitat:
Das Hauptproblem bei C ist nicht die Sprache an sich, sondern die Bedienung. Hier tippt man nicht einfach sein Programm und klickt dann auf "Run".

Bedienung? Du meinst die Bedienung des Compilers/der IDE? Ich habe nicht umsonst StormC gewählt, weil man da wirklich einfach nurnoch "auf Run drücken" muß. Wer gcc verwendet muß halt gcc HelloWorld.c -o HelloWorld und dann HelloWorld tippen.

Zitat:
Daher sollte man bei einem C-Tutorial erst mal erklären, wie C funktioniert, so ähnlich wie ich es bei meinem Tutorial gemacht habe:

und nicht mit einem Hello World-Hingeklatsche beginnen.


Ich erkläre doch ausführlich (genug?) wie das "HelloWorld" funktioniert, oder?

In den folgenden Lektionen (die noch erweitert werden) erkläre die verschiedenen Elemente der Sprache C anhand konkreter Beispiele.
Zuviel Theorie halte ich für Anfänger als zu trocken. Gerade Anfänger werden durch schnelle Erfolgserlebnisse motiviert.



--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-02-20, 09:03 h

Solar
Posts: 3680
User
Zitat:
Original von mrbbc:
Das Hauptproblem bei C ist nicht die Sprache an sich, sondern die Bedienung. Hier tippt man nicht einfach sein Programm und klickt dann auf "Run".


Mit der Flexibilität wächst auch die Komplexität. "gcc prog.c" halte ich allerdings nicht für ein unüberwindliches Hindernis, um von prog.c zum ausführbaren Programm zu kommen. Und in einer IDE, wie Mad_Dog schon erwähnte, hast Du sogar dein "Run".

Zitat:
Daher sollte man bei einem C-Tutorial erst mal erklären, wie C funktioniert, so ähnlich wie ich es bei meinem Tutorial gemacht habe:

http://www.univerc.org/doc/uctut/0start.htm


und nicht mit einem Hello World-Hingeklatsche beginnen.


"Hello World" ist bei so gut wie allen mir bekannten Programiersprachen die kanonische "Einführung", um überhaupt erst mal zu sehen, wie so ein Programm aussieht.

Und, "wie C funktioniert"? Wo willst Du anfangen, bei crt0.o? Bei Stack-Architekturen, System Calls, Prozeßmodellen?

[ - Answer - Quote - Direct link - ]

2004-02-22, 00:17 h

whose
Posts: 2156
User
Also, mal schnell meine 2 Cent dazu:

Der Kurs gefällt mir inzwischen sehr gut. Ich kanns zwar schon, aber ich stand auch mal auf dem Level, neu anfangen zu müssen. Damals noch völlig ohne Anfängerkurs. Sobald es zum Thema GUI unter AmigaOS kommt, melde ich mich bei Mad_Dog. Das scheint immer noch ein Thema zu sein, wo Aufklärungsbedarf herrscht. Dabei gabs dazu schon einige Kurse, aber die scheinen nie die Beachtung gefunden zu haben, die sie verdienen. Vielleicht kann ich da ein bißchen helfen und es ggf. besser machen.

Zum Thema "Welcher Compiler":

Es ist schon richtig, daß GCC 3.x für MOS/AOS4 fürs erste die einzige Wahl ist, nichts desto trotz halte ich es auch für richtig, daß der Kurs aufbauend auf StormC3 beginnt. So schlecht, wie die IDE hier manchesmal geredet wird, ist sie nun wirklich nicht. Holger und den anderen mit nem Storm-Problem kann ich (wie so oft) nur empfehlen, sich die Bedienung völlig klar zu machen und die sinnlosen Vergleiche mit den weiter entwickelten IDEs aus der Windows-Welt bleiben zu lassen. StormC bietet alle Funktionen, die man benötigt, halt nur nicht so viel Schnickschnack wie die anderen. Funktionsprobleme rühren meist daher, daß man sich die Bedienungsanleitung und die darin enthaltenen Warnungen nicht angesehen hat. Bei mir tuts StormC (4) auf allen Maschinen, 4000er und zwei 1200er in unterschiedlichen Ausstattungen. Und zwar ohne Probleme. Gerade StormC4(3) bietet alles, was man auch als Profi braucht (CVS, Debugger(StormC3), Dokumenatationshilfe etc. pp.). Und der GCC 2.95.2 ist nicht schlechter als der 3.x. Hat nur andere Fehler ;)

Das bei etwas größeren Programmen "Make" für die Anfänger keine gute Idee ist, sollte den Profis hier genauso klar sein. Verunsichert die Newbies nicht gleich wieder ;) Ich mag "Make" auch nicht besonders, weils halt doch wesentlich mehr Arbeit bedeutet, den ganzen Kram syntaktisch korrekt einzutippern. Bei den meisten Projekten habe ich die gleiche Arbeit in StormC mit ein paar wenigen Mausklicks erledigt. Denkt halt mal ein wenig an die Anfänger. Für die ist GCC pur ein harter Brocken.

Grüße

[ - Answer - Quote - Direct link - ]

2004-02-22, 02:16 h

Dietmar
Posts: 166
User
Zitat:
der GCC 2.95.2 ist nicht schlechter als der 3.x. Hat nur andere Fehler ;)

GCC 3.3 soll besseren Code erzeugen (entweder fehlerhafter oder schneller, je nachdem wem man zuhört ;)

Zitat:
Das bei etwas größeren Programmen "Make" für die Anfänger keine gute Idee ist, sollte den Profis hier genauso klar sein.

Ein Widerspruch in sich, Anfänger machen keine grösseren Projekte. Es ist einfach, ein makefile zu schreiben wenn man drei Module hat. make muss man nur einmal verstanden haben. Einfache "Projektverwaltung" sind nichts Halbes und nichts Ganzes: Man ergibt sich erheblichen Einschränkungen und spart kaum Zeit: ein schlechter Tausch. Gute Build-Manager sind ein anderes Thema aber für diese Plattform nicht greifbar.

Zitat:
Verunsichert die Newbies nicht gleich wieder ;) Ich mag "Make" auch nicht besonders, weils halt doch wesentlich mehr Arbeit bedeutet

Mit solchen Kommentaren werden Newbies nicht verunsichert? Wie so oft bei C ist das normalerweise ein Cut & Paste-Job. Je länger man sich mit C beschäftigt, desto schneller geht alles. Das makefile für ein neues Projekt dauert so ungefähr drei Sekunden. Dann wächst das Projekt und man fügt mehr hinzu: verschiedene Targets usw.

A propos gcc 3.3: es gibt ab heute eine neue herunterladbare GoldED-Demo mit verbesserter gcc-Installation auf dem letzten Stand, alles ist anfängerfreundlich installierbar. Der Weg vom Download bis zum ersten übersetzten "Hello World"-Programm besteht aus Mausklicks. Nicht mal das Programm muss man selber tippen: Klick auf Projekt erzeugen, Klick auf Make, Klick auf Starten: Das war's, das erste C-Programm mit gcc, samt Makefile. Wer damit den gcc-Einstieg noch für kompliziert hält, dem kann wahrscheinlich niemand helfen. Der Download-Link:

http://home.arcor.de/dtmrelrt/projects/golded/files.htm



[ - Answer - Quote - Direct link - ]

2004-02-22, 02:41 h

whose
Posts: 2156
User
Hallo Dietmar!

>Ein Widerspruch in sich, Anfänger machen keine grösseren Projekte.

Das ist es, was ich mit "Denkt mal mehr an die Anfänger dabei" meinte. Ein "größeres" Projekt beginnt schon, wenn man das "HowToReAction"-Beipiel compilieren will. Ich möchte Dich (und die anderen Profis) einmal dazu anregen, sich hinzusetzen, den Kopf ganz leer von Profi-Wissen zu machen und dann dieses Beispiel in ein Makefile umzusetzen. Oder schnappt Euch nen Neuling und laßt ihn das ohne Man-Pages-wälzen machen. Der gibt nach 2 Stunden entnervt auf, jede Wette.

Und wenn ich ganz ehrlich sein darf: Ich sehe bisher keine einzige Beschränkung darin, mit der Storm-IDE Projekte für AmigaOS "zusammenzuklicken". Bisher war Make für mich einzig und allein dann von Nöten, wenn es um plattformübergreifende Projekte ging. Aber selbst der GCC von StormC existiert als StormC-Projekt, und ich sehe nirgends etwas, was mich bei diesem Projekt beschränken würde, weil ich die Storm-IDE benutze.

Versteh mich nicht falsch, ich sehe Deine Argumente ein, wenn es um tatsächliche Profi-Arbeit geht. Die ständig aufs neue gegebene Empfehlung, von vornherein "Make" zu benutzen, selbst wenn man absoluter Beginner ist, ist für mich aber ganz einfach nicht nachvollziehbar. Jedesmal höre ich das "Argument", daß man durch eine IDE zu beschränkt wäre. Seltsamerweise ist mir noch kein einziges Amiga-only-Projekt bekannt, wo ich ohne Make in den Möglichkeiten beschränkt wäre.

Laß die Anfänger doch einfach mit der IDE arbeiten und wenn sie fortgeschrittener sind, können sie sich immer noch mit Make beschäftigen. Das machts leichter für sie, glaubs mir.

[ - Answer - Quote - Direct link - ]

2004-02-22, 04:17 h

Dietmar
Posts: 166
User
Zitat:
>Ein Widerspruch in sich, Anfänger machen keine grösseren Projekte.

> Die ständig aufs neue gegebene Empfehlung, von vornherein "Make" zu benutzen, selbst wenn man absoluter Beginner ist, ist für mich aber ganz einfach nicht nachvollziehbar

Gerade als absoluter Beginner sollte man keinen Bogen um die selbstverständlichen Grundlagen der C-Programmierer machen. Dazu kommt, dass (die ersten) Makefiles einfach und leicht zu verstehen sind und es überhaupt keinen Grund gibt, sie zu vermeiden:

Ein makefile für helloworld.c ist ein paar Zeilen lang und in zehn Minuten zu erklären. Damit, durchgelesen und verstanden, kommen Anfänger monatelang hin. Ein paar graduelle Änderungen, mehr ist nicht notwendig. Langsam macht man automatisch mehr. makefiles, die aufräumen, makefiles, die Dateien aus der Revisionskontrolle holen, makefiles die unterschiedliche Versionen herstellen usw. Wenn man nie anfängt, zu lernen, macht man keine Fortschritte und bleibt beim Herumklicken hängen.

Zitat:
Seltsamerweise ist mir noch kein einziges Amiga-only-Projekt bekannt, wo ich ohne Make in den Möglichkeiten beschränkt wäre.

Du bist schon dadurch in den Möglichkeiten beschränkt, dass Du an ein bestimmtes Tool gebunden bist. StormC zu alt, Wechsel auf gcc3 steht an, zwanzig Projekte, bei denen die Zusammenhänge nur in StormC stehen? Cheers.

[ - Answer - Quote - Direct link - ]

2004-02-22, 17:42 h

Solar
Posts: 3680
User
Zitat:
Original von whose:
Und der GCC 2.95.2 ist nicht schlechter als der 3.x. Hat nur andere Fehler ;)


Das kann auch nur ein reiner C-Programmierer sagen. ;-)

[ - Answer - Quote - Direct link - ]

2004-02-22, 23:33 h

Mad_Dog
Posts: 1944
User
Der erste Abschnitt über Modularisierung ist jetzt auch online.
Für die Ungeduldigen: Ja, die Präprozessordirektive #if wird auchnoch erklärt. :)
--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-02-23, 12:13 h

gni
Posts: 1106
User
Zitat:
Solar:
Zitat:
whose:
Und der GCC 2.95.2 ist nicht schlechter als der 3.x. Hat nur andere Fehler ;)

Das kann auch nur ein reiner C-Programmierer sagen. ;-)
Und er hat nicht mal recht... 2.95.x ist *definitiv* schlechter als 3.x (mit x >=3). Andere Fehler stimmt aber bestimmt.

[ - Answer - Quote - Direct link - ]

2004-02-23, 15:17 h

whose
Posts: 2156
User
Hallo Dietmar!

Zitat:
Du bist schon dadurch in den Möglichkeiten beschränkt, dass Du an ein bestimmtes Tool gebunden bist. StormC zu alt, Wechsel auf gcc3 steht an, zwanzig Projekte, bei denen die Zusammenhänge nur in StormC stehen? Cheers.

Hm, hast Dich nie weiter mit StormC beschäftigt, stimmts? Die Projekt-Datei ist ähnlich aufgebaut wie ein makefile. Sollte man tatsächlich in die Verlegenheit kommen, auf nen Kommandozeilen-GCC wechseln zu müssen, kann man sich aus diesen Projektdateien in wenigen Sekunden ein makefile "zusammenklicken".

Ich bleibe dabei: Simpler ist es für Anfänger allemal, eine IDE zu benutzen. Da haben sie alle Dateien, die zu einem Projekt gehören auf einen Blick und ein Doppelklick reicht, um sie sich anzusehen oder zu verändern.

Zu "GCC 2.95.x _definitiv_ schlechter als GCC 3.x": Kannst da bitte mal _genau_ sagen, wo der 2.95.x schlechter ist als der 3.x? Aber jetzt sag nicht "der erzeugt besseren Code". Der Codegenerator wurde beim 3.x komplett umgekrempelt und entwickelt sich erst noch zu einem besseren. Im Moment ist der Code, der dabei herauskommt, keinen Deut besser als beim 2.95.x. Nur anders ;)

[ - Answer - Quote - Direct link - ]

2004-02-23, 16:16 h

Solar
Posts: 3680
User
Zitat:
Original von whose:

Zu "GCC 2.95.x _definitiv_ schlechter als GCC 3.x": Kannst da bitte mal _genau_ sagen, wo der 2.95.x schlechter ist als der 3.x?


Bei C++ ist der Fall schon mal ganz klar: gcc 3.3 entspricht der Common C++ ABI, gcc 2.95 tut das nicht. D.h., eine mit gcc 3.3 compilierte C++-Bibliothek kann mit dem Code jedes anderen ABI-kompatiblen C++-Compilers verlinkt werden.

Dazu kommen diverse Anpassungen an die entsprechenden Standards (ISO C99, ISO C++), bessere Warnungen, und unzählige Bug Fixes. Die Change Logs sind unter http://gcc.gnu.org/releases.html einsehbar.

Zitat:
Aber jetzt sag nicht "der erzeugt besseren Code".

Sogar nachgewiesenermaßen. http://gcc.gnu.org/benchmarks/... oder, aus den Release Notes zur 3.1:

Zitat:
According to the SPECInt2000 results on an AMD Athlon CPU, the code generated by GCC 3.1 is 6% faster on the average (8.2% faster with profile feedback) compared to GCC 3.0. The code produced by GCC 3.0 is about 2.1% faster compared to 2.95.3.

2.95 ist tot.

[ - Answer - Quote - Direct link - ]

2004-02-23, 17:00 h

whose
Posts: 2156
User
Zitat:
Original von Solar:

Bei C++ ist der Fall schon mal ganz klar: gcc 3.3 entspricht der Common C++ ABI, gcc 2.95 tut das nicht. D.h., eine mit gcc 3.3 compilierte C++-Bibliothek kann mit dem Code jedes anderen ABI-kompatiblen C++-Compilers verlinkt werden.


Ok. Welchen Nutzen hat das konkret für Amiga? Gibts da noch mehr ABI-kompatible Compiler? Oder nützt es was, wenn man in C programmiert? Nein. In Sachen "C" hat man mit dem GCC 3.x derzeit keinerlei Vorteil. Wenn wir zu C++ kommen, gebe ich Dir vorbehaltlos Recht. Ich hätt vielleicht erwähnen sollen, daß es mir hier rein um das programmieren auf und für AmigaOS-kompatiblen Systeme in C ging (wie auch bei dem Kurs, um den es hier geht). Letztendlich ist es aber auch auf anderen Systemen "für den Anfang" völlig irrelevant. Frag doch mal die Anfänger, ob die wissen, was "ABI" überhaupt ist. Oder C++.

Zitat:
2.95 ist tot.

Auf x86-Systemen auf alle Fälle. Für 68K-Systeme tut er seinen Dienst immer noch bestens.

Nochmal, damit es jeder versteht:

Es geht hier um einen C-(!)Kurs für Anfänger. Es liegt in der Natur des Anfängers, daß er sich in der ersten Zeit nicht die Bohne für die Feinheiten des Handwerks (z.B. der erzeugte Code und dessen Qualität) interessiert und diese auch erst im Laufe wachsender Erfahrung entdeckt und versteht. Dem Anfänger ist es wurscht, welches Werkzeug die Profis verwenden, so lange er mit _einfachen_ Werkzeugen seine Erfolge erzielen kann. Die Geschichte hat gezeigt, daß GUI-Systeme für "unbelastete" Benutzer leichter zu verstehen und zu verwenden sind. Nicht umsonst gibts hier im Forum dutzende von Fragen, die sich auf Probs mit GCC beziehen, gerade von Anfängern. Die Fragen zu StormC halten sich dagegen stark in Grenzen und beziehen sich meist auf Probs, die schon in die weit fortgeschrittenen Bereiche gehören (Fat-Binaries, Libraries, Interrupts) oder zum Thema RTFM. Was ist so schlimm daran, daß man als Anfänger "klein" anfängt? Ich verstehs einfach nicht, daß jedesmal, wenn es um einen Anfänger-Kurs geht, die gleiche Diskussion vom Zaun gebrochen wird... ("Nimm GCC, Storm ist Scheiße" etc. pp.). Wenn die Anfänger weiter fortgeschritten sind und die entsprechenden Fragen stellen, könnt ihr sie immer noch in die Geheimnisse des GCC einführen. Dann verstehen die das auch, was ihr ihnen erklärt.

Alles zu seiner Zeit.

[ - Answer - Quote - Direct link - ]

2004-02-23, 17:50 h

gni
Posts: 1106
User
Zitat:
whose:
Zu "GCC 2.95.x _definitiv_ schlechter als GCC 3.x": Kannst da bitte mal _genau_ sagen, wo der 2.95.x schlechter ist als der 3.x? Aber jetzt sag nicht "der erzeugt besseren Code". Der Codegenerator wurde beim 3.x komplett umgekrempelt und entwickelt sich erst noch zu einem besseren. Im Moment ist der Code, der dabei herauskommt, keinen Deut besser als beim 2.95.x. Nur anders ;)

Hast Du 3.3 schon mal unter AmigaOS/68k benutzt? Ich schon. Dabei hat war 3.3 compilierter Code um Längen schneller als der von 2.95.2 (auf einem 68060). bzip2 war 20% schneller und die zlib beim Entpacken 11%. Und jetzt kommst Du.

[ - Answer - Quote - Direct link - ]

2004-02-23, 18:35 h

whose
Posts: 2156
User
Zitat:
Original von gni:
Hast Du 3.3 schon mal unter AmigaOS/68k benutzt? Ich schon. Dabei hat war 3.3 compilierter Code um Längen schneller als der von 2.95.2 (auf einem 68060). bzip2 war 20% schneller und die zlib beim Entpacken 11%. Und jetzt kommst Du.


Na gut, einmal noch. :)

Duke3D (C-Teile): Insges. 38904 Bytes größer, ca. 2% langsamer.

GCC 2.95.2-Storm: 122104 Bytes größer, ca. 3% langsamer (I/O macht dem hier anscheinend bissi Bauchschmerzen, die eigentliche Codeerzeugung läuft bißchen (ca. 2%) schneller).

cc65: 58652 Bytes größer, ca. 3% (gleiches Prob wie GCC 2.95.2-Storm) langsamer.

Compiliert auf einem Amithlon, Lauf auf einem 4000/060. Vergleich mit dem Kompilat von StormC4 (2.95.2) Laufzeiten gemessen mit dem Storm-Profiler.

Mich würde jetzt noch interessieren, wie Du auf 20% schneller bei bzip2 kommst. Wenn ich das gleiche Eperiment mache, komme ich auf einen Unterschied, der bequem vernachlässigbar ist. StormC4-Source packen: (StormGCC 2.95.2) 12 Min. 33 Sek. (GCC3.x) 12 Min. 17 Sek.

Ums mal auf den Punkt zu bringen: Es ist nicht so, das GCC 3.x pauschal besser ist. Er ist es in vielen Punkten, in anderen Punkten muß noch daran gearbeitet werden und das wirds auch, wie man lesen kann.

Es bleibt aber meine Frage: Welchen Anfänger interessiert das?

[ - Answer - Quote - Direct link - ]

2004-02-23, 18:54 h

Dietmar
Posts: 166
User
Zitat:
Hm, hast Dich nie weiter mit StormC beschäftigt, stimmts? Die Projekt-Datei ist ähnlich aufgebaut wie ein makefile. Sollte man

StormC4 besitze ich nicht und StormC3 kenne ich nur oberflächlich, weil ich mal eine Anpassung der GoldED-Umgebung dafür gemacht habe und mir H&P diese Version geschenkt hat (ich weiss, dass es bei den Features bis zum "hierarchischen make" geht).

Zitat:
Ich bleibe dabei: Simpler ist es für Anfänger allemal, eine IDE zu benutzen

Du sagst das in einer Antwort an mich und es hört sich so an, als ob ich das anders sehen würde: ich sehe das genauso, IDE muss sein, und nicht nur für Anfänger. Allerdings spricht nichts dagegen, makefiles im Rahmen einer IDE zu verwenden. Sogar Point-und-Click-Build-Tools a la VisualBuild, die weit über typische Projektmanager in IDEs hinausgehen, werden normalerweise - oder zumindest oft - mit makefiles benutzt.

[ - Answer - Quote - Direct link - ]

2004-02-23, 19:07 h

whose
Posts: 2156
User
Zitat:
Original von Dietmar:

Du sagst das in einer Antwort an mich und es hört sich so an, als ob ich das anders sehen würde: ich sehe das genauso, IDE muss sein, und nicht nur für Anfänger. Allerdings spricht nichts dagegen, makefiles im Rahmen einer IDE zu verwenden. Sogar Point-und-Click-Build-Tools a la VisualBuild, die weit über typische Projektmanager in IDEs hinausgehen, werden normalerweise - oder zumindest oft - mit makefiles benutzt.


Entschuldige, dann habe ich Dich da wohl ein bíßchen mißverstanden, sry. Schön zu wissen, daß wir uns in diesem Punkt doch einig sind :)

[ - Answer - Quote - Direct link - ]

2004-02-23, 19:26 h

Solar
Posts: 3680
User
Zitat:
Original von whose:

Ok. Welchen Nutzen hat das konkret für Amiga? Gibts da noch mehr ABI-kompatible Compiler? Oder nützt es was, wenn man in C programmiert? Nein. In Sachen "C" hat man mit dem GCC 3.x derzeit keinerlei Vorteil.


Was ist mit der Konformität zum derzeit aktuellen Standard, C99?

[ - Answer - Quote - Direct link - ]

2004-02-23, 19:53 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Solar:
Zitat:
Original von whose:

Ok. Welchen Nutzen hat das konkret für Amiga? Gibts da noch mehr ABI-kompatible Compiler? Oder nützt es was, wenn man in C programmiert? Nein. In Sachen "C" hat man mit dem GCC 3.x derzeit keinerlei Vorteil.


Was ist mit der Konformität zum derzeit aktuellen Standard, C99?


Sollte das ne rethorische Frage sein? :dance3:

Zumindest die Version 3.0 von StormC ist soooo alt, daß es da noch garkein ANSI C 99 gab. Also nix mit _Bool usw. .

Und ja: StormC 3.0 ist buggy. Für C++ völlig unbrachbar. Nichtmal das Überladen von Operatoren funktioniert, genausowenig wie Namespaces.

Aber ich mache ja einen C Kurs und keinen C++ Kurs.

Auch wenn ich mich jetzt gebetsmühlenartig wiederhole: Wer ernsthaft die Amiga API programmieren will, kommt um eine anständige Dokumentation der selbigen nicht herum. Und da ist der derzeit beste Weg eben der Kauf der Developer CD v2.1 - wegen den RKRMs. Und StormC 3.0 gibt's als Beigabe dazu. Und das reicht erstmal für den Anfang.

Welchen Compiler man dann später benutzen will, ist doch völlig Wurst. Hauptsache man hat etwas, was sich schnell und einfach installieren und bedienen läßt. Denkt nur mal an die Leute, die mit einem Basic-Dialekt angefangen haben und sich jetzt diesen Kurs anschauen. Wenn ich da nur mal an die recht komfortable Entwicklerungebung von AMOS Pro zurückdenke... da war sogar ein Sprite Editor dabei.:) Und Leute die sowas kennen, werden sich in einer Umgebung, wo man einfach auf "Run" klickt sicherlich recht schnell zurechtfinden.

--

http://www.norman-interactive.com

[ - Answer - Quote - Direct link - ]

2004-02-23, 21:43 h

Holger
Posts: 8116
User
Zitat:
Original von whose:
Es ist schon richtig, daß GCC 3.x für MOS/AOS4 fürs erste die einzige Wahl ist, nichts desto trotz halte ich es auch für richtig, daß der Kurs aufbauend auf StormC3 beginnt. So schlecht, wie die IDE hier manchesmal geredet wird, ist sie nun wirklich nicht. Holger und den anderen mit nem Storm-Problem kann ich (wie so oft) nur empfehlen, sich die Bedienung völlig klar zu machen und die sinnlosen Vergleiche mit den weiter entwickelten IDEs aus der Windows-Welt bleiben zu lassen.

Ich kann absolut nicht nachvollziehen, was Du hiermit sagen willst.
Ist StormC also eine gute IDE, weil ihr "Projektmanager" 2% einfacher als ein handgeschriebenes makefile ist?
Ist StormC also eine gute IDE, weil der Wechsel auf einen aktuelleren Compiler zwar umöglich, aber noch nicht ganz so wichtig für diesen Anfänger-Kurs ist?
Ist StormC eine gute IDE, weil zwar elementare Funktionen fehlen, aber diese eh nur auf IDEs anderer Plattformen verfügbar sind, und der Blick über den Tellerrand Amiga-Usern generell verboten ist?
Ist die Tatsache, daß es weder Support, noch Weiterentwicklung für StormC gibt, nicht schon ausreichend, um über Alternativen nachzudenken?
Soll der Anfänger-Kurs stehenbleiben, sobald es an Eigenschaften geht, die im aktuellen C/C++ Standard enthalten sind, oder soll es erstmal falsch erklärt werden, damit man es unter StormC3 zum laufen bekommt, und dann später korrigiert? Didaktisch sehr sinnvoll...

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2004-02-23, 21:52 h

Holger
Posts: 8116
User
Zitat:
Original von whose:
Es geht hier um einen C-(!)Kurs für Anfänger. [...]Dem Anfänger ist es wurscht, welches Werkzeug die Profis verwenden, so lange er mit _einfachen_ Werkzeugen seine Erfolge erzielen kann.[...]Ich verstehs einfach nicht, daß jedesmal, wenn es um einen Anfänger-Kurs geht, die gleiche Diskussion vom Zaun gebrochen wird... ("Nimm GCC, Storm ist Scheiße" etc. pp.).

Nein, es geht hier nunmal um eine Wissensweitergabe von erfahrenen Entwicklern an weniger erfahrene. Und wenn es einfach niemanden mehr gibt, der StormC3 oder gcc2.x ernsthaft benutzt, gibt es auch niemanden, der einem Anfänger bei Problemen mit selbigen helfen kann. So einfach ist das.
Und es kann eben nicht der Sinn der Sache sein, daß sich User veraltete Software installieren müssen, nur um anderen Usern helfen zu können, die von Anfang an eine Alternative hatten.
Für die ersten Gehversuche ist StormC durchaus geeignet, aber es ist nunmal absehbar, daß die Grenzen erreicht werden.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2004-02-23, 21:56 h

Holger
Posts: 8116
User
Zitat:
Original von Mad_Dog:
Hauptsache man hat etwas, was sich schnell und einfach installieren und bedienen läßt. Denkt nur mal an die Leute, die mit einem Basic-Dialekt angefangen haben und sich jetzt diesen Kurs anschauen. Wenn ich da nur mal an die recht komfortable Entwicklerungebung von AMOS Pro zurückdenke... da war sogar ein Sprite Editor dabei.:) Und Leute die sowas kennen, werden sich in einer Umgebung, wo man einfach auf "Run" klickt sicherlich recht schnell zurechtfinden.

Es hat auch niemand die Vorteile eine guten IDE in Frage gestellt.

mfg
--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Answer - Quote - Direct link - ]

2004-02-23, 23:12 h

Dietmar
Posts: 166
User
Zitat:
Ich kann absolut nicht nachvollziehen, was Du hiermit sagen willst.

Er will damit sagen, dass jeder angehende Programmierer die Developer-CD braucht und dass auf dieser CD ein bestimmter Compiler halt nur einen Mausklick entfernt ist. Da er den C-Kurs schreibt, ist das letzlich seine Entscheidung, unbegründet ist sie jedenfalls nicht. Wenn wir noch lange herumnörgeln, verliert er noch die Lust, also Vorsicht :)

[ - Answer - Quote - Direct link - ]

2004-02-23, 23:56 h

Mad_Dog
Posts: 1944
User
Zitat:
Original von Dietmar:
Zitat:
Ich kann absolut nicht nachvollziehen, was Du hiermit sagen willst.

Er will damit sagen, dass jeder angehende Programmierer die Developer-CD braucht und dass auf dieser CD ein bestimmter Compiler halt nur einen Mausklick entfernt ist. Da er den C-Kurs schreibt, ist das letzlich seine Entscheidung, unbegründet ist sie jedenfalls nicht.


Meine Rede. Hauptsache man hat überhaupt mal einen Compiler, mit dem man loslegen kann...

Der Kurs soll auch nicht die Sprache C bis in's letzte Detail ausreizen - sonst komm ich nie bei der Amiga API an.
Ich werde auch nicht die gesamte Standardbibliothek erklären.

Und mal ehrlich: So viel hat sich mit ANSI 99 auch nicht verändert.
Falls wir in dem Kurs je mal Datentypen für imaginäre Zahlen brauchen sollten, dann definieren wir sie eben selbst. Statt _Bool können wir auch BOOL aus <exec/types.h> 8o der gleich int) nehmen usw. .

Die bisherigen Beispiele funktionieren auch mit jedem anderen Amiga ANSI C Compiler.

Und die Pragmas muß halt jeder selbst in der Anleitung zu seinem Compiler nachschauen, falls er sie wirklich braucht.

Schau Dir zum Vergleich mal die Beispiele der NDKs an. Die sind teilweise so uralt, daß sie nichteinmal mehr mit einem halbwegs aktuellen Compiler richtig funktionieren, weil sich seit 1.3 halt schon einiges in den Includes verändert hat. Viele sind der NDK-Beispiele sind nichteinmal ANSI-komform (void main(void) usw.) Wenn ich mir da nur mal das "NDK 3.9" anschaue - ein Witz! Dort wurden teilweise nur Codes aus dem 3.0 NDK herausgenommen und zusätzlich (aus mir nicht ersichtlichen Gründen) die Kommentare entfernt.
Trotzdem kann man aus den (teilweise veralteten) Beispielsources der NDKs noch was lernen. Aber der eigentliche Hauptgrund, der für den Kauf dieser CD spricht sind die RKRM's und Autodocs.

Zitat:
Wenn wir noch lange herumnörgeln, verliert er noch die Lust, also Vorsicht :)

Ach was. Ich bin hart im nehmen. :smokin:


@Holger:

Dann kannst Du in der Zwischenzeit ja schonmal anfangen eine neue, vorbildliche IDE zu programmieren. :)


--

http://www.norman-interactive.com

[ Dieser Beitrag wurde von Mad_Dog am 23.02.2004 editiert. ]

[ - Answer - Quote - Direct link - ]

2004-02-24, 08:37 h

gni
Posts: 1106
User
Zitat:
Mad_Dog:
Statt _Bool können wir auch BOOL aus <exec/types.h> 8oder gleich int) nehmen usw. .

BOOL sollte man vermeiden wann immer es geht, das es nur ein 16bit Datentyp ist. Innerhalb einer Struktur mag dessen Verwendung ja noch angehen, aber ansonsten Finger weg.

[ - Answer - Quote - Direct link - ]

2004-02-24, 10:03 h

Solar
Posts: 3680
User
Der "Trick" besteht doch darin, bool zu benutzen statt _Bool.

Hintergrund: bool war früher kein C-Keyword. Um existierende Programme compilierbar zu halten, hat man _Bool eingeführt - ein reservierter Identifier. bool ist ein define in <stdbool.h>, und diesen sollte man - alleine der Lesbarkeit wegen - auch benutzen.

Mein persönlicher Liebling unter den "neuen" Includes ist <stdint.h>... schlägt <exec/types.h> um Längen.

[ - Answer - Quote - Direct link - ]

2004-02-24, 11:08 h

gni
Posts: 1106
User
Zitat:
Solar:
Mein persönlicher Liebling unter den "neuen" Includes ist <stdint.h>... schlägt <exec/types.h> um Längen.

Gibst bei GCC/68k unter AmigaOS nicht.

[ - Answer - Quote - Direct link - ]

2004-02-24, 11:21 h

gni
Posts: 1106
User
Zitat:
whose:
Duke3D (C-Teile): Insges. 38904 Bytes größer, ca. 2% langsamer.

GCC 2.95.2-Storm: 122104 Bytes größer, ca. 3% langsamer (I/O macht dem hier anscheinend bissi Bauchschmerzen, die eigentliche Codeerzeugung läuft bißchen (ca. 2%) schneller).

cc65: 58652 Bytes größer, ca. 3% (gleiches Prob wie GCC 2.95.2-Storm) langsamer.

Compiliert auf einem Amithlon, Lauf auf einem 4000/060. Vergleich mit dem Kompilat von StormC4 (2.95.2) Laufzeiten gemessen mit dem Storm-Profiler.

Was ist "GCC 2.95.2-Storm" und "cc65"? Was vergleichst Du bei "GCC 2.95.2-Storm" und Deiner Referenz "StormC4 (2.95.2)"? Welche Optionen benutzt Du beim GCC? Kennst Du -fno-strength-reduce und -fno-reorder-blocks?
Zitat:
Mich würde jetzt noch interessieren, wie Du auf 20% schneller bei bzip2 kommst. Wenn ich das gleiche Eperiment mache, komme ich auf einen Unterschied, der bequem vernachlässigbar ist. StormC4-Source packen: (StormGCC 2.95.2) 12 Min. 33 Sek. (GCC3.x) 12 Min. 17 Sek.
Versuchs mal mit bzip2 -t
Zitat:
Ums mal auf den Punkt zu bringen: Es ist nicht so, das GCC 3.x pauschal besser ist. Er ist es in vielen Punkten, in anderen Punkten muß noch daran gearbeitet werden und das wirds auch, wie man lesen kann.
Wenn für dich Übersetzungzeit ein Kriterium ist, dann hast Du recht. Da ist 2.95.2 wirklich besser. Aber dann kannst Du auch 2.7.2.1 benutzen, das ist nochmals viel schneller. :) Wenn 2.95.x so ein guter Compiler gewesen wäre, dann hätten man nichts weiterentwickeln müssen. Wenn Du Wert legst auf besseren Code, strengere Codeprüfungen, mehr Warnungen (= bessere Diagnose von problematischen Stellen in Deinem Code), dann kommst Du um 3.3+ nicht herum.


[ Dieser Beitrag wurde von gni am 24.02.2004 editiert. ]

[ - Answer - Quote - Direct link - ]


1 2 -3- 4 5 [ - Post reply - ]


amiga-news.de Forum > Programmierung > C-Anfängerkurs [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved.
.