PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierung: C oder C++



bonbon2k6
27-08-2007, 23:00
huhu,

hab mal ne Frage bezüglich Programmiersprachen, da ich wieder programmieren möchte (habe früher mal n bissl c++ gemacht --> is aber sicherlich alles wieder weg) und programmier atm nur websites.

Meine Frage betrifft Programmierung von Linuxsoftware sowie Programmierung des Systems selbst (quasi Systemprogrammierung ) und zwar, ist C oder C++ besser geeignet. Es macht ja Sinn, die Sprache zu lernen, welche am meisten verwendet wird oder welche weiterhin sehr häufig verwendet werden wird etc. Im Grunde sind sich die Sprache ja rel. ähnlich, aber eine zu lernen reicht ja erstmal.

mfg
bonbon2k6

P.S.: ich nutz Debian 4.0

peschmae
28-08-2007, 06:08
Naja, bei GNU/Linux ist das System schon praktisch komplett in C geschrieben. Ob es aber auch Sinn macht das zu lernen, kommt halt sehr darauf an was genau du nachher machen willst.

C ist halt schon eine relativ simple und beschränkte Sprache - für grössere Projekte (ausser evtl. im Embedded-Bereich) würde ich mir auf jeden Fall was suchen was OOP von Haus aus unterstützt (wie z.B. C++).

MfG Peschmä

anda_skoa
28-08-2007, 14:21
Ich glaube die Frage hatten wir schon paar Mal :)

Endet jedesmal in einem mittleren Flamewar.

Es ist eine Frage womit du besser klar kommst. Die paar Ausnahmen, z.B. Programmierung von DSPs, kannst du an einer Hand abzählen.

Ciao,
_

panzi
02-09-2007, 15:56
Kommt auch drauf an was du programmieren willst. Für einfache nicht performance kritische Sachen ist Python oder Ruby besser geeignet. Diese Sprachen haben auch bindings für viele GUI libs. Und wenn es performance kritische Teile gibt, kannman ja nur die in ein in C/C++ geschriebenes Modul auslagern.

7.e.Q
11-09-2007, 08:15
Dann fang ich mal an. :)

C++, weil C ist Spaghetti Kot.

jan61
11-09-2007, 19:02
Dann fang ich mal an. :)

C++, weil C ist Spaghetti Kot.

Wow - würdest Du diese Behauptung auch noch mit Tatsachen untermauern? IMHO macht der Programmierer Spaghetti-Code, nicht die Programmiersprache.

Jan

peschmae
12-09-2007, 09:33
Wow - würdest Du diese Behauptung auch noch mit Tatsachen untermauern? IMHO macht der Programmierer Spaghetti-Code, nicht die Programmiersprache.


Da musst du aber noch viel lernen :D

MfG Peschmä

anda_skoa
12-09-2007, 18:06
Wäre schön, wenn ihr das in einem fremden Thread unterlassen könntet

Danke,
_

moerk
12-09-2007, 20:24
Also C hat die Eigenschaft, hardwarenäher zu sein. Das muss zwar nicht sein, aber im Regelfall wird es so gemacht. Wenn man dann im System (z.B. Kernel) ist, muss man hardwarenah und performancekritisch Möglichkeiten haben.

C++ ist dagegen viel übersichtlicher.

Für mich ist es ganz einfach.

peschmae
12-09-2007, 23:28
Der Vorteil ist halt insbesondere auch dass C++ wirklich eine Übermenge von C ist; d.h. während du in C zwangsweise relativ Hardwarenah bist, hast du in C++ die Wahl (weil C++ halt alles kann; auch nicht zwingend immer ein Vorteil, des öftern auch das Gegenteil davon, aber ist halt irgendwie so)

MfG Peschmä

panzi
13-09-2007, 22:10
Der Vorteil ist halt insbesondere auch dass C++ wirklich eine Übermenge von C ist; d.h. während du in C zwangsweise relativ Hardwarenah bist, hast du in C++ die Wahl (weil C++ halt alles kann; auch nicht zwingend immer ein Vorteil, des öftern auch das Gegenteil davon, aber ist halt irgendwie so)

