Welche Programmiersprache für mich?

Status
Für weitere Antworten geschlossen.
KamehamehaX10 schrieb:
Java ist langsamer als C#. Wenn Haarspalterei, dann richtig.

Das stimmt, aber C# ist nur für Windows brauchbar.
Der Gedanke hinter Java / C# ist Plattform Unabhängigkeit, deswegen die VM und die resultierenden Speed einbußen.
Nur Supportet MS diesen Gedanken nicht, so dass man außerhalb von Windows nur Probleme damit hat.
Deswegen rate ich von C# ab, auch wenn es einfach zu lernen ist.

Als Physiker definitiv C lernen, danach C-Objective. Wenn man tools für Berechnungen programmieren sollte, dann ist C die Sprache der Wahl. Das gleiche gilt auch für die höheren Jobs, Betriebssysteme programmieren, Treiber etc. Selbst die Java VM ist in C programmiert.

Java -> User Anwendungen
C+C-Objective -> Wissenschaft und da wo Speed wichtiger als Komfort ist
C++ -> Finger weg, Sprache OK, Compiler eine Katastrophe

C und Java ergänzen sich auch wunderbar. Was in Java von einem versteckt wird, verrät einem C.
Z.b. wie Arrays auf dem Speicher arbeiten, Strings verwaltet werden etc. Durch C bekommt jeder Java Programmierer ein Gefühl für Code Effizienz und weiß was lahm ist. Wenn man z.B. weiß das in Java bei benutzung von "String + String" Strings immer neu umkopiert und erstellt werden, wird man lernen den StringBuffer zu verwenden ^^
 
Zuletzt bearbeitet von einem Moderator:
übrigens, statt knete für matlab auszugeben oder es sich illegal zu besorgen kann man auch auf octave oder scilab zurückgreifen.

Java kann auch in der Wissenschaft verwendet werden. In der Informatik gibt es viele die auch mit Java arbeiten. Auch wenn es wirklich an die Algorithmen geht in z.B algorithmische Geometrie.
Für "Wissenschaft" müsste man dann eigentlich auch noch Fortran erwähnen.

Die Frage ist auch ob der eine Tag die zwei Stunden die eine Woche die man sich beim Unterschied von C zu Java spart wirklich notwendig sind oder ob man überhaupt in diesen Bereich vordringen kann.
 
rob- schrieb:
C++ -> Finger weg, Sprache OK, Compiler eine Katastrophe

So ein Quatsch! Wenn man schon so ein extremes Argument vorbringt, sollte man wenigstens ein bißchen ins Detail gehen.
 
antred schrieb:
So ein Quatsch! Wenn man schon so ein extremes Argument vorbringt, sollte man wenigstens ein bißchen ins Detail gehen.

Jo stimmt, zumal es mehrere gibt. Clang is der absolute Hammer, genauso wie der Intel Compiler.
 
Bei uns an der Uni wird auch immer mal mit http://www.sagemath.org/ gearbeitet, ist im Endeffekt leicht für Mathematiker aufgebohrtes Python.

Generell ist aber üblicherweise die Sprache recht egal, vielleicht lohnt es sich ja auch mal, alle hier erwähnten Kandidaten mal durchzuprobieren (z.B. in jeder Sprache ein paar Matrixmultiplikationen, Primzahlentests und einen Sudokulöser schreiben) um zu sehen, was dir mehr liegt/zusagt.
 
faraday schrieb:
Hallo liebe Leute,
ich habe jetzt 3 Monate Semesterferien und würde in der Zeit gerne mit einer Programmiersprache anfangen. Nun frage ich mich allerdings, welche Sprache für mich da die richtige ist.

Was möchte ich machen? Also, in erster Linie sollte die Sprache objektorientiert sein. Ich mag den Programmierstil sehr gerne. Zum Anderen möchte ich erstmal damit einfach nur herumspielen. Ein paar Dinge ausprobieren, ABER mit dem Hintergedanken, dass ich - als zukünftiger Physiker - eine Programmiersprache für wissenschaftliche Zwecke beherrschen sollte (Simulationen, Plots, lösen von DGLs etc.)

