Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu C++ und Java IDEs, Compilern..


valdas
2009-10-02, 20:54:11
Hallo!

Ich habe bisher lediglich C# programmiert und darf bald in Java und C++ einsteigen (zwecks Studium). Jetzt frage ich mich, welche IDEs, Compiler, oder einfach Umgebungen ich benutzen soll. Das frage ich mich vor allem deswegen, weil ich da mit C# und dem Visual Studio sehr verwöhnt bin.

Das fängt ja schon bei der Kompatibilität an. Bei C# war das nie ein Thema - da gibts den Compiler aus dem VS, und ohne Behauptungen aufstellen zu wollen, ist die Einheit aus C# und diesem Compiler wohl die beste, die es gibt.

Was C++ angeht: ohne von der Sprache eine Ahnung zu haben, lese ich oft von Kompatibilitätsproblemen mit Compilern, stark unterschiedlichen Optimierungsweisen etc. pp.
Soll ich einfach wie gewohnt das Visual Studio und den darin enthaltenen C++ Compiler nehmen? Der Vorteil wäre, das ich das VS schon gut kenne, auch wenn die C++-Version da hinterherhinken soll (glaube wegen Intellisense oder so). Was hat es aber mit dem Redistributable-Package auf sich, braucht man das zwingend für Progamme, die aus dem VS kommen, oder ist da nur MS-spezifischer Kram enthalten (sprich, Hello World und 5+6 würde auch so funktionieren)?

Was Java angeht: was wäre denn hier die Analogie zum Visual Studio? Netbeans kommt von Sun, aber mich verunsichert, dass Eclipse so weit verbreitet ist. Was würdet ihr empfehlen? Aufgrund meiner Programmiervergangenheit tendiere ich ja eher zu etwas "offiziellem". Mir gefällt einfach, wenn alles wie aus einem Guss wirkt und ineinander greift. Ist das bei Netbeans gegeben?
Die Compilersache sollte hier aber kein Problem sein, da wird der von Sun (javac?) wohl der beste sein?

Wegen Java mache ich mir keine Sorgen, aber C++ wirkt schon irgendwie "dirty". Ansi, Iso (oder war das noch bei C?) Compiler X, Compiler Y, bla bla..


Danke schonmal!

samm
2009-10-03, 03:15:57
Für's Studium ist wohl die "Optimierungsweise" des Compilers höchst nebensächlich ;) Entscheidend ist wohl, dass sich dein Sourcecode per Makefile auf einer Unix-Plattform kompilieren lässt (gcc resp. g++), so ist das zumindest bei uns immer. Du brauchst dementsprechend mit hoher Wahrscheinlichkeit kein Redistributable Package - wenn du mal Dinge wie OpenMP brauchst, sind die kaum mit einer Microsoft-Extrasoftware einzubinden. Alle grundlegenden Sachen ("Hello World und 5+6" sowie auch sehr viel komplexere Dinge) sind mit Standardlibraries möglich.

Mir ist Netbeans weit lieber als Eclipse, da ich mich damit bloss Stunden herumgeschlagen habe, nicht Tage ;) Aber es hat auch Nachteile (muss installiert werden, ist, oder war zumindest, an eine Java-Version gebunden und die Community ist wohl kleiner). Wenn du weg vom VS willst, kannst du Netbeans auch mit C++-Support installieren, dann brauchst du aber einen Compiler, da anders als beim VS keiner dabei ist. Dito für Eclipse.

Grundsätzlich würde ich mir da nicht zu viele Sorgen machen, im Studium gibts immer Assistenten, die dir in Sachen IDE und Code-Richtlinien helfen können. Hoffe, nicht allzusehr an dir vorbeigeredet zu haben ;)

Coda
2009-10-03, 03:42:36
... auch wenn die C++-Version da hinterherhinken soll (glaube wegen Intellisense oder so).
Das ist mit VC++ 2010 Geschichte. Der Compiler an sich unterstützt sehr gut alle Standards - auch OpenMP ;)

maximAL
2009-10-03, 04:01:41
Das ist mit VC++ 2010 Geschichte. Der Compiler an sich unterstützt sehr gut alle Standards - auch OpenMP ;)
Auch C99? :biggrin:

