Programiersprache für Anfänger
-
Don06 schrieb:
Dass man sich um die Verwaltung seiner Ressourcen selbst kümmern, muss, gilt hingegen sogar in Sprachen, die einen Müll-Sammler haben, da der nur für die Verwaltung des dynmaischen Speichers, nicht aber für externe Ressourcen, wie Filehandles verantwortlich ist.
Was ist mit Finalizern?
-
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, muß man nur die Klasse sauber entwerfen, und muß sich nachher nur noch Gedanken um die Lebensdauer von Objekte machen. Fehler die dabei auftreten sind meist leicht zu finden. Bei den Sprachen mit Finally muß immer daran denken wie lange soll das Objekt leben, und muß noch den eigentlich überflüssigen Finally-Block hinschreiben. Statt einmal den Code zu schreiben, muß man ihn n-mail hinschreiben - sehr sinnvoll.
-
asc schrieb:
Wenn aber jemand ins Blaue programmiert ohne sinnvolles Buch oder ähnliches wird er in JEDER Programmiersprache scheitern. Und da sind Sprachen die nah an der Hardware sind (Assembler, C, C++...) zwar stärker betroffen...
mit hardwarenähe hat es doch nix zu tun. komplizierte sprachelemente mit gefährlichen nebeneffekten, mehrdeutigkeiten, unleserliche fehlermeldungen, aushebelbare typisierung (man kann fast alles in alles casten) usw. sind alles sehr böse dinge. übrigens sagst du, dass du C und C++ gleichermassen kompliziert findest. wie verträgt sich das mit der tatsache, dass C++ C als untermenge beinhaltet?
-
ibominka schrieb:
Hallo zusammen
Ich Möchte Programmieren (C) lernen.
Kann man mir sagen was für einen softwareoder Programm
ich brauche und wo ich das finde?
Dankees tut mir leid. das ist kein thread für anfänger, sondern für jene, die meinen sie seien profis und könnten sich hier profilieren mit ihrem spezialwissen.
du brauchst erstmal nen compiler. ne ide ist auch praktisch, weil dir die viel arbeit abnimmt. und vor allem brauchst du ein gutes buch!
http://www.c-plusplus.net/forum/viewtopic-var-t-is-41476.html
http://www.c-plusplus.net/forum/viewtopic.php?t=39513
ich persönlich bin ein absoluter eclipse fan. damit mach ich C++, java, perl, php, xml, html, css und sql in einem: http://www.eclipse.org/gruss
-
ibominka schrieb:
Hallo zusammen
Ich Möchte Programmieren (C) lernen.
Kann man mir sagen was für einen softwareoder Programm
ich brauche und wo ich das finde?
Dankeschau auch mal hier: http://www.thefreecountry.com/compilers/cpp.shtml
-
Merci Jungs
Das heisst ich sollte Das : (Microsoft Visual Studio 2008 Express Editions mit SP1) runteladen und instalieren ?
wenn Ja ? und dann?
und was für ein Buch brauche ich?
-
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.