Forum: PC-Programmierung Welcher C-Compiler ist für Anfänger ?


von fragender (Gast)


Lesenswert?

Hallo Zusammen

Mein Sohnemann möchte den Einstieg in die C-Programmierung wagen. 
Vorkenntnisse bisher keine! Das ganze schön systematisch mit Lehrbuch 
und Unterstützung durch Papa :-)
Nun stellt sich die Frage welcher Compiler bzw. IDE gut für den Einstieg 
geeignet ist. Eine schöne aber einfache Entwicklungsumgebung mit 
Debugger möglichst Freeware (meinetwegen auch mit Einschränkungen) wäre 
gut. Für den Anfang würden Konsole Anwendungen ausreichen.
Ich selbst habe schon mit MS Visual Studio gearbeitet, denke aber dass 
der Umfang des Pakets einen Einsteiger erschlägt.
Ich habe ein wenig über LCC-Win32 gelesen, möchte aber gerne eure 
Meinung hören.

von Sauger (Gast)


Lesenswert?

Moin,

nehm den Compiler auf dem das Lehrbuch aufbaut.

MfG

von Timmo H. (masterfx)


Lesenswert?

Also früher habe ich auch mit LCC gearbeitet, der macht schön kleinen 
Code und ist einfach in der Kommandozeile zu bedienen.
Inzwischen bin ich aber exzessiver Nutzer von Dev-C++. Ist ne gut zu 
bedienende IDE und baut auf GCC auf (MinGW).
Damit kann man natürlich auch GUIs erzeugen (Ressource-Files werden auch 
unterstützt).

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Openwatcom ist brauchbar. Allerdings kann man auch eclipse und cdt 
nehmen, ist etwas moderner von der Aufmachung her.

von Klaus W. (mfgkw)


Lesenswert?

Rein lerneffekttechnisch würde ich erstmal für Kommandozeile plädieren.
Ist nicht modern, aber fördert doch sehr das Verständnis.

von netdieter (Gast)


Lesenswert?

Eclipse ist die beste wahl.
1. Free
2. Moderne GUI
3. Unterstützung der Editoren bei der Programmmierung
4. Man gewöhnt sich früh an ein professionelles Arbeiten

von digit (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Rein lerneffekttechnisch würde ich erstmal für Kommandozeile plädieren.
> Ist nicht modern, aber fördert doch sehr das Verständnis.

ebenfalls dafür
ich würde cygwin als Umgebung vorschlagen(gcc und g++).
Notepad++ als Editor.

alternativ DevCpp
ist die einzige einfache Umgebung. Bei VC++ wird man als Anfänger
schon beim Projektanlegen überfordert. Eigentlich braucht man
am Anfang nur 2 Funktionen: edit & compile

von Informierter (Gast)


Lesenswert?

Wie alt ist denn der Sohn? Kommt er mit englischen Texten zurecht oder 
sollte es zwingend deutsch sein? Die Frage wie er seinen Einstieg in C 
gestaltet ist vor allem eine Frage, auf welchem intellektuellen Niveau 
er (schulisch) sich befindet. Findet er Interesse an mathmatischen 
Umrechnungen, beispielsweise Dreiecksberechnung, Volumina, generell am 
Umsetzen mathmatischer Formeln, dann ist er beim Konsolen-C erst mal gut 
aufgehoben, ihm wird nicht gleich langweilig werden. Texteingabe in der 
Konsole via scanf und Textausgabe via printf mit seinen vielen Optionen 
verlocken zum ausprobieren. Dateien lassen sich sehr einfach erzeugen, 
fortschreiben, wieder öffnen, darin suchen etc.

Hat er es nicht so mit der Mathe, weil ihm das zu langweilig ist, dann 
könnte ihm auch C recht schnell langweilig werden, weil er vielleicht 
Grafikausgabe als motivierender empfindet?! Dann kommt es drauf an, wie 
er mit einem C-Dialekt den Zugang zur Erzeugung von Fenstern am besten 
angeht, die ihm die Ausgabe von Grafik ermöglichen. Möglicherweise 
überfordert ihn das aber zum Anfang auch und ein BASIC Dialekt, der auch 
Fenster mit Grafik darin erzeugen kann, wäre für ihn dann die bessere 
Wahl, für schnelle Erfolge, bevor Frustration entsteht?!

Gedruckte Werke zum Programmiereinstieg können vorteilhaft sein, weil 
man selber abtippen muss und dabei auch Fehler macht (machen darf, 
machen soll), deren Auswirkungen man erkundet (wichtig!). Alles was 
Online verfügbar ist (gibt sehr viel Material über C im Netz) verleitet 
zum 'copy and paste', was zwar der Bequemlichkeit dient, aber dem 
Lernfortschritt gerade am Anfang eher hinderlich ist.

Ob er eine IDE verwendet und wenn ja welche, das würde ich ihm selber 
überlassen. Den LCC-Win32 kenne ich, habe ihn selber schon verwendet. 
Seine schwäche ist nach meiner Erfahrung seine Oberfläche, deren 
Projekterzeugung öfter mal hakelt und wo man auch mal merkwürdige 
Begleiterscheinungen antrifft. Da ist die IDE von Pelle Orinius besser 
umgesetzt, viel "smoother", intuitiver siehe

http://www.smorgasbordet.com/pellesc/.

Für C reicht sowas für den Anfang vollkommen aus. Gibt auch eine 
deutsche Seite, wo der lcc auch Erwähnung findet unter

http://www.pellesc.de/index.php?page=overview&lang=de

Worauf ich immer achten würde bei einer IDE ist eine gute Hilfefunktion, 
möglichst mit Beispielcode. Da war einst die IDE für DOS von Borland 
namens TurboC einsame Spitze.

Am besten ist man fängt einfach mal an. Fahradfahren lernt man einmal im 
Leben und kann es dann zeitlebens. Programmieren will dauerhaft geübt 
werden, sonst vergisst man die Syntax und landet bei lägerer 
Quellcode-Abstinenz schnell wieder beim Hello World ;) Sitzen die 
Grundlagen aber mal, kann man sich auch als Gelegenheitsprogrammierer 
immer wieder schnell einarbeiten und hat seine Freude daran die eigenen 
Kenntnisse wieder aufzufrischen und auszubauen.

Nu aber ran! :-)

von hans (Gast)


Lesenswert?

devc++

da kann man gut mit rumspielen und bekomtm nachdem compilieren eine 
ausführbare exe damit kann man gut c lernen

von R2R (Gast)


Lesenswert?

>bekomtm nachdem compilieren eine ausführbare exe
Das ist hoffentlich bei den anderen Compilern (bzw. Toolchains) auch 
so...

@Informierter
Deinen Ausführungen stimme ich grundsätzlich zu. Meiner Meinung nach 
lässt sich aber auch viel nicht-mathematisches Zeug in der Konsole 
ausprobieren, wobei logisches Denken natürlich nötig ist. Einfache 
Spiele wie "4 gewinnt", Mastermind [1] und ähnlich lassen sich z.B. ganz 
gut im DOS-Fenster spielen, wenn auch graphisch wenig ansprechend. Wer 
unter Windows programmiert kann mittels API auch etwas Farbe reinbrigen. 
;-)

Ich habe bei Anfängern und Grafik, v.a. in Sprachen wie Visual Basic wo 
man die Oberfläche per Drag&Drop zusammenbaut immer etwas Kopfschmerzen: 
Wichtig am Programmieren sind die Algorithmen, nicht die supertolle 
Oberfläche. Viele Tools z.B. im Opensource-Bereich haben gar keine 
eigene Oberfläche, die Programmierer stecken ihre Zeit lieber in das 
eigentliche Programm.

Klaus Wachtler schrieb:
> Rein lerneffekttechnisch würde ich erstmal für Kommandozeile plädieren.
> Ist nicht modern, aber fördert doch sehr das Verständnis.

Dem stimme ich zu. Eine IDE wird schnell zur Blackbox, dabei ist etwas 
Wissen über die Toolchain von wegen Compiler, Linker usw. durchaus 
nützlich. Debuggen kann man für den Anfang auch ganz gut mittels printf 
und getch, da braucht es imho kein großes Programm für. Andererseits 
kümmert sich so eine IDE um makefile und das ganze Drumherum, das kann 
einiges an Frust abwenden welcher gerade am Anfang tödlich sein kann.

