Programiersprache für Anfänger
-
also das imho beste buch zum c-programmieren lernen ist:
C- Programmierung lernen. Anfangen, anwenden, verstehen (Addison-Wesley)
von Andre Willms
http://www.amazon.de/C-Programmierung-lernen-Anfangen-anwenden-verstehen/dp/3827314054hab bisher kein anderes buch gefunden, das alles so klar und einfach verständlich rüberbringt.
-
ibominka schrieb:
Das heisst ich sollte Das : (Microsoft Visual Studio 2008 Express Editions mit SP1) runteladen und instalieren ?
naja, das ist schon ein ziemlicher klotz. es gibt schlankere alternative, die dir weniger müll auf die platte ziehen. aber klar, vs. express geht natürlich auch.
-
Visual Studio ist ein ziemlicher Klotz, ja, dafür aber auch eine sehr gute Entwicklungsumgebung für C++ und C#.
Für Java könnte man Netbeans und Eclipse empfehlen. Nur so nebenbei. Wurde aber vermutlich schon wo erwähnt.
-
hustbaer schrieb:
Visual Studio ist ein ziemlicher Klotz, ja, dafür aber auch eine sehr gute Entwicklungsumgebung für C++ und C#.
wenn ich's richtig mitbekommen habe, möchte ibominka in C programmieren, weder mit ++ noch mit #. daher ist ein grossteil des ballasts, den VS mit sich schleppt, für ihn nutzlos.
-
u_ser-l schrieb:
[...]Ich benötigte das (copy Konstr.) gleich bei meinem *ersten* größeren Programm (10k+ Zeilen), und da im Objekt ein Filehandle vorkam, der nicht zweimal verwendet werden kann, mußte ich den copy Konstruktor selbst schreiben. Das fiel aber erst auf, als Objekte per-value übergeben wurden, und Objekte per-value übergeben ist für einen Anfänger das natürlichste der Welt - kaum einAnfänger rechnet damit, daß er mit Referenzen arbeiten muß, nur um ein Objekt an eine Funktion zu übergeben.[...]
Unter C++ macht man File-I/O üblicherweise über Streams, und die lassen sich nicht kopieren...
-
~fricky schrieb:
hustbaer schrieb:
Visual Studio ist ein ziemlicher Klotz, ja, dafür aber auch eine sehr gute Entwicklungsumgebung für C++ und C#.
wenn ich's richtig mitbekommen habe, möchte ibominka in C programmieren, weder mit ++ noch mit #. daher ist ein grossteil des ballasts, den VS mit sich schleppt, für ihn nutzlos.
Intellisense, die gute Hilfe (MSDN), der wahnsinns-gute Debugger - das alles bringt ihm bei C-ohne-++ auch was. Der Debugger ist für mich einer der wichtigsten Gründe Visual-Studio zu verwenden. Und auch der Punkt wo VS sich IMO am stärksten von anderen IDEs absetzt.
-
~john schrieb:
Bashar schrieb:
Was ist mit Finalizern?
Wegen des probabilistischen Laufzeitsverhalten des GC sind diese de facto nutzlos. Es gibt noch nicht einmal die Garantie, daß sie überhaupt aufgerufen werden! Und daher muß man das Finally Statement verwenden.
Das ist ja das ärgerliche an Java & Co. man fällt wieder auf den Stand von prä-RAII zurück und muß überall im Code Finally einsetzen, damit die Resourcen sauber freigegeben werden. Bei Sprachen, die RAII unterstützen, [...]
Was hat bitte RAII mit Resourcen-Verwaltung zu tun? Im Destruktor sollte man keine externe Resourcen freigeben, denn Destruktor kann nichts im Fehlerfall machen.
[17.3] How can I handle a destructor that fails? Actually you can't - not beyond logging the problem to a file or the like.
Ausserdem, was hat das Finally Statement mit externe Resourcen zu tun? Du meinst schon das finally-Statement wie hier:
try { do_something(); } finally { }
Eine einfache close()-Methode reicht aus.
filehandler = new Handler(); // ... filehandler.close();
-
DEvent, du solltest nicht über Dinge schreiben von denen du nixe verstehst.
-
DEvent schrieb:
Im Destruktor sollte man keine externe Resourcen freigeben, denn Destruktor kann nichts im Fehlerfall machen.
das machen c++ progger aber schon seit generationen so. und sie glauben auch nicht, dass dabei was schiefgehen kann. und wenn, dann ist es ihrer meinung nach auch egal.
-
@ Alle hier: Eure vielschichtige Diskussion hilft dem Fragesteller nicht weiter. Er will nur wissen, mit welcher Programmiersprache er einsteigen soll.
@ Fragesteller: Wähle irgendeine Programmiersprache, für die Du einen Compiler hast. Suche Dir kleine überschaubare Übungsaufgaben und bringe diese zum Laufen. Ein Buch für Anfänger kann sehr hilfreich sein. Sobald Du etwas Erfahrung hast, kannst Du immer noch umsteigen. Auch wenn der Einstieg mit C/C++ anfangs etwas schwierig erscheint, lohnt dies auf Dauer immer.
-
hustbaer schrieb:
DEvent, du solltest nicht über Dinge schreiben von denen du nixe verstehst.
Dann erleuchte mich. Wenn ich Bloedsinn schreibe, dann bitte korregieren, denn nur so lerne ich.
Ich wuerde C empfehlen. Ist leicht, hat eine eindeutige Syntax, man lernt was Speicherverwaltung, Abstraktion, Low-Level und OOP bedeutet.
-
DEvent schrieb:
Ich wuerde C empfehlen. Ist leicht, hat eine eindeutige Syntax, man lernt was Speicherverwaltung, Abstraktion, Low-Level und OOP bedeutet.
die syntax von C ist für anfänger überhaupt ziemlich hart. und oop lernt man mit C auch nicht.
-
~fricky schrieb:
und oop lernt man mit C auch nicht.
Doch, durch C lernt man erst die Vorzüge & Nachteile einer OOP zu schätzen
und man weiß, warum es sich lohnen kann, sich die OOP anzutun.Und für den Programmiereinstieg ist eine Prozedurale Sprache immer noch
besser als eine OOP Sprache, weil die prozedurale Sprache weniger Overhead mit sich bringt und der Anfänger viel einfacher sieht, wo das Programm entlang geht.
-
C is besser schrieb:
~fricky schrieb:
und oop lernt man mit C auch nicht.
Doch, durch C lernt man erst die Vorzüge & Nachteile einer OOP zu schätzen
und man weiß, warum es sich lohnen kann, sich die OOP anzutun.erzähl doch nicht so'n quatsch. du kannst viele jahre in c programmieren, ohne überhaupt zu ahnen, dass es sowas wie OOP gibt.
-
~fricky schrieb:
C is besser schrieb:
~fricky schrieb:
und oop lernt man mit C auch nicht.
Doch, durch C lernt man erst die Vorzüge & Nachteile einer OOP zu schätzen
und man weiß, warum es sich lohnen kann, sich die OOP anzutun.erzähl doch nicht so'n quatsch. du kannst viele jahre in c programmieren, ohne überhaupt zu ahnen, dass es sowas wie OOP gibt.
Man kann auch viele Jahre in C++ programmieren ohne zu wissen was OOP ist. Ausserdem, aus mehreren Gruenden, die ich bestimmt nicht nochmal erleutere, kann man in C viel einfacher und sauberer OO programmieren als in C++.
-
DEvent schrieb:
Ausserdem, aus mehreren Gruenden, die ich bestimmt nicht nochmal erleutere, kann man in C viel einfacher und sauberer OO programmieren als in C++.
Dann gib mal bitte ein Link darauf, wo du das schonmal erläutert hast. Dass du in C OOP betreiben kannst, stimmt schon nur für sehr eingeschränkte Vorstellungen von OOP, aber dass das dann sauber ist, kann ich mir gar nicht vorstellen.
-
DEvent schrieb:
Ausserdem, aus mehreren Gruenden, die ich bestimmt nicht nochmal erleutere, kann man in C viel einfacher und sauberer OO programmieren als in C++.
es hat hier auch mal einer erzählt (übrigens, ein user mit einer 5-stelligen beitragszahl), dass Java kein 'richtiges' OOP unterstützt, auch mit dem hinweis, dass er auf fragen diesbezüglich nicht antworten wird. ich bin wahrlich kein freund von C++, aber dass man in C einfacher OO-programmieren kann, als in C++, halte ich für ein gerücht.
-
Hi,
was spricht eigentlich gegen Delphi als Anfängersprache? Ist doch um einiges einfacher als C++ und ähnliche und wenn man damit klar kommt ists mit C++ auch keine große Hürde mehr. Der Vorteil gegenüber C# und Java ist, daß Delphi eine sich wesentlich mehr von C++ unterschiedende Syntax hat und daher weniger zu verwechslungen beim Umstieg führt.
Gruß Mümmel
-
Bashar schrieb:
DEvent schrieb:
Ausserdem, aus mehreren Gruenden, die ich bestimmt nicht nochmal erleutere, kann man in C viel einfacher und sauberer OO programmieren als in C++.
Dann gib mal bitte ein Link darauf, wo du das schonmal erläutert hast. Dass du in C OOP betreiben kannst, stimmt schon nur für sehr eingeschränkte Vorstellungen von OOP, aber dass das dann sauber ist, kann ich mir gar nicht vorstellen.
Bitte:
http://www.mathematik.uni-ulm.de/sai/ws96/seminar/neher/
http://home.comcast.net/~fbui/OOC.htmlEin Beispiel, wo man ein Feature von OOP sauberer in C programmieren kann als in C++: Kapselung.
In C schreibe ich die oeffentliche Schnittstelle so:extern const void *STRING; void *createString(); void deleteString(void* self); void* copyString(void* self); char* getString(void* self); void setString(void* self, char* str);
In C++ sieht das so aus:
class String { public: String(); ~String(); String copyString(); char* getString(); void setString(char* str); // man koennte denken, dass dies genuegen wuerde, aber nein protected: // viele schoene protected Methoden private: // noch mehr Hilfs-Methoden, die im Interface ueberhaupt nichts verloren haben }
Im Gegensatz zu dem Beispiel mit C ist das oeffentliche Interface "beschmutzt" durch private Methoden und Attribute. Das hat zur Folge, dass der C++ Compiler dir zwar eine Fehlermeldung ausgibt, wenn du versuchst auf diese zuzugreifen, aber du musst trotzdem jedesmal dein gesammtes Programm neu uebersetzen, wenn du irgendwas an den nicht oeffentlichen Teil veraenderst. Ein stabiles oeffentliches Interface muss man sich in C++ durch abstrakte Klassen erkaufen, was virtuelle Methoden erzwingt.
-
DEvent schrieb:
Im Gegensatz zu dem Beispiel mit C ist das oeffentliche Interface "beschmutzt" durch private Methoden und Attribute. Das hat zur Folge, dass der C++ Compiler dir zwar eine Fehlermeldung ausgibt, wenn du versuchst auf diese zuzugreifen, aber du musst trotzdem jedesmal dein gesammtes Programm neu uebersetzen, wenn du irgendwas an den nicht oeffentlichen Teil veraenderst. Ein stabiles oeffentliches Interface muss man sich in C++ durch abstrakte Klassen erkaufen, was virtuelle Methoden erzwingt.
Schon mal was von Pimpl gehört?