C++, Ja oder Nein?

Fragen zu allen anderen Programmiersprachen.

C++, Ja oder Nein?

Umfrage endete am 25.01.2006 03:51

Ja
25
51%
7
14%
Iss doch deine Entscheidung eh echt mal...
17
35%
 
Insgesamt abgegebene Stimmen: 49

Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Froggerprogger hat geschrieben: (Der Geschwindigkeitsvorteil, der sich manchmal durch sowas ergibt, sollte von guten Compilern wettgemacht werden.)
Diese Aussage ist Schwachsinn (die Aussage, nicht du. Bitte nicht verwechseln ;) ).
Es ist diese Art der Argumentation die uns Jahr für Jahr neue Hardware kaufen lässt, und selbst in den heutigen Tagen der Gigahertz-Rechner, gibt es immer noch sehr viele Anwendungsgebiete in denen Geschwindigkeitsoptimierung ein absolutes Muss ist, und das geht nun einmal nur mit hardwarenaher Programmierung welche nicht immer durch die Optimierung durch einen Compiler erreicht werden kann. Ich bezweifle, dass Programme wie Photoshop, 3dsmax, Bijou usw. auch nur halb so viel Spass machen würden wenn keine Pointer benutzt worden wären (wovon ich jetzt einfach einmal ausgehe, ist ja leider CS).
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

stimme FD zu.

die wirklich schicken sachen proggt man direkt,
und pointerschweinereien machen spaß/sind nützlich.

natürlich, nachvollziehbarkeit ist wichtig für teamprojekte,
aber die teammitglieder sollten das andere trotzdem können.

ansonsten benutz einfach nen game-maker und sag deinen kunden,
sie sollen sich nen größeren rechner kaufen.

dann lautet die antwort:

du braucht gar keine programmiersprache lernen,
weil es für alle problemstellungen auch zusammen-click-tools gibt (geben wird)
und das geschwindigkeitsproblem hardwareseitig überwunden wird.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Kaeru Gaman hat geschrieben:und hier drin hab ich auch eine zeile gefunden, die mir ermöglicht,
meine erste aussage zu illustrieren.

Code: Alles auswählen

while (*dest++ = *src++);
dies ist eine für C typische konstruktion. hier wird etwas gemacht,
was man in vielen anderen hochsprachen nicht machen kann.*
und es ist nur ein beispiel, C kann noch mehr.

und es ist definitiv C, nicht C++, denn hier ist nichts objektorientiert.
Du hast noch nicht verstanden was C++ ist, das sieht man
speziell am letzten Satz.
Du meinst scheinbar C++ ist nur Objektorientiertheit, und
dabei verzichtet es auf Grunddinge einer jeden Sprache, oder?
Das ist falsch, denn Schleifen, Bedingungen usw. gibt es
auch in C++, C# und Java.
Die obige Zeile ist genausoviel C++ wie es C ist. Die While-
Schleife ist genauso ein Bestandteil von C++ wie Pointer.

Du denkst nur es ist C, weil es dort genauso aussieht.
Versuche C++ als eigene Sprache zu sehen und stelle Dir
vor das es C nie gegeben hätte, sondern C++ allein
entwickelt worden wäre. Dann würde es in C++ trotzdem
die While-Schleife und Pointer geben.


Es hat hier niemand gesagt das man LowLevel-Dinge auf
keinen Fall lernen sollte. Der große Unterschied ist die
Reihenfolge!
Die Schüler lernen viel schneller wenn sie erst komplett die
modernen Sprachen lernen. Danach geht man dann ins
Detail und zeigt ihnen Tipps&Tricks wie sie optimieren.

Die Reihenfolge ist entscheidend dabei, wie lange der Prozess
als ganzes dauert. Auch wird man so unnötiges Zeug weglassen
können, denn nicht alles Alte wird mehr gebraucht.
Mit diesem Weg lernt man das aktuelle, das was Du in Deinem
Job als Programmierer brauchst, und dann dazu spezielle Feinheiten
und Optimierungen die es schon in der alten Welt gab, also
die LowLevel-Feinheiten.

