Forum: PC-Programmierung Diskussion: C++, D, C#, Java und Visual Basic


von Mark (Gast)


Lesenswert?

Hallo.

Ich beschäftige mich „hobbymäßig“ mit Programmieren. Bisher habe ich mit 
C und (berufsbedingt) mit LabView programmiert.

Ich möchte jetzt auch „privat“ wesentlich tiefer und professioneller ins 
Programmieren einsteigen und bin derzeit auf der Suche nach einer 
geeigneten Programmiersprache für mich. Ein wichtiges Kriterium für mich 
ist, eine Programmiersprache mit Perspektive zu finden. Auch wenn man 
heute nur schwer beurteilen kann was in 10 Jahren ist.

Linux kann ich nichts abgewinnen, daher wird Windows als Plattform 
dienen. Für Embedded-Programmierung werde ich weiterhin bei C bleiben.

Zeit ist knapp, das gilt leider besonders bei mir derzeit. Daher will 
ich mich wirklich auch eine Sprache konzentrieren um dort entsprechend 
tief einzusteigen. Ich habe mir schon selbst einige Gedanken gemacht, 
würde aber jetzt gerne mal eure Meinung zu folgenden Programmiersprachen 
hören:

- C++ bzw. Visual C++ (Express)
- D (von manchen als „die Zukunft“ gepusht?)
- Visual Basic
- Java
- C#

Dies sind die Programmiersprachen zwischen denen ich schwanke. Alle 
haben scheinbare Vor- und Nachteile. Ich freue mich über eure Meinungen 
und erhoffe mir davon weitere Aspekte, die ich vielleicht bisher noch 
nicht bedacht habe.

Danke vorab für jede Hilfreiche Meinung.

von Heinz (Gast)


Lesenswert?

Es kommt immer darauf an, WAS du damit programmieren willst.
Jede Sprache hat ihre Stärken.

Ich würde C/C++ empfehlen.
Es ist auf jeden Fall das universellste.
Damit kann man alles machen. (Wenn auch nicht immer am leichtesten)
Ausserdem ist es für jede Hardware und jedes Betriebssystem verfügbar, 
was auf alle anderen eher nicht zutrifft.

von Marc (Gast)


Lesenswert?

>Es kommt immer darauf an, WAS du damit programmieren willst.
>Jede Sprache hat ihre Stärken.

Ich eher zu Java als zu C++ tendieren.

-Java wird mittlerweile öfter nachgefragt 
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

-Sehr einfach und schnell zu lernen

-Gute Entwicklungsumgebungen

-Stärken im Enterprise - Umfeld (J2EE)

-Starke externe Libs (Apache commons, Java3D, JavaMediaFramwork,...)

-...

Ist aber wieder ein Glaubenskrieg

von Norgan (Gast)


Lesenswert?

Um die immerwährende Diskussion etwas abzukürzen (als ob es noch nie 
eine Programmiersprachen-Diskussion gegeben hätte ...):

[ ] Sind alle scheiße

[ ] Sind alle super

[ ] $X ist super, alle anderen scheiße

von Johnny (Gast)


Lesenswert?

Wie bereits gesagt wurde, je nach Einsatz und Branche sind andere 
Programmiersprachen üblich.

Was ich so kenne und schon gesehen habe:

C -> Mikrocontroller, einfache Konsolenprogramme für Linux und co.

C++ -> PC Software die einigermassen portabel sein soll, Treiber,
       Zeitkritische Anwendungen

C# -> Stark am aufkommen für kleine, mittlere bis sehr grosse
      Softwareprojekte für Windows. Gute Unterstützung von Teamarbeit.

Java -> Embedded Geräte, Software für Banken

Visual Basic -> Software für Testsysteme in Produktionsstätten

Habe nie jemanden D programmieren sehen, das war eine ziemliche 
Totgeburt und daran wird sich so schnell auch nichts ändern.

von tuppes (Gast)


Lesenswert?

Sag mal etwas genauer, welche Art Programme du schreiben willst.