Davon ab will ich doch schwer hoffen, dass gerade bei C/C++ ohne IDE angesetzt wird, vorallem ohne Visual Studio...

Coda
2009-10-03, 04:13:27
Auch C99? :biggrin:
Es heißt ja auch Visual C++ :tongue:

Nasenbaer
2009-10-03, 09:55:04
Für Java empfehle ich auch dringend NetBeans. Eclipse mag zwar mächtiger sein aber Netbeans ist wesentlich weniger überladen und gerade für Anfänger ein ganzes Stück übersichtlicher. Die Code-Vervollständigung etc. ist bei beiden vergleichbar und um verschiedene java compiler brauchst du dir keine gedanken machen - einfach das Sun JDK installieren und gut is.

Das aktuelle Visual C++ (2008 bzw. Version 9) ist wie bereits gesagt etwas mistig bei Code-Vervollständigung und ähnlichen Dingen - auch da finde ich Netbeans wesentlich besser. Für Netbeans-C++ unter Windows brauchst du MinGW (gcc für Windows) und MSYS (netbeans will das die make.exe von msys und nicht die von mingw) und dann kann man loslegen. Aber für einfache Projekt ist Visual Studio sicher erstmal unkomplizierter und da klappt dann IntelliSense auch noch problemlos.

Monger
2009-10-03, 11:36:21
Ich hab damals im Studium Eclipse für Java verwendet. Das ist jetzt schon ein paar Jährchen her, aber schon damals war Eclipse enorm komplex, aber auch sehr mächtig. Gerade was Debugging und Syntax Highlighting angeht, war das spitze - und in manchen Aspekten selbst dem Visual Studio von heute noch überlegen.

Netbeans empfahl sich zumindest damals vorallem wegen dem grafischen Editor. Das hängt halt sehr stark davon ab was man im Studium macht: wir haben praktisch gar nix IDE-mäßiges gemacht, deshalb haben wir das auch nicht vermisst.

Zu C++ kann und will ich nichts sagen. Ich hab KEINE Ahnung mehr, mit was wir damals gearbeitet haben. Dieses traumatische Erlebnis hat mein Hirn offenbar komplett ausgeblendet! :tongue:

Aber angeblich soll auch die Unterstützung von C++ in Eclipse mittlerweile ziemlich gut sein.

Gast
2009-10-03, 16:29:50
Danke an alle!
Okay, mal der Reihe nach.


Entscheidend ist wohl, dass sich dein Sourcecode per Makefile auf einer Unix-Plattform kompilieren lässt (gcc resp. g++), so ist das zumindest bei uns immer.

Warum genau? Meinst du weil viel Linux zum Einsatz kommt und die Programme darauf laufen müssen? Okay, das muss ich noch sehen.


Du brauchst dementsprechend mit hoher Wahrscheinlichkeit kein Redistributable Package

Wann brauche ich das überhaupt, bzw. was bringt mir das überhaupt? Sind das einfach Libraries, die von Microsoft kommen? Falls ja, warum kann ich die nicht mitliefern wie jede andere auch, sondern muss das Package installieren?
[/QUOTE]

Das ist mit VC++ 2010 Geschichte. Der Compiler an sich unterstützt sehr gut alle Standards - auch OpenMP ;)

Okay, das gefällt mir schonmal sehr gut, aber...


Davon ab will ich doch schwer hoffen, dass gerade bei C/C++ ohne IDE angesetzt wird, vorallem ohne Visual Studio...

Warum denn das? Weil der Lerneffekt im Texteitor größer ist ohne die ganzen Hilfsmittel? Klar, aber Intellisense, um z.b. die Member eines Objektes anzusprechen kann doch nicht schaden, unnötig schwer muss man es sich auch nicht machen. Und was spricht gegen das VS?


Für Java empfehle ich auch dringend NetBeans. Eclipse mag zwar mächtiger sein aber Netbeans ist wesentlich weniger überladen und gerade für Anfänger ein ganzes Stück übersichtlicher. Die Code-Vervollständigung etc. ist bei beiden vergleichbar und um verschiedene java compiler brauchst du dir keine gedanken machen - einfach das Sun JDK installieren und gut is.