MfG PeschmäNaja, per definition ist das nicht 100% so. Also es gibt ein paar Sachen aus C die nicht im C++ Standard sind, aber praktisch alle C++ Kompiler trotzdem implementieren. Z.B. complex für komplexe Zahlen.

Und IMHO kann man auch nicht generell sagen, dass C++ übersichtlicher ist. Die Idee dahinter war das natürlich (Objekt Orientierung) aber die umsetzung, naja. So unübersichtliche, verwirrende und irreführende Fehlermeldungen wie's mit C++ (und Templates) gibt, wirst du in C nie haben. Von dem her ist C übersichtlicher.

Wirklich übersichtlich sind wohl eher nur so Sprachen wie z.B. Java (oder C# etc.).

peschmae
14-09-2007, 09:35
Naja, per definition ist das nicht 100% so. Also es gibt ein paar Sachen aus C die nicht im C++ Standard sind, aber praktisch alle C++ Kompiler trotzdem implementieren. Z.B. complex für komplexe Zahlen.

Ja, ich meine das so, dass das ein bisschen anders ist und du je nach dem ein C-Programm nicht ohne Änderungen durch jeden C++ Compiler jagen kannst; aber das ist in dem Falle ja egal, weshalb ich es auch nicht erwähnt habe.

Die gleich Funktionalität hast du trotzdem in C++ zur Verfügung...



Und IMHO kann man auch nicht generell sagen, dass C++ übersichtlicher ist. Die Idee dahinter war das natürlich (Objekt Orientierung) aber die umsetzung, naja. So unübersichtliche, verwirrende und irreführende Fehlermeldungen wie's mit C++ (und Templates) gibt, wirst du in C nie haben. Von dem her ist C übersichtlicher.

Naja, ich finde schon dass Objekte generell übersichtlicher sind. Das war ja wohl auch die Hauptidee dahinter... ;)
Klar kann man das auch so machen dass dem überhaupt nicht so ist... - das kann man immer.

Die irreführenden Fehlermeldungen sind ja auch kaum der Fehler von C++; sondern der des Compilers.

MfG Peschmä

panzi
14-09-2007, 22:45
Die irreführenden Fehlermeldungen sind ja auch kaum der Fehler von C++; sondern der des Compilers.
Nicht immer. Beim Chaos Communication Camp war da ein interessanter Vortrag. Da wurde auch gezeigt wie man mit zwei ansich korrekten Zeilen den PARSER in eine Endlosschleife bringen kann. Den C++ Parser. Jetzt kann man sagen, das ist ein Fehler von GCC, aber diese semantische Schleife ist von der Sprache her so definiert. Einen Kompiler der sich 100% an den Standard hält bleibt nix anders über. Die Gramatik von C++ ist stark kontestabhängig. Ken nahc dem was ein konkreter Bezeichner ist (Typ, Funktion, Variable) kann ein Ausdruck ein anderes Syntaktisches element ergeben. So ein Beispiel wurde auch gebracht. etc. etc.
Also ich bin schon der Meinung das man C++ in vielen Fällen den Vorzug geben sollte, aber nicht unbedingt wegen der Übersichtlichkeit, sondern wegen OOP. Wegen OOP gewinnt man Übersichtlichkeit, wegen der Syntax von C++ verliert man wieder welche.

Siehe: http://events.ccc.de/camp/2007/Fahrplan/events/1951.en.html
Oder gleich die Folien: http://www.fefe.de/c++/c%2b%2b-talk.pdf

Ich finde die Punkte sind alle valid, aber trotzdem, welche alternative gibts? Gibt keine echte, wenn's nativ kompelieren soll/muss, oder wenn man direkt C/C++ libs verwenden muss.

PS: Ein paar der Folien brauchen die Erklärung vom Vortragenden. Das schreib ich jetzt aber nicht alles zam. Der Rest ist echt genug.

peschmae
15-09-2007, 10:06
Also ich bin schon der Meinung das man C++ in vielen Fällen den Vorzug geben sollte, aber nicht unbedingt wegen der Übersichtlichkeit, sondern wegen OOP.