"Hardwarenah" programmieren kann man auf Windows eigentlich gar nicht 
mehr, außer man schreibt Device-Treiber, aber das ist Hardcore und zum 
Einstieg nicht zu empfehlen.

Zu C++: Du kannst schon C, würdest also vermutlich relativ zügig 
kompilierbaren C++-Code hinkriegen und kennst auch ein paar der 
typischen Fallen (Pointerfehler und so). Trotzdem, ein 
Do-it-yourself-Umstieg auf C++ geht oft schief, weil man zuerst komplett 
umdenken muss auf Objektorientierung, bevor man C++ "richtig" einsetzen 
kann, und viele lernen das nie - warum denn, geht doch auch so.

Es spricht also viel für einen klaren Schnitt und einen Neuanfang mit 
einer modernen Sprache (C# oder Java).

Ein Knackpunkt könnte die Schnittstelle zum Betriebssystem (WinAPI) 
sein. Die wird in C++ natürlich voll unterstützt. Ich weiß nicht, ob in 
Java alles geht. In C# ja - was nicht von .NET unterstützt wird, muss 
man sich über Platform-Invoke holen. PI-Code sieht nicht gerade schön 
aus, und man muss sich einlesen, aber die hässlichen Teile können danach 
in einem Interface-Modul konzentriert werden, und der Rest bleibt 
sauber. Außerdem gibts nicht mehr wirklich viel, wofür man PI braucht. 
Also auch hier keine Notwendigkeit für C++.

C# oder Java würde ich für Applikationen ohne Einschränkung empfehlen, 
je höher der Level (Oberfläche, Workflow, Kommunikation), desto besser. 
Die zur Verfügung stehenden Sprachmittel lassen kaum Wünsche offen. Die 
Ähnlichkeiten zwischen Java und C# sind groß, so dass da hauptsächlich 
der persönliche Geschmack den Ausschlag geben dürfte. Beide haben 
leistungsfähige Compiler und robuste Laufzeitumgebungen, die beim 
Debuggen gute Unterstützung geben.

Die wichtigste IDE für C# ist Microsoft Visual Studio, es gibt auch eine 
Express-Version. Daneben gibts noch SharpDevelop, aber das kenne ich 
nicht.

Für Java gibts mehrere populäre IDEs, hier entscheidet der Geschmack.

D hab ich in freier Wildbahn noch nie gesehen, das halte ich für eine 
Randerscheinung.

von ... (Gast)


Lesenswert?

C# ist eindeutig die beste Programmiersprache für Standard 
Windowsapplikationen. Die Sprache hat z.B. viel viel weniger Fallstricke 
als C++. Viele Fehlerquellen von C++ Programmen werden schon durch die 
Sprache vermieden. Die Unterstützung von Windowsfunktionen ist durch das 
.Net Framework einfach traumhaft. (Im Gegensatz zu Java.) Wenn du 
wirklich nur einfache Programme (d.h. nichts mit Live Videoverarbeitung 
o.ä.) nur für Windows programmieren willst, dann nimm C#.

von Frank (Gast)


Lesenswert?

Ich will hier mal für MEIN Lieblingstool in die Bresche springen:

RealBasic.

Es ist neben Java m.E. die einzige echte Cross-Platform-Umgebung. 
Welches Produkt bietet sonst noch identische Versionen (IDEs) für 
Windows, Mac OSX und Linux, auf denen man jeweils für die eigene und 
die anderen Systeme lauffähige Programme erstellen kann?
Und das noch dazu ohne vorher irgendwelche Virtual Machines 
installieren zu müssen? RealBasic erstellt echte Compilate.

Und wenn jetzt einer "iii Basic!" schreit - es ist ein sehr modernes 
objektorientiertes Basic mit Klassen, Methoden, Events ... man kann 
eigene Klassen und Objekte erstellen bzw. ableiten. Auf Netzwerk, 
Internet, Sound, SQL-Datenbanken und Grafik kann zugreifen.

Ausserdem hat man Zugriff auf alle möglichen Systemfunktionen, z.B. über 
API-Calls oder Declare-Statements (dann aber um den Preis der 
Plattformabhängigkeit).

Frank

von Gast (Gast)


Lesenswert?

Wobei viele der Meinung sind, das C# nicht unbedingt die Zukunft gehört. 
C++ hingegen hält sich seit Ewigkeiten, wird auch noch lange in der 
Zukunft eine wichtige Rolle spielen und man kann damit nahezu alles 
Programmieren.

von Johnny (Gast)


Lesenswert?

Wo ist das Problem; wenn man heute C# lernt heisst es ja nicht, dass man 
nicht übermorgen auch C++ lernen und umsteigen kann, falls bis dahin C# 
ausgestorben sein sollte.
In der Technik ist ja nichts konstant ausser der Veränderung, das sollte 
jedem bewusst sein, welcher in diesem Gebiet arbeiten möchte.

von tuppes (Gast)


Lesenswert?

> Wobei viele der Meinung sind, das C# nicht unbedingt
> die Zukunft gehört.

Ich wäre sehr gespannt, hierfür eine Begründung zu hören.

Ich bin fest vom Gegenteil überzeugt. C#-Programme haben nach meiner 
Erfahrung eine kürzere Time-to-Market und weniger Restfehler als 
vergleichbare C++-Programme. In allen Anwendungsbereichen, in denen ein 
kleiner Performance-Nachteil entweder in Kauf genommen oder durch 
schnellere Hardware kompensiert werden kann, wird C++ durch C# verdrängt 
werden, oder ist schon verdrängt.

von Henry (Gast)


Lesenswert?

Für das Zielsystem Windows:

Egal welche Sprache, das Help System der Entwicklungsumgebung muss gut 
sein. Und da ist Microsofts MSDN Library kaum zu schlagen.

Für einmalige Programme würde ich C# nehmen weil alles vorgefertigt ist 
man damit schnell zum Ziel kommt.

Bei einem eigenen Produkt, welches ich auch in 10 Jahren in Version 5 
verkaufe, nur C++ mit MFC.

von Sven P. (Gast)


Lesenswert?

C sollte man können, wenn man sich ernsthaft mit Programmieren 
beschäftigt, ist einfach Standard. Man muss ja nicht jeden Trick und 
jedes Detail begreifen, aber man sollte m.E.n. zumindest in der Lage 
sein, C-Quellen zu lesen und richtig zu deuten.

Einen riesigen Vorteil könnte man z.B. in frei implementierten Sprachen 
(Java, C, C++, C# usw.) sehen: Ich kann mir alles Nötige (Compiler, 
Laufzeitumgebung) runterladen und archivieren -- es bleibt trotzdem 
lauffähig und für immer wartbar.
Dreht Microsoft dagegen irgendwann mal .NET und C# ab, steh ich erstmal 
aufm Schlauch, wohingegen ich z.B. meine GCC-Quelltexte habe, die laufen 
mir nie mehr davon.

Alles andere --> ausprobieren, es gibt weder Patentlösungen noch 'die 
universelle Sprache'. C kann letztlich sicher 'alles', aber nicht 
unbedingt einfach. C++ kann auch 'alles', aber alles auf hundert 
verschiedene Arten und hat einige Dinge, die man gerne als 
'Designfehler' sehen könnte:
http://yosefk.com/c++fqa/defective.html

von Andreas W. (Gast)


Lesenswert?

hi

ich kann C/C++, C++/CLI empfehlen. Ist bei Visualstudio C++ bei.

C kannst du ja schon. Man kann C Quellcodeteile mit geringen Änderungen 
in C++/CLI übernehmen. Treiber sind leicht einzubinden. C++/CLI ist eine 
.net Sprache, als diese ist es auch leicht in Labview einzubinden.

von Arc N. (arc)


Lesenswert?

> daher wird Windows als Plattform
> dienen. Für Embedded-Programmierung werde ich weiterhin bei C bleiben.

C++ bzw. Visual C++ (Express):
Grundsätzlich: C++ (auch der kommende C++0x-Standard) wird in Zukunft 
bei weitem nicht die Expressivität und Funktionalität erreichen, die in 
anderen Sprachen möglich ist.
U.a. sind Reflexion, Introspektion, dynamische Typisierung, 
Metaprogrammierung und funktionale Programmierung entweder nur stark 
eingeschränkt (bis zur Unbrauchbarkeit) oder überhaupt nicht möglich.

D (von manchen als „die Zukunft“ gepusht?):
Hat zwar einige sehr gute Ansätze, ist aber weitestgehend eine Insel (es 
sind z.B. verglichen mit C++, C# oder Java nur sehr wenige Bibliotheken 
vorhanden http://www.dsource.org/projects/ bzw. 
http://www.wikiservice.at/wiki4d/wiki.cgi?AllLibraries)

Java:
Für Windows-Desktop-Anwendungen nicht zu empfehlen.

Visual Basic:
Wer's mag soll es benutzen...

C#: Standardsprache für das .NET-Framework

Zu den .NET-Sprachen / dem Framework noch ein paar Punkte:
- Man kann sich die Sprachen/Paradigmen aussuchen mit denen man ein 
Problem lösen will, von VB über C#, oder funktional mit F# (1), oder mit 
Ruby, Ada etc.
- Ist für so gut wie alles vom Embedded Gerät mit Micro/Compact 
Framework bis hin zu Webanwendungen (ASP.Net und Silverlight auf der 
Clientseite) und wirklich großen Projekten einsetzbar.
- Gute Dokumentation, viel Source-Code verfügbar (z.B. 
www.codeproject.com und www.codeplex.com)
-  Sehr gute Unterstützung für GUIs insbesondere WPF (benötigt zwar 
etwas mehr Einarbeitung als WinForms, ist dafür aber auch wesentlich 
flexibler als andere Lösungen)

(1)
AutoCad und F#
http://through-the-interface.typepad.com/through_the_interface/
Allgemeine Links, Blogs und Code
http://cs.hubfs.net/
Entwickler-Blog
http://blogs.msdn.com/dsyme/

Henry wrote:
> Für das Zielsystem Windows:
>
> Egal welche Sprache, das Help System der Entwicklungsumgebung muss gut
> sein. Und da ist Microsofts MSDN Library kaum zu schlagen.
>
> Für einmalige Programme würde ich C# nehmen weil alles vorgefertigt ist
> man damit schnell zum Ziel kommt.
>
> Bei einem eigenen Produkt, welches ich auch in 10 Jahren in Version 5
> verkaufe, nur C++ mit MFC.

Überspitzt formuliert: Das Programm soll erst in 10 Jahren bestenfalls 
Alpha-Status erreicht haben, dann aber auch hoffnungslos veraltet und 
gleichzeitig unwartbar sein...

Sven P. wrote:
> Einen riesigen Vorteil könnte man z.B. in frei implementierten Sprachen
> (Java, C, C++, C# usw.) sehen: Ich kann mir alles Nötige (Compiler,
> Laufzeitumgebung) runterladen und archivieren -- es bleibt trotzdem
> lauffähig und für immer wartbar.
> Dreht Microsoft dagegen irgendwann mal .NET und C# ab, steh ich erstmal
> aufm Schlauch, wohingegen ich z.B. meine GCC-Quelltexte habe, die laufen
> mir nie mehr davon.

1. Warum sollte das nicht mehr wartbar sein? VM mit OS, Libs, IDE, 
Quelltexten etc. archivieren reicht (sollte man auch bei anderen 
Projekten machen)

2. CLI und Sprache sind standardisiert
C#
http://www.ecma-international.org/publications/standards/Ecma-334.htm
bzw.
http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=42926
und CLI
http://www.ecma-international.org/publications/standards/Ecma-335.htm
bzw.
http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=42927

3. Es gibt mit der SSCLI schon seit längerem eine Referenzimplementation 
der grundlegenden Bibliotheken und Compiler im Quelltext
http://www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&displaylang=en

4. Die Quelltexte des aktuellen .NET-Frameworks sind vollständig 
verfügbar:
http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx

5. Mit mono und dotgnu existieren zwei alternative Implementationen

Gast wrote:
> Wobei viele der Meinung sind, das C# nicht unbedingt die Zukunft gehört.
> C++ hingegen hält sich seit Ewigkeiten, wird auch noch lange in der
> Zukunft eine wichtige Rolle spielen und man kann damit nahezu alles
> Programmieren.

Sagt wer? Die gleichen Leute die auch sonst ohne die geringsten 
Kenntnisse FUD verbreiten?

von Michas_rob (Gast)


Lesenswert?

Welches Paket verwendt ihr eigentlich für eure GUI's?

mfg

Michael

von Marc (Gast)


Lesenswert?

>Java:
>Für Windows-Desktop-Anwendungen nicht zu empfehlen.

Wie kommst du den auf den Mist ???

Desktopanwendungen sind genauso gut wie von jeder anderen 
Programmiersprache auch (siehe Swing, SWT)

von Arc N. (arc)


Lesenswert?

Marc wrote:
>>Java:
>>Für Windows-Desktop-Anwendungen nicht zu empfehlen.
>
> Wie kommst du den auf den Mist ???
>
> Desktopanwendungen sind genauso gut wie von jeder anderen
> Programmiersprache auch (siehe Swing, SWT)

Definitiv nicht.
Nur mal ein paar Beispiele:
- Look&Feel der Komponenten (egal ob SWT oder Swing, SWT ist nur näher 
an einer nativen Anwendung als Swing)
- Window und Komponenten-Refresh beim Ändern der Fenstergröße
- Rendering von Fonts und Renderingunterschiede zw. Java2D und SWT und 
dem nativen UI
- Performance/Antwortverhalten
Dazu kommen noch eine ganze Reihe von Gründen die aus Entwicklersicht 
gegen Swing und SWT sprechen. Neben der fehlenden Akzeptanz auf dem 
Desktop, ist dies u.a. die wesentlich geringere Produktivität.

von Christian U. (z0m3ie)


Lesenswert?

>Es ist neben Java m.E. die einzige echte Cross-Platform-Umgebung.
>Welches Produkt bietet sonst noch identische Versionen (IDEs) für
>Windows, Mac OSX und Linux, auf denen man jeweils für die eigene und
>die anderen Systeme lauffähige Programme erstellen kann?
>Und das noch dazu ohne vorher irgendwelche Virtual Machines
>installieren zu müssen? RealBasic erstellt echte Compilate.

ganz einfach ;)
Lazarus
Ist ein Delphi Klon der Delphi vielerorts schon fast verdrängt hat. 
Läuft und erzeugt in/für Windows,MacOS,Linux,WinCe,*BSD,Solaris. Der 
Compiler (Freepascal) kann für fast jede CPU code erzeugen (sehr ähnlich 
gcc) avr z.b. ist gerad in der mache. Die Klassenbibliothek ist 
weitestgehend (nicht ganz immer möglich bei Plattformunabhängigkeit) 
kompatibel zur Delphi VCL.
Man hat damit sehr schnell ein Programm zusammengeklickt, und Pascal ist 
eine sehr schöne saubere Sprache.

von Johnny (Gast)


Lesenswert?

Hatte früher in Delphi programmiert, bis ich dann auf Visual Studio mit 
C# umgestiegen bin. Pascal war nicht so übel, aber man schreibt sich 
fast die Finger wund ;-) (z.B. begin/end statt {/} in C, C++ oder C#)

von Christian U. (z0m3ie)


Lesenswert?

Wie lange hast du denn Delphi programmiert ?
Ich programmier C und Pascal und bin wirklich dankbar für das begin/end 
weil man den Code hinterher 10x besser lesen kann trotz gleicher 
codeführung.
Ich schreib im AVR Studio ca 6x so viel wie im lazarus da die 
Funktionsrümpfe und Klassengerüste und Variablendeklarationen alles 
automatisch vom lazarus erzeugt werden. Glaub ich hab schon seit 2 
Jahren kein begin/end mehr geschrieben.

von Stefan M. (Gast)


Lesenswert?

Ich fange mal mit dem Bashen an: Wer heutzutage noch neue Projekte mit 
C++ anfängt, der hat einen an der Waffel. Ich habe schon ziemlich viele 
Projekte erlebt. Die grausamsten wurden in C++ umgesetzt.

Sprachen mit Zukunft sind meiner Meinung nach Java und C# im Bereich 
"normaler" Anwendungen. Python und Ruby finde ich ganz attraktiv. Delphi 
wird scheinbar viel in kleinen Softwareschmieden eingesetzt.

Für den Hobby-Bereich: Mal ehrlich. Wie will man da tief einsteigen? Als 
Hobby-Programmierer kratzt man doch eigentlich immer an der Oberfläche. 
Meine Empfehlung an den Op: Nimm etwas einfaches, was leicht zu erlernen 
ist und nicht allzuviele Teergruben hat. C++ hat dermaßen viele 
Teergruben, daß ich es uneingeschränkt überhaupt nicht empfehlen kann. 
Außerdem soll Hobby doch Spaß machen? Vielleicht schaust Du Dir mal 
Python an?

Dann noch: Wenn Du wirklich was mit Zukunft lernen willst, dann kauf' 
Dir Bücher über Objektorientierung. Bitte nicht die Schinken von 
Markt&Technik. Uneingeschränkt empfehlen kann man die Autoren Martin 
Fowler, Bertrand Meyer (obwohl der manchmal etwas schläfrig schreibt), 
Kent Beck, Cay Horstmann (Core Java, das Buch zur Sprache schlechthin). 
Wenn möglich nimm' die englische Originalversion, die Übersetzungen sind 
meist fragwürdig.

Die Schlacht ist eröffnet, wer schmeißt mit Fischen? :-)