Okay, in Sachen Java tendiere ich momentan zu Netbeans.


Ich hab damals im Studium Eclipse für Java verwendet. Das ist jetzt schon ein paar Jährchen her, aber schon damals war Eclipse enorm komplex, aber auch sehr mächtig. Gerade was Debugging und Syntax Highlighting angeht...


Hm, Syntax Highlining ist doch jetzt nicht allzu komplex, inwiefern ist Eclispe da mächtiger? Kann Netbeans eta nicht alles abdecken?

Monger
2009-10-03, 17:01:18
Hm, Syntax Highlining ist doch jetzt nicht allzu komplex, inwiefern ist Eclispe da mächtiger? Kann Netbeans eta nicht alles abdecken?
Eclipse markiert z.B. alle Verwendungen einer Variablen im Code, sobald man mit dem Cursor auf ihr steht. Sowas wird bei Visual Studio erst mit Version 2010 gehen. Ob Netbeans sowas kann, weiß ich nicht.

robobimbo
2009-10-03, 17:22:49
kann netbeans auch, zumindest schon seit 6.5 - ich glaub 6.0 konnte es auch

was ich bei netbeans schön find ist das ganze drumherum dabei ist (tomcat, glassfish, groovy, svn usw.) ohne erst grossartig plugins zu suchen und zu installieren

Coda
2009-10-03, 19:11:38
Eclipse markiert z.B. alle Verwendungen einer Variablen im Code, sobald man mit dem Cursor auf ihr steht. Sowas wird bei Visual Studio erst mit Version 2010 gehen. Ob Netbeans sowas kann, weiß ich nicht.
Ich verwende deshalb schon seit langem Visual Assist. Kostet halt ein paar Euro leider.

Ganon
2009-10-03, 20:11:17
Also mit NetBeans kriegt man wunderbar bunten Code hin :D

Achtung, Code auf dem Screenshot kann Bugs enthalten :D

http://xenon.42degreesoffreedom.com/~matti/bunt.png

maximAL
2009-10-03, 20:50:39
Warum denn das? Weil der Lerneffekt im Texteitor größer ist ohne die ganzen Hilfsmittel? Klar, aber Intellisense, um z.b. die Member eines Objektes anzusprechen kann doch nicht schaden, unnötig schwer muss man es sich auch nicht machen. Und was spricht gegen das VS?
Wenn man nur mit VS arbeitet, wird man kaum durchschauen, wie das ganze im Hintergrund funktioniert.
Am Ende kommen dann möchtegern-Programmierer raus, die ohne ihre 1000€ teure Windows Software völlig aufgeschmissen sind, weil sie nicht mal wissen was eine Objekt-Datei ist.

Nasenbaer
2009-10-03, 21:16:22
Ne ordentliche IDE für Code-Profiling wäre mal gut. Netbeans kanns ja nun auch mit C++ aber leider nur über SunStudio und vollwertig nur mit via solaris. :/

Coda
2009-10-03, 22:39:37
Am Ende kommen dann möchtegern-Programmierer raus, die ohne ihre 1000€ teure Windows Software völlig aufgeschmissen sind, weil sie nicht mal wissen was eine Objekt-Datei ist.
Es gibt VC++ Express umsonst :tongue:

Ansonsten: Ich finde das am Anfang tatsächlich nicht so wichtig. Und im Endeffekt muss man sich eh irgendwann damit beschäftigen.

ScottManDeath
2009-10-03, 23:06:55
Ich verwende deshalb schon seit langem Visual Assist. Kostet halt ein paar Euro leider.

Ja. Das einzige Stueck Software das ich 8h+ am Tag nutze. Das waren mir die $150 Wert. =)

Monger
2009-10-03, 23:09:59
Wenn man nur mit VS arbeitet, wird man kaum durchschauen, wie das ganze im Hintergrund funktioniert.

Das ist nunmal auch ein zentrales Merkmal der Objektorientierung, und nennt sich Kapselung.

