PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Programmiersprache lernen?


wizardSE
2007-07-11, 09:11:30
Hallo,

ich würde mich gern in eine aktuelle Programmiersprache einarbeiten. Das letzte Mal in Kontakt mit einer solchen war in der Schulzeit, dabei war ich in Turbo-Pascal relativ sattelfest.

In welche Programmiersprache "lohnt" es sich heute in Hinblick auf die Zukunft einzuarbeiten?

Vielleicht habt ihr dann auch eine Buchempfehlung/Lernwebseite dazu?

Gruß
Wiz

Johnny
2007-07-11, 09:20:44
Hallo,

ich würde mich gern in eine aktuelle Programmiersprache einarbeiten. Das letzte Mal in Kontakt mit einer solchen war in der Schulzeit, dabei war ich in Turbo-Pascal relativ sattelfest.

In welche Programmiersprache "lohnt" es sich heute in Hinblick auf die Zukunft einzuarbeiten?

Vielleicht habt ihr dann auch eine Buchempfehlung/Lernwebseite dazu?

Gruß
Wiz
Oh je, wie oft hatten wir die Frage schon...

C# und Java werden sich wohl mittelfristig durchsetzten, bzw. haben es schon.

Bücher dazu:
http://www.galileocomputing.de/openbook/visual_csharp/
http://www.galileocomputing.de/openbook/javainsel6/
wobei vor allem das C#-Buch gut ist

darph
2007-07-11, 09:21:31
Die Programmierhochsprachen sind sich alle recht ähnlich. Der Teufel liegt im Detail und damit wirst du anfangs eh wenig zu tun haben. So gesehen wäre es jetzt egal, ob du jetzt mit beispielsweise c# oder Java anfängst - die wirklichen Unterschiede werden erst dann relevant, wenn du sowieso recht bequem von einer Sprache in die andere wechseln kannst. Bei uns in der Uni wird Java gelehrt. Finde ich nicht schlecht, da es recht zugänglich ist.

Aber auf dem Level, in dem das das Grundstudium stattfindet, hätte es genauso auch eine andere OO-Sprache sein können.

Viel interessanter zu lernen sind die Konzepte und Prinzipien hinter der Programmierung. Design Patterns wäre da ein Schlagwort.

Shink
2007-07-11, 09:27:54
Da bekommst du jetzt sicher verschiedene Meinungen zu hören, aber die sich sehr ähnlichen Programmiersprachen C# und Java (Online-Bücher: http://www.javabuch.de, Java ist eine Insel) sind solide Programmiersprachen, die heutzutage recht oft und gerne verwendet werden und sicher nicht so schnell aus der Mode kommen.
Eine davon zu lernen kann eigentlich kein Fehler sein - sollte sie sich nicht durchsetzen, gibt es ja noch die sehr ähnliche andere.

Mir gefällt Java mit der größeren Portabilität (Mono ist schön, aber nicht 100%ig kompatibel), der Stabilität (ein Java-Programm kann so gut wie gar nicht einen PC abkacken lassen) und den mächtigeren, wenn auch weniger intuitiven IDEs (Eclipse, Netbeans) viel besser, obwohl ich in beiden Sprachen entwickle. Die Umlernzeit von Java auf C# für das erste C#-Projekt fiel fast nicht ins Gewicht.

Alternativen wären noch Scriptsprachen, aber davon gibt es einige, die nicht ganz so ähnlich zueinander sind und was heute in ist, muss sich nicht unbedingt ewig halten. Python gefällt mir da am besten, aber inzwischen ruft alles nach Ruby, Ruby, Ruby, Ruby...

Edit:
Hmm... so unterschiedlich sind die Meinungen hier wohl doch nicht...

wizardSE
2007-07-11, 09:53:44
Danke erstmal für eure Meinungen.

Mit Java kann man quasi "alles" machen? Was sind die vorrangigen Einsatzgebiete von Java? =)

Shink
2007-07-11, 10:13:14
Nun ja, Betriebssystemprogrammierung ist schwierig mit Java und was Programmierung von embedded Hardware betrifft... da ist Java natürlich nicht so weit verbreitet wie C.
Treiber kann man auch höchstens für Solaris schreiben damit, Viren oder virenähnliche Programme (z.B. Trainer) sowie Programme mit Direktzugriff auf Hardware (z.B... öh... Treiber?) oder Prozessorbefehle (z.B. Codecs mit handprogrammierter SSE-Unterstützung) sind in Java nur mit Zusammenarbeit mit nativen Programmen möglich und genau die ist in C# zumindest einfacher.
Und wenn man etwas M$-spezifisches machen will (z.B. OCX, Direct 3D bedienen) macht man das natürlich auch besser mit einer M$-Programmierumgebung.

Davon abgesehen kann man recht gut z.B. 3D-Anwendungen, dynamische HTML-Seiten, Datenbank-Spielereien, Echtzeit-Anwendungen und so ziemlich alles andere machen.

Vorrangig macht man damit:
- Serveranwendungen (Datenbank, ERP-Anbindung, HTML-Anwendungen, SOA-Anwendungen wie Webservices), auch mächtiges Zeug bei dem man im Betrieb Komponenten austauscht.
- IDEs (die mächtigsten OpenSource-IDEs sind in Java geschrieben, keine Ahnung warum)
- Client-Anwendungen im Enterprise-Bereich (Oberflächen für Datenbanktabellen)
- Spiele für mobile Geräte
- Clientanwendungen die wirklich portabel sein sollen

rotalever
2007-07-11, 10:39:27
Davon abgesehen kann man recht gut z.B. 3D-Anwendungen,

Große Entwicklungsstudios fordern aber immer noch C++ Kenntnisse, die haben nichts mit Java und Co. am Hut, soweit ich weiß.

- IDEs (die mächtigsten OpenSource-IDEs sind in Java geschrieben, keine Ahnung warum)

Das frage ich mich manchmal auch, diese IDEs haben eine Sache gemeinsam: sie sind etwas träge, wenn man es z.B. mit MSVC++ vergleicht.

Mit meinen Aussagen möchte ich jetzt Java nicht schlecht machen, aber gerne wird es immer als DIE Sprache herausgestellt. Man macht Benchmarks, wo Java als Sieger hervorgeht und schneller als C++ Programme ist.