Das alles hängt natürlich von Alter, Kenntnissen und v.a. Motivation des 
Anfängers ab.


[1] http://de.wikipedia.org/wiki/Mastermind

von Rinde (Gast)


Lesenswert?

Warum ausgerechnet C?
Wäre nicht eine etwas modernere, einfachere Sprache wie z.B. C#/VB.NET 
sinnvoller?
(Nichts gegen C, aber für Einsteiger ist C#/VB denke ich einfacher).

Als Entwicklungsumgebung bieten die Express Editionen von VisualStudio 
alles was man braucht, und das für lau. Du könntest ja z.B. die Toolbar 
etwas für deinen Sohn "entschlacken".

von R2R (Gast)


Lesenswert?

Wahh, bloss nicht!!!!

VB.NET und die dazugehörige IDE sind völlig überladen, keine Chance da 
durchzublicken. C hingegen hat eine sehr überschaubare 
Standardbibliothek, da muss man zwar viel selbermachen,lernt aber viel 
dabei. Und die Tatsache das C auf fast jedem System läuft ist nicht zu 
unterschätzen... Außerdem konzentriert man sich bei VB mehr auf die 
Grafik welche am Anfang völlig egal ist. Und von wegen veraltet, C ist 
noch sehr verbreitet.

von Rinde (Gast)


Lesenswert?

Hm, Geschmackssache ;-)
Aber wie will man in einer Konsole vernünftig debuggen? Das stell ich 
mir eher schwierig vor (bzw. kann es mir garnicht vorstellen).

von R2R (Gast)


Lesenswert?

@Rinde

Ganz einfach: printf (ggf. in eine oder mehrere Schleifen verpackt wenns 
um Arrays geht), getch bzw. system("pause"), bei vielen Daten auch 
fprintf + Logfile.

Für einen Anfänger dürfte das reichen...

von (prx) A. K. (prx)


Lesenswert?

Rinde schrieb:

> Aber wie will man in einer Konsole vernünftig debuggen? Das stell ich
> mir eher schwierig vor (bzw. kann es mir garnicht vorstellen).

Noch nie den gdb direkt per command line verwendet? So wie dort hat man 
das in der command line Ära gemacht. Muss aber heute nicht wirklich 
sein.

Oft hat man freilich auch komplett ohne Debugger entwickelt.

von Informierter (Gast)


Lesenswert?

@ R2R (Gast)

Die Mathe ist halt ein Beispiel, wo man mal beginnen kann einfache, 
bekannte Formeln (z.B. die pq-Formel zum Lösen einer quadratischen 
Gleichung) in einem kleinen C-Programm umsetzen kann. Oder er schreibt 
sich mal einen kleinen C-Code zur Berechnung einer Parallelschaltung von 
Widerständen. Kleine Übungen motivieren und erleichtern den Einstieg. 
Das kann natürlich auch die Umsetzung eines Spiels sein, ich würde mir 
da aber am ANfang nicht zu viel zumuten. Das ganze soll Spass machen und 
nicht in Frustration enden.

C ist da schon eine schöne bzw. geeignete Basis, aus der man dann auch 
leicht den Übergang zu C# oder C++ findet. Wir haben damals in der 
Hochschule mit Pascal angefangen, was auch nicht verkehrt war. Borland 
hatte ein wunderbares Turbo Pascal 6.0 mit einer sehr guten DOS-IDE und 
guter F1 Hilfe-Unterstützung. Dazu gab es ein sehr gutes Buch am Markt 
von Christoph Klawun "Turbo Pascal 6.0, vom Aufsteiger zum Insider" 
(dicker Wälzer mit rund 800 Seiten). Hat viel Spass gemacht damit Pascal 
zu vertiefen.

Heute ist Pascal gegenüber den C-Dialekten etwas ins Hintertreffen 
geraten, was wohl auch daran liegt, dass der Übergang zu Windows für 
C-Sprachen reibungsloser ablief und die heutigen großen Frameworks wie 
QT mit C++ und nicht Pascal anprogrammiert werden. Aber dennoch gibt es 
natürlich auch noch sehr aktuelle Pascal-Produkte wie FreePascal, 
Lazarus und auch Delphi (dem Nachfolger des einstigen Turbo Pascal und 
dem zeitweiligen Turbo Pascal für Windows 1.0) hat noch seine Anhänger 
die es gerne nutzen.

Rinde (Gast) schrieb:

> Aber wie will man in einer Konsole vernünftig debuggen? Das stell ich
> mir eher schwierig vor (bzw. kann es mir garnicht vorstellen).

Wenn man eine IDE verwendet lassen sich Konsolen-Programme schreiben und 
auch dann in der IDE debuggen. Die Konsole gibt nur das aus was per 
printf usw. ausgegeben werden soll. Das Debuggen geschieht in der IDE. 
Das ist nicht schwer bzw. einfach (siehe Pelles C; geht aber auch in 
lcc-win32 oder einem der Visual C IDE von Microsoft). gdb würde ich eher 
unter linux nutzen, für Windows gibt es wie schon erwähnt bequemeres. Es 
geht auch ganz ohne Debugger, aber für das Verständnis was rund um die 
Ausführung des eigenen Quellcodes passiert ist der Einsatz eines 
Debuggers schon recht förderlich. Man kann schön das Programm 
schrittweise ausführen, sich dabei die Variableninhalte betrachten, 
schauen was sich jeweils ändert und wie man Speicherinhalte jeweils 
unterschiedlich interpretieren kann (als 8 oder 16-bit Ganzzahl, als 
32-bit Ganzzahl, mit und ohne Vorzeichen, als Fließkommazahl, als String 
usw.). Für wichtig halte ich da eine intuitive Bedienung, so dass man 
nicht erst eigens Textkommandos für den Debugger lernen muss, um diesem 
seine Werte zu entlocken. Muss aber jeder für sich selbst herausfinden, 
mit was er da besser zurecht kommt oder wo die Vorlieben hinfallen.

von Informierter (Gast)


Lesenswert?

> Heute ist Pascal gegenüber den C-Dialekten etwas ins Hintertreffen
> geraten, was wohl auch daran liegt ..

Hätte noch dazuschreiben sollen, unter den Unix Betriebssystemen bzw. 
dem späteren Linux war jeher C die Sprache der Wahl (die Quelltexte des 
OS sind alle in C geschrieben) und der gcc Compiler ist dort fester 
Bestandteil des OS. Pascal war dort praktisch kein Thema.

von High Performer (Gast)


Lesenswert?

