C# C+ C++ oder doch Java !?!?

Hallo!

Ich war bis jetzt der meinung das man alles was man Programmiert auch direkt ändern können sollte, also websachen, perl etc.

Nja jetzt will ich mal meine erste „Compilierte“ Sprache erlernen

Morgen geh ich los und kauf mir ein fettes buch, aber was?

Ist C# C+ und C++ überhaupt das selbe?
wenn nicht was sollte ich dan erlernen?

Und was hat bessere Zukunftsausichten (JOb mässig) C oder Java?

Ich mag ja eigentlich M$ Sachen gar nicht, aber C ist einfach zu allgegenwärtig um es zu ignorieren… (leider… hoffentlich ist das nicht so bescheuert wie alles andre von M$ das ich kenne)

Ich hab momentan nichts zu tun, also will ich mich da voll reinhängen, aber ich will nicht meine energie ins falsche verschwenden…

Kompilieren könnte ich beides im LInux…

Ja wäre für tipps anregungen, und vieleicht auch buchvorschläge offen!

l.g. seta

hallo

frage deine frage 3 verschiedene „profis“ und du wirst mindestens 4 völlig verschiedene antworten bekommen. und jeder ist überzeugt, dass seine antwort die einzig seeligmachende ist.

zunächst einmal: du hast vier teilweise massiv unterschiedliche sprachen aufgezählt, die unterschiedliche einsatzzwecke haben. ist so ähnlich wie die frage, ob du dir lieber einen sattelschlepper oder einen sportwagen kaufen sollst. die richtige antwort „hängt eben davon ab…“.

C ist eine schöne, klassische, prozedurale sprache, die den vorteil hat, relativ maschinennah zu sein und dabei doch (korrekter programmierung vorausgesetzt) relativ plattformunabhängig zu sein (im sinne von: der code lässt sich auf mehreren plattformen kompilieren). C-Compiler gibt es vermutlich für alles, was nullen und einsen kennt. grundsätzlich gibt es fast nichts, was du mit C nicht programmieren kannst. bei manchen problemstellungen bietet es sich halt eher an als bei anderen. vor allem, wenn es um schnelligkeit und ressourcenschonung geht, kommt man mit C ganz gut weiter.

C++ ist eine objektorientierte sprache. sie leht sich von der syntax extrem stark an C-programme an und ist daher für C-programmierer relativ leicht zu erlernen. tatsächlich kann man ein c-programm mit einem c+±compiler compilieren (kleinere änderungen vorausgesetzt) - nur dass man dann halt nicht die vorteile der sprache nutzt. objektorientierung ist ein völlig anderer programmieransatz als prozedurale programmierung. manche probleme lassen sich objektorientiert viel besser lösen, bei anderen problemen hilft es nicht viel. C++ ist sehr weit verbreitet (fast so gut wie C).

Java ist ebenfalls eine objektorientierte sprache, hat allerdings einen völlig anderen anspruch als C++. hauptaugenmerk von java war schon immer die plattformunabhängigkeit: der java-compiler übersetzt den sourcecode nicht direkt in vom prozessor ausführbaren maschinencode sondern in einen sogenannten bytecode, der dann von einer sogenannten virtual machine zur laufzeit in maschinencode umgesetzt wird. der vorteil dieser methode: du schreibst ein java-programm auf einer windows-maschine und kannst den erzeugten code sowohl auf linux oder am mac einsetzen - oder auf jedem sonstigem system, dass eine virtual machine bereitstellt. inzwischen ist java derart weit verbreitet, dass es für alle gängigen betriebssysteme eine virtual machine gibt. die plattformunabhängigkeit erkauft man sich aber mit zusätzlichen overhead, der die programme zwangsläufig langsamer macht.

C# ist die antwort von microsoft auf den erfolg von java. eigentlich wollte microsoft ja ein eigenes java entwerfen (das berüchtigte J++) dass aber mit derart vielen microsoft-spezifischen sonderheiten gespickt war, dass die plattformunabhängigkeit flöten gegangen wäre. nachdem sich sun erfolgreich dagegen gewehrt hat und es microsoft verboten wurde, eine nicht standard-konforme java-plattform aufzubauen, haben sie eben ein konkurenzprodukt entwicklet. grundsätzlich basiert C# auf .NET, einem allgemeinen framework für anwendungen. ähnlich wie java erzeugt man mit C# auch nur bytecode, der dann von einer virtual machine interpretiert wird. nur ist das ganze viel microsoft-lastiger. C# und java ähneln einander sehr stark (weitaus mehr als C# und C++). unter linux gibt es das mono-framework, dass versucht, eine art plattformunabhängiges .NET zu sein. es gibt auch C#-compiler für linux. allerdings ist mono noch nicht ganz so ausgereift und macht manchmal problemchen.

was soll man dir also empfehlen? nicht einfach. wenn du unbedingt unter linux entwickeln willst, würde ich von C# mal abraten. es ist zwar grundsätzlich plattformunabhängig ausgerichtet, zielt aber trotzdem viel zu start auf die microsoft-plattform ab. da wirst du nicht glücklich.

ich selber entwickle in java und halte es für eine einfach zu erlernende und trotzdem ziemlich mächtige sprache. mit eclipse gibt es eine sehr ausgereifte entwicklungsumgebung, die noch dazu völlig gratis ist. mit maven hat man sehr unkomplizierten zugriff auf einen riesigen fundus an vorgefertigten bibliotheken. gerade im web-bereich gibt es viele fertige lösungen, die einem das programmieren sehr erleichtern. wenn aber hohe performance oder ressourcenschonung gefragt sind, wirst du eher die finger von java lassen müssen.

