C Bin mir nicht sicher- C, C++ oder C#

Was ist besser C# oder Java?

  • Java

    Stimmen: 16 43,2%
  • C#

    Stimmen: 21 56,8%

  • Umfrageteilnehmer
    37
  • Umfrage geschlossen .
Wenn es nicht C oder eines seiner Derivate sein muss, würde ich ganz einfach mal Python vorschlagen.

Vorteile:
+ sehr gut lesbar
+ deckt die üblichen Programmierparadigmen ab (imperativ, funktional, objektorientiert)
+ wenig drumherum, d.h. viel Funktion mit wenig Code (ohne dabei unübersichtlich zu werden wie Perl&Co)
+ große, gut sortierte Standardbibliothek
+ man kann mit dem Interpreter Schritt für Schritt vorgehen und jeweils sehen was passiert

Nachteile:
- Geschwindigkeit

Python erspart dem Programmierer sehr viele Dinge, die andere Sprachen dogmatisch voraussetzen, z.B. Klassen, Typisierung, Aufspaltung Funktionsdeklaration/-definition, Speichermanagement. Die Einstiegshürden sind sehr niedrig, so dass man sehr schnell Erfolge hat. Wenn man sich dann erst einmal ein wenig ans Programmieren gewöhnt hat, kann man sich dann auch an die schwierigeren Brocken heranwagen.

C würde ich heute nur noch dann lernen, wenn ich es wirklich brauche, z.B. OS/Treiber-Entwicklung. Ansonsten würde ich gleich mit C++ anfangen.

Um Spiele-Entwicklung würde ich mir erst einmal überhaupt keine Gedanken machen. Bis du überhaupt mal soweit bist halbwegs gescheit ein größeres Projekt umzusetzen werden mehrere Monate vergehen, selbst wenn du dich sehr intensiv damit beschäftigst.
 
Ich habe zuerst Assembler gelernt. 6502 Assembler, Z80A Assembler und 8085 Assembler. Dann MC 68000 Assembler. Irgendwann kaufte ich mir einen C Compiler und kam 10-20 so schnell vorwärts.

Wir haben also auf einer Skala:

Assembler->C->C++->C#

Ideal ist es, wenn Du das Alles drauf hast. X86 Mode, Real Mode, Protected Mode etc. pp.

C++ ist der leistungsstärkste Dialekt.

Für schieres C brauchst Du richtig Wissen über Prozessorinterna. Schieres C geht ab wie Schmitz Katze und ist was für sehr erfahrene Kernel Programmierer, gerade in Multiuser Multitasking Systemen. Pointerarithmetic ist extrem Fehleranfällig.

Objektorientierte Programmierung ist prinzipiell Stand der Dinge. Wenn Du super modern programmieren willst im dotNET Framework ist C# die Wahl schlechthin. Nicht für die Katz gibt es bei www.mycsharp.de richtige Größen der Szene.

Wenn Du Microcontroller und Profi Games programmieren willst, rate ich Dir zu C++. Es ist wie gesagt der leistungsstärkste Dialekt im Vergleich zur Entwicklungszeit.

In Assembler kannst Du Alles machen, in C fast Alles, in C++ auch fast Alles. C Sharp ist geil und läuft als Managed Code. So schnell bekommst Du damit keine Bluescreens hin.
 
Zuletzt bearbeitet:
holy schrieb:
Btw. hier fragt ein absoluter Anfänger nach Hilfe und ihr zwei Spezies kommt mit kram wie Einnahmequellen und Vendor-Lockin. Erstmal sollte er Programmieren lernen. Ob er das jetzt mit Java oder C# macht ist sowas von egal.

Genau das wollte ich auch gerade schreiben und will es hiermit nochmal hervorheben. Glaubenskrieg ist doch hier denkbar unangebracht. Für die Grundlagen ist es völlig egal, womit er anfängt. Bevor er sich über die von euch angeführten Aspekte Gedanken machen kann/muss, werden ein paar Jahre vergehen.
 
holy schrieb:
Falsch.
Nennt sich Mono. ADO.NET (insb. EF < 6, ab 6 wird/ist es Open Source) und manche Windows Features (WPF, WMI, Directory Services) werden nicht unterstützt - alles andere schon.
Eben, Mono kann nicht alles. Mono versucht, möglichst viel zu implementieren, aber jedes Mal wenn MS was neues raus bringen müssen die Mono-Entwickler erst einmal per Reverse Engineering rausfinden, was jetzt schon wieder anders ist.
Wenn Mono funktionieren würde, dann hätte ich nicht schon solche Probleme gehabt, ASP.NET - Webseiten auf nem Apache-Server laufen zu lassen.