>(Nichts gegen C, aber für Einsteiger ist C#/VB denke ich einfacher).

Das sehe ich ein wenig anders: ich würde nicht mit einer OO-Sprache 
starten. Da kommt auf den Lernenden zu viel auf einmal zu. Auch wenn mit 
dem Aufkommen der OO-Sprachen immer behauptet wurde, Leute mit 
prozeduraler Vorbelastung täten sich schwer mit dem Umstieg auf OOP, 
konnte ich das nie nachvollziehen.

C halte ich deshalb für gut geeignet, weil sich der Lernende mit den 
Basics beschäftigt. Er soll ja ein Gefühl für den Computer auf eher 
unterer Ebene bekommen. Darauf aufbauend ist es später sehr viel 
einfacher, auch mit IDE zu arbeiten und GUIs zu verstehen. Fängt man 
ganz oben an, fehlt IMO einfach das tiefere Verständnis und man , das 
die Grundlagen schafft, um höhere Ebenen sehr schnell zu begreifen.
Fängt man auf oberster Ebene an, kann es leicht passieren, dass man 
dauerhaft nur kochbuchartig arbeiten kann. Das sehe ich öfter, wenn ich 
mit jungen Leute rede, und ich sehe die massiven Defizite durch das 
moderne "ich will ganz oben anfangen, Details interessieren mich nicht".

von R2R (Gast)


Lesenswert?

Informierter schrieb:
> @ R2R (Gast)
>
> Die Mathe ist halt ein Beispiel, wo man mal beginnen kann einfache,
> bekannte Formeln (z.B. die pq-Formel zum Lösen einer quadratischen
> Gleichung) in einem kleinen C-Programm umsetzen kann. Oder er schreibt
> sich mal einen kleinen C-Code zur Berechnung einer Parallelschaltung von
> Widerständen. Kleine Übungen motivieren und erleichtern den Einstieg.
> Das kann natürlich auch die Umsetzung eines Spiels sein, ich würde mir
> da aber am ANfang nicht zu viel zumuten. Das ganze soll Spass machen und
> nicht in Frustration enden.

Ist schon klar, als erstes "Projekt" ist ein Spiel natürlich nicht 
geeignet (die pq-Formel aber auch nicht...). Es ist allerdings auch 
nicht soooo kompliziert, meine Version von "4 gewinnt" ist etwas 350 
Zeilen lang, davon sind bestimmt 50-100 nur Kommentare, Leerzeilen und 
Debugcode. Sowas zu programmieren ist z.B. sinnvoll wenn man sich mit 2 
dimensionalen Arrays und Schleifen beschäftigen will.

A propos debug: Für meine Miniprogramme reichen printf und Co, ein zu 
guter Debugger ist imho eher kontraproduktiv weil u.U etwas zu viel 
ausprobiert (und etwas zu wenig nachgedacht) wird...

> Fängt man auf oberster Ebene an, kann es leicht passieren, dass man
> dauerhaft nur kochbuchartig arbeiten kann. Das sehe ich öfter, wenn ich
> mit jungen Leute rede, und ich sehe die massiven Defizite durch das
> moderne "ich will ganz oben anfangen, Details interessieren mich nicht".
OH JA! **stöhn**

von R2R (Gast)


Lesenswert?

Ach und... Wir diskutieren und diskutieren, aber meldet sich der TO noch 
mal?

von Karl H. (kbuchegg)


Lesenswert?

R2R schrieb:

> A propos debug: Für meine Miniprogramme reichen printf und Co, ein zu
> guter Debugger ist imho eher kontraproduktiv weil u.U etwas zu viel
> ausprobiert (und etwas zu wenig nachgedacht) wird...

Die Erfahrung hab ich eigentlich auch gemacht.

Durch das Debuggen mittels printf muss man sich spätestens dann sehr 
viel intensiver mit dem Code auseinandersetzen als man das mit einem 
Debugger müsste. Und sei es nur, um die richtigen Variablen auszuwählen 
und sich zu überlegen was die Ausgabe bedeutet. Ausserdem hat man 
mittels printf einen enormen Vorteil: man sieht wie sich Werte im 
Programmlauf verändern, da man man einen Log mehr oder weniger gratis 
bekommt.

von Klaus W. (mfgkw)


Lesenswert?

Das mag oft so sein.

Aber bestimmte Fehlerarten, bekommt man mit printf
lange nicht so effizient heraus, z.B. in einem größeren
Programm wird eine Variable versehentlich durch einen
amoklaufenden Zeiger verändert.
Als Steigerung schon gesehen: der Zeiger kommt nicht
aus dem eigenen Programm, sondern aus einer fremden Lib
(die durch falsche Parameter verwirrt wurde).
Da bräuchte man viele printf, um das zu finden.
Ein Watchpoint macht das schon etwas einfacher.

von R2R (Gast)


Lesenswert?

@Klaus Wachtler
Ich denke man muss hier unterscheiden: Geht es um 100 oder 10.000 Zeilen 
Code? Ist der Programmierer ein Anfänger der sauberes Arbeiten lernen 
soll oder ein Profi der letzteres hoffentlich kann und effizient (d.h. 
ohne Zeitverschwendung) verzwickte Fehler finden & beheben muss/will 
(u.U. in fremdem Code)?

Persönlich verpacke ich das ganze Debugzeug immer in #ifdef-Blöcke, so 
muss man am Ende nicht den kompletten Code manuell "aufräumen" und kann 
zudem die Debugausgaben schnell wieder anschalten wenn es doch noch 
Probleme geben sollte.

Karl heinz Buchegger schrieb:
>Ausserdem hat man mittels printf einen enormen Vorteil: man sieht wie sich
>Werte im Programmlauf verändern, da man man einen Log mehr oder weniger
>gratis bekommt.
Und wenn man den Präprozessor nutzt kann man schnell zwischen Konsole 
und Datei umschalten:
1
#define AUSGABE stdout
2
//#define AUSGABE file
3
4
//Je nach Wert von AUSGABE den Code zum Erzeugen der Datei einfügen oder nicht
5
6
fprintf(AUSGABE,"Zeile: %u     Variable i: %u\n",__LINE__,i);
(Vielleicht nicht ganz richtig, meine Kenntnisse sind schon wieder 
eingerostet...)

von Klaus W. (mfgkw)


Lesenswert?

R2R schrieb:
> Ich denke man muss hier unterscheiden...

Eigentlich wollte ich genau das damit sagen :-)

von R2R (Gast)


Lesenswert?

Na dann ist ja Alles gut... ;-)

von Thomas S. (Gast)


Lesenswert?

Hallo fragender Gast,

die Fragestellung ist schon 5 Jahre her, aber sicher heute noch aktuell. 
Man bekommt die kostenlose Borland C++ IDE aus dem Internet, z.B. die 
Version 3.0 und 3.1.

Ich habe mit Borland C++ 1.0 angefangen (gibt es noch bei vetusware.com) 
und nur DOS-Programme geschrieben. Für Anfänger ist es ratsam, 
Konsolen-Programme zu schreiben, weil dies wesentlich einfacher ist, als 
sich etwa mit der WIN-API auseinanderzusetzen.

Einen kostenlosen C-Compiler (mit C++) gibt es hier 
http://koti.mbnet.fi/vaultec/mingwstudio.php. Den kann ich empfehlen, 
ich arbeite gerade damit.
Es ist eine integrierte Entwicklungsumgebung, der Editor ist einfacher 
zu bedienen als der von Borland 3.1-IDE.

Ein Handbuch über die GCC-Befehle gibt es hier
http://lubo.elsys-bg.org/wp-content/uploads/2009/02/glibc-application.pdf

Gruß Thomas

von Bernd K. (prof7bit)


Lesenswert?

fragender schrieb:
> Ich selbst habe schon mit MS Visual Studio gearbeitet, denke aber dass
> der Umfang des Pakets einen Einsteiger erschlägt.

Ich denke eher dass der Umfang von C (und allem was da an notwendigem 
Wissen implizit mit dran hängt) den Einsteiger erschlagen oder 
frustrieren wird.

Wie wäre es stattdesen mal einfach mit was gutmütigerem wie Python und 
IDLE anzufangen? Das ist mindestens genauso 
relevantes/nützliches/anwendbares Wissen wie C, aber wahrscheinlich um 
Größenordnungen einfacher zu beherrschen und weniger frustrierend für 
Anfänger.

Du hast ja schließlich auch erstmal mit nem Tretroller angefangen bevor 
Du irgendwann zum ersten Mal mit nem 200PS Motorrad vorsichtig die 
ersten Runden auf dem Parkplatz gedreht hast.

Ich will damit jetzt nicht alle Scriptsprachen als Tretroller bezeichnen 
(Das Programmiersprachenuniversum hat mehr als eine Dimension), aber C 
ist definitiv nicht die Maschine auf die man einen blutigen Anfänger 
setzen kann der nicht wenigstens schonmal mal weiß wozu Kupplung, 
Schaltung, Bremse und Gas eigentlich da sind (und wie man die benutzt) 
damit er sich aufs Wesentliche konzentrieren kann.

von Paul B. (paul_baumann)


Lesenswert?

R2R schrieb:
> Ach und... Wir diskutieren und diskutieren, aber meldet sich der TO noch
> mal?

Der sucht ein vergessenes Semikolon...

MfG Paul

von plusplugs (Gast)


Lesenswert?

MS Visual Studio Express (kostenlos) bietet die beste Untersützung mit 
Intellisense und aussagekräftigen Fehlermeldungen.

von MCUA (Gast)


Lesenswert?

>Außerdem konzentriert man sich bei VB mehr auf die Grafik
Nö.
VB (bsp VB6) ist für Einstieg besser geeignet als C, weil weniger 
kryptisch.

von Klaus W. (mfgkw)


Lesenswert?

MCUA schrieb:
> VB (bsp VB6) ist für Einstieg besser geeignet als C

Warum auch immer: das stellst du als Tatsache hin; ich würde es 
bestenfalls als Meinung bezeichnen.

von MCUA (Gast)


Lesenswert?

Aber dass VB weniger kryptisch als C ist, ist wohl eindeutig.
Meine Meinung wäre allerdings mit ASM anzufangen.

von Klaus W. (mfgkw)