Am Ende kommen dann möchtegern-Programmierer raus, die ohne ihre 1000€ teure Windows Software völlig aufgeschmissen sind, weil sie nicht mal wissen was eine Objekt-Datei ist.
Selbst der beste Zimmermann ist aufgeschmissen ohne seinen Werkzeugkasten. Kein intelligenter Mensch macht sich selbst das Leben unnötig schwer, wenn es das richtige Tool mindestens genauso gut kann.

maximAL
2009-10-03, 23:13:10
Selbst der beste Zimmermann ist aufgeschmissen ohne seinen Werkzeugkasten. Kein intelligenter Mensch macht sich selbst das Leben unnötig schwer, wenn es das richtige Tool mindestens genauso gut kann.
Meine Fresse, wir reden hier vom Einstieg in die Programmierung im Studium :rolleyes:

Monger
2009-10-03, 23:40:47
Meine Fresse, wir reden hier vom Einstieg in die Programmierung im Studium :rolleyes:
Das gilt natürlich auch für den Zimmermannslehrling.

ScottManDeath
2009-10-04, 00:11:26
Die ersten ein zwei Uebungen mit notepad :D cl,lib und nmake, und dann aber fix die IDE angemacht.

CoconutKing
2009-10-04, 11:27:58
kann netbeans auch, zumindest schon seit 6.5 - ich glaub 6.0 konnte es auch

was ich bei netbeans schön find ist das ganze drumherum dabei ist (tomcat, glassfish, groovy, svn usw.) ohne erst grossartig plugins zu suchen und zu installieren

Stimmt! Mit Netbeans bekommste für alle möglichen Fälle ein rundes Paket abgeliefert. Z.B. ist auch ein ganz guter Handy Simulator dabei, falls du deine Java Programme mal dort laufen lassen willst.

Jedenfalls ist eclipse für mich zu viel gebastel bis mal etwas läuft das mehr als das reine Eclipse braucht.

Bin auch wieder weg von Eclipse, ka warum das so gehypt wird.

Gast
2009-10-09, 15:01:06
Okay, Netbeans gefällt mir.

Wie jedoch schon vermutet, sollen wir Anfangs nur mit dem Java SDK + simpler Editor auskommen. Jetzt habe ich alle .class Dateien in einm relativ tiefen Verzeichnis.

Kann ich mir für die Eingabeconsole (zum Kompilieren mittels javac) irgendwie eine Variable erstellen, mit der ich gleich im entsprechenden Verzeichnis Kompilieren kann, ohne den langen Pfad angeben zu müssen?

Gast
2009-10-09, 15:01:43
(ich rede btw. von Windows)

Nasenbaer
2009-10-09, 21:05:52
Okay, Netbeans gefällt mir.

Wie jedoch schon vermutet, sollen wir Anfangs nur mit dem Java SDK + simpler Editor auskommen. Jetzt habe ich alle .class Dateien in einm relativ tiefen Verzeichnis.

Kann ich mir für die Eingabeconsole (zum Kompilieren mittels javac) irgendwie eine Variable erstellen, mit der ich gleich im entsprechenden Verzeichnis Kompilieren kann, ohne den langen Pfad angeben zu müssen?

Geh in die Konsole:

C:\>set MeinProjekt="C:\Users\Bla\"
C:\>cd %MeinProjekt%
C:\UsersBla\


Hilft dir das?

Asonsten kannste die Variable auch in den Windows-Systemeinstellungen einstellen.

Gast
2009-10-09, 21:13:00
Geh in die Konsole:

C:\>set MeinProjekt="C:\Users\Bla\"
C:\>cd %MeinProjekt%
C:\UsersBla\


Hilft dir das?

Asonsten kannste die Variable auch in den Windows-Systemeinstellungen einstellen.


Danke, so mach ich's auch schon.
Was ich noch nicht ganz verstehe:

C:\javac %MeinProjekt%\MyClass.java funktioniert
C:\java %MeinProjekt%\MyClass funktioniert nicht (nach Kompilieren)

Aber

C:\cd %MeinProjekt%
C:\MeinProjekt\java MyClass

funktioniert ?!?


Naja egal, es geht jetzt ja, danke.