Ich schwanke momentan zwischen Java und C#, haber allerdings gehört, dass c++ wesentlich performanter ist, was mir beim wissenschaftlichen, rechenintensiven Programmieren durchaus zugute kommt. Ich möchte aber auch eine relativ ordentliche Bibliothek zur Verfügung gestellt haben.

Habt ihr eine Idee? Meine Tendenzen sind momentan: c++, Python, c#, Java, wobei Python ja nicht wirklich objektorientiert ist.

Liebe Grüße fara

Hi Fara,

ich benutze schon länger Java auf der Uni und bin nebenbei Wordpress Designer. In letzter Zeit kommt mir aber immer mehr Python unter (in kleineren Projekten und auch bei Vorstellungsgesprächen wurde ich gefragt ob ich schonmal mit Python zu tun hatte). Hat jemand anderer auch schon die Erfahrung mit Python gemacht? Also, das Pyhton immer beliebter wird!?

lg
Sonja
 
sonjaritter schrieb:
Dafür kann ich dir ganz ehrlich nur mein herzliches Beileid aussprechen. 10 Minuten in den Code gucken sollten dich von der Krankheit eigentlich umgehend heilen...

Hat jemand anderer auch schon die Erfahrung mit Python gemacht? Also, das Pyhton immer beliebter wird!?
Es ist immer genau das beliebt und gesucht, was gerade irgendwo in nem "Szenemagazin" als der neueste Trend beworben wird. Dabei kannst du frei zwischen folgenden Schlagworten & Technologien wählen: Node.JS, Ruby on Rails, NoSQL, v.a. MongoDB (IT IS WEBSCALE!),... nun ist halt mal wieder Python an der Reihe.

Die Frage ist eher, ob man davon leben kann, solchen Eintagsfliegen hinterher zu hecheln und auf jeden Trendzug aufzuspringen.
 
Na ja, komm ... Python als eine Eintagsfliege zu bezeichnen, ist aber schon fast beleidigend. ;) Klar muß man nicht jeden Trend mitmachen, aber Python ist schon ein sehr elegante und mächtige Spache. Ich glaube, man macht auf keinen Fall einen Fehler, wenn man Python lernt.
 
Lass die Finger ja von Java Applets.

Ob Java oder C#, dass muss von Dir entschieden werden. Ich arbeite mit beidem, beides hat ihre vor und nachteile.
C# ist für den Einstieg aber deutlich einfacher. Dafür fehlt einem nachher das "tiefere" wissen, weil man nicht mit gewissen Problemen konfrontiert wird. Visual Studio finde ich zudem deutlich angenehmer als z.B. Eclipse oder so. C# hat mehr Bibliotheken und ist meisten performanter. Dafür läuft es nur auf Windoof rechnern. Die anderen Lösungen mit C# auf anderen Systemen zu fungieren kann man vergessen, da hat man mehr Probleme als Lösungen.
C# hat viele Möglichkeiten, es wird einem vieles automatisch gemacht, auch dass kann positiv wie auch negativ sein. Klar hat man so ganz schnell viel Code zusammen und mit etwas Glück und Können auch ein stabiles gutes Programm. Aber wenn dann Probleme auftreten die auf compiler oder linking ebene stattfinden, viel spass beim austufteln. Auf der anderen Seite hat man die Probleme auch bei Java, nur da wird von einem verlangt, dass man mehr wissen darin hat, was es etwas einfacher macht, das Problem dann zu beseitigen.

C++ ist meist die gewählte sprache für optimierte Dinge. Oder Hardwarenahe dinge. Z.B. im Grafik oder Simulations bereich. Mathe etc. geht auch ganz einfach mit C. C ist aber nicht OO.