Lesenswert?

MCUA schrieb:
> Aber dass VB weniger kryptisch als C ist, ist wohl eindeutig.

Erstens würde ich das nicht unterschreiben.
Nur weil es erstmal lesbarer aussieht, hilft es nicht viel, wenn man 
nicht genau nachvollziehen kann, was es wirklich macht.
Aber egal...

Lesbarkeit ist geneu EIN Kriterium.
Daraus abzuleiten, daß A besser ist als B, geht nur, wenn man das als 
eingziges Kriterium sieht.
Das ist dann aber subjektiv - darauf wollte ich hinaus.

von TriHexagon (Gast)


Lesenswert?

MCUA schrieb:
> Aber dass VB weniger kryptisch als C ist, ist wohl eindeutig.
> Meine Meinung wäre allerdings mit ASM anzufangen.

VB 6? Auf gar keinen Fall. Zu alt, wird nicht weiterentwickelt, 
schlechtes Sprachdesign, sehr viel weniger Hilfe im Netz.

VB? Nein, lieber C#. Man merkt schon deutlich, dass C# von MS bevorzugt 
wird. Dazu hat es Operator-Überladung und sogar Zeiger im unsafe Code.

ASM? Auch nicht, eventuell später. Am Anfang muss man auch mal schnell 
zu Ergebnissen kommen, sonst leidet die Motivation. Ganz schlecht für 
einen blutigen Anfänger, der will sich nicht gleich am Anfang mit 
technischen Details rumschlagen, der sollte erst mal "Programmieren" 
lernen.

Ich persönlich habe mit C# angefangen, um später bei C und C++ zu 
landen. Das hat mich vor viel Frust bewart. Das "Programmieren" habe ich 
schon gelernt gehabt und musste "nur" noch Syntax und Besonderheiten von 
C lernen. Bei meinen Kommilitonen konnte ich auch sehen, dass C oder C++ 
keine besonders gute Sprache für den Anfang ist (zu technisch). C#, 
Python oder auch Pascal ist da besser. C kann man danach noch lernen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

MCUA schrieb:
> VB (bsp VB6) ist für Einstieg besser geeignet als C, weil weniger
> kryptisch.

Beim C-Lernen hilft es hingegen gar nicht.

Das ist mit Fremdsprachen anders; wer Italienisch lernt, erlernt auch 
Grundlagen, die sich auf andere romanische Sprachen anwenden lassen.

Im übrigen ist C nicht "kryptisch", schon gar nicht "kryptischer" als 
diverse Basic-Dialekte, bei denen man teilweise sehr merkwürdige Dinge 
treiben muss, um Trivialitäten zu erreichen.

von Karl H. (kbuchegg)


Lesenswert?

Rufus Τ. Firefly schrieb:

> Im übrigen ist C nicht "kryptisch",

Ganz abgesehen davon, dass die Syntax einer Sprache vielleicht gerade 
mal 15% dessen ausmacht, was man als Programmierer beherrschen muss.

von TriHexagon (Gast)


Lesenswert?

Man kann in C wunderbar kryptischen Code schreiben, aber das man dazu 
gezwungen wird, habe ich noch nicht miterlebt. C gibt es genug 
Möglichkeiten kryptischen Code zu vermeiden. Wer nichts sagende 
Variablennamen, keine sinnvollen Kommentare schreibt und denkt er müsste 
so viele In- und Dekrementierungen in eine Zeile reinknallen wie 
möglich, ist selber schuld. Der schreibt auch in anderen 
Programmiersprachen keinen besseren Code.

von Salewski, Stefan (Gast)


Lesenswert?

Karl Heinz schrieb:
> dass die Syntax einer Sprache vielleicht gerade
> mal 15% dessen ausmacht,

Wobei es aber schwer fallen kann, mit hässlicher Syntax auf dauer zu 
leben. Das ist wie mit eiem Auto, das eigentlich noch ganz gut fährt, 
aber rostig und beulig ist.

Aber was ich dich eigentlich fragen wollte: Du hattest ja mal 
geschrieben, dass Du beruflich an grafischen Oberflächen, also so in der 
Art von Schaltplan-Editoren arbeitest. Benutzt Du da irgend was in der 
Art von Debuggern? Ich nicht, ich kann mir auch nicht wiirklich 
vorstellen, wie das gehen sollte. Aber vorgestern habe ich mal wieder 
ein paar Stunden mit der Fehlersuche verbracht, weil eine Bounding-Box 
zu klein war. War letztlich nur eine Zeile, die gelöscht werden musste. 
Für mich leider 5 Stunden um das zu finden, und entsprechend viel Frust.

von Karl Käfer (Gast)


Lesenswert?

Hallo Rinde,

Rinde schrieb:
> Aber wie will man in einer Konsole vernünftig debuggen? Das stell ich
> mir eher schwierig vor (bzw. kann es mir garnicht vorstellen).

gdb(1) hat schon Generationen von Entwicklern wertvolle Dienste 
erwiesen, da gab es noch gar keine grafischen Benutzeroberflächen. Auch 
heute sind viele GUI-Debugger letztlich nur grafische Frontends für 
dieses Werkzeug.

Und, mit Verlaub: mit .NjET kann man nicht Programmieren lernen. Das ist 
ein riesiges, proprietäres Framework, welches etliches von der 
Komplexität, die ein Einsteiger zunvörderst einmal beherrschen lernen 
muß, in vorgefertigten Bibliotheken mit spärlich dokumentierten Interna 
verbirgt. Mit sowas könnte aus einem guten Programmierer ein schneller 
Programmierer werden, aber kein guter Programmierer aus einem Anfänger.

Davon abgesehen möchte ich Dich daran erinnern, daß wir hier nicht in 
einem Windows-, sondern in einem Mikrocontroller-Forum sind. Daher wird 
es wohl vermutlich das Ziel des OP sein, seinen Sohnemann von 
vorneherein in ein proprietäres, stark plattformabhängiges und deswegen 
nur sehr eingeschränkt benutzbares Nischensystem einzusperren.

Liebe Grüße,
Karl

von TriHexagon (Gast)


Lesenswert?

Karl Käfer schrieb:
> Und, mit Verlaub: mit .NjET kann man nicht Programmieren lernen. Das ist
> ein riesiges, proprietäres Framework, welches etliches von der
> Komplexität, die ein Einsteiger zunvörderst einmal beherrschen lernen
> muß, in vorgefertigten Bibliotheken mit spärlich dokumentierten Interna
> verbirgt. Mit sowas könnte aus einem guten Programmierer ein schneller
> Programmierer werden, aber kein guter Programmierer aus einem Anfänger.

Als Anfänger braucht man doch nur System.Console und System.Convert. Da 
ist nix komplex. Bei C braucht man auch nur printf und co.

Karl Käfer schrieb:
> Davon abgesehen möchte ich Dich daran erinnern, daß wir hier nicht in
> einem Windows-, sondern in einem Mikrocontroller-Forum sind. Daher wird
> es wohl vermutlich das Ziel des OP sein, seinen Sohnemann von
> vorneherein in ein proprietäres, stark plattformabhängiges und deswegen
> nur sehr eingeschränkt benutzbares Nischensystem einzusperren.

Die Webseite mag zwar mikrocontroller.net heißen, doch sind wir hier im 
Unterforum "PC-Programmierung". Also wie kommst du auf µC?

C# hab ich damals schon auf Linux verwendet, da funktioniert alles wie 
es soll. Ausnahme ist GUI, da muss man zu GTK+ greifen. Andernfalls gibt 
es natürlich auch noch Java.

von Rene H. (Gast)


Lesenswert?

Meine Güte. Der Sohn möchte nicht C#, Java oder VB lernen. Die 
Fragestellung ist doch nicht so schwer zu verstehen.

Der Beste Vorschlag ist meines erachtens bislang Notepad++ mit Cygwin. 
Klein, handlich und lenkt nicht ab. Und man lernt zu verstehen was man 
macht ohne das die IDE alles versteckt.

von TriHexagon (Gast)


Lesenswert?

Rene H. schrieb:
> Meine Güte. Der Sohn möchte nicht C#, Java oder VB lernen. Die
> Fragestellung ist doch nicht so schwer zu verstehen.

Naja eine kleine Empfehlung darf man doch noch abgeben. Wenn jmd. fragt 
wie man am besten von einer Brücke springen kann, dann sollte man doch 
wenigstens darauf hinweisen, dass das Springen von Brücken zum Tode 
führen kann ;).