Jetzt bräuchte ich nurnoch einen schlichten Editor. Vim ist mir leider etwas zu altbacken, taugt BlueJ was?

Nasenbaer
2009-10-09, 22:01:08
Wie wäre es mit Notepadd++? Hat ein super Syntax Highlighting.

Zu deinem Problem: Wenn du nicht im Ordner deines Projektes bist dann wird das Problem daher kommen, dass er noch weitere Dateien aus deinem Ordner braucht. Also entweder %meinprojekt% zu PATH hinzufügen oder aus deinem Projekt net .jar machen und mit java -jar %MeinPorjekt%\meinProg.jar starten. Ne jar bauen ist aber etwas aufwändig denke ich.

Gast
2009-10-09, 22:35:27
N++ ist gut, danke.

Was mir aber noch fehlt: dieses auto indent vom visual Studio, also wenn man mit gescheiften Klammern einen neuen Scope aufmacht, dessen Inhalt automatisch eingerückt ist.

"Automatischer Zeileneinzug" gibts in den optionen, aber der war per Default schon angehakt und es tut sich nichts, leider..

Gast
2009-10-09, 22:47:47
Das Plugin autoindent hab ich schon getestet, aber entweder mach ich was falsch, oder das Ding ist verbuggt. eim Block/Scope öffnen macht das Plugin schön mit, nur beim schließen bleiben dann alle Klammern auf einer Ebene, statt wieder nach links zu wandern.

Nasenbaer
2009-10-09, 23:12:14
Für erste Gehversuche wirds wohl sonst auch so gehen - sobald du das prinzip verstanden und verinnerlicht haste kannste dann ja eh zu ner ordentlichen IDE wechseln. Oder du nutzt die IDE einfach als Editor für deine Dateien ohne ein Projekt anzulegen.

mittelding
2009-10-10, 15:55:40
Gibt es eigentlich die Java 6 Core API Doku auch zum download? Finde bei Sun nur die Onlineversion, bräuchte es aber offline.
Sind dort btw. alle in Java enthaltenen Standardklassen dokumentiert, oder geht es wirklich nur um den "Core"? Suche praktisch sowas wie die MSDN-Doku von C#, nur eben für Java und offline.

Darkstar
2009-10-10, 16:07:07
Gibt es eigentlich die Java 6 Core API Doku auch zum download?Ja:
Java SE 6 Documentation (http://java.sun.com/javase/downloads/index.jsp#docs)

mittelding_
2009-10-10, 16:11:10
Cool, danke!

Der_Donnervogel
2009-10-10, 20:20:46
Da hier bisher keiner was zu Eclipse geschrieben hat möchte ich auch mal was dazu sagen.

Ich persönlich benutze allerdings Eclipse am liebsten da es ein paar nette Funktionen hat. Wobei ich es nur mit Visual Studio vergleichen möchte, da ich Netbeans sicher schon 2 oder 3 Jahre nicht mehr benutzt habe. Beispielsweise ist es bei Eclipse sehr angenehm wenn man Klassen benutzt die noch nicht importiert sind dies durchs IDE erledigen zu lassen. Bei VS geht das nicht so schön vollautomatisch. Auch beim Coderefactoring, bei der Codevervollständigung und bei der automatischen Generierung von Code ist Eclipse stärker. Sofern es ums reine coden geht ziehe ich Eclipse auf jeden Fall Visual Studio vor, da es die Summe aus vielen Kleinigkeiten ist, durch die sich Eclipse einfach besser bedienen lässt. Ich vermute mal dass der von einigen Vorpostern angsprochene "Visual Assist" genau solche Komfortfeatures bei Visual Studio nachrüstet. Wo Eclipse allerdings schwächelt sind die GUI-Editoren. Da ist Visual Studio eine Klasse besser.

Wo Eclipse auch sehr gut ist, ist wenn man etwas speziellere Dinge braucht. Es gibt viele Plugins und oft auch schon speziell vorbereitete IDEs die aus Eclipse und einer Sammlung passender Plugins für einen bestimmten Zweck bestehen und entsprechend abgestimmt sind. Da ist es auch ein enormer Vorteil, dass Eclipse nicht installiert werden muss. So kann man verschiedene Konfigurationen problemlos parallel betreiben. (z.B. eine Version für Java und eine für C++).

Abnaxos
2009-10-11, 20:03:40
Die Compilersache sollte hier aber kein Problem sein, da wird der von Sun (javac?) wohl der beste sein?
Auf den Compiler kommt es nicht so draufan, denn ein Java-Compiler darf nicht optimieren (das Flag -O für optimize hat seit 1.2 keine Wirkung mehr und ist nur noch da, damit alte Makefiles und Scripts nicht kaputt gehen). GCJ ergibt schlicht keinen Sinn, weil er Java direkt in Maschinencode compiliert und damit zwar vielleicht etwas kürzere Ladezeiten bietet, aber die Java-Programme deutlich langsamer sind, da HotSpot sehr viel besser compilieren kann, als «klassische» statische Native-Compilierung. Das Jikes-Projekt ist wohl gestorben, es bleiben also noch der Eclipse-Compiler und javac. Die beiden geben sich nichts, wobei javac meist vor Eclipse auf dem aktuellen Stand ist, da er ja zusammen mit jedem neuen JDK released wird. Bei Java-Compilern kommt es eigentlich nur drauf an, welcher Compiler mehr bzw. welche Bugs hat … ;) Evtl. könnte man noch sagen, dass javac möglicherweise daher ein wenig besser sei, weil er besser mit HotSpot abgestimmt sei, d.h. HotSpot kenne den Bytecode besser und könne daher effizienter optimieren. Ich halte das aber für ein Gerücht.