Außerdem kann ich auch mit einer Sprache wie C++ Anwendungen schreiben, die Portabel sind. Für die GUI einfach sowas wie wxWidgets nehmen und es wird auf allen wichtigen Betriebssystemen laufen. Und auch sonst gibt es Haufenweise CrossPlatform Bibliotheken.

Die Aussage, dass man Java Programme überall verwenden kann hört man auch oft. Aber der Benutzer muss doch wohl noch eine Java-Umgebung installieren, oder nicht?

Monger
2007-07-11, 10:42:55
Um es mal umzudrehen - was Java (im Vergleich zur .NET Welt) schlecht oder gar nicht kann, sind die ganzen Windows Technologien, z.B. :

- COM Modell
- Deployment (d.h. Setup über MSI, EXE)
- Zugriff auf Hardwareschnittstellen wie z.B. DirectX, damit auch eher lausige Unterstützung für 3D Grafik.
- Fensteranwendungen (angeblich gibt es mittlerweile ein paar gute IDEs dafür, hab aber noch keine gesehen)


Die Sprache und vorallem das Standard-Framework gefallen mir persönlich in Java besser als in C#. Bei .NET vermisse ich derzeit doch so ein paar Klassen und Konstrukte, aber möglicherweise ist das auch Gewöhnungssache.

Deshalb meine Empfehlung: mit Java anfangen, und dann auf C# umsteigen sobald es nötig wird. C# hat imho ein paar Haken und Ösen mehr (Abwärtskompatibilität ahoi!), ist zum erlernen meiner Meinung nach daher schlechter geeignet. Java ist eine fast vorbildliche Lehrsprache, deshalb ist sie auf Hochschulen so beliebt.

Shink
2007-07-11, 11:10:05
Große Entwicklungsstudios fordern aber immer noch C++ Kenntnisse, die haben nichts mit Java und Co. am Hut, soweit ich weiß.
Die für 3D-Anwendungen: Bestimmt. (Außer im wissenschaftl. Bereich, da nimmt man ja sogar Java3D), wobei da in ein paar Jahren wohl auch schon einige mit C# zufrieden sind.

Das frage ich mich manchmal auch, diese IDEs haben eine Sache gemeinsam: sie sind etwas träge, wenn man es z.B. mit MSVC++ vergleicht.

Nun ja, wenn man mal bedenkt was ein Eclipse im Hintergrund so macht... aber ja, stimmt. Wobei ich nicht weiß, wie groß/schnell/schwierig soetwas in C++ wäre.

Mit meinen Aussagen möchte ich jetzt Java nicht schlecht machen, aber gerne wird es immer als DIE Sprache herausgestellt. Man macht Benchmarks, wo Java als Sieger hervorgeht und schneller als C++ Programme ist.
Das würd ich nie behaupten. Vielleicht ist man aber auch genötigt, abstrakter zu programmieren oder man verwendet (sinnvollerweise) immer die mitgelieferten Funktionen, die eben vielleicht langsamer sind als welche die man selber machen würde und die weniger abstrakt, allgemein verwendbar und anpassbar sind.
So etwas wie Total Commander würde man in Java performancetechnisch nur sehr schwer hinbekommen.

Die Aussage, dass man Java Programme überall verwenden kann hört man auch oft. Aber der Benutzer muss doch wohl noch eine Java-Umgebung installieren, oder nicht?
Nein, die muss man (im Vergleich zu z.B. .NET) nicht installieren. Viele Hersteller bundlen sie und verstecken sie vorm User - was ja auch nicht Sinn der Sache sein kann, andererseits macht man das in anderen Sprachen eben mit den gelinkten Libraries.

Monger
2007-07-11, 11:18:46
Nein, die muss man (im Vergleich zu z.B. .NET) nicht installieren.
Den Satz kann ich nicht nachvollziehen. Wie meinst du das?

Die Java VM muss man auf jeden Fall installieren, wenn sie es nicht bereits ist. Ein Java Package braucht üblicherweise keine Installationsroutine, aber das braucht die EXE die aus C# rauspurzelt normalerweise auch nicht.

Shink
2007-07-11, 11:33:29
Den Satz kann ich nicht nachvollziehen. Wie meinst du das?

Die Java VM muss man auf jeden Fall installieren, wenn sie es nicht bereits ist. Ein Java Package braucht üblicherweise keine Installationsroutine, aber das braucht die EXE die aus C# rauspurzelt normalerweise auch nicht.
Naja, vielleicht hab ich auch nicht wirklich das beantwortet, was gemeint war aber: Die (systemabhängige) Java VM muss man eigentlich nur mit den notwendigen Libraries irgendwo hinkopieren, während z.B. das .NET-Framework an den Systemverzeichnissen herumfummelt und sogar einen Systemneustart benötigt (zumindest war das mal so).
Das hat jetzt mit .NET wahrscheinlich gar nichts zu tun und ist ein M$-Konstrukt.

@rotalever wg. Plattformunabhängiger C++-Programmierung: Ich tu mir z.B. relativ schwer, kostenpflichtige GUI-Anwendungen für MacOSX zu entwickeln, wenn ich keinen Apple hab.

rotalever
2007-07-11, 12:07:51
@rotalever wg. Plattformunabhängiger C++-Programmierung: Ich tu mir z.B. relativ schwer, kostenpflichtige GUI-Anwendungen für MacOSX zu entwickeln, wenn ich keinen Apple hab.
In wiefern? Und wo geht da mit Java leichter? wxWidgets z.B. unterstützt meines Wissens Apples GUI nativ.

Bei C# ist es zum Beispiel so, dass Microsoft die Net Umgebung mit seinem Betriebssystem gleich mitliefert. Das ist für den Benutzer sehr praktisch. Und man sollte sich nichts vormachen, dass die Mehrzahl der PC-Benutzer eben ein aktuelles Windows benutzt.

Shink
2007-07-11, 12:13:10
Windows ja, aktuelles wohl kaum. C++-Anwendungen müsste ich ja crosscompilen und bei einer nativen GUI weiß ich ja nicht ganz genau, wie sie aussieht, oder?

wizardSE
2007-07-11, 13:06:06
Mal ne Frage in die Diskussion eingeworfen: Womit werden eigentlich Mac-Programme programmiert? Auch C?