Rene H. schrieb:
> Der Beste Vorschlag ist meines erachtens bislang Notepad++ mit Cygwin.
> Klein, handlich und lenkt nicht ab. Und man lernt zu verstehen was man
> macht ohne das die IDE alles versteckt.

Ja das würde ich auch empfehlen. Später sollte er jedoch auch mal eine 
IDE probieren. Gescheides Code-Complition will ich heute nicht missen. 
Obwohl es auch Editoren gibt, die das mit Plugins bieten können.

von Rene H. (Gast)


Lesenswert?

TriHexagon schrieb:
> Naja eine kleine Empfehlung darf man doch noch abgeben. Wenn jmd. fragt
> wie man am besten von einer Brücke springen kann, dann sollte man doch
> wenigstens darauf hinweisen, dass das Springen von Brücken zum Tode
> führen kann ;).

Darf man sicher. C ist meines erachtens eine sehr gute Grundlage. Weil 
man lernt das Speicherdenken. Der Speicher wird nicht "versteckt".
Zun lernen, führt da Java eher sicher zum Tod (um Deine Analogie zur 
Brücke zu verwenden).

von TriHexagon (Gast)


Lesenswert?

Rene H. schrieb:
> Darf man sicher. C ist meines erachtens eine sehr gute Grundlage. Weil
> man lernt das Speicherdenken. Der Speicher wird nicht "versteckt".
> Zun lernen, führt da Java eher sicher zum Tod (um Deine Analogie zur
> Brücke zu verwenden).

Da kann ich dir nur zustimmen. Ich wurde von C# selber etwas "versaut", 
der Sprung ins kalte Wasser (C auf µC) hat mir gut getan. Allerdings hat 
der Anfang mit C auch so seine Tücken, welche ich oben angesprochen 
habe.

von Informierter (Gast)


Lesenswert?

Rene H. schrieb:
> Meine Güte. Der Sohn möchte nicht C#, Java oder VB lernen. Die
> Fragestellung ist doch nicht so schwer zu verstehen.
>
> Der Beste Vorschlag ist meines erachtens bislang Notepad++ mit Cygwin.
> Klein, handlich und lenkt nicht ab. Und man lernt zu verstehen was man
> macht ohne das die IDE alles versteckt.

Naja. Die Frage wurde vor 5 Jahren gestellt!! Da wird der "Sohnemann" 
vermutlich längst (s)eine Entscheidung selber getroffen haben und könnte 
hier ja mal von seinen Erfahrungen ein wenig berichten.

von Rene H. (Gast)


Lesenswert?

Informierter schrieb:
> Rene H. schrieb:
> Meine Güte. Der Sohn möchte nicht C#, Java oder VB lernen. Die
> Fragestellung ist doch nicht so schwer zu verstehen.
> Der Beste Vorschlag ist meines erachtens bislang Notepad++ mit Cygwin.
> Klein, handlich und lenkt nicht ab. Und man lernt zu verstehen was man
> macht ohne das die IDE alles versteckt.
>
> Naja. Die Frage wurde vor 5 Jahren gestellt!! Da wird der "Sohnemann"
> vermutlich längst (s)eine Entscheidung selber getroffen haben und könnte
> hier ja mal von seinen Erfahrungen ein wenig berichten.

Oh, das habe ich nicht gesehen. Leichenfledderer :-)

von MCUA (Gast)


Lesenswert?

Natürlich ist C "kryptischer" bzw schlechter lesbar als VB.
ua braucht man keine (unnötigen, auch fehleranfällige) {..} keine ';',
kein 'break;'
Wohl Jeder, der noch nie eine Programmiersprache gesehen hat,
wird Basic oder VB oder ähnliches Basic besser/schneller lesen können 
als C.
also mit Basic o.ä. bekommt er schneller erste Erfolgserlebnisse.

Das o.g. VB6 ist zwar nicht das neuste, es wird aber 100x mehr können, 
als ein Anfänger zunächst benötigt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

MCUA schrieb:
> Natürlich ist C "kryptischer" bzw schlechter lesbar als VB.

Nö. Sieh Dir nur die verquere "Syntax" beim Aufruf von "Funktionen" oder 
"Prozeduren" an. Hmm?

von Dussel (Gast)


Lesenswert?

Wäre hier nicht ein Sperrkandidat? Die Frage ist fünf Jahre alt und eine 
weitere Diskussion, welche Programmiersprache die Beste ist, brauchen 
wir nicht.

von Mark B. (markbrandis)


Lesenswert?

MCUA schrieb:
> Natürlich ist C "kryptischer" bzw schlechter lesbar als VB.

Ich sehe das genau umgekehrt.

Zugegeben bin ich gerade die Sprachen gewohnt, die eine C-ähnliche 
Syntax haben: Also C, C++, Java, C#, ...

Visual Basic find ich eher grausam. ;-)

von MCUA (Gast)


Lesenswert?

Man schreibt die Function doch nur hin.
was soll da verquere sein.

>Wohl Jeder, der noch nie eine Programmiersprache gesehen hat,
>wird Basic oder VB oder ähnliches Basic besser/schneller lesen können
>als C.
ich denke, von 100 Befragten Anfängern würden das min 99 sagen

von TriHexagon (Gast)


Lesenswert?

MCUA schrieb:
>>Wohl Jeder, der noch nie eine Programmiersprache gesehen hat,
>>wird Basic oder VB oder ähnliches Basic besser/schneller lesen können
>>als C.
> ich denke, von 100 Befragten Anfängern würden das min 99 sagen

Super! Kommen da dann auch so lustige Ergebnisse raus, wie die 5-Sterne 
Bewertungen von Jürgen Wolf und Co.?

von Karl H. (kbuchegg)


Lesenswert?

Salewski, Stefan schrieb:

> Benutzt Du da irgend was in der
> Art von Debuggern?

Das Hauptproblem ist die meist umfangreiche Datenbasis.
In allen meinen Programmen gibt es immer einen Debug Dialog, in dem ich 
an die Datenbasis ran kann und mir einzelne Dinge im Detail ansehen 
kann.

Das andere oft benutzte Hilfsmittel sind Debug Traces. Die gute alte 
printf Technik.

Debugger natürlich auch. Aber da hat man oft das Problem, dass man 
meherer Programmläufe mit denselben Daten benötigt und dann wird es 
lästig im Debugger die immer gleichen Variablen anzusehen, mitzählende 
Breakpoints zu haben etc. Für mich ist es oft einfacher, einfach ein 
paar TRACE reinzumachen und dann die Ausgaben zu analysieren bzw. die 
Veränderung zu sehen.

> vorstellen, wie das gehen sollte. Aber vorgestern habe ich mal wieder
> ein paar Stunden mit der Fehlersuche verbracht, weil eine Bounding-Box
> zu klein war. War letztlich nur eine Zeile, die gelöscht werden musste.
> Für mich leider 5 Stunden um das zu finden, und entsprechend viel Frust.

gehört dazu, dass man auch mal auf der Leitung sitzt.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:
> Man schreibt die Function doch nur hin.
> was soll da verquere sein.

Wie es im jetzigen ist, weiss ich nicht.
Aber zumindest bei VB6 wars ja wohl noch so, dass man beim Aufruf einer 
Funktion die Argumente nicht in Klammern setzte, bei Proceduren aber 
schon. Oder umgekehrt. (Ist schon lange her)

Edit: Ich glaub es war umgekehrt. Proceduren ohne Klammern, Funktionen 
mit.
Es sei denn man rief die 'Subroutine' mittels CALL auf, dann kamen 
wieder Klammern.

Edit2:
https://msdn.microsoft.com/en-us/library/office/gg251432.aspx

: Bearbeitet durch User
von Salewski, Stefan (Gast)


Lesenswert?

Karl H. schrieb:
> Das Hauptproblem ist die meist umfangreiche Datenbasis.
> In allen meinen Programmen gibt es immer einen Debug Dialog, in dem ich
> an die Datenbasis ran kann und mir einzelne Dinge im Detail ansehen
> kann.
>

Ja, so etwas sollte ich in Zukunft wohl auch vorsehen

> Das andere oft benutzte Hilfsmittel sind Debug Traces. Die gute alte
> printf Technik.
>