C und C++ kenne ich nicht so gut, als dass ich dazu eine wirklich fundierte aussage treffen könnte. strebt dir der sinn nach sehr hardwarenaher programmierung (z.b. treiber entwickeln), wirst du eher bei C bleiben. ansonsten gleich mit C++ beginnen - die objektorientierung bringt in den meisten fällen leichter wartbaren und stabileren code.

lg
erwin

frage deine frage 3 verschiedene „profis“ und du wirst
mindestens 4 völlig verschiedene antworten bekommen. und jeder
ist überzeugt, dass seine antwort die einzig seeligmachende
ist.

aber ich glaub ich hab den richtigen Profi getroffen^^

Danke jetzt versteh ich das, also C wird warscheinlich auch nicht direkt an einem Terminal anknüpfen wie gambas, also kann ich mir das maschinennahe sparen

++ klingt schon so nach „extra - bugs“ also lass ich davon wohl auch die finger^^

und wenn C# auch nur im geringsten ähnlich ist wie Java werd ich mich wohl für Sun entscheiden…^^

Fettes danke! dachte nicht so etwas detailiertes zu bekommen!
Bin zwar immer noch unschlüssig weil es einfach alles vorteile hat, und ich vieles gerne mache, aber ich denke ich kann im nachhinnein sicher noch was andres Lernen, ohne durcheinander zu kommen…

Werd mich da auch mal genauer informieren, ich mein warum braucht M$ gleich so viele Sprachen? … lol

Auf jeden fall ein fettes danke!

l.g.

Ich möchte eigt. nur ergänzen das C und C++ nichts mit Microsoft zu tun haben.

Einzig C# basiert auf dem .NET Framework.

Dein liebes linux ist (ich glaube zumindest der kernel) in C geschrieben.

(genaueres über C und C++ findest du sicherlich bei Wikipedia.)

zusätzliche ergänzung:

der linux-kernel sowie alle wesentlichen gnu-tools sind in C geschrieben (zumindest zum grössten teil).

die oberfläche gnome basiert auch auf C

KDE hingegen setzt stark auf C++

kann durchaus auch ein grund für eine entscheidung sein…

generell ist es sicher besser, gleich mit C++ anzufangen, da man da C fast schon mitlernen muss.

lg
erwin

Hallo Fragewurm,

Werd mich da auch mal genauer informieren, ich mein warum
braucht M$ gleich so viele Sprachen? … lol

Du verkennst da noch etwas.

Programmiersprachen werden „erfunden“ um ein bestimmtes Problem zu lösen.

BASIC (Beginner’s All-purpose Symbolic Instruction Code) war als Anfängersprache gedacht.

Pascal verfolgte die selbe Idee, wurde aber nach didaktischen Gesichtspunkten konstruiert.

Fortran (FORmula TRANslation) war für den mathematischen Bereich.

C wurde entwickelt um Unix einfacher schreiben zu können und um Unix einfacher portieren zu können. Anfangs bestand C aus mehreren einzelnen Programmen welche nacheinander ausgeführt wurden: Präprozessor -> Compiler (dieser erzeugte Assembler) -> Assembler -> Linker.
C++ war anfangs eine zusätzliche Stufe, welche C-Code erzeugte.

Eine hübsche Sprache war auch APL. Die ideale Sprache für Mathematiker :smile: Allerdings benötigte man damals spezielle Terminals für diese Sprache. Fast alle Operatoren bestehen nur aus einem Sonderzeichen, dafür benötigt man für z.B. eine Matrizenmultiplikation auch nur ein einzelnes Sonderzeichen. Aber Stringverarbeitung mit APL wird dann schnell kompliziert.

FORTH ist eine kompakte Sprache, speziell für Steuerungen ausgelegt und ist auch zum Grossteil in FORTH geschrieben.

COBOL (COmmon Business Oriented Language) war ein Ansatz eine Sprache zu erfinden, welche wie normale englische Sätze aussieht und war für betriebswirtschaftliche Aufgaben gedacht. Man dachte dann kann auch die Sekretärin schnell ein Programm schreiben.

Mit ADA wollte man eine Eierlegende Wollmilchsau entwickeln. DIE Sprache für ALLES. Deshalb, und weil man sie in einem Gremium definiert hat, wurde sie so komplex, dass sie wieder sehr Fehlerträchtig ist.

Im KI-Bereich gibt es dann noch weitere Sprachen, welche nicht prozedural aufgebaut sind.
Manchmal werden auch Fehler zu stärken einer Sprache. z.B. bei LISP hatte man ganz vergessen, dass auch das Programm irgendwie verarbeitet und verwaltet werden muss :wink: Als Notlösung hat man dann auch das Programm in Variablen abgelegt, was dann zu einer der Stärken von LISP wurde. In der KI geht vieles nicht ohne selbstmodifizierenden Code.

Und noch zu MS. MS kommt ja aus dieser Ecke. Ursprünglich hat MS mit BASIC-Interpretern angefangen. 1981 hatte MS noch keine Ahnung von Betriebssystem und das DOS für den IBM-PC wurde eingekauft (QDOS) und praktisch unverändert an IBM lizensiert. Aber das ist eine andere Geschichte.

Das ist jetzt nur ein kurzer Abriss über die Sprachvielfalt.
Hier gibt es eine Graphik über die Verwandschaft von etwa 50 Sprachen sowie deren Zeitliches auftreten:
http://www.levenez.com/lang/

MfG Peter(TOO)

Hallo,

Nja jetzt will ich mal meine erste „Compilierte“ Sprache
erlernen
Morgen geh ich los und kauf mir ein fettes buch, aber was?
Ist C# C+ und C++ überhaupt das selbe?
wenn nicht was sollte ich dan erlernen?

Du solltest imho erstmal C lernen, denn
C ist das