rotalever
2007-07-11, 13:31:03
Mal ne Frage in die Diskussion eingeworfen: Womit werden eigentlich Mac-Programme programmiert? Auch C?
Meines Wissen Objective-C oder?

Windows ja, aktuelles wohl kaum. C++-Anwendungen müsste ich ja crosscompilen und bei einer nativen GUI weiß ich ja nicht ganz genau, wie sie aussieht, oder?
wxWidgets ist meines Wissens eine Library, in der man die GUI schreibt, und die Darstellung dieser GUI macht wxWidget dann nicht durch eigenen Sachen sondern Abhängig vom kompilierten System mit WinAPI, GTK+ oder eben dem OSX zeug.

Coda
2007-07-11, 13:40:49
Mal ne Frage in die Diskussion eingeworfen: Womit werden eigentlich Mac-Programme programmiert? Auch C?
Gibt's auch fast alles wie unter Windows auch. Vieles Objective-C, aber auch C++/C oder Java.

Ganon
2007-07-11, 13:48:33
In wiefern? Und wo geht da mit Java leichter? wxWidgets z.B. unterstützt meines Wissens Apples GUI nativ.

Ich denke mal er meint das es ohne Mac ziemlich schwer sein dürfte C++-Programme für OS X zu kompilieren. ;) Diese Probleme hättest du mit Java und C#/Mono nicht.

Endorphine
2007-07-11, 15:59:10
BASIC:
Der Name „BASIC“ steht für „Beginner’s All-purpose Symbolic Instruction Code“, was so viel bedeutet wie „symbolische Allzweck-Programmiersprache für Anfänger“. Die Abkürzung als Wort gesehen bedeutet außerdem „grundlegend“. Dies zeigt das Design-Ziel klar: Eine einfache, für Anfänger geeignete Programmiersprache zu erschaffen.

Die Sprache wurde aufgrund von acht Entwurfsprinzipien entworfen:

1. Für Anfänger leicht zu erlernen
2. Universell einsetzbar
3. Erweiterbarkeit der Sprache für Experten
4. Interaktivität
5. Klare Fehlermeldungen
6. Kurze Antwortzeiten
7. Hardwareunabhängigkeit
8. Betriebssystemunabhängigkeit


Visual Basic 2005 Express Edition kostenlos bei MS herunterladen: http://msdn.microsoft.com/vstudio/express/ (etwas abgespecktes Visual Studio 2005, die so ziemlich beste IDE "wo" gibt). Lernen z. B. mit http://www.galileocomputing.de/openbook/visual_basic/

Man kann dann mit VB.NET auch sachte in Objektorientierung hereinwachsen, und über modularisierte prozedurale Programmierung auch Zwischenschritte gehen.

Die wirklich ausgesprochen Einsteiger-freundliche IDE senkt den Frustfaktor gegenüber z. B. Eclipse auch noch mal deutlich. Wenn man dann versierter ist kann man sich dann ja immer noch in C-Gefilde vorwagen.

Coda
2007-07-11, 16:41:33
Wieso sollte man noch Visual Basic lernen? C# ist imho eine bessere Sprache und genauso einfach.

Monger
2007-07-11, 16:56:09
Man kann dann mit VB.NET auch sachte in Objektorientierung hereinwachsen, und über modularisierte prozedurale Programmierung auch Zwischenschritte gehen.

Da es ja die selbe Zwischensprache verwendet, kann VB.NET kein bißchen mehr als C#, hat nur halt wesentlich mehr syntaktischen Zucker, und ein paar... hässliche Einschränkungen.

Hier auf Arbeit ist in meinem Bereich VB.NET gefordert, deshalb komme ich darum nicht herum, aber vieles spricht für C#. Zum Beispiel, dass MS nunmal C# zur Lieblingssprache auserkoren hat, und auch vorwiegend dafür die Entwicklung der IDE vorantreibt.

creave
2007-07-11, 18:26:22
Ich stand ebenfalls vor dieser Frage und habe mich für C# entschieden (gut, ich hatte zwar schon etwas Programmiererfahrung von PHP her, aber eben keine was die Windowsprogrammierung angeht).
Diesen Schritt hab ich bis heute nicht bereut, wenn man sich etwas dahinterklemmt ist das für jeden zu machen. Habe mir das oben erwähnte Visual C# 2005 Buch von Galileo Press gekauft (ja leider, dort war es noch kein openbook, aber gedruckt hab ichs eh lieber) und habe dieses als roten Faden benutzt.
Das objekt-orientierte ist meiner Meinung nach eh etwas, dass man entweder versteht oder eben nicht, egal mit welcher Sprache es umgesetzt werden soll. Hierfür bietet Galileo Press ja ebenfalls ein Openbook an ( http://www.galileocomputing.de/openbook/oo/ ) welches da schön drauf eingeht (habs selber noch nicht durch, aber bis jetzt gefällts).

Wie bereits erwähnt, mit Java oder C# kannst du nicht viel falschmachen.

darph
2007-07-11, 18:42:36
Die wirklich ausgesprochen Einsteiger-freundliche IDE senkt den Frustfaktor gegenüber z. B. Eclipse auch noch mal deutlich. Wenn man dann versierter ist kann man sich dann ja immer noch in C-Gefilde vorwagen.
Kann man dem Visual Studio irgendwie sagen, daß er bei IntelliType-Auto-Vervollständigung doch bitte Klammern setzen soll, wenn ich eine Methode einfüge? Das ist was, was mich irgendwie nervt - so gibt es bis auf ein klitzekleines Icon keine intuitive Möglichkeit, auf den ersten Blick zu erkennen, ob ich gerade ein Property oder eine Methode anspreche. Das... nervt. ;( Mich zumindest.

ScottManDeath
2007-07-11, 19:15:30
LOLCODE (http://lolcode.com) =)



(oder eben C# mit der Express edition)

pajofego
2007-07-11, 19:43:23
Komme ebenfalls aus der Pascal Ecke und finde an folgender Sprache gefallen:

D (http://en.wikipedia.org/wiki/D_programming_language)

Gruß
pajofego

Coda
2007-07-11, 19:59:12
D ist wirklich gar nicht so uninteressant, aber leider fehlt der Industriesupport :(

Ganon
2007-07-11, 20:07:28
Jup. Aber ich denke das kann noch werden. Erst mal sollte sie komplett "fertig" werden. Weil wenn man sich das so durchliest, ist zwar viel geplant, aber noch nicht alles umgesetzt.

Coda
2007-07-11, 20:29:12
1.0 stable ist aber draußen.

Ganon
2007-07-11, 20:59:09
Ja, aber anscheinend enthält es wohl immer noch nicht alles, wenn ich das recht verstehe. Naja. Wir werden sehen was aus D wird. Rumsprechen tut es sich ja. Nur fehlt halt noch die breite Unterstützung.

Coda
2007-07-11, 21:19:30
C# 1.0 enthielt auch nicht alles was es jetzt gibt. Was ist daran ein Problem?

Monger
2007-07-11, 21:31:45
Was ist denn an D so besonders? Zumindest im Wikipedia Artikel hab ich jetzt nix gesehen, was irgendwie einen Vorteil gegenüber C# darstellen würde.

pajofego
2007-07-11, 22:00:59
Für mich, ist das hier:

Current D implementations compile directly into native code for efficient execution. Quelle: oberer Artikel

sehr wichtig!

Können Java und C# nicht!

Gruß,
pajofego

The_Invisible
2007-07-11, 22:09:12
Für mich, ist das hier:

Quelle: oberer Artikel

sehr wichtig!

Können Java und C# nicht!

Gruß,
pajofego

wenn man nicht gerade high performance anwendungen schreibt ist das schnurz ob man C, C# oder Python verwendet. außerdem hilft nativer code nichts wenn die routinen schei*e sind.

mfg

Monger
2007-07-11, 22:17:29
Können Java und C# nicht!

Das ist ja eine Stärke, und keine Schwäche. Damit haben sich ja Java und C# von C++ abgehoben. Solange du nicht gerade Treiber o.ä. programmieren willst, bindest du dir mit Binärcode nur einen Klotz ans Bein.

pajofego
2007-07-11, 22:33:08
Ich gebe euch beiden recht, deswegen auch der persönliche Hinweis "für mich". Wenn ich code schreibe, dann muss er höchste Performance haben. Deswegen der Hinweis auf nativen code!

Gruß
pajofego

Coda
2007-07-11, 22:35:03
D kann neben Garbage Collection auch herkömmliche Speicherverwaltung. Das ist wirklich manchmal ein Vorteil.

Native Kompilierung vs. Bytecode ist so eine Sache. Ein Native-Code-Compiler kann man viel mehr in Richtung Parallelisierung etc. optimieren, weil man "ewig" Zeit hat und ein JITC kann zur runtime profilieren (wobei es auch Profilierung für nativen code gibt inzw.) und immer auf die Architektur gezielt optimieren. Da streiten sich die Geister was besser ist.

huha
2007-07-11, 22:39:25
Kein Java nehmen. Wie's mit C# aussieht, weiß ich nicht, aber ich vermute mal, daß man sich da mit ähnlichen Dingen rumärgern muß.
Java hat IMHO einige gewaltige Designschwächen, die insbesondere daher kommen, daß primitive Variablentypen von anno dazumal mitgeschleppt werden (und das Autoboxing so dumm ist wie die Sammler in Command&Conquer). Man kann damit programmieren, man kann sehr viel damit machen, aber teilweise faßt man sich gewaltig an den Kopf.
Ich würde es daher mit Sprachen probieren, die mehr wert darauf legen, wirklich vom Design her konsistent zu sein und nicht, wie bei Java in letzter Zeit, einfach mehr und mehr rangefrickelt kriegen, damit die C-Programmierer glücklich sind.

Ich will jetzt keinen Programmiersprachenfanboy spielen, aber schau dir mal Python an. Wenn du von Pascal kommst, könnte Ruby vielleicht für dich geeignet sein, mich hat dieses gräßliche begin und end allerdings bisher davon abgehalten, mich damit näher zu befassen.

-huha

Coda
2007-07-11, 23:05:40
und das Autoboxing so dumm ist wie die Sammler in Command&Conquer
LOL, made my day X-D

alpha-centauri
2007-07-11, 23:07:41
C++ pder C#.

Trap
2007-07-11, 23:29:45
Ich gebe euch beiden recht, deswegen auch der persönliche Hinweis "für mich". Wenn ich code schreibe, dann muss er höchste Performance haben. Deswegen der Hinweis auf nativen code!
Höchste Performance ist praktisch nicht erreichbar. Da müsste man ja nachweisen können, dass es keine schnellere Möglichkeit gibt die gleiche Funktionalität zu implementieren. Für welche Funktion traust du dir das zu?

Man kann sowohl mit C# als auch mit Java native Code aufrufen, da schränkt einen die Sprache nicht ein.

Ganon
2007-07-11, 23:52:50
Java hat immer noch den Vorteil der einfachsten und problemlosesten "Plattformunabhängigkeit" (ja, ich weiß, nur da wo es JavaVMs gibt und das sollten jetzt mit der GPL-Version mehr werden) und ziemlich vielen ausgereiften Frameworks, Bibliotheken und IDEs.

Auf eine Plattform bezogen mag es sicherlich besseres geben, sicher.

Für C++ gilt das erst genannte zwar auch, aber meist nur mit kostenpflichtigen Bibliotheken mit Knebelverträgen (Qt ;)), wenn es um kommerzielle GUI-Anwendungen geht. ;)

kloffy
2007-07-12, 00:11:45
...ziemlich vielen ausgereiften Frameworks, Bibliotheken und IDEs.
Da stimm ich voll und ganz zu. Meiner Meinung nach ist Java die Sprache mit der es sich im Moment am komfortabelsten Entwickeln lässt. Bei Performance muss man zum Teil Abstriche machen, aber das dürfte für die meisten Hobbyprogrammierer ziemlich egal sein.
Das einzige Problem: hat man sich erstmal an den ganzen Komfort gewöhnt, kommt man nicht mehr weg davon. (Fairerweise muss man sagen, dass ich in letzter Zeit nur mit Java zu tun gehabt hatte. Wenn man sich in C# eingearbeitet hat fällt es wahrscheinlich genauso schwer zu Java zu wechseln.)

Nur um das ganz deutlich zumachen: ich spreche in meinem Post nur über Frameworks, Bibliotheken und IDEs. Die Programmierkonzepte sind, wie schon gesagt, in beiden Sprachen die selben.

Coda
2007-07-12, 00:54:42
C# und Java ist doch alles die gleiche Soße. Da von unterschiedlichem Konfort zu reden zeugt nicht gerade von Erfahrung, sorry.

Ganon
2007-07-12, 08:04:26
Er meinte (denke ich) ja nicht die Sprache, sondern die vorhandenen Frameworks. Hier sind die bei Java schon weiter und kommen momentan auch für C# langsam raus, aber sind eben noch nicht komplett (z.B. Hibernate)

rotalever
2007-07-12, 09:18:37
wenn man nicht gerade high performance anwendungen schreibt ist das schnurz ob man C, C# oder Python verwendet. außerdem hilft nativer code nichts wenn die routinen schei*e sind.
mfg
Das stimme ich voll zu. Wenn eine Anwendung viel mit Benutzerinterface etc. macht und keine Algorithmen ausführt ist als Sprache sogar eher sowas wie C# oder Python gut. Geht es aber um Geschwindigkeit, merkt man doch deutliche Unterschiedel, vor allem zu Sprachen wie Python ;) . C# ist ja auch verhältnismäßig "schnell", wenn man das überhaupt über eine Programmiersprache sagen darf.


Für C++ gilt das erst genannte zwar auch, aber meist nur mit kostenpflichtigen Bibliotheken mit Knebelverträgen (Qt ;)), wenn es um kommerzielle GUI-Anwendungen geht. ;)
Hatte ich wxWidgets nicht schon angesprochen? :confused:


C# hat immer noch den Vorteil, dass es sehr stark von MS gepusht wird. Dieses XNA oder wie das heißt ist ja auch mit C# soweit ich weiß verbunden. Damit lassen sich ja 3D Anwendungen entwickeln. Wie gut weiß ich nicht, aber man bekommt wohl auf jedenfall einiges an Software und wenn man sich da als für einen bestimmten Betrag im Monat anmeldet, gibt es sogar noch so eine middleware 3D-Engine Lizenz dazu, oder so.

The_Invisible
2007-07-12, 09:20:13
in diesem thread wird vb/vb.net quasi nicht erwähnt.

das wundert mich insofern, weil ich von lieferanten und partnern nur programme kenne die eben in dieser sprache geschrieben wurden. sind das jetzt noch relikte vergangener tage oder wird das noch länger so weitergehen?

ich persönlich kann vb syntax überhaupt nicht leiden, gott sei dank muss sich mein kollege damit herumschlagen :D

mfg

huha
2007-07-12, 09:24:10
VB: Relikte vergangener Tage. Die Programmiersprache ist eigentlich nichtmal besonders schlecht, sie ist eben nur nicht dafür geeignet, für was sie gern eingesetzt wird: für große Anwendungen. VB ist zäh. VB ist lahm. Aber mit VB kann man mehr oder minder bequem programmieren und mal eben schnell ein paar Tools zusammenklicken, mit denen man dann auch arbeiten kann.
Bei großen Anwendungen kommen aber sofort die Nachteile dieser Sprache zum Vorschein, weshalb ich eher davon abraten würde, das Zeug zu lernen.
Lohnenswert kann hingegen sein, VBA zu lernen, um dann für die Office-Produkte Makros schreiben zu können.

-huha

Ganon
2007-07-12, 09:24:57
Hatte ich wxWidgets nicht schon angesprochen? :confused:

Sorry, aber wxWidgets ist ein Krampf. Sicher gibt es freie Toolkits, wie wxWidgets, GTK oder sonst noch was. Aber man merkt ihnen an das es "freie" Projekte sind. Es klemmt doch an allen Ecken und Enden.

Qt ist da weit voraus, kostet aber auch, wenn man kommerziell entwickeln will und leichte Plattformunabhängigkeit wünscht.

Denn bei der GUI hört's doch nicht auf. Denke mal an Datenbanken, Druckeransteuerung, etc.

huha
2007-07-12, 09:40:36
wxWidgets unter Windows funktioniert IMHO ziemlich gut, die Programme kommen alle recht natív rüber. Der Vorteil zu qt ist die vernünftige Lizenz, weshalb ich kaum einen Grund sehe, wxWidgets nicht einzusetzen.
GTK hingegen ist ein Krampf ohne Ende. Es ist arschlahm und sieht auch noch scheiße aus--außer unter Linux. Der Vorteil einer plattformübergreifenden Bibliothek sollte allerdings sein, daß es eben auf _allen_ Plattformen vernünftig tut.

-huha

Ganon
2007-07-12, 09:49:25
wxWidgets unter Windows funktioniert IMHO ziemlich gut, die Programme kommen alle recht natív rüber. Der Vorteil zu qt ist die vernünftige Lizenz, weshalb ich kaum einen Grund sehe, wxWidgets nicht einzusetzen.

Wie ich sagte. Druckeransteuerung oder Datenbankanbindung (ist doch afaik krüppliges ODBC bei wxWdigets, oder?)? Beides kombiniert mit korrekter Zusammenarbeit?

Gast
2007-07-12, 09:53:13
Er meinte (denke ich) ja nicht die Sprache, sondern die vorhandenen Frameworks. Hier sind die bei Java schon weiter und kommen momentan auch für C# langsam raus, aber sind eben noch nicht komplett (z.B. Hibernate)

Naja, also gerade da hat .NET mit ASP.NET erst mal ganz schön vorgelegt gehabt, was man dann mit JSF erst mal nachgemacht hat. Objekt/Persistenz Frameworks gibt es auch schon sehr lange von dritten bzw. als OpenSource (wobei sich da die Geister trennen).

Ganon
2007-07-12, 09:58:51
Nur kommt hier wieder der Punkt der Plattformunabhängigkeit. Sun muss sich darum gedanken machen das die JVM und ihre Funktionen auf allen unterstützten Systemen auch funktioniert.

M$ braucht hier bloß Windows beachten und das tun sie ja auch. Den Rest macht Mono freiwillig mehr oder weniger schlecht für M$.

BAGZZlash
2007-07-12, 11:54:47
VB: Relikte vergangener Tage. Die Programmiersprache ist eigentlich nichtmal besonders schlecht, sie ist eben nur nicht dafür geeignet, für was sie gern eingesetzt wird: für große Anwendungen. VB ist zäh. VB ist lahm. Aber mit VB kann man mehr oder minder bequem programmieren und mal eben schnell ein paar Tools zusammenklicken, mit denen man dann auch arbeiten kann.
Bei großen Anwendungen kommen aber sofort die Nachteile dieser Sprache zum Vorschein, weshalb ich eher davon abraten würde, das Zeug zu lernen.
Lohnenswert kann hingegen sein, VBA zu lernen, um dann für die Office-Produkte Makros schreiben zu können.

-huha

Sorry, aber das ist 'ne veraltete Ansicht. Aus VB.NET-Compilern kommt mittlerweile ziemlich schneller Code 'raus, den ganzen Interpreterkram von früher hat man längst abgelegt. Richtig ist, daß VB-Programme bei zeitkritischen Aufgaben oft schlecht optimiert sind, sei es nun, weil dazu in VB entsprechende Mittel fehlen, oder weil VB-Programmierer sich oft 'nen Dreck drum scheren. VB sollte man nicht unterschätzen, mit klassischem BASIC hat das sowieso nicht mehr viel zu tun. Die Ähnlichkeiten zwischen C# und VB.NET sind bemerkenswert, multithreaded-Programmierung ist möglich und auch die neue Try...catch-Behandlung gefällt mir als altem VB6-Programmierer sehr gut. Ich bin immer wieder selbst überrascht, welche Performance meine eigenen Programme liefern (außer neulich bei meinem eigenen Lösungsansatz des 9^9^9-Problems. Gegen die FFTs des ANSI-Cs, die Coda verwendet hat, kam ich mir da wie'n Schulmädchen vor).

Locutus2002
2007-07-12, 12:17:05
mal etwas off-topic: bei all dem lesen ist mir was aufgefallen. was ist c#? ist das die neueste version von c++?

Silpion
2007-07-12, 12:20:28
Kann man dem Visual Studio irgendwie sagen, daß er bei IntelliType-Auto-Vervollständigung doch bitte Klammern setzen soll, wenn ich eine Methode einfüge? Das ist was, was mich irgendwie nervt - so gibt es bis auf ein klitzekleines Icon keine intuitive Möglichkeit, auf den ersten Blick zu erkennen, ob ich gerade ein Property oder eine Methode anspreche. Das... nervt. ;( Mich zumindest.
Es gibt ein sehr gutes Plugin, dass alles davon und noch mehr bietet:
Visual Assist X (http://www.wholetomato.com/)
Ich weiß leider nicht, ob es mit den Express-Editionen des Visual Studios läuft.

Trap
2007-07-12, 12:30:31
mal etwas off-topic: bei all dem lesen ist mir was aufgefallen. was ist c#? ist das die neueste version von c++?
Ne, C# ist Microsofts Alternative zu Java.

Neue Versionen von C++ erkennt man am Namen, sie heißen C++.

BAGZZlash
2007-07-12, 12:33:45
Ne, C# ist Microsofts Alternative zu Java.

Neue Versionen von C++ erkennt man am Namen, sie heißen C++.

:cool:
http://de.wikipedia.org/wiki/C-Sharp

Locutus2002
2007-07-12, 12:34:52
Achso, das heißt C# hat mit C++ nicht viel gemein?
Ich dacht nämlich, dass C++ was mit C# zu tun hat, weil man ich mir vorgestellt hab, dass man die zwei '+' so ineinander verschieben kann, dass eine '#' bei rauskommt ;)

Monger
2007-07-12, 12:59:05
Achso, das heißt C# hat mit C++ nicht viel gemein?

Nicht wirklich. C# steht Java wirklich SEHR viel näher als C++. Im Grunde ist das "C" im Namen hier eher verwirrend als sonstwas.

Johnny
2007-07-12, 14:19:16
VB: Relikte vergangener Tage. Die Programmiersprache ist eigentlich nichtmal besonders schlecht, sie ist eben nur nicht dafür geeignet, für was sie gern eingesetzt wird: für große Anwendungen. VB ist zäh. VB ist lahm. Aber mit VB kann man mehr oder minder bequem programmieren und mal eben schnell ein paar Tools zusammenklicken, mit denen man dann auch arbeiten kann.
Bei großen Anwendungen kommen aber sofort die Nachteile dieser Sprache zum Vorschein, weshalb ich eher davon abraten würde, das Zeug zu lernen.
Lohnenswert kann hingegen sein, VBA zu lernen, um dann für die Office-Produkte Makros schreiben zu können.

-huha
Wenn du schon solche Aussagen machst, dann musst du auch konkretesieren, daß du damit VB6 meinst(falls du es tust). Seit .NET ist hat sich das ganze erübrigt, denn alle .NET haben die gleiche Geschwindigkeit, sprich wenn jemand sagt C# ist gut, dann kan er nicht sagen VB.NET ist scheisse(Syntax aussen vor).

C# hat immer noch den Vorteil, dass es sehr stark von MS gepusht wird. Dieses XNA oder wie das heißt ist ja auch mit C# soweit ich weiß verbunden. Damit lassen sich ja 3D Anwendungen entwickeln. Wie gut weiß ich nichtGut genug, um die meissten XBOX-Spiele damit zu programmieren

rotalever
2007-07-12, 15:34:23
Gut genug, um die meissten XBOX-Spiele damit zu programmieren
Tatsächlich? Ich hätte immer gedacht, dass die auf Konsolen noch das "alte" Zeug einsetzen. Irgendwann muss ich mir dann auch noch mal C# reinziehen. So in fünf Jahren, wenn es dann jeder benutzt..

ScottManDeath
2007-07-12, 19:01:12
Wenn du schon solche Aussagen machst, dann musst du auch konkretesieren, daß du damit VB6 meinst(falls du es tust). Seit .NET ist hat sich das ganze erübrigt, denn alle .NET haben die gleiche Geschwindigkeit, sprich wenn jemand sagt C# ist gut, dann kan er nicht sagen VB.NET ist scheisse(Syntax aussen vor).

Wobei noch zu klären ist ob der VB.NET Compiler ähnlich lausig optimierten Coder erstellt wie der C# Compiler, im Vergleich zum C++/CLI Compiler...

Coda
2007-07-12, 19:03:32
Halte ich für sehr wahrscheinlich, MS wird da kaum mehr Resourcen in VB.NET als in C# stecken

Gut genug, um die meissten XBOX-Spiele damit zu programmieren
Blödsinn. Auf einer Konsole hast du viel zu begrenzte Resourcen um sie mit .NET zu verschwenden. Das XNA-Zeug ist .NET, das war's.

Monger
2007-07-12, 19:25:25
Blödsinn. Auf einer Konsole hast du viel zu begrenzte Resourcen um sie mit .NET zu verschwenden. Das XNA-Zeug ist .NET, das war's.
Was spuckt denn XNA dann aus?
Das ist afaik doch auch nichts anderes als ein Aufsatz auf Visual Studio. Oder nutzt XNA dann ausschließlich den C++/CLI Compiler?

DaEmpty
2007-07-12, 20:35:38
Was spuckt denn XNA dann aus?
Im Endeffekt bekommt man CIL Code...

Kennst du einen "nicht Low-Budget" Titel der mit XNA entwickelt wurde?

Selbst wenn man einen Konsolenprogrammierer erwischt, der kein Optimierungsfreak ist, wirds verdammt schwer für etwas anderes als C/C++ Middleware zu bekommen. Alles selbst zu programmieren normal lohnt nicht und wird in einer solchen geldorientierten Branche selten gemacht.

Monger
2007-07-12, 20:47:23
Kennst du einen "nicht Low-Budget" Titel der mit XNA entwickelt wurde?

XNA ist ja auch noch blutjung. Gibt es das überhaupt schon außer als Betaversion?
XNA wird sich zumindest bis hin zu den mittelgroßen kommerziellen Spieleprojekten ziemlich schnell durchsetzen, da bin ich ziemlich sicher. Die Middleware von Drittherstellern wird natürlich brauchen bis sie sich umgestellt hat, aber auch das wird passieren.

Bei mir in der Firma haben sie auch innerhalb weniger Jahre jetzt fast komplett auf die .NET Welt umgeschwenkt. Und als Industriekonzern sind wir da normalerweise extrem konservativ. Ich denke, sobald es vernünftige managed Bibliotheken für DirectX geben wird, werden etliche Spielestudios umsteigen.

DaEmpty
2007-07-12, 21:18:21
XNA ist ja auch noch blutjung. Gibt es das überhaupt schon außer als Betaversion?
Klar.
XNA wird sich zumindest bis hin zu den mittelgroßen kommerziellen Spieleprojekten ziemlich schnell durchsetzen, da bin ich ziemlich sicher.
Mit welcher Begründung? Mit welchen Vorteilen?

Eine Engine kauft man sich in der Regel ein.
Immer weniger Entwickler eines Spiels kommen mit C/C++ in Berührung. Immer mehr wird durch Skriptsprachen etc abstrahiert. Wo soll der große Vorteil liegen?

Die Middleware von Drittherstellern wird natürlich brauchen bis sie sich umgestellt hat, aber auch das wird passieren.
Das lohnt sich für die Middlewarehersteller richtig 2 getrennte Codepfade zu pflegen. Crossplattformfähigkeit spricht absolut gegen .Net-Sprachen.

Bei mir in der Firma haben sie auch innerhalb weniger Jahre jetzt fast komplett auf die .NET Welt umgeschwenkt.Ich denke, sobald es vernünftige managed Bibliotheken für DirectX geben wird, werden etliche Spielestudios umsteigen.
Du kennst die Gamesbranche nicht...

Monger
2007-07-12, 21:33:36
Mit welcher Begründung? Mit welchen Vorteilen?

Mal abgesehen davon dass managed Languages schlicht in der Entwicklung billiger sind: ich sehe da vorallem die leichte Portabilität auf die XBox360, und dass Microsoft ja selber kräftig daran bastelt, Middleware Lösungen in XNA reinzuschustern, wie z.B. Windows/XBox Live.



Das lohnt sich für die Middlewarehersteller richtig 2 getrennte Codepfade zu pflegen. Crossplattformfähigkeit spricht absolut gegen .Net-Sprachen.

Was für Plattformen genau meinst du? Den ganzen Konsolenmarkt?
Die PS3 erfordert sowieso ein ziemlich eigenes Software Design, und für die Wii werden sowieso immer weniger Multiplattformtitel erscheinen. Nur Microsoft kann zwei Märkte gleichzeitig relativ billig bedienen - den PC(oder genauer gesagt: Windows) und die XBox360.

DaEmpty
2007-07-12, 21:50:00
Was für Plattformen genau meinst du? Den ganzen Konsolenmarkt?
Die PS3 erfordert sowieso ein ziemlich eigenes Software Design, und für die Wii werden sowieso immer weniger Multiplattformtitel erscheinen. Nur Microsoft kann zwei Märkte gleichzeitig relativ billig bedienen - den PC(oder genauer gesagt: Windows) und die XBox360.
Ähh ja.
Crossplattform Spiele != Crossplattform Middleware
Das klappt auch mit einem ordentlichen Design und einigen Anpassungen für die spezifische Plattform.

Ich lass dich aber gerne in dem Glauben. Ich bin mir aber sicher, dass bei Laufzeitkomponenten mittelfristig nichts mit CLR Sprachen zu tun haben werde. In einer Konsolenwelt, in der man teilweise schon schief angeschaut wird, weil man sowas ressourcenverschwendendes wie C++ verwendet, ist für sowas imo kein Platz.

Demirug
2007-07-12, 21:50:37
XNA ist ja auch noch blutjung. Gibt es das überhaupt schon außer als Betaversion?

Ja eine Express Version ist soweit schon fertig.

XNA wird sich zumindest bis hin zu den mittelgroßen kommerziellen Spieleprojekten ziemlich schnell durchsetzen, da bin ich ziemlich sicher. Die Middleware von Drittherstellern wird natürlich brauchen bis sie sich umgestellt hat, aber auch das wird passieren.

Torque gibt es schon für XNA.

Bei mir in der Firma haben sie auch innerhalb weniger Jahre jetzt fast komplett auf die .NET Welt umgeschwenkt. Und als Industriekonzern sind wir da normalerweise extrem konservativ. Ich denke, sobald es vernünftige managed Bibliotheken für DirectX geben wird, werden etliche Spielestudios umsteigen.

Es wird nur noch am XNA Framework gearbeitet. Andere Libs sind nicht geplant. Da D3D10 ja nun nicht auf der Xbox 360 läuft wird es entsprechend lange dauern bis es (wenn überhaupt) vom XNA Framework unterstützt wird.

Demirug
2007-07-12, 21:58:08
Ähh ja.
Crossplattform Spiele != Crossplattform Middleware
Das klappt auch mit einem ordentlichen Design und einigen Anpassungen für die spezifische Plattform.

Ich lass dich aber gerne in dem Glauben. Ich bin mir aber sicher, dass bei Laufzeitkomponenten mittelfristig nichts mit CLR Sprachen zu tun haben werde. In einer Konsolenwelt, in der man teilweise schon schief angeschaut wird, weil man sowas ressourcenverschwendendes wie C++ verwendet, ist für sowas imo kein Platz.

Das mit dem C++ ist kein Ressourcen Problem sondern ein Problem der schlechten Compiler und zum Teil der „schlechten“ CPUs die keine virtuellen Funktionen mögen. Wenn man sich die ganze Middelware anschaut die aktuell verwendet wird wäre eine kompakte Version der CLR auch kein Problem. Allerdings weiß ich nicht was Sony dazu sagen würde wenn jemand sich eine PS3 Version von Mono baut. Das dürfte einen massiven Konflikt bei den Lizenzen geben. Um eine CLR selbst zu schreiben hat aber kein Studio die nötige Manpower.

DaEmpty
2007-07-13, 22:06:01
Das mit dem C++ ist kein Ressourcen Problem sondern ein Problem der schlechten Compiler und zum Teil der „schlechten“ CPUs die keine virtuellen Funktionen mögen.
Eine Sprache hat, da muss ich dir recht geben, nichts mit Ressourceverbrauch zu tun, weil sie ja nur Syntax und Semantik definiert und eine Implementierung auf jeder Plattform möglich ist. Aber eine Sprache ist immer nur so viel wert wie ihr Compiler und wird auch danach bemessen.
Das die Prozessoren keine virtuellen Funkionen mögen, bedeutet, dass sie eine Grundfunktionionalität der Sprache nicht mögen. Davon sind alle höheren Sprachen betroffen. Bei C++ hab ich aber noch viel Kontrolle darüber und kann die Probleme schon teilweise bei der Implementierung bewusst umgehen.
Wenn man sich die ganze Middelware anschaut die aktuell verwendet wird wäre eine kompakte Version der CLR auch kein Problem.
Klar ist Managed/Unmanaged-Mischmasch immer möglich, aber meiner Erfahrung nach in der Praxis alles andere als problemlos.
Um eine CLR selbst zu schreiben hat aber kein Studio die nötige Manpower.
Da sprichst du imo eines der Hauptproblem der Spielebranche an. Das ewige "das machen wir alles selbst". Im Endeffekt ist das für die gesamte Spielbranche sehr schlecht und führt dazu das jedesmal am Anfang selbst die absoluten Grundlagen unter Zeitdruck neu programmiert werden und diese meist üblen Implementierungen (Speichermanagment? ist später noch Zeit. Serialisierung? zuerstmal was bauen was geht. kann man später ja noch ändern; etc.) sich über Jahrzehnte als Grundlagen halten und Unmengen an Arbeitszeit vernichten.
Ist aber alles imo und eigentlich total offtopic hier ;)

Zurück zum eigentlich Thema: Ihr seit ja bei eurem aktuellen Projekt nun ja nicht mehr im Anfangsstudium und habt inzwischen auch nen größeren finanziellen Spielraum. Rechnest du realistisch damit, dass ihr euer nächstes Projekt in einer anderen Sprache als C++ implementiert?

Gast
2007-07-14, 13:11:44
Klar ist Managed/Unmanaged-Mischmasch immer möglich, aber meiner Erfahrung nach in der Praxis alles andere als problemlos.


Inwiefern? Nach meiner Erfahrung geht das ziemlich problemlos.

huha
2007-07-14, 13:16:19
Sorry, aber das ist 'ne veraltete Ansicht. Aus VB.NET-Compilern kommt mittlerweile ziemlich schneller Code 'raus, den ganzen Interpreterkram von früher hat man längst abgelegt.
Wenn du schon solche Aussagen machst, dann musst du auch konkretesieren, daß du damit VB6 meinst(falls du es tust).

VB.NET heißt nur noch VB, ist aber keins mehr. Daher meine ich VB6 und kleiner. Hätte man sich eigentlich aber auch denken können bei meinen Beschreibungen ;)

-huha

Gast
2007-07-14, 18:04:56
VB.NET heißt nur noch VB, ist aber keins mehr.

Wieso sollte VB.NET kein VB mehr sein? Die Tatsache, dass die Sprache erweitert wurde, macht VB.NET nicht weniger VB. Jede Sprache entwickelt sich weiter, aber die typische VB Syntax ist unverkennbar gblieben.

wizardSE
2007-07-14, 23:39:35
Darf ich mal fragen, wie lange es wohl mindestens dauert (bei nem Normalo), bis man in Java halbwegs fit ist? Wie gesagt, ich habe nur Turbo Pascal Background (also Pascal)?

DaEmpty
2007-07-15, 00:07:35
Inwiefern? Nach meiner Erfahrung geht das ziemlich problemlos.
Meistens gibts Probleme beim Debuggen von C++ Code aus einem Managed Projekt heraus. Marshalling von Templates ist ein Krampf, da kein ensprechendes Sprachfeature auf der Gegenseite existiert, etc.
Wenn alles direkt gutgeht, funktioniert das schön, aber wehe es treten mal Probleme auf...

Monger
2007-07-15, 01:10:27
Darf ich mal fragen, wie lange es wohl mindestens dauert (bei nem Normalo), bis man in Java halbwegs fit ist? Wie gesagt, ich habe nur Turbo Pascal Background (also Pascal)?

Kommt drauf an wie du lernst. Mit dem richtigen Dozenten hat es bei mir ein Semester gedauert. Davor lagen aber 1,5 Jahre, die mir fast gar nichts gebracht haben! ;)

Edit:
Disclaimer - ich würde mich niemals als Java Profi bezeichnen, aber ich rechne den Zeitraum, ab dem ich eine relativ gute Vorstellung davon hatte, wo ich nachschauen müsste um dieses oder jenes Problem zu lösen. "Gut" bin ich in Java deshalb noch lange nicht.