von Thomas (Gast)


Lesenswert?

Noch mal zu Java Progamm auf Windows. Ich persönlich habe das Gefühl, 
dass diese "träge" sind. Beispiel MATLAB. Rechnen kann es ja fix aber 
die Grafikausgabe oder einfach nur ein Menü anzuklicken dauert merklich 
länger als bei vergleichbaren Programmen. Geht's euch auch so?

von Christian U. (z0m3ie)


Lesenswert?

Ja kommt mir auch so vor (rein subjektiv) auch bei .Net programmen 
Beispiel das Paint.Net von Microsoft selbst.

von Stefan M. (Gast)


Lesenswert?

Ich kann das für Eclipse nicht bestätigen.

von Rüdiger K. (sleipnir)


Lesenswert?

Java besitzt aus meiner Sicht den Vorteil, das es moderne Anforderungen
wie GUI-Klassen schon aus dem Sprachumfang bedient. Dies ist aber mit
den C++-Bibliotheken Qt oder wxWidgets mehr als wettgemacht.
Erleichternd bei der Programmerstellung mit modernen IDE's wie Eclipse
ist weniger die Sprache an sich als der Umstand, das das Programm eben
die ganze Zeit im Hintergrund mitcompiliert wird und man Fehler schon
beim Tippen angezeigt bekommt. Auch dieser Vorteil ist mit der
Verfügbarkeit von C++-Entwicklungsumgebungen und Plugins für Eclipse
teilweise wieder wettgemacht.
Ein echtes Plus für Java ist die Ausführbarkeit von den Programmen auf
verschiedensten Plattformen ohne Neuübersetzung. Gut um kleinere Sachen
von der eigenen Homepage mal schnell vorzuführen.