Zur IDE: Komisch, dass hier IntelliJ IDEA (http://www.jetbrains.com/idea/index.html) noch nicht erwähnt wurde. Besonders für Java ist diese IDE IMHO absolut unschlagbar, aber sie ist weder frei noch gratis, für Studienzwecke ist es wohl eher Overkill, eine IDE zu kaufen, wo es doch 2 gute IDEs als Open Source gibt. Erwähnen muss man IDEA aber auf jeden Fall trotzdem. :)

Ganon
2009-10-11, 21:42:39
Evtl. könnte man noch sagen, dass javac möglicherweise daher ein wenig besser sei, weil er besser mit HotSpot abgestimmt sei, d.h. HotSpot kenne den Bytecode besser und könne daher effizienter optimieren. Ich halte das aber für ein Gerücht.

Halt ich auch für ein Gerücht, da der Bytecode standardisiert ist. Die dürfen eigentlich nichts unterschiedliches ausspucken, außer vllt. bei Dead-Code Analyse und hier und da ein paar 0ptimierungen in der Bearbeitungsreihenfolge usw. ^^

Der_Donnervogel
2009-10-13, 21:11:31
Halt ich auch für ein Gerücht, da der Bytecode standardisiert ist. Die dürfen eigentlich nichts unterschiedliches ausspucken, außer vllt. bei Dead-Code Analyse und hier und da ein paar 0ptimierungen in der Bearbeitungsreihenfolge usw. ^^Der Bytecode ist standardisiert, das stimmt. Allerdings besteht der Bytecode nur aus einigen elementaren Kommandos und schaut aus wie ein Assemblercode. Sehr viele Konstrukte von Java existieren dort nicht. Beispielsweise gibt es keine Schleifen im Bytecode. Die Frage ist ob auch spezifiziert ist, wie bestimmte Konstrukte (z.B. eine while-Schleife) in Bytecode übersetzt werden müssen, oder ob nur die Semantik festgelegt wurde, was ein Kommando in Java macht, aber prinzipiell jede Bytecodefolge erlaubt ist, die diese erfüllt.

Eigentlich sollte ich es wissen. Habe im Studium mal einen Java-Compiler schreiben müssen, der ein kleines Sub-Set von Java unterstützt hat und dann noch eine kleine Java-VM dazu die den Bytecode dann ausführen konnte. Das ist aber schon ein Weilchen her, deshalb weiß ich nicht mehr ob Sun exakt definiert hatte, wie man die Java-keywords in Bytecode umsetzt. ;)