Du siehst, alles hat seine vor und nachteile. Es kommt darauf an was du machen willst. Dementsprechend nimmst du die optimalste Sprache dafür.

Da du aber einfach mal Einsteigen willst, würde ich dir eine schwerere Sprache empfehlen, damit du gleich von anfang an ein solides Grundwissen aneignen kannst, was dir später viele Probleme erleichtern wird.

Du kannst mit C# anfangen, kommst schnell ins Programmieren rein, bist aber genau so schnell wieder draussen, wenn es um Code/Compiler spezifische Probleme geht.

C/C++ ist hart zum einsteigen, man braucht viel Wissen damit überhaupt mal ein Programm läuft. Hat man das aber geschafft, versteht man was genau hinter einem Programm alles abläuft. Bzw. was es dazu braucht, bis es ein Programm ist. In C# und Visual Studio klickst du mehr oder minder 2-3 Knöpfe und es läuft...

Java würde ich erst später anfangen. Wobei wenn du früh damit anfängst, siehst du die ganzen nachteile und mühseligen dinge nicht, was auch positiv wäre, denn wenn du von C# aus kommst, wird dich Java vor allem am anfang ärgern :D

Phyton kenne ich leider nicht wirklich, daher kann ich dir dazu nix sagen...

Dieser Vorschlag kommt von eigener Erfahrung. Ich habe in einigen Bereichen schon gearbeitet. Oft habe ich mir auch gewünscht ne andere Sprachen nehmen zu dürfen als die die ich musste. Aber eben...

Mom. arbeite ich mich gerade in JavaScript, ASP.net und co ein. Also Webbasierte Technologien. Auch die haben ihre vor und nachteile.

Es ist schwer zu sagen womit man anfangen soll oder was für dich geeignet ist. Denn wie du siehst kommt es stark drauf an, was man machen will, so kann die Sprache von Projekt zu Projekt ändern.

Du musst für dich entscheiden was du willst.
Willst du hart anfangen, dafür später ein gutes und tiefes Wissen haben. Über den Background von Programmieren, was passiert wann und wo oder
willst du einfach möglichst schnell reinkommen und mal was gemacht haben, dafür fehlt dir das Hintergrundwissen und du wirst bei solchen Problemen, auf die du sicher stossen wirst, einfach länger haben, bis du sie gelöst hast.

Für 3 Monate Zeit kannst du eigentlich anfangen wo du willst, wenn du wirklich jeden Tag übst und weiter machst, kann man alles schaffen in 3 monaten...

greez
 
@domidragon: könntest du etwas ausführen (evt. Beispiele), warum du so zwischen Java und C# differenzierst bzgl. Komplexität und Problemlösungen?
 
Hab ich doch geschrieben. -.- Von der Sprache/Syntax her, bzw. wie man ein Problem lösen wird gibt es nur wenig unterschiede. Der Unterschied liegt an dem drumherum. Wie gesagt, VS oder Eclipse etc. Bibliotheken und wie man das Programm nachher ausgibt, bzw. was es dazu braucht.

In java, wobei das nicht viel mit der sprache ansich zu tun hat, ist der weg zu einem laufenden Programm deutlich steiniger. Dafür erfährt man mehr was "hinter der kulisse" abgeht. Wohingegen bei C# bzw. VS man ein laufendes Programm mit nur wenig klicks bereits hat...

Aber das habe ich oben in etwa geschrieben. Was genau willst du wissen?

C++ geht dann noch etwas tiefer in die Materie, bzw. man muss mehr wissen "vorweisen" um dort zum ziel zu kommen
 
Da würde ich nicht zustimmen. Ich sehe einfach keinen Unterschied zwischen Java und C#.
 
ich hatte neulich einen Artikel gelesen über die auf dem ersten Blick wenigen Unterschiede zwischen Java und C# und das sie wenn man es genauer betrachtet doch nicht soooo wenig sein sollen, leider finde ich den Link nicht mehr wenn ich ihn finde reiche ich ihn nach.
 