Btw. hier fragt ein absoluter Anfänger nach Hilfe und ihr zwei Spezies kommt mit kram wie Einnahmequellen und Vendor-Lockin. Erstmal sollte er Programmieren lernen. Ob er das jetzt mit Java oder C# macht ist sowas von egal.
Ja, und wenn er schon lernt, dann doch gleich mit einer flexiblen Sprache. Noch hängt er nicht im Vendor Lock-In, noch hat er die Wahl. Diese Wahl sollte NIEMALS "ich binde mich freiwillig an einen Monopolisten" lauten. Wer doch diese Wahl trifft sollte mal ernsthaft seine geistige Gesundheit überprüfen lassen.

mental.dIseASe schrieb:
Genau das wollte ich auch gerade schreiben und will es hiermit nochmal hervorheben. Glaubenskrieg ist doch hier denkbar unangebracht. Für die Grundlagen ist es völlig egal, womit er anfängt. Bevor er sich über die von euch angeführten Aspekte Gedanken machen kann/muss, werden ein paar Jahre vergehen.
Wenn er nur rumbastelt -> egal was er nutzt, also tut es auch Java
Wenn er irgendwann damit kleines Geld machen will: -> Java definitiv die bessere Wahl
Wenn er unproblematisch seine Anwendungen auf jedem OS verwenden will -> Java garantiert die ideale Wahl
 
C ist die Beste und solideste Programmiersprache, da sind wir uns doch wohl einig...

void main(void){};
 
Daaron schrieb:
Eben, Mono kann nicht alles. Mono versucht, möglichst viel zu implementieren, aber jedes Mal wenn MS was neues raus bringen müssen die Mono-Entwickler erst einmal per Reverse Engineering rausfinden, was jetzt schon wieder anders ist.
Äääätsch, eben nicht.

.NET ist eine Implementierung entsprechender ISO/IEC/ECMA-Standards und somit prinzipiell offen.
 
Möchte hier noch betonen, dass ich alles andere als ein Fan von Java bin und es dennoch für die bessere Wahl halte.
Das hatte ich im letzten Post nicht erwähnt und vielleicht verleiht das meiner Meinung etwas mehr Gewicht, denn ich
habe so den Eindruck, dass hier nur jeder sagt, die Sprache, deren Fan ich bin ist die beste!!!

Es geht darum, Programmieren zu lernen. Keiner fängt da mit einer 3D Engine an, also was spielt es für eine Rolle,
dass man für Unity mit C# entwickeln kann? Eigentlich sind viele Sprachen an sich für den Zweck gleichwertig, deshalb
sollte man darauf achten, was man zur Sprache dazu bekommt. Und das ist bei C# Abhängigkeit von Microsoft und
beschränkung auf ein einziges System. Java gibt einem hier in allen Belangen mehr Freiheit und das ist ein wichtiger
Punkt, den man bedenken sollte.

Zu sagen, beim Lernen muss man sich doch keine Gedanken über Vendor-Lockin machen ist gefährlich. Denn wenn
man erst einmal auf sie festgelegt ist, steckt man in dem Lockin drin und hat, wenn man die Nachteile erst einmal zu
spüren bekommt, keine Chance mehr, außer dann doch woanders neu anzufangen oder sich geschlagen zu geben.

Bei der Wahl Java oder C#: Java.

Davon abgesehen würde ich bei einer Sprache zum Anfangen darauf achten, dass sie nachgiebig ist und man schnell
positive Ergebnisse hat, die einen unterstützen, dabei zu bleiben. Interaktive Sprachen bieten sich an. Python wurde
genannt. Auch keine Sprache, die ich jetzt noch lernen würde (Ein Wort: Die erzwungene Einrückung des Codes), aber
grundsätzlich etwas, worüber man nachdenken könnte.

Ich habe erst vor einiger Zeit Scheme gelernt. Die Sprache ist auch interaktiv und eine Skriptsprache und hat meinen
Horizont enorm erweitert. Es hat für Anfänger seine Vorzüge, auch wenn ich es nicht uneingeschränkt empfehlen will.
Wenn jemand aber bereits Erfahrung im Programmieren hat und einmal etwas (vermutlich) ganz neues sehen will, das
ihn einmal über den Tellerrand blicken lässt: Seht es euch an.