Andersrum wird das ganze viel länger dauern. Du kannst dann
nicht etwas weglassen was Du nicht mehr brauchst.
Du mußt mit ASM anfangen und jedes Datail lernen um es
benutzen zu können. Danach steigst Du auf C um und
fängst wieder von vorne an alles zu lernen. Bytes, Words,
Longs, ... alles ist plötzlich anders und Dein ASM-Wissen
hilft Dir nicht dabei die Sprache C zu lernen.
Um C nutzen zu können mußt Du damit eine Weile arbeiten
und auch die ganzen C-Funktionen lernen. Auch die, die Du
später nicht mehr brauchen wirst.
Dann hast Du das alles im Kopf, ASM und C - und steigst
weiter auf zu C++/C#/Java.
Große Teile, die Du bisher gelernt hast, nützen Dir dann
nichts mehr.
Du hast die ganzen ASM-Mnemonics im Kopf. Was nützen
Dir die bei Java? Was nützen Dir die bei C#? Was nützen
Dir die bei C++?
Bei C++ kannst Du das nur über InlineASM nutzen wenn Du
auf der gleichen Maschine arbeitest, für die Du ASM kannst.

Was nützen Dir die C-Funktionen in Java? In C#? Nichts.
Verwenden kannst Du sie nur in C++, da es kompatibel
zu C ist. Und Du wirst sie verwenden! Und genau dadurch
wirst Du kein sauberes C++ schreiben. Statt nachzudenken
"wie mache ich es in C++?" greifst Du schneller auf Dein
vorhandenes wissen zu, also schreibst Du wieder C.


Das ganze ist also eine Optimierung des Lernprozesses!

Zuerst das aktuelle, und dann noch die Feinheiten und
Optimierungen aus der alten Welt, die Du brauchen kannst.
Viele Grundlegende Sachen wirst Du auch lernen wenn Du
das Moderne lernst. Die While-Schleife lernst Du in C++
genauso wie in C#, Java und PureBasic - keine Angst!

Der unnötige Ballast, der Dich dann auch oftmals noch
schlechten Code für OOP-Sprachen schreiben lässt, fällt
bei dieser Lernmethode einfach weg.
Andersrum wirst Du bei jeder neuen Sprache das alte
wieder benutzen. Wenn Du ASM gelernt hast, hast Du
eine bestimmte Art zu denken gelernt. Nun fängst Du
mit C an und wirst dann diese Art des denkens nutzen
um Probleme zu lösen. Dann lernst Du C++/C#/Java und
willst mit diesem Sprachen Probleme in der C-Denkweise lösen.

Ich habe auch unten angefangen und mich hochgearbeitet.
Damals auf dem C64 war es auch normal in ASM zu coden
und nicht in C++, C# oder Java. Danach kam die Umstellung
auf Amiga. Hier wollte ich das erste mal C++ lernen und
habe nur Bahnhof verstanden. Streams? Was um Himmels
willen sind Streams? Das gab es in meiner ASM-Denkweise
einfach nicht. Dort gab es nur Bits und Bytes...
Andersrum lernst Du aber bei modernen Hochsprachen auch
einfache Datentypen gleich mit! Du weißt dann trotzdem was
Bits und Bytes sind.

Wir, "die alten Hasen", haben die Entwicklung teilweise
zwangsläufig so mitgemacht, da wir aus einer alten Zeit
stammen!
Deshalb muß aber der heutige Einsteiger nicht auch ganz
unten anfangen (bei C64 ASM oder noch früher), und alles
durchmachen, was wir jemals durchgemacht haben. Ein
heutiger Student macht auch nicht die letzten Millionen Jahre
selbst durch, sondern lernt nur das gute aus dieser Zeit.
Das was er gebrauchen kann, ohne unnötigen Ballast. Genau
das ist die Optimierung, wodurch er in sehr kurzer Zeit das
Wissen von Millionen Jahren bekommt - ohne selbst millionen
Jahre zu leben. Es ist nicht nötig unten anzufangen und alle
millionen Jahre selbst durchzumachen. Ja, das ist garnicht
möglich! Solange geht das Studium nicht.