So mache ich das auch. Und meist hat man den Fehler ja schnell gefunden.

> Debugger natürlich auch. Aber da hat man oft das Problem, dass man
> meherer Programmläufe mit denselben Daten benötigt und dann wird es
> lästig im Debugger die immer gleichen Variablen anzusehen, mitzählende
> Breakpoints zu haben etc. Für mich ist es oft einfacher, einfach ein
> paar TRACE reinzumachen und dann die Ausgaben zu analysieren bzw. die
> Veränderung zu sehen.

Dann ist für Dich ein Debugger also auch keine Wunderwaffe. Ich höre 
manchmal von Leuten, die eigentlich permanent nur mit Debuggern 
arbeiten, selbst bei trivialen Progrämmchen. Und dann fragt man sich 
natürlich, ob man damit wirklich viel Arbeit bei der Fehlersuche sparen 
könnte. Aber ich glaube gerade bei wirklich schwierigen Sachen, wie 
Rekursion, bearbeitung von Baum-Strukturen oder eben auch der 
Entwicklung grafischer Editoren, ist  das Fehlerfinden auch mit 
Debuggern nicht ganz einfach.

von Karl H. (kbuchegg)


Lesenswert?

Salewski, Stefan schrieb:

> Dann ist für Dich ein Debugger also auch keine Wunderwaffe.

Ich benutze ihn gerne. Aber es gibt Dinge, für die ist ein Debugger eher 
nicht geeignet. Komplexe dynamische Datenstrukturen gehören dazu.

Ausserdem bin ich noch von der 'alten Schule'. Ich hab das noch von der 
Pieke auf gelernt, nur mit printf (bzw. dem Äquivalent in PL/I) 
zurechtzukommen. Schliesslich liefen die Batch-Jobs auf der IBM für uns 
Studenten prinzipiell nur in der Nacht :-)

von MCUA (Gast)


Lesenswert?

>>>Wohl Jeder, der noch nie eine Programmiersprache gesehen hat,
>>>wird Basic oder VB oder ähnliches Basic besser/schneller lesen können
>>>als C.
>> ich denke, von 100 Befragten Anfängern würden das min 99 sagen
>Super! Kommen da dann auch so lustige Ergebnisse raus, wie die 5-Sterne
>Bewertungen von Jürgen Wolf und Co.?
Ich wollte nicht auf irgentwelche Ergebnisse oä abzielen, sondern nur 
darauf, dass es im -allgemeinen- besser lesbar ist.

>Aber zumindest bei VB6 wars ja wohl noch so, dass man beim Aufruf einer
>Funktion die Argumente nicht in Klammern setzte, bei Proceduren aber
>schon. Oder umgekehrt. (Ist schon lange her)
ja umgekehrt. der Funct-Aufruf wird betr der Args anders geschrieben als 
ein Sub-Aufruf. (was vor u nachteile haben kann) und?
das ist doch Kikifaks gegenüber dem vielen unnützen Zeug in C.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:

> ja umgekehrt. der Funct-Aufruf wird betr der Args anders geschrieben als
> ein Sub-Aufruf. (was vor u nachteile haben kann) und?

Kann ich genauso sagen:
In C werden viele Sonderzeichen benutzt. Und?

> das ist doch Kikifaks gegenüber dem vielen unnützen Zeug in C.

:-)
In C gibt es kaum 'unnützes Zeug'. Genau das ist ja das 'Problem', dass 
es eben nicht reicht, nur 80% der Sprache zu kennen. Jedes Zeichen hat 
seine spezifische Bedeutung und entfaltet des öfteren auch erst im 
Zusammenspiel mit anderen Zeichen seine volle Power.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:

>>Wohl Jeder, der noch nie eine Programmiersprache gesehen hat,
>>wird Basic oder VB oder ähnliches Basic besser/schneller lesen können
>>als C.
> ich denke, von 100 Befragten Anfängern würden das min 99 sagen

Mag sein. Ist aber trotzdem ein schlechtes Argument.

Ich kann auch problemlos Spanisch lesen.
Nur verstehe ich kein Wort von dem, was dort steht.

So gesehen: ob da jetzt lateinische Buchstaben benutzt werden oder 
kyrillische, ist für mich Jacke wie Hose. Denn am Ende stehe ich mit dem 
gleichen Problem da: ich verstehe kein Wort, selbst wenn ich in dem 
einen Fall die Buchstaben problemloser identifizieren kann.

: Bearbeitet durch User
von Robert L. (lrlr)


Lesenswert?

ich war mal, vor langer Zeit, in einem "Kurs" als Gast (ein paar Stunden 
zuschauen)

dort hat man zuerst Programmieren gelernt (anhand von UML, 
Ablaufdiagrammen und vielleicht auch Pseudocode.. weiß ich nicht mehr so 
genau..)

wirklich Programmiert wurde erst nach ein paar Wochen (dann übrigens in 
Java, ..)

anstelle sich also um C oder Pascal zu streiten,
oder noch schlimmer "um welchen compiler/ide)
vielleicht eher darum ob man nicht zuerst mal Grundlagen lernt 
(datentypen, operatoren,  schleifen, Klassen, vererben, was ist ein 
compiler/debugger..)

und DANN ist man vermutlich schlau genug, um sich SELBER eine 
Sprache/compiler/ide auszusuchen...

: Bearbeitet durch User
von MCUA (Gast)


Lesenswert?