C# ist etwas moderner und hat etwas ausgefeiltere Konstrukte. Es ist ja im Endeffekt auch eine Java-Kopie, also wusste M$ ja wie's geht und hat es eben noch ein bisschen besser gemacht. Aber es ist nichts, was groß wichtig wäre.

Ich hab mit Java angefangen, da stolpert man dann schonmal über so Sachen wie Co-Routinen, yield und Co., wenn man das erste mal C# macht, aber im Endeffekt... sind halt nur Feinheiten, die guten Programmierern möglicherweise Komfort bringen und etwas kompakteren Code erlauben, mehr aber nicht.

Trotzdem finde ich viele Java-Schlüsselwörter intuitiver.

x = meineListe.size() [Java]

ist halt irgendwie besser als

x = meinListe.Count [C#]

weil es zum Beispiel auch nicht gegen die Datenkapselung verstößt ("alles ist eine Methode", beim Zugriff auf eine andere Klasse).

Und ich weiß nicht ob's nur mir so geht, aber bei Listenlänge denke ich zuerst an size und length, und ganz als letztes vielleicht mal als count. Das ist aber jetzt nur 1 Beispiel, in C# geht es mir relativ oft so, dass ich dann kurz wieder googlen muss nach dem Schlüsselwort, was einfach nervt.

Jedenfalls kommt man schrecklich durcheinander, wenn man öfter zwischen C# und Java wechselt, weil man ständig die Schlüsselwörter verwechselt. Schön wäre gewesen, wenn C# die Java Schlüsselwörter übernommen hätte. Dann wäre ich vielleicht auch ein Fan von C#.
 
Zuletzt bearbeitet:
Ja das Problem kenn ich man sitzt vorm Rechner und überlegt welche Schlüßelworte in welche Sprache gehören....
 
domidragon schrieb:
In java, wobei das nicht viel mit der sprache ansich zu tun hat, ist der weg zu einem laufenden Programm deutlich steiniger. Dafür erfährt man mehr was "hinter der kulisse" abgeht. Wohingegen bei C# bzw. VS man ein laufendes Programm mit nur wenig klicks bereits hat...

Wie gesagt, eventuell könntest du mal ein paar Beispiele anführen, ich kann jedenfalls keine erkennen. Meinst du eventuell, dass das VS bereits Templates für Winforms-Anwendungen bereitstellt? Ich weiß nicht, was Eclipse hier mittlerweile anbietet, aber mit IntelliJ kann man auch grafische Java-Anwendungen zusammenklicken, mit den Sprachen selbst hat das nichts zu tun - aber das hast du jetzt ja auch geschrieben.

F_GXdx schrieb:
weil es zum Beispiel auch nicht gegen die Datenkapselung verstößt ("alles ist eine Methode", beim Zugriff auf eine andere Klasse).

Warum verstößt C# hier gegen Datenkapselung? Count ist ein Property, kannst ja mal versuchen, es zu überschreiben. Datenkapselung hat nichts mit Methoden zu tun - in den meisten, nicht mehr ganz taufrischen Sprachen mögen Methoden die einzige Möglichkeit sein, Datenkapselung zu realisieren, aber das ist in C# nicht so (ich freue mich schon auf den ersten Kommentar, der schreibt, dass Properties intern auch nur Methoden sind, aber darum geht es nicht). In etwas moderneren JVM-Sprachen wie Groovy oder Scala ist es ähnlich und von Methoden ist auf den ersten Blick nichts mehr zu sehen. Das Webframework Play für Java besitzt sogar einen Mechanismus, bei welchem man alle Attribute als public anlegen kann und von außen auch so benutzt, hinter den Kulissen werden aber getter/setter-Methoden generiert.

Und was die Benennung angeht: Für Arrays hast du ebenfalls Length, für Listen das Count-Property und durch die Schnittstelle IEnumerable zusätzlich die Methode Count(). So viel nachschauen muss man da jetzt nicht :) Size in Java hingegen finde ich weniger intuitiv - ohne nachzuschauen kann man kaum wissen, ob damit der tatsächliche Inhalt einer Datenstruktur gemeint ist oder der intern reservierte Platz der Struktur. Aber das ist wohl Geschmackssache und kann eher weniger als pro oder contra verwendet werden.
 