Beim programmieren deshalb ganz logisch: Zuerst mit einer
modernen Sprache anfangen. Wird im Studium -Gott sei Dank-
auch oft gemacht. Gleich C++/C#/Java lernen ist möglich ohne
irgend etwas vorauszusetzen.
Dabei lernt man schon die ganzen Grundlagen mit, denn auf
die können auch moderne Programmiersprachen nicht verzichten.

Danach lernt man dann noch die speziellen Feinheiten, die
man auch bei diesen Sprachen kennen muß, und durch die
man besseren Code schreiben kann. Unnötiger Ballast (C64 ASM ;)),
den man nicht gebrauchen kann oder der sogar stört, lässt
man einfach weg.

Wer meint C++/C#/Java bestehen nur aus Objekten (weil
er mal gehört hat das es OOP-Sprachen sind), und verzichten
dabei auf grundlegende Dinge wie Schleifen, Bedingungen,
Datenstrukturen, Algorithmen usw., der sollte das noch
einmal schleunigst überdenken.

Vielen Dank! ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

:shock:

Ähm, ja das war jetzt viel, sehr viel zu lesen...

Und mit C werd ich schon nicht anfangen, Weil ich mich den meinung von FD anschliessen kann ;) was will ich mit C?? Ich will das OOP haben sonst bringen mir ja DLLs nicht viel :D:D:D Ähm... Ich werd erstmal mit "guten" E-Books anfangen und dann naja.. wenn ich mal wieder Geld hab, mir ein Buch kaufen :) Ich finde eure Diskussion trotzdem sehr Interesssant. das müsste man glatt für die nachwelt aufheben. Und Java :o Werd ich nie machen, das iss ja übertriebenes OOP also.... noch mehr OOP und man hat nix normales mehr... was ist in Java nicht OOP?? naja...

Mir föllt grade ein das ein Kumpel von mir das Buch "Thinking in C++ Vol1/Vol2" besitzt das werd ich mir auch mal ausleihen.... soll ja gut sein, aber auf Englisch naja mal sehn... :D ich bin da mal zuversichtlich. Aber kann erst in den Ferien richtig mit lernen anfangen... Habt ihr eigentlich rel. viel erfahrung in c++ damit ich weiss ob ich hier auch Fragen kann wenn ich mal ein Prob. hab? Mit PureBasic werd ich trotzdem nie aufhören, iss einfach zu einfach um damit aufzuhören :wink:

Na denne fand das echt :allright: :allright: wie ihr da so einiges erklärt habt.
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Blackskyliner hat geschrieben::shock:

Ähm, ja das war jetzt viel, sehr viel zu lesen...
Ja, sehr viel Aufregung um einen Anfänger. Es ging hier aber
vom Inhalt her um noch viel mehr. Es ging um so viel, daß
es alte Programmierer teilweise nicht verstehen.
Also nicht wundern, wenn Dir manches zu hoch war.
Blackskyliner hat geschrieben:noch mehr OOP und man hat nix normales mehr...
OOP ist seit fast 10 Jahren das "Normale" in der Programmierwelt.
Für einige schon bedeutend länger, andere sind heute noch
nicht auf dem aktuellen Stand und wollen es auch nicht mehr
verstehen.
Blackskyliner hat geschrieben:was ist in Java nicht OOP?? naja...
Ich nehme irgendein Buch zu Java aus dem Regal neben mir
und schlage es wahllos auf. Seite 191, Kapitel 7.
Ich bin bei der Erklärung zur Anweisung "continue" gelandet
und sehe das Beispiel:

Code: Alles auswählen