>Kann ich genauso sagen:
>In C werden viele Sonderzeichen benutzt. Und?
Viele davon sind unnötig (und viele leute nervt das).
zb bei IF.. braucht man definitv keine {..,
und ; hinter jedem Befehl braucht man auch nicht.

von MCUA (Gast)


Lesenswert?

>Ich kann auch problemlos Spanisch lesen.
kann man aber so nicht vergleichen.
VB und auch C (und auch ASM) basiere gr.teils auf englisch.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:
>>Kann ich genauso sagen:
>>In C werden viele Sonderzeichen benutzt. Und?
> Viele davon sind unnötig (und viele leute nervt das).
> zb bei IF.. braucht man definitv keine {..,
> und ; hinter jedem Befehl braucht man auch nicht.

Ui.
No further comments.


Bis auf einen:
Warum fühlen sich eigentlich immer diejenigen dazu berufen, C zu 
kritisieren, die recht offensichtlich nicht viel Ahnung von C haben?
Nicht das es in C nichts zu kritisieren gäbe. Da gibt es so einiges.

: Bearbeitet durch User
von Theodor Tunichtgut (Gast)


Lesenswert?

Salewski, Stefan schrieb:
> ist das Fehlerfinden auch mit Debuggern nicht ganz einfach.

Ein Debugger ist ein nützliches Werkzeug - denken muss man schon noch 
selbst. Man käme ja auch nicht auf die Idee, dass mit einem guten 
Compiler das Schreiben von komplexen Programmen ganz einfach wäre. Aber 
manchmal ist es hilfreich, wenn man die Dinge sehen kann, die beim 
Programmablauf passieren. Und nicht selten kommt man dann mit einem 
Debugger schneller ans Ziel als mit printfs. Alleine die Möglichkeit, 
auf unterschiedliche Bedingungen "scharfstellen" zu können - z.B. auf 
Änderungen des Speicherinhalts -, ist ein Segen.

Allerdings haben auch schon Debugger so viele Features (z.B. Debuggen 
von Multithread- und Grafikanwendungen, aber auch sehr viele 
Kleinigkeiten), dass man sich damit ab und zu beschäftigen muss. Ich 
habe z.B. unter Windows/VS eine ganze Weile meine Debugausgabe-Makros 
(*) weiter verwendet, bevor ich gemerkt habe, dass man Breakpoints nun 
ganz einfach in "Debug-Print-Points" umwandeln kann.

> Ich höre manchmal von Leuten, die eigentlich permanent nur mit Debuggern
> arbeiten

Dagegen hilft zumindest teilweise schrittweise Implementierung in 
Verbindung mit Tests.

Zum Thema (der Diskussion, nicht dem des TO von 2010): Als jemand, der 
in seiner Jugend mit BASIC angefangen hat, würde ich BASIC als 
Anfängersprache nicht empfehlen - schon gar nicht VB6. Die Syntax ist 
krude, BASIC verstärkt Anfängerfehler und lädt geradezu zur Produktion 
von Spaghetticode ein. Außerdem ist es viel zu stark an Windows und das 
GUI-System gekettet. Wenn man nach Beispielen sucht, findet man zuerst 
mal alles mögliche über Fenster, Comboboxen, Textboxen etc. pp. 
Tatsächlich halte ich sogar C# - Konsole, nur mit den nötigsten Teilen 
des .NET-Frameworks (Eingabe, Ausgabe) und unter Anleitung - für besser 
geeignet. Dabei fehlt dann aber natürlich das Memory-Management.
Damals (tm) an der Uni hat man das Problem übrigens ganz einfach gelöst: 
Es wurde ein Lisp-Derivat verwendet. So hatten einerseits diejenigen, 
die schon vorher programmiert haben, keinen "Vorsprung", andererseits 
wurde das abstrakte, algorithmische Denken gefördert. Für Unfug wie 
"Anfänger sollten erst einmal Assembler lernen" hatte ich aber ohnehin 
nie Verständnis. Das ist ja nun genau die falsche Richtung. C, C++, 
Java, C#, Python usw. bieten einen sinnvollen Mittelweg, wenn es denn 
eine häufig genutzte Sprache sein soll.

(*) die je nach Kontext natürlich dennoch sinnvoll sein können

von MCUA (Gast)


Lesenswert?

>>>Kann ich genauso sagen:
>>>In C werden viele Sonderzeichen benutzt. Und?
>> Viele davon sind unnötig (und viele leute nervt das).
>> zb bei IF.. braucht man definitv keine {..,
>> und ; hinter jedem Befehl braucht man auch nicht.
>Ui.
>No further comments.

ich kritisiere nicht C an sich, sondern die Syntax!
Warum man bei
if...els...zif
'{'... bräuchte kannst du KEINEM erklären

von MCUA (Gast)


Lesenswert?

>BASIC verstärkt Anfängerfehler und lädt geradezu zur Produktion
>von Spaghetticode ein.
BASIC wurde ja gerade wegen besserer Lesbarkeit "erfunden".
Und viele haben ja auch -wegen angebl.. besserer Lesbarkeit- grade 
deshalb damit angefangen.
Und Spaghetticode kann man bei den meisten Sprachen machen, muss es aber 
nicht. (zudem ist es reine Definitionssache was Sprünge sind und was 
nicht)

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:
>>>>Kann ich genauso sagen:
>>>>In C werden viele Sonderzeichen benutzt. Und?
>>> Viele davon sind unnötig (und viele leute nervt das).
>>> zb bei IF.. braucht man definitv keine {..,
>>> und ; hinter jedem Befehl braucht man auch nicht.
>>Ui.
>>No further comments.
>
> ich kritisiere nicht C an sich, sondern die Syntax!
> Warum man bei
> if...els...zif
> '{'... bräuchte kannst du KEINEM erklären

richtig.
Weil ein 'if' kein '{' verlangt (wie übrigens keines der Compound 
Statements in C)

Lern doch erst mal die Syntax die du kritisierst! Das ist doch 
lächerlich! AUf diesem Niveau werd ich sicher nicht mit dir über Stärken 
und Schwächen von C diskutieren.

: Bearbeitet durch User
von Klaus W. (mfgkw)


Lesenswert?

Karl H. schrieb:
> Lern doch erst mal die Syntax die du kritisierst! Das ist doch
> lächerlich! AUf diesem Niveau werd ich sicher nicht mit dir über Stärken
> und Schwächen von C diskutieren.

Doch - gerade das ist eine echte Stärke von C:
Die größten Denkverweigerer bleiben draußen.

von Bastler (Gast)


Lesenswert?

Nur erinner sie die drin ständig daran, daß sie doch lieber draußen 
stehen :-)

von OldMan (Gast)


Lesenswert?

Aus meiner Sicht ist die beste Umgebung für einen Anfänger eine 
Linux-Distribution ohne X-Server.
Das GCC-Paket drauf und gut ist.
Da hat man dann die komplette Umgebung auf der Maschine.
Auch ich habe auf UNIX* Systemen das Programmieren in C gelernt.
Eine bessere Umgebung gibt es aus meiner Sicht nicht.
Und der VIM lässt sich heute sehr gut bedienen und hat dem vi einiges 
von der kryptischen Bedienung genommen.
Die man-pages gibt inzwischen auch in deutscher Sprache. Also.
So what?

von Dussel (Gast)


Lesenswert?

OldMan schrieb:
> Das GCC-Paket drauf und gut ist.
> Da hat man dann die komplette Umgebung auf der Maschine.
Hat man da eine selbstinstallierende IDE dabei? Dieses ganze Gefrickel, 
mit dem ich Linux verbinde, bringt da nichts. (Ich weiß, dass Linux auch 
'anders kann', aber bei Entwicklungswerkzeugen und Linux ist meine erste 
Assoziation: Konsole) Als ich mit C++ angefangen habe, wurde mir überall 
Borland empfohlen. Allerdings habe ich es gar nicht geschafft, den zum 
Laufen zu kriegen. Erst als ich aus einem Buch Visual C++ hatte, ging 
es.
Natürlich kommt es auch auf die Vorkenntnisse an. Die waren bei mir 
praktisch nicht vorhanden, da ich vorher nur auf dem 386er Europaspiel 
gespielt habe :-)

von Karl Käfer (Gast)


Lesenswert?

Hallo,

Dussel schrieb:
> OldMan schrieb:
>> Das GCC-Paket drauf und gut ist.
>> Da hat man dann die komplette Umgebung auf der Maschine.
> Hat man da eine selbstinstallierende IDE dabei?

Mindestens vim und Emacs... Aber ich glaube, für den Anfang genügen auch 
Kate, Geany, UltraEdit, Notepad++, "Programmers Notepad" (sic!) und 
jeder andere Editor mit Syntax-Highlighting -- es geht auch ohne, aber 
das will man .

> Dieses ganze Gefrickel, mit dem ich Linux verbinde, bringt da nichts.

Von was für einem "Gefrickel" sprichst Du denn?

> (Ich weiß, dass Linux auch 'anders kann', aber bei
> Entwicklungswerkzeugen und Linux ist meine erste Assoziation: Konsole)

Meine auch -- weil eine moderne Shell wie die bash nämlich immer noch 
eines der leistungsfähigsten und flexibelsten Bedienkonzepte ist, die es 
gibt. Das haben mittlerweile sogar Microsoft und Apple verstanden (hat 
lange genug gedauert...) und liefern die Powershell bzw. Bash mit aus, 
obwohl Microsoft vorher jahrelang versucht hat, die Kommandozeile zu 
eliminieren und Apple vor MacOS/X erst gar keine hatte.

Außerdem ist eine Shell selbst bereits ein Interpreter für ihre eigene 
Programmiersprache. Programmierkonstrukte wie Variablen, Schleifen und 
Verzweigungen beherrscht jede moderne Shell, Datei-I/O, einfache Formen 
der Interprozesskommunikation, und so weiter. Und warum sollte unser 
Programmiereinsteiger nicht gleich lernen, wie Betriebssysteme mit den 
Programmen interagieren und kommunizieren?

> Als ich mit C++ angefangen habe, wurde mir überall
> Borland empfohlen. Allerdings habe ich es gar nicht geschafft, den zum
> Laufen zu kriegen. Erst als ich aus einem Buch Visual C++ hatte, ging
> es.

Also weil Du den Borland-Compiler unter Windows nicht zum Laufen 
gekriegt hast, ist Linux "Gefrickel"? Das ist mir eindeutig zu hoch. ;-)

Liebe Grüße,
Karl

von TriHexagon (Gast)


Lesenswert?

Karl Käfer schrieb:
> Das haben mittlerweile sogar Microsoft und Apple verstanden (hat
> lange genug gedauert...) und liefern die Powershell bzw. Bash mit aus,
> obwohl Microsoft vorher jahrelang versucht hat, die Kommandozeile zu
> eliminieren und Apple vor MacOS/X erst gar keine hatte.

Programmierer die von Mac OS kommen, benutzen auch fleißig die Shell. Da 
muss man sich nur mal bei Github umsehen. Vim und Emacs sind dort auch 
bekannt. Keine Ahnung wie man darauf kommt, dass das nur ein Phänomen 
ist, was es nur unter "rückständigen" Linuxer geben kann und alle 
anderen verwenden die über alles erhabene GUI.

Karl Käfer schrieb:
> Außerdem ist eine Shell selbst bereits ein Interpreter für ihre eigene
> Programmiersprache. Programmierkonstrukte wie Variablen, Schleifen und
> Verzweigungen beherrscht jede moderne Shell, Datei-I/O, einfache Formen
> der Interprozesskommunikation, und so weiter. Und warum sollte unser
> Programmiereinsteiger nicht gleich lernen, wie Betriebssysteme mit den
> Programmen interagieren und kommunizieren?

Bei uns war die Unix-Shell Teil der Vorlesungen (Rechnerarchitektur).

von Karl Käfer (Gast)


Lesenswert?

Hi TriHexagon,

TriHexagon schrieb:
> Programmierer die von Mac OS kommen, benutzen auch fleißig die Shell.

Naja, seit es eine gibt. Versionen vor X (10) hatten alle keine Shell; 
aus diesem Grund hatte ich einen Mac als Spielzeug und für richtiges 
Arbeiten eine Sun Ultra 1. Die habe ich übrigens heute noch.

> Vim und Emacs sind dort auch bekannt. Keine Ahnung wie man darauf kommt,
> dass das nur ein Phänomen ist, was es nur unter "rückständigen" Linuxer
> geben kann und alle anderen verwenden die über alles erhabene GUI.

Das "denken" nur eingefleischte Windows-Anwender, die meistens nur die 
Windows-Shell (command.com bzw. cmd.exe) kennen und die Kommandozeilen 
deswegen immer noch für völlig rückständiges Zeug halten.

Bis dato habe ich auch noch nicht verstanden, warum um alles in der Welt 
man unbedingt eine IDE benutzen soll. Ich habe einige ausprobiert -- ja, 
zeitweise sogar Visual Studio zu den seligen Zeiten von NT4 -- aber bis 
heute habe ich buchstäblich nichts gefunden, das auch nur näherungsweise 
an einen Emacs heranreicht.

> Bei uns war die Unix-Shell Teil der Vorlesungen (Rechnerarchitektur).

Aber so ist es eben: was die Einen für rückständiges "Gefrickel" halten, 
ist für Andere die beste Bedienoberfläche der Welt. ;-)