Ein Buch für Programmieranfänger, das Scheme als Sprache verwendet, findet sich in meiner Sig. Videovorlesungen auch.
Beide empfehle ich trotzdem auch für oben genannte Leute, die ihr Wissen etwas verbreitern wollen.

Ich schweife zu viel ab, deshalb halte ich jetzt erstmal die Klappe.
 
Also unsere Coder in San Jose nahe San Francisco haben eine Software in Java geschrieben. Die sollte plattformunabhängig werden. Die hat ne Menge Bugs. Die sollte plattformunabhängig auf MACs laufen. Inzwischen haben die Neue Coder, die in C# binnen eines Jahres mehr auf auf die Beine gestellt haben als die Java Programmierer die Jahrzehnte lang.

Java ist nicht schlecht, aber nicht besser als ein C Dialekt.

Ich habe in Visual Studio eine Geräte Service Software programmiert in C#, die haben mir die Amerikaner abgekauft für teuer Geld.
 
Zuletzt bearbeitet:
Um es kurz zu machen. Ihr ratet zu Java und unter keinen Umständen zu C#, weil letzteres von Microsoft kommt?

@asdfmann
Bitte, bitte, lass die Enter-Taste in Ruhe. Das sieht so grausam in dem neuen Forum aus.

Btw. Auch wenn ich persönlich zu C# raten würde, einfach weil es meine favorisierte Sprache ist, habe ich bewusst an der Umfrage erst gar nicht teilgenommen, weil die Frage schon daneben ist.

@DigitalIllusion
Apples JRE lässt grüßen ;)
 
Nein, nicht weil es von Microsoft kommt. Ich habe nichts gegen die Firma, nutze selbst Windows und Visual Studio. Verstehe nicht ganz, wo dein Verständnisproblem liegt. Java gibt dem Entwickler Freiheit. .NET sperrt ihn ein.
 
Der TE fragt, welches C ? Und nicht Turbopascal oder BASIC oder JAVA oder OBERON, auch nicht Phyton... :-)

Ich habe meine Beiträge hin Richtung Welches C ausgedrückt und sage offiziell

void main(void){};

lea #$f8000000,a1
jmp (a1)

Segment:Offset

Memory Management Unit
 
Zuletzt bearbeitet:
Das bringt hier alles nichts: 100 Leute 100 verschiedene Meinungen.

Und ja ich finde Java oder Scala sind DIE Sprachen. Offen, plattformunabhängig, modern, decken das Meiste ab und es gibt unendlich viele Tutorials dazu. Das .NET Rootkit und die dazugehörigen Sprachen sind sicherlich nett, C# ist nach meiner Meinung nach sehr einfach und elegant, aber wenn es geht finde ich kann man ruhig die Finger davon lassen. Just my 42cent.
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
F_GXdx schrieb:
Äääätsch, eben nicht.

.NET ist eine Implementierung entsprechender ISO/IEC/ECMA-Standards und somit prinzipiell offen.
Ah, genauso "offen" wie Microsofts Machwerk OOXML? Sorry, aber Microsoft und offen, das funktioniert einfach nicht.

DigitalIllusion schrieb:
Java ist nicht schlecht, aber nicht besser als ein C Dialekt.
Ja, aber wenn schon ein C-Dialekt, dann doch C++, nicht C#. C# ist nur dem Anfangsbuchstaben nach noch C. C ist plattformunabhängig, C ist nahezu allmächtig. C# ist... na ja, ein MS Produkt halt.
 
Spike S. schrieb:
Gerade im Hinblick auf Spieleprogrammierung, wo es ja nun auf Performance ankommt, sollte man C oder C++ anfangen.
Nicht jedes Spiel treibt einen Rechner an seine Leistungsgrenzen. Vor allem ein Anfänger wird keinen Crysis-Konkurrenten raushauen.

Außerdem scheint mir die Frage nach der ersten zu lernen Programmiersprache häufig überbewertet. Programmieren ist ja mehr als nur die Syntax zu beherrschen. Und kaum ein Programmierer wird in seinem Leben nur mit einer Programmiersprache umgehen.