for( int i = 1; i <= 7; ++i) {
   if( i == 5 )
      continue;

   System.out.println("Quadrat von " + i + ": " + i * i);
}
Das ist Java. Das lernst Du wenn Du Java lernst ohne vorher
C zu machen. Wieviel OOP siehst Du?

Blackskyliner hat geschrieben:Mir föllt grade ein das ein Kumpel von mir das Buch
"Thinking in C++ Vol1/Vol2" besitzt das werd ich mir auch
mal ausleihen.... soll ja gut sein, aber auf Englisch naja mal
sehn... :D ich bin da mal zuversichtlich.
'Thinking in C++' gibt es beim Autor Bruce Eckel online:
http://www.mindview.net/Books/TICPP/Thi ... CPP2e.html

'Thinking in Java', 'Thinking in Enterprise Java', 'Thinking in Python'
und 'Thinking in Patterns' auch: http://www.mindview.net/Books/
(ohne 'Thinking' wird man nichts in dieser Welt ;))
Blackskyliner hat geschrieben:Mit PureBasic werd ich trotzdem nie aufhören, iss einfach zu
einfach um damit aufzuhören :wink:
Das haben schon viele gesagt. Warte einfach mal ab bis Du
die großen Sprachen beherrschst. Dann sprechen wir uns wieder... ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Also ich will eure Diskussion ja net unterbrechen, aber was ist denn eurer Meinung nach die beste IDE für C++ unter Windows die auch noch kostenlos sein sollte?
Benutzeravatar
Blackskyliner
Beiträge: 532
Registriert: 28.07.2005 00:54
Wohnort: /home/Blackskyliner/

Beitrag von Blackskyliner »

Dev C++ hat auch viele Libs zum UpdateDownload ABER ich empfehle trotzdem VC++ 6.0 Egalwelcheversion ich hab die AutorenEdition da kommt beim starten des kompellierten programms nur das man programme die damit erstellt wurden nicht verkaufen darf ;) ist aber von unbegrenzter laufzeit (ide und kompelliertes programm...)
Keine meiner Antworten ist endgültig, es kann passieren, dass ich den so eben geposteten Beitrag noch mehrmals ändere, um Doppelposts zu umgehen.
_________________
Purebasic Windows 7 x64 & Linux (Ubuntu 10.04LTS) 4.50[x64|x86] Nutzer
_________________
Projekte: YAED - Yet another Event Dispatcher
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Konne hat geschrieben:Also ich will eure Diskussion ja net unterbrechen, aber was ist denn eurer Meinung nach die beste IDE für C++ unter Windows die auch noch kostenlos sein sollte?
Kostenlos und aktuell zugleich, da solltest Du Dir mal
Microsoft VC++ 8.0 Express anschauen:
http://msdn.microsoft.com/vstudio/expre ... t/install/
(Visual C++ 2005 Express Edition 474,686 KB)

Eine Produkttour dafür gibt es hier:
http://msdn.microsoft.com/vstudio/expre ... /features/


Das ist allerdings standardmässig nur für C++.NET. Um damit
auch reine WinAPI-Programme erstellen zu können, brauchst
Du noch das kostenlose PlatformSDK:
http://www.microsoft.com/downloads/deta ... laylang=en

Nach der Installation von VC++Express und PSDK muß man
noch ein paar Dinge anpassen um es nutzen zu können.
Dafür gibt es ein Video auf dieser Seite:
http://msdn.microsoft.com/vstudio/expre ... /learning/
("Using Visual C++ Express Edition and the Platform SDK")

Wenn Du das DirectX SDK installiert hast ( http://msdn.microsoft.com/DirectX/ ),
mußt Du nur noch in der IDE die Pfade zu Include und Libs
hinzufügen (so wie beim PSDK), und schon kannst Du auch
DirectX-Programme schreiben.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Thx
(Langsam wird mir immer klarer das PB leicht zu installieren war)
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Das taeuscht , mal abgesehen von der Zeit fuer das herunterladen oder
installieren , hast du VC innerhalb einer Minute fertig eingerichtet . Ist
wirklich ein super Programm.
Antworten