Liebe Grüße,
Karl

von Klaus W. (mfgkw)


Lesenswert?

Karl Käfer schrieb:
> Also weil Du den Borland-Compiler unter Windows nicht zum Laufen
> gekriegt hast, ist Linux "Gefrickel"? Das ist mir eindeutig zu hoch. ;-)

Von Windows habe ich nichts gelesen.
Vielleicht hat er Borland unter Linux nicht zum Laufen bekommen.
Dann ist Linux natürlich Mist...

von Robert L. (lrlr)


Lesenswert?

>Borland unter Linux

dann simma mal alle froh dass es Borland und auch Kylix nicht mehr gibt, 
und konzentrien uns auf aktuelle Tools..

emacs? verdoppelt irgendwie den lernaufwand, zuerst muss man "emacs" 
lernen, dann erst die Programmiersprache... machts jetzt irgendwie nicht 
leichter..

alles viel zu Old-school, vielleicht sollte man C lernen, wie man heute 
alles lernt: per youtube video.. ;-)

: Bearbeitet durch User
von Klaus W. (mfgkw)


Lesenswert?

Robert L. schrieb:
> alles viel zu Old-school, vielleicht sollte man C lernen, wie man heute
> alles lernt: per youtube video.. ;-)

nee, das geht heutzutage, indem man sich in einem Forum durchfragt.

von Dussel (Gast)


Lesenswert?

Karl Käfer schrieb:
> Von was für einem "Gefrickel" sprichst Du denn?
Karl Käfer schrieb:
> Also weil Du den Borland-Compiler unter Windows nicht zum Laufen
> gekriegt hast, ist Linux "Gefrickel"? Das ist mir eindeutig zu hoch. ;-)
Wenn ich an gcc ohne IDE und an Linux denke, denke ich an kryptische 
Konsolenbefehle wie (nur als Beispiel, die richtigen Befehle kenne ich 
nicht auswendig)

PATH=${PATH}:/Developer/Programmieren/Compiler/bin
make -c --property=irgendwas Datei.o Datei.c
gcc -r -s Datei.o

Sowas ähnliches, natürlich mit Windowsbefehlen, hätte ich damals mit dem 
Borland machen müssen. Und wenn irgendeine Einstellung im System anders 
waren, funktionierte es nicht mehr. Ich habe es nicht hingekriegt und 
bin erstmal bei JavaScript geblieben.
Erst als dann Visual C++ kam, den man problemlos installieren kann und 
bei dem man mit etwa zehn Klicks ein Programm erstellen kann, bin ich 
weitergekommen.

Übrigens halte ich HTML und JavaScript für gute Einstiegssprachen. Man 
braucht nur einen Texteditor und einen Browser und kann in fünf Zeilen 
sichtbare Ergebnisse erzielen, lernt aber schonmal eine C-ähnliche 
Syntax kennen. Gerade für Kinder sind die sichtbaren Ergebnisse für die 
Motivation gut.
Ich weiß noch, wie stolz ich war, als ich das erste Mal einen Text in 
HTML 'programmiert' hatte. Einen Befehl mehr und der wurde sogar in 
einer anderen Farbe dargestellt. Dann eine Zeile mehr und man konnte 
schon ein Bild sehen. :-)

von MCUA (Gast)


Lesenswert?

was VB betrifft, die Subs kann man auch ganz weglassen, und nur Func 
benutzen.

>Lern doch erst mal die Syntax die du kritisierst!
Mir ging es hier nur drum, zu schr dass in diesem Fall das {.. kein 
Mensch braucht. das ist definitv so.
zudem, dein bisschen C umfasst max 1% der System-Aspekte.
Nur-Hochsprachen-Schwafler kriegen im Leben kein System ans Laufen weil 
sie von drunterliegender Hardware keinen blassen Schimmer haben.
Also laber hier nicht rum.

von Karl H. (kbuchegg)


Lesenswert?

MCUA schrieb:
> was VB betrifft, die Subs kann man auch ganz weglassen, und nur Func
> benutzen.
>
>>Lern doch erst mal die Syntax die du kritisierst!
> Mir ging es hier nur drum, zu schr dass in diesem Fall das {.. kein
> Mensch braucht. das ist definitv so.

Ja ne, is klar

von MCUA (Gast)


Lesenswert?

>Ja ne, is klar
ach ne wie toll

von Karl H. (kbuchegg)


Lesenswert?

Aus einem anderen Thread, an dem ich zufällig grade drann bin
1
  if( wert )
2
    lcd_string( "1" );
3
  else
4
    lcd_string( "0" );

siehst du da irgendwo ein {?
Also ich nicht.

Ist auch nicht weiter verwunderlich. Die Syntax für if lautet in EBNF 
Notation
1
  'if' '(' Expression ')' statement .

auch da: von einem gefordertem { ist weit und breit nichts zu sehen.

Hmm. Vielleicht doch mal ein bisschen C-Syntax lernen, ehe man sich 
darüber mokiert? Dann versteht man auch die Zusammenhänge besser.

: Bearbeitet durch User
von MCUA (Gast)


Lesenswert?

>siehst du da irgendwo ein {?
Lern erst mal die Syntax

von TriHexagon (Gast)


Lesenswert?

MCUA schrieb:
>>siehst du da irgendwo ein {?
> Lern erst mal die Syntax

Fällt dir da nicht mehr dazu ein? Traurig.

Wie wärs wenn du mal darauf eingehen würdest?

von Karl Käfer (Gast)


Lesenswert?

Hallo Robert,

Robert L. schrieb:
> emacs? verdoppelt irgendwie den lernaufwand, zuerst muss man "emacs"
> lernen, dann erst die Programmiersprache... machts jetzt irgendwie nicht
> leichter..

Das stimmt. Aber wer es einfach haben will, ist beim Stricken vermutlich 
besser aufgehoben.

> alles viel zu Old-school, vielleicht sollte man C lernen, wie man heute
> alles lernt: per youtube video.. ;-)

Der Punkt ist: die Werkzeuge mögen alt sein und ihre Bedienkonzepte 
nicht mehr den neuesten Standards entsprechen, aber das macht diese 
Werkzeuge nicht weniger leistungsfähig und flexibel. Deswegen lohnt es 
sich immer noch, sich damit zu beschäftigen.

Liebe Grüße,
Karl

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.