Programmieren ist ein wenig wie Autofahren - am Anfang ist man froh, immer das selbe Auto zu fahren... aber irgendwann fängt man an, in ein unbekanntes Auto einzusteigen, kurz zu schauen wo das Licht an-/ausgemacht wird und wie der Rückwärtsgang rein geht, aber dann war's das und man fährt los.

Die erste Programmiersprache zu lernen ist am schwierigsten, weil man dabei eben auch das Programmieren an sich lernen muss und eine Sprache. Später fällt es viel leichter, neue Sprachen zu lernen.


@Daaron:
Sprachen sind von Haus aus plattformunabhängig.
Die damit geschrieben Programme sind dies aber häufig nicht - weder in C noch in Java.

Java ist in so weit plattformunabhängig, dass die Programme dort laufen, wo es eine passende Java-Virtual-Machine gibt.
C kann zwar plattformunabhängig programmiert werden, muss dann aber häufig für jede Plattform compiliert werden, falls dies überhaupt möglich ist... weil eben Dinge genutzt werden, die nicht auf allen Plattformen zur Verfügung steht...
 
Zuletzt bearbeitet:
C# deswegen NICHT weil man da viel zu oft erstmal mit dem VisualStudio "erschlagen" wird, bevor man auch nur seine erste Zeile geschrieben hat. Bei Auswahl zw. den 3 Sprachen des OP (wobei ich die Auswahl nicht sooo toll finde) würde ich zu C oder C++ raten, in Verbindung mit einem guten Universitätskurs (die gibt's aufgezeichnet online) + Buch.

Bitte nicht noch so eine "Ich hab mir da mal eine GUI in VS zusammengeklickt und 4 Tutorials online copy-pasted, ich bin ein PROgrammierer!"-Karriere. Von mir aus kann man ja auch mit C# anfangen, trotzdem sollte man da bitte mit ordentlichen Ressourcen anfangen zu lernen, das ist viel wichtiger, als die Sprache in der man schreibt.
 
Glaubenskriege... :rolleyes:
Wäre nett, wenn ihr die außen vor lassen könntet.


Ich empfehle für den Anfang Java. Warum? Java ist recht stark strukturiert und nicht übermäßig kompliziert. Ich finde, das ist perfekt für den Anfänger.
Im Anschluss (nach >6 Monaten, eher >1 Jahr) empfehle ich mit C# weiter zu machen. Das setzt nochmal einige Konzepte mehr um, die in Java nicht drin sind und ist deshalb etwas schwieriger für den Anfänger.


Wichtig ist aber, egal, welche Sprache du wählst, bleib für eine längere Zeit bei ihr und programmiere, programmiere, programmiere. Nur Übung macht den Meister. Ich habe das in meiner Zeit als Tutor (Java, Zweitsemester) gesehen, dass viele Probleme einfach daher kommen, dass die Leute sich nicht hinsetzen und den Stoff mal umsetzen, den sie lernen*. Mach nach ein paar Kapitel eines Tutorials, das du durchackerst, mal Pause und rekapituliere, was du bis zu dem Punkt hattest. Damit meine ich, dass du alle Konzepte in irgendeinem beliebigen Programm umsetzt. Das hilft sehr viel!


*Nach einem Semester Java wollten doch tatsächlich einige Leute die Logik außerhalb der Methoden hinschreiben. Da fragt man sich schon, was die ein halbes Jahr lang getrieben haben.
 
1668mib schrieb:
Sprachen sind von Haus aus plattformunabhängig.
Die damit geschrieben Programme sind dies aber häufig nicht - weder in C noch in Java.

Java ist in so weit plattformunabhängig, dass die Programme dort laufen, wo es eine passende Java-Virtual-Machine gibt.
C kann zwar plattformunabhängig programmiert werden, muss dann aber häufig für jede Plattform compiliert werden, falls dies überhaupt möglich ist... weil eben Dinge genutzt werden, die nicht auf allen Plattformen zur Verfügung steht...

Natürlich gibt es Sachen, die nur in einer Umgebung laufen. Ich würde aber auch nie versuchen, ein Programm mit ncurses & menu in Windows zu kompilieren, genauso wenig eins mit DirectX-Befehlen in einer Linux-Umgebung einsetzen wollen.

Es ist aber deutlich leichter, in C auf solche Sachen zu verzichten als in C#.
 
Zurück
Oben