Darauf wollte ich eigentlich ursprünglich hinaus :)

Interessante Slides im übrigen :D

MfG Peschmä

RHBaum
25-09-2007, 08:47
NAja, ob nun C oder C++ den schlechteren Code liefert, darueber laesst sich echt streiten.

C ist meistens umfangreicher und die Thematiken verstreuter, man sucht Sachen die eigentlich zusammenhaengen an unterschiedlichen stellen.

C++ wiederum hat templates, die sind nicht jedermans sache, schwer zu erlernen und zu lesen, wenn man es aber kann, kann man tolle sachen mit machen. Nur mit dem verstaendniss isses dann halt schwerer.

Den Hauptvorteil macht aber die OOP aus. Dadurch lassen sich Thematiken viel eher modularisieren. Dadurch kann man unterschiedliche Teilaufgaben unterschiedlichen Programmieren zuweissen , und die gemeinsamkeit die alle verstehen muessen sind die schnittstellen. Durch den Code der anderen wuehlen braucht man dann ned mehr so haeufig.

Bei der schnittstellenorientierten Programmierung hat aber C++ definitiv die nase vorn, weil nun mal abstrakte klassen leserlicher und verstaendlicher sind wie funktionspointer deklarationen :-)

Bei projekten wo man selbst dran arbeitet, isses eigentlich wurscht. gutes C und gutes C++ ist beides auch gut managbar. Nur das ebend c++ schon mehr fertige Loesung fuer standardprobleme mitbringt (STL, container etc).

Ciao ...

Waxolunist
25-09-2007, 13:24
Also ich bin ein alter Java-Programmierer und durfte in den letzten 2 Wochen wieder C++ programmieren. Eher musste, da ActiveX gefragt war (hej, war nicht meine Entscheidung).

Und wenn ich daran denke, was ich in C herumbasteln hätte müssen, hätte ich z.B. keinen vector gehabt, da lob ich mir mal C++, obwohl ich das gleiche Programm in Java wahrscheinlich in weniger als der Hälfte der Zeit geschrieben hätte, was aber auch nur daran lag, dass meine letzte Zeile C++ noch aus der Studienzeit stammte. Also wenn, dann C++, wenn es schon keine anderen Alternativen gibt.

panzi
26-09-2007, 17:23
Also ich bin ein alter Java-Programmierer und durfte in den letzten 2 Wochen wieder C++ programmieren. Eher musste, da ActiveX gefragt war (hej, war nicht meine Entscheidung).

Und wenn ich daran denke, was ich in C herumbasteln hätte müssen, hätte ich z.B. keinen vector gehabt, da lob ich mir mal C++, obwohl ich das gleiche Programm in Java wahrscheinlich in weniger als der Hälfte der Zeit geschrieben hätte, was aber auch nur daran lag, dass meine letzte Zeile C++ noch aus der Studienzeit stammte. Also wenn, dann C++, wenn es schon keine anderen Alternativen gibt.
Ja, ein großer Punkt für C++ ist die STL. Die ist echt umfangreich. Trotzdem bei weitem nicht so umfangreich wie die Standard lib. von Java oder Python (aber das ist eine andere Geschichte).

Ein anderer Punkt wurde bereits auch angesprochen: Dadurch das in C++ OOP in der Sprache enthalten ist, sind zusammenhänge über die Grammatik sichtbar, und nicht erst auf Semantikebene. In C wird Code oft an 100.000 Orte verstreut wo in C++ das in eine Klasse zusammengefasst werden könnte und somit sofort ersichtlich wo alle Codeteile sind. Natürlich kann man in C auch entsprechende Konzepte anwenden, wenn man will. Es ist aber 1. ungemein schwerer und 2. weils nicht in der Sprache verankert ist, wird es meistens nicht getan.

Aber C ist IMHO von der Sprache her sauberer. Liefert viel weniger Probleme und wie gesagt viel einfach zu verstehendere/richtigere Fehlermeldungen.