Zuletzt bearbeitet:
carom schrieb:
Warum verstößt C# hier gegen Datenkapselung? Count ist ein Property, kannst ja mal versuchen, es zu überschreiben. Datenkapselung hat nichts mit Methoden zu tun - in den meisten, nicht mehr ganz taufrischen Sprachen mögen Methoden die einzige Möglichkeit sein, Datenkapselung zu realisieren, aber das ist in C# nicht so (ich freue mich schon auf den ersten Kommentar, der schreibt, dass Properties intern auch nur Methoden sind, aber darum geht es nicht).

Und im Übrigen kann man selbst, wenn man dazu nur Methoden einsetzt, das Prinzip der Datenkaspelung verletzen. Beispiel: eine Klasse, die über eine Getter-Methode ein handle / pointer / etc. auf Innereien der Klasse zurückgibt, die die Außenwelt überhaupt nichts angehen.
 
Obwohl ich hauptsächlich mit HTML + PHP arbeite, kann ich dir in Bezug darauf, dass du als Physiker damit etwas anfangen willst, empfehlen Java zu lernen. Habe damit ein halbes Jahr lang mal rumgespielt und allein dadurch, dass es eine der bekanntesten und weitverbreitesten P'sprachen ist, würde ich es lernen. Viel Spaß!

Just sayin'...
 
Ich weiß nicht, was Eclipse hier mittlerweile anbietet, aber mit IntelliJ kann man auch grafische Java-Anwendungen zusammenklicken, mit den Sprachen selbst hat das nichts zu tun - aber das hast du jetzt ja auch geschrieben.

Ja das meinte ich. Der Code, der Aufbau der Sprache ist, aufgrund der Kopie, so ähnlich wie mehrere Appartments in einer Wohnung. Also ziemlich gleich :D (Okok je nach Haus^^)

Jedenfalls meinte ich eben das drumherum. Die Sprache ansich ist mit ein paar Ausnahmen nur in der Syntax wirklich anders, aber selbst die ist leider täuschend ähnlich, weshalb man ja eben genau die zwickmühle hat:
Ja das Problem kenn ich man sitzt vorm Rechner und überlegt welche Schlüßelworte in welche Sprache gehören....

:D

Warum verstößt C# hier gegen Datenkapselung? Count ist ein Property, kannst ja mal versuchen, es zu überschreiben. Datenkapselung hat nichts mit Methoden zu tun
Das würde mich nun auch interessieren. Aber das ist genau ein gutes Beispiel was ich eigentlich aussagen wollte. Wenn man C# einfach nur braucht, hat man schnell was, weiss aber nicht was dahinter wirklich passiert. Es ist mehr verkappselt, im Grunde ist count nicht anders als Size(), nur hinter einem Property versteckt. Bei Java weisst du aufgrund von dem, weil du nachschauen musst, mehr darüber bescheid, was im Hintergrund genau passiert.
Klar im C# ist das auch möglich, aber es geht eben auch ohne. In jedem fall hat man aber Vorteile wenn man den Backgorund auch kennt, deshalb habe ich ihm zu einer eher schwierigeren und tieferen Sprache geraten als C# und Java...
 
Ja, eben. Weil Properties sowas sind wie Methoden, darum ist es ja ok. Bei Java macht man es aber einfach nicht, dass man auf Membervariablen einer anderen Klasse zugreift, sondern man nimmt eine Methode. Alleine schon, wenn man mal ein Interface extrahieren will.

Es muss nicht immer Datenkapselung verletzen, aber es tendiert dazu.
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

Zurück
Oben