Zu den Nachteilen von Java, wie ich sie empfunden habe:
Da ist zum einen der nicht zu verleugnende Performanceverlust, den man
gerade bei größeren Datenmengen (große Bilder etc.) deutlich spürt.
In dieser Hinsicht ist die Java-JIT-Compilierung nicht wirklich die
Lösung.
Warum? Zwei meiner Ansicht nach wesentliche Punkte:
 1. Java baut auf dem kleinsten gemeinsamen Nenner aller
Rechnerarchitekturen auf, der 0-Adreß-Maschine. Maschinencode für solche
0-Adreß-Maschinen gerade in Hinsicht auf die immer wichtiger werdende
Parallelverarbeitung (SIMD-Befehle) oder der Registervielfalt der
x86-Nachfolger umzuwandeln ist deutlich schwieriger als wenn man den
Hochsprachenalgorithmus vor sich hat.
 2. Der JIT-Compiler wird sich nie den Überblick über den Code leisten
können wie ein traditioneller Offline-Compiler. Ansonsten wäre sein
Resourcenbedarf viel zu hoch! Gerade diese weitreichende Codeanalyse
verhilft dem GCC in der letzten Zeit zu Leistungssprüngen.
 3. Man vergesse nicht, den Ressourcenbedarf des JIT-Compilers mit zu
erfassen!

Auch der Umgang mit Hauptspeicher kann schnell dazu führen das der PC
zum Auslagern gezwungen wird und so richtig quälend langsam wird.

Auch andere Sachen finde ich bei C++ besser gelöst.

Zum Beispiel den starken Overhead bei Java, bedingt durch die Ableitung
aller Klassen von Object.
Definiere ich mir unter C++ einen Komplex-Wert
complex<double> a;
so belegt dieser nur den Platz für zwei Double-Werte. Bei Java habe ich
den gesamten, durch Object mitgeschleppten Overhead! Das spielt bei
einem komplexen Wert nicht die Rolle, aber wie sieht es bei einer
1024x1024x1024-3D-Matrix aus?

Überhaupt finde ich die Template-Sache bei C++ viel besser gelöst als
die Schein-Templates unter Java, die über zeitraubende dynamic_casts
über die Object-Basisklasse laufen.
Die C++-Templates erlauben mir, Algorithmen generisch aber hocheffizient
umzusetzen - gerade auch durch die Möglichkeit der Spezialisierung.

Desweiteren vermisse ich oft bei Java die unsigned-Datentypen. Viele
Berechnungen in der Bildverarbeitung oder auch anderswo müssen in Java
sehr
kompliziert gestaltet werden weil eben kein unsigned-Wert vorhanden ist.

Das in C++ integrierte C-Erbe finde ich auch nicht unpassend. Man soll
ja nach dem natürlichsten Sprachmittel greifen, und was ist für
mathematische Funktionen natürlicher als Funktionen? sin(x) liest sich
leichter als java.lang.Math.sin(x).

Überhaupt kann die C-Untermenge manchmal recht hilfreich sein. Ein
parameterisierter Dateiname ist mit sprintf() noch immer am schnellsten
zusammengefügt, und zuweilen ist mir der Zugriff auf die "rohen"
Bytedaten auch ganz hilfreich.

Gerade im mathematischen Umfeld finde ich die Operatorenüberladung von
C++ recht gut. Was liest sich besser?

Java: Vector y = M.prod(x).add(o);
 -oder-
C++: Vector y=M*x+o;

Gerade bei komplizierteren Formeln erleichtert die C++-Notation deutlich
die Fehlersuche.

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Arc Net wrote:

> Definitiv nicht.
> Nur mal ein paar Beispiele:
> - Look&Feel der Komponenten (egal ob SWT oder Swing, SWT ist nur näher
> an einer nativen Anwendung als Swing)
> - Window und Komponenten-Refresh beim Ändern der Fenstergröße
> - Rendering von Fonts und Renderingunterschiede zw. Java2D und SWT und
> dem nativen UI
> - Performance/Antwortverhalten
> Dazu kommen noch eine ganze Reihe von Gründen die aus Entwicklersicht
> gegen Swing und SWT sprechen. Neben der fehlenden Akzeptanz auf dem
> Desktop, ist dies u.a. die wesentlich geringere Produktivität.

Hmmmm .... deswegen hat sich also Eclipse so stark verbreitet?

von Dieter E. (netdieter) Benutzerseite


Lesenswert?

Stefan May wrote:
> Ich kann das für Eclipse nicht bestätigen.

Eclipse ist auch  mit SWT realisiert, was recht Systemnah progarmmiert 
ist.
Das Vorurteil von langsammen Java-Anwendungen betrifft eigentlich immer 
die Swing-Anwendungen.

von Johnny (Gast)


Lesenswert?

> Wie lange hast du denn Delphi programmiert?

Habe Delphi 4, 5, 6 ein paar Jahre eingesetzt, allerdings nicht als 
Hauptaufgabe, sondern nur für kleine Tools um z.B. Daten per serieller 
Schnittstelle mit Elektronik auszutauschen, darzustellen, in DB ablegen 
etc.
Wie gesagt, ich fand Delphi super, aber in C# oder so schreibt man 
tendenziell schon weniger. Ich war damals auf C# und .NET umgestiegen, 
weil Delphi immer mehr zu einem Schattendasein und Nischenprodukt 
"runtergekommen" war. Mit C# Kenntnissen hat man heutzutage einfach die 
besseren Jobaussichten und der Support im Internet durch MSDN, Foren, 
Kollegen, ... ist unerschöpflich.

von Christian U. (z0m3ie)


Lesenswert?

Und genau das ändert Lazarus gerade grundlegend da die 
Plattformunabhängigkeit immer wichtiger wird, und Lazarus nicht nur 
Plattform sondern sogar Widgetsetunabhängig ist. Man kann z.b. unter 
Linux mal eben für QT und GTK2 ein programm ausliefern was in anderen 
Sprachen und Systemen unmöglich ist.

von Frank (Gast)


Lesenswert?

Als ich das erste mal von Lazarus las, war ich richtig begeistert. Dann 
habe ich mich auf die Suche ins Web begeben, um ein Lazarus zu 
downloaden und auf meinem Mac oder PC zu installieren.

Ähm ... naja, das wars dann erstmal. Nicht dass man da einen Installer 
fände und loslegen könnte. Nein, nach einigem Suchen bin ich drauf 
gekommen, dass man sich da mehrere Pakete zusammensuchen muss, einzeln 
installieren und selber complieren.

Sorry, nette Idee, aber da warte ich besser noch zwei Jahre und bis 
dahin bleibe ich bei RealBasic. Das kommt in einem Stück und 
funktioniert auf Anhieb. Ok, dafür ist es auch nicht kostenlos.

Wobei ich glaube, dass die Notwendigkeit des "Zusammenfrickelns" bei 
Lazarus keine Frage des Preises ist. Dieses Detail ist wohl eher auf 
(für mich) merkwürdigen ANsichten der Autoren zurückzuführen ...

Frank

von Christian U. (z0m3ie)


Lesenswert?

Das stimmt gar nicht, da hast du was falsch gelesen. Für Windows gibts 
komplett installer. Unter Linux kommts auf die Distribution an bei 
Ubuntu z.b. braucht man nur eine Paketquelle hinzufügen und kann es 
einfach über die Software repositores installieren. Auch für MacOS gibts 
nen installer. Kannst dich gern an mich oder das Deutsche Lazarus Forum 
(http://www.lazarusform.de) wenden mit deinem konkretem Betriebsystem 
dann kann man dir die einfachste Methode aufzeigen.

von Frank (Gast)


Lesenswert?

Ok, dann war ich wohl nicht sorgfältig genug. Wo fnde ich einen "out of 
the box"-Installer für Mac OS X? Danke und sorry.

Frank

von thb (Gast)


Lesenswert?


von Christian U. (z0m3ie)


Lesenswert?

Im Fall vom MacOS(X) würd ich nen daily Snapshot nehmen die sind immer 
ne ecke weiter als die Stable, gerade bei MacOS welches quasi die neuste 
unterstützte Plattform ist macht das noch ne menge aus. Du musst zuerst 
den freepascal Compiler+ Sources installieren und dann Lazarus. Alle 
drei pakete findest du in den neusten Versionen hier:

http://snapshots.lazarus.shikami.org/lazarus/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.