PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C#-Schwierigkeit? Lässt sich C# gut lernen?


Gast
2006-06-09, 00:31:55
Ich würde mal gerne euere Einschätzung zu C# hören!


1. Lohnt es sich euerer Meinung nach C# zu lernen? Oder besser eine andere Sprache?
2. Ist es schwierig C# zu lernen? Einfacher als C++?

Punkt 2 ist mir wichtiger!!!

Ich bin BWLer und es könnte sich evtl. für mich eine interessante Möglichketi ergeben, zu der ich jetzt nicht mehr sagen möchte. Voraussetzung dafür ist aber die Kenntnis von C#.
Ich weiss aber nicht auf welchem Niveau. Ich kann kein C# und daher sehe ich diese Möglichkeit nicht als sehr Realistisch. Ich wäre aber dazu bereit, evtl. mich im Sommer in der vorlesungsfreien Zeit, mich in C# reinzuknien, wenn es dann noch diese Möglichkeit geben sollte und ich eine Chance sehe, in diesem Zeitraum C# draufzubekommen.

Ich hatte mal vor einige Zeit die Vorlesung "Programmiermethodik" gehört. Ich weiss also, was Klassen, Arrays, Pointer usw. sind. Zumindest ist mir das nicht total fremd. Ich kann also durchaus Code etwas lesen, wenn auch nicht praktisch programmieren. OK, ein wenig C++ konnte ich schonmal. Aber das war nichts weltbewegendes...

Wie gut lässt sich C# lernen?
Hat hier mal jemand Links zu guten Tutorials oder eine Buchempfehlung, wo ich mal schnuppern kann?

Gast
2006-06-09, 00:33:27
Oh man, was für ein Satzbau oben bzw. für ein Satz. Sorry dafür. Bin wohl schon zu müde!

Gast
2006-06-09, 00:50:24
http://www.mycsharp.de/guide/home/index.html?http%3A//www.mycsharp.de/guide/home/home.html

Kabelsalat
2006-06-09, 00:53:46
C# ist eine sehr interessante und moderne Sprache, deren Schwierigkeitsgrad sich in Grenzen hält, allerdings nützt dir Sprachkenntnis alleine logischerweise noch nicht alzu viel

Für den produktiven Einsatz ist C# auf jedenfall besser geeignet als C++ (von einigen Spezialfällen mal abgesehen - für dich als BWLer spielen diese aber so oder so keine Rolle) und obendrein einfacher zu erlernen.

Erwähnt werden sollte auf jeden Fall auch das zugrundeliegende .Net-Framework, welches ebenfalls eine fortschrittliche Programmierplatform zur Verfügung stellt.

Gast
2006-06-09, 00:56:58
Nunja, ich bin zwar BWLer mache aber schon ein wenig SQL-Datenbanken. In dem Zusammenhang bin ich jetzt auch auf C# gekommen...

medi
2006-06-09, 05:45:58
mit SQL Abfragen rumspielen und programmieren sind aber doch schon zwei verschiedene paar schuhe ;)

c# ist imo einfacher als c++

SgtTynis
2006-06-09, 09:02:37
C# ist einfacher, weil klarer und aufgeraeumter als C++. Meiner Meinung nach ist C# auch eher mit Java vergleichbar, als mit C++. Insgesamt hallte ich die Sprache fuer relativ gut geeignet, sowohl fuer erste Programmierversuche als auch professionelle Entwicklung. Nicht vergessen sollte man jedoch, dass sauberes Programmieren meist nicht all zu viel mit der verwendeten Programmiersprache an sich, sondern viel mehr von einem allgemeinen Verstaendnis fuer Softwaredesign abhaengt.

Godmode
2006-06-09, 10:25:27
Was die Syntax angeht ist C# meiner Meinung nach einfachacher als C++. Unter C# können verstehe ich zb, dass man die .Net Bibliotheken versteht und weiß wo man was finden kann und die ist ziemlich rießig ;D.

C# Syntax ist das eine was aber noch viel wichtiger ist, sind die Konzepte der objektorientierten Programmierung. Wenn du hier nicht wirklich weißt wie und was, dann kannst du meiner Meinung nach keine gute Software entwickeln.

Coda
2006-06-09, 10:46:48
SgtTynis[/POST]'] Meiner Meinung nach ist C# auch eher mit Java vergleichbar, als mit C++.
Das steht ja wohl außer Frage.

Trap
2006-06-09, 12:38:09
Gast[/POST]']
1. Lohnt es sich euerer Meinung nach C# zu lernen? Oder besser eine andere Sprache?
2. Ist es schwierig C# zu lernen? Einfacher als C++?

1) C# wird nicht so schnell verschwinden, ist mittlerweile unter Linux auch ganz benutzbar (bis auf den GUI-Teil der Bibliothek) und ist als Programmiersprache sicher nicht schlechter als Java oder C++ (ich würde sagen besser als Java und anders als C++).
2) Grundsätzlich halte ich es da mit http://norvig.com/21-days.html , C# zu lernen ist eine Sache, Programmieren lernen eine andere. C# ist einfacher als C++, aber im Endeffekt macht das nichts aus, gegenüber der Zeit die man braucht um richtig Programmieren zu lernen ist das Programmiersprache lernen vernachlässigbar.

Kabelsalat
2006-06-09, 12:53:51
Bei Java und C# kannst du nicht definitv sagen welcher Ansatz nun besser und welcher schlechter ist. Beide haben ihre Vorzüge so wie ihre Nachteile... im Zweifelsfall würde jedoch auch .Net den Vorzug geben.

Anders als C++ trifft auf beide Sprachen zu - wobei die Syntax teilweise angelehnt ist. Auch besser als C++ kann man nicht pauschal sagen, in vielen Fällen trifft dies jedoch zu, da .Net und Java wesentlich fortschrittlicher sind.

Coda
2006-06-09, 12:55:32
Kabelsalat[/POST]']da .Net und Java wesentlich fortschrittlicher sind.
Das ist auch Quatsch. C++/CLI dürfte die weitaus mächtigste Sprache für .NET sein.

Im Prinzip sind Java und C# doch eh nur Teilmengen von C++ mit Garbage Collection.

del_4901
2006-06-09, 12:58:37
Ich sage mal so, für C++ braucht man ein gutes Konzept. Das kannten in den Anfangstagen von C++ Wenige. Deswegen meinen viele Profs(weil sie noch aus diesen Tagen stammen wo Chaos C++ regiert hat) das C# und Java fortschrittlicher währen.

Demirug
2006-06-09, 13:05:13
Coda[/POST]']Das ist auch Quatsch. C++/CLI dürfte die weitaus mächtigste Sprache für .NET sein.

Mächtig ins Knie schießen kannst du dir damit. Aufgrund eines aktuellen Projekts mit C++/CLI spreche ich aus Erfahrung.

IMHO ist C++/CLR nur zu empfehlen wenn man eine Brücke zum nativen Code schlagen muss.

Trap
2006-06-09, 13:06:12
Natürlich ist C# besser als Java. Dafür hab ich eine einleuchtende Begründung: Java sucks :tongue:

Trap
2006-06-09, 13:10:53
Demirug[/POST]']Mächtig ins Knie schießen kannst du dir damit. Aufgrund eines aktuellen Projekts mit C++/CLI spreche ich aus Erfahrung.
Speziell in der Interaktion .NET <-> C++ oder nur das übliche C++ sich selbst ins Knie schießen?

Demirug
2006-06-09, 13:23:22
Trap[/POST]']Speziell in der Interaktion .NET <-> C++ oder nur das übliche C++ sich selbst ins Knie schießen?

Die C++ Fallen sind natürlich immer noch da. Zusätzlich kommen aber noch die Fallen hinzu die sich daraus ergeben das man nun plötzlich zwei völlig unterschiedliche Modelle zur Speicherverwaltung hat. Das teilweiße sogar innerhalb einer Methode.

Kabelsalat
2006-06-09, 13:36:25
Wenn man sich auf managed Code beschränkt, dann kann C++/CLI auch nur das was du mit C#, VB.Net, J#, Delphi oder einer sonstigen .Net Sprache anstellen kannst. Wenn du irgendeine Art von unsafe-Code in einer .Net-Assembly verwendest benötigst du a) FullTrust und b) kann diese Assembly nur von Assemblies gelingt werden, die ebenfalls FullTrust haben. Das sollte dir bewusst sein...

PS: Du kannst auch in C# unsafe Code wie Zeiger... verwenden.

Demirug
2006-06-09, 13:55:19
Kabelsalat[/POST]']Wenn man sich auf managed Code beschränkt, dann kann C++/CLI auch nur das was du mit C#, VB.Net, J#, Delphi oder einer sonstigen .Net Sprache anstellen kannst. Wenn du irgendeine Art von unsafe-Code in einer .Net-Assembly verwendest benötigst du a) FullTrust und b) kann diese Assembly nur von Assemblies gelingt werden, die ebenfalls FullTrust haben. Das sollte dir bewusst sein...

PS: Du kannst auch in C# unsafe Code wie Zeiger... verwenden.

Alles bekannt. Ich programmiere mit C#/.Net seit den ersten Betas.

Das ganze ist allerdings ein Wrapper zu einer Reihe von COM Objekten deren Interfaces nicht so ganz dem normalen Standards entsprechen. Oder anders gesagt D3D10. Ich brauche also schon aleine aufgrund der unmanaged DLL in der die COM Objekte liegen Full Trust.

Wenn es vernüpftig mit C# gehen würde hätte ich mir C++/CLR nicht angetan.

Monger
2006-06-09, 14:14:54
Coda[/POST]']...
Im Prinzip sind Java und C# doch eh nur Teilmengen von C++ mit Garbage Collection.

Jedes Mal wenn du das sagst möchte ich irgendeinen vernichtenden Satz dagegen werfen, aber mir fällt keiner ein! :D

Das ist wohl mehr eine Glaubensfrage als eine rationale. Wenn ich gleichzeitig sage "Die Welt ist rund" und "die Welt ist eine Scheibe", bin ich dann intelligenter als jemand der nur sagt "die Welt ist rund"? ;)

Kabelsalat
2006-06-09, 14:21:30
Schon alleine die Garbage-Collection ist einer der vielen Gründe, welcher für eine Platform wie .Net oder Java spricht...

Trap
2006-06-09, 14:29:23
Kabelsalat[/POST]']Schon alleine die Garbage-Collection ist einer der vielen Gründe, welcher für eine Platform wie .Net oder Java spricht...
ML, Smalltalk, Scheme, Eiffel und viele mehr haben schon länger Garbage-Collection als es Java überhaupt gibt. Wieso spricht das für .Net und Java?

del_4901
2006-06-09, 14:38:59
In C++ kann ich mir meinen eigenen Garbage-Collector programmiern, wenn ich einen brauch .... In Java unc C# krieg ich ihn immer mitgeliefert, obwohl ich ihn vllt. gar nicht haben will.

Kabelsalat
2006-06-09, 14:39:41
Deswegen habe ich auch das Wörtchen "wie" eingefügt. Vielleicht hätte ich eher schreiben sollen "Schon alleine der nicht vorhandene GC ist einer der vielen Gründe, die gegen C++ sprechen"

/edit: Ein GC sollte nicht erst selber implementiert werden müssen. Er muss fertig und getestet von der Sprache / dem Framework mitgeliefert werden. Außerdem gibt es viele weitere Knackpunkte an C++: Was ist z.B. mit den vielen Funktionen, die es doppelt und dreifach gibt, von denen aber die Hälfte als obsolet da unsicher o.ä. gekennzeichnet ist?

Monger
2006-06-09, 14:46:55
Jungs, bitte nicht! Das hat echt keinen Zweck!

Trap
2006-06-09, 14:57:53
AlphaTier[/POST]']In C++ kann ich mir meinen eigenen Garbage-Collector programmiern, wenn ich einen brauch .... In Java unc C# krieg ich ihn immer mitgeliefert, obwohl ich ihn vllt. gar nicht haben will.
In Java oder C# kann man C-Code aufrufen um Zeug ohne GC zu machen, ist ungefähr genauso unpraktisch/unüblich wie einen GC in C++ zu benutzen.

Wenn der GC vom Programm in den benutzten Parametern kontrollierbar ist gibt es nur sehr wenige Anwendungen die wirklich manuelle Speicherverwaltung brauchen. Im Normalfall ergibt ein GC einfach nur 50% mehr Speicherverbrauch, gleiche Performance und weniger Programmieraufwand (und damit auch weniger Bugs).

Ein GC sollte nicht erst selber implementiert werden müssen
Muss auch nicht: http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Knackpunkte an C++: Was ist z.B. mit den vielen Funktionen, die es doppelt und dreifach gibt, von denen aber die Hälfte als obsolet da unsicher o.ä. gekennzeichnet ist?
Was soll mit denen sein? Die benutzt man einfach nicht.

@originalposter:
Nur die ersten Postings lesen, das hier ist eine völlig unsinnige Sprachdiskussion die aber immer wieder ganz lustig zu führen ist :)

SgtTynis
2006-06-09, 18:56:08
Trap[/POST]']ML, Smalltalk, Scheme, Eiffel und viele mehr haben schon länger Garbage-Collection als es Java überhaupt gibt. Wieso spricht das für .Net und Java?

Meiner Meinung nach besteht heutzutage eine gute Programmiersprache/-umgebung nicht nur aus der Summe der Sprachfeatures und deren Verstaendlichkeit, sondern - gerade im zeitdruck gepraegten kommerziellen Umfeld - im Umfang der schon verfuegbaren und intiutiv nutzbaren Grundbibliothek. Und dort denke ich mal hat sowohl .NET als auch Java den "alten" Sprache einiges vorraus.

Coda
2006-06-09, 22:15:31
Kabelsalat[/POST]']Schon alleine die Garbage-Collection ist einer der vielen Gründe, welcher für eine Platform wie .Net oder Java spricht...
Es gibt auch GC für C++ (Böhm GC) oder eben auch fest eingebauten wie in C++/CLI.

Und ich finde das ist nicht unbedingt ein Grund der dafür spricht, für wirklich performancekritische Apps muss man nämlich auch bei GC genau wissen was dieser im Hintergrund macht.

Kabelsalat[/POST]']Was ist z.B. mit den vielen Funktionen, die es doppelt und dreifach gibt, von denen aber die Hälfte als obsolet da unsicher o.ä. gekennzeichnet ist?
Ha? :|

Bitte verwurschtel nicht Microsoft-spezifische Erweiterungen für C mit der C++ STL. Da is nix doppelt und dreifach.

Das Problem das C++ hat ist das viele Leute einfach absoluten Murkscode schreiben weil sie irgendwie noch C gewohnt sind. Dafür kann aber die Sprache nichts. Bei solchen Leuten hilft halt wirklich nur Java und C#, weil da werden sie gezwungen gescheit zu programmieren.

Trap
2006-06-09, 22:34:01
Coda[/POST]']
Und ich finde das ist nicht unbedingt ein Grund der dafür spricht, für wirklich performancekritische Apps muss man nämlich auch bei GC genau wissen was dieser im Hintergrund macht.
Die meisten Apps sind nicht wirklich performancekritisch. Zumindest nicht gleichzeitig performancekritisch und Speicher anfordernd.

Selbst bei den verbleibenden Anwendungen kann man meist noch mit GC arbeiten wenn man genügend Einflussmöglichkeiten auf den GC hat (was man meines Wissens nach in Java und .Net nicht hat).

Kabelsalat
2006-06-09, 22:37:58
Coda[/POST]']Bei solchen Leuten hilft halt wirklich nur Java und C#, weil da werden sie gezwungen gescheit zu programmieren.

Machmal muss man die Leute eben zu ihrem Glück zwingen^^ Wobei sich "gezwungen" so negativ anhört. In Wirklichkeit ist das ganze ein großer Verteil, denn das verhinder häufig gravierende Fehler... so sind Buffer Overflows mit Managed Code z.B. nicht zu bewältigen, wohingegen soetwas mit C++ sehr einfach hervorgerufen werden kann.

Neulich habe ich mich z.B. auch ziemlich über Delphi geärgert: Warum ist die Überlaufsüberprüfung und das Überprüfen der Array-Grenzen standardmäßig deaktiviert? Sicher kostet soetwas Performance, aber nicht in dem Maße, dass man es (standardmäßig) deaktivieren müsste...

PS: Was das Hintergrundwissen angeht hast du natürlich recht - das gilt aber für so ziemlich alles was man in seinen Leben machen kann: Um etwas wirklich Vernünftiges auf die Beine zu stellen muss man auch wissen was um einen herum abläuft...

Coda
2006-06-09, 23:05:07
Kabelsalat[/POST]']Machmal muss man die Leute eben zu ihrem Glück zwingen^^ Wobei sich "gezwungen" so negativ anhört. In Wirklichkeit ist das ganze ein großer Verteil, denn das verhinder häufig gravierende Fehler... so sind Buffer Overflows mit Managed Code z.B. nicht zu bewältigen, wohingegen soetwas mit C++ sehr einfach hervorgerufen werden kann.
Das ist richtig, aber moderne C++-Compiler bieten auch entsprechende Optionen an um das zu verhindern. Vista ist übrigens komplett mit dieser Option durchkompiliert.

Trap[/POST]']Die meisten Apps sind nicht wirklich performancekritisch. Zumindest nicht gleichzeitig performancekritisch und Speicher anfordernd.
Richtig. The right tool for the job. Hab ich im anderen Thread schon gesagt. Allerdings sollten sich manche Leute das einfach Mal hinter die Ohren schreiben.

Es gab schon Leute die haben 10000 Zeilen C++ für ein Problem geschrieben das mit ein paar Shellscripts erledigt gewesen wäre.

Die Dikussion ist hinfällig, weil Java und C++ meiner Meinung nach unterschiedliche Anwendungsgebiete haben sollten. Manchmal wird man leider dazu gezwungen doch das ungünstigere für einen Fall zu verwenden.

Odal
2006-06-10, 04:55:06
c# ist imho mit die das beste was es gibt wenn man windoof only software programmieren will und das nicht auf lowlevel ebene. Gibt zwar auch mono etc. um mit der software unter linux was anzufangen aber wie ausgereift das mittlerweile ist k.a. hab das seit ein paar jahren nimmer mitverfolgt :D

darum:

c++ wenn du auf lowlevel ebene und (relativ) systemnah was programieren willst
c# wenns windows only bleibt
java für den rest

lernen lässt sich c# sehr gut wenn man java beherscht. man mags nicht glauben aber c# is viel java ähnlicher als es c oder c++ ähnlich ist :D

Kabelsalat
2006-06-10, 09:18:36
Könnte sich im Laufe der nächsten Zeit auch ändern:

-> MS will ein abgespecktes, aber offizielles .Net Framework für den Mac herausbringen
-> Stellt ebenfalls die Windows Presentation Foundation zur Verfügung
-> Der Quellcode zu den Windows-Forms wird evtl. freigegeben. Könnte es den Mono-Machern erleichtern eine kompatible Implementierung auf Basis von GTK, QT... zu schaffen

Siehe auch: http://www.golem.de/0603/44261.html

Gast
2006-06-10, 09:45:50
Ich bin der Threadersteller.
Die C#-Kenntnisse, die ich bräuchte, wenn sich diese Möglichkeit ergeben sollte, würde sich vermutlich mehr oder weniger auf Datenbanken beschränken:Sequel Server in Verbindung mit C#

Gast
2006-06-10, 09:57:14
Gast[/POST]']Ich bin der Threadersteller.
Die C#-Kenntnisse, die ich bräuchte, wenn sich diese Möglichkeit ergeben sollte, würde sich vermutlich mehr oder weniger auf Datenbanken beschränken:Sequel Server in Verbindung mit C#

In dem Fall solltest du eindeutig C# C++ vorziehen.

Coda
2006-06-10, 11:49:55
Odal[/POST]']c# ist imho mit die das beste was es gibt wenn man windoof only software programmieren will und das nicht auf lowlevel ebene.
Ich bleibe dabei: Was kleine GUIs und Tools angeht bist du mit C++/Qt schneller unterwegs. Es kommt halt immer drauf an.

Odal[/POST]']man mags nicht glauben aber c# is viel java ähnlicher als es c oder c++ ähnlich ist :D
Warum sollte man das nicht glauben? Natürlich ist das so.

ScottManDeath
2006-06-10, 11:51:11
Jo, wenn man kein Hardcode Code Monkey werden will, dann C# oder Java.

OT: C++0x hat soll wohl einen optionalen GC enthalten....

Ganon
2006-06-10, 11:56:32
ScottManDeath[/POST]']OT: C++0x hat soll wohl einen optionalen GC enthalten....

Soll das nicht erst 2009 "fertig" werden?

ScottManDeath
2006-06-10, 12:08:23
Ja, x >= 9 ;)

Coda
2006-06-10, 12:43:43
Wirklich so spät? Quelle?

Ganon
2006-06-10, 12:58:34
http://www.artima.com/cppsource/cpp0xP.html


Bjarne offers a sneak peek at the next version of standard C++ ("C++0x") which should be complete by 2009.


Ich hatte das damals aber woanders in einem Interview mit ihm gelesen. Finde es nur leider nicht mehr. Das da oben war der erste Treffer in google ;)

MadMan2k
2006-06-10, 13:14:10
Kabelsalat[/POST]']
-> Der Quellcode zu den Windows-Forms wird evtl. freigegeben. Könnte es den Mono-Machern erleichtern eine kompatible Implementierung auf Basis von GTK, QT... zu schaffen
das wird nicht passieren:

It is not feasible to use native widgets on all operating systems. Each OS/Windowing system has different behaviour/properties/features for what on the surface looks like the same widget. A RadioButton in Gnome is different from a RadioButton in Win32 is different from a RadioButton in OS X. To use the native widgets means to reduce the functionality of MWF to the least common denominator of all operating systems supported. If we were designing our own that might even be acceptable, but we are implementing a defined API with defined behaviour (and even with applicatio relied-upon side-effects). The behaviour of a RadioButton has to be exactly like it behaves on Win32 with MS .Net. Anything else and applications written for may not work properly anymore. And that's the whole point of System.Windows.Forms (SWF), to allow running existing .Net SWF apps with Mono. For all other uses there is Gtk#

ein Grund wieso ich Mono unter Linux zu benutzen für eine Fehlentscheidung halte...

Gast
2006-06-10, 15:18:09
Coda[/POST]']Ich bleibe dabei: Was kleine GUIs und Tools angeht bist du mit C++/Qt schneller unterwegs.

Ein praktischer Vergleich, z.B. ein Programm, wäre wünschenswert.

Kabelsalat
2006-06-10, 18:08:37
.Net besteht ja aus wesentlich mehr als Windows Forms. Ich verwende es z.B. praktisch ausschließlich für Webanwendungen und das ist unabhängig vom OS. Falls es dennoch GUI-Programmierung mit MONO sein soll, würde ich auch niemals Win Forms verwenden sondern GTK# den vorzug geben.

Gast
2006-06-10, 18:20:18
Kabelsalat[/POST]']Falls es dennoch GUI-Programmierung mit MONO sein soll, würde ich auch niemals Win Forms verwenden sondern GTK# den vorzug geben.

Und die Begründung?

Kabelsalat
2006-06-10, 18:36:48
Die Begründung hat MadMan2k bereits geliefert...

Gast
2006-06-10, 19:05:27
Kabelsalat[/POST]']Die Begründung hat MadMan2k bereits geliefert...

Wer schreibt denn den Entwicklern von mono vor, native Betriebssystem Widgets zu verwenden?

Kabelsalat
2006-06-10, 19:16:08
OK, afaik funktioniert die WForms Schnittstelle aber zumindest momentan noch nicht sauber...

Odal
2006-06-10, 19:41:59
Coda[/POST]']Ich bleibe dabei: Was kleine GUIs und Tools angeht bist du mit C++/Qt schneller unterwegs. Es kommt halt immer drauf an.

Gerade QT ist ein Krampf gewesen. Ob sich das mittlerweile verbessert hat weiss ich nicht aber als ich mit QT was implementiert habe gabs inkompatible versionen... QT2.3 (glaube war 2.3) und QT3 ausserdem ein undurchsichtiges lizenzsystem. Dann hatte ich von QT eine art grundgerüst was ich erweitern wollte. Dies hatte aber mit der damals herunterladbaren QT2.3 nicht funktioniert nur mit einer ganz speziellen educational QT2.3 version usw.

Wenn man GUI sachen auf QT basiert unter Windows entwickeln will ist das meiner erfahrung nach ein Krampf sondersgleichen. Seit dem lass ich die Finger von QT. Dann lieber GTK auch wenn man da nicht ganz soviele möglichkeiten hat. NIE wieder QT ^^

Coda
2006-06-10, 22:22:47
Was für ein "Krampf" denn bitte? Qt (Nicht QT, das spricht man auch "cute", nicht "ku-tee") ist so ziemlich das beste Widget Toolkit das ich jemals gesehen habe und ich hab daneben schon Windows.Form, wxWidgets, MFC, natives Win32, GTK und Swing durch.

Du hast anscheinend wirklich nicht viel Erfahrung damit, sonst würdest du solche Äußerungen sicherlich bleiben lassen. Es klingt auch nicht sehr fundiert was du an Gründen vorbringst.

Ja Qt kostet auf Windows was, aber dafür bekommt man auch einiges mehr geboten als beim Rest.

Odal[/POST]']NIE wieder QT ^^
Mir ist es eigentlich ziemlich egal mit was du deine Zeit sonst verschwendest. Bitte.

Ganon
2006-06-10, 22:33:42
Coda[/POST]']Ja Qt kostet auf Windows was, aber dafür bekommt man auch einiges mehr geboten als beim Rest.

Qt4 gibt's auch für Windows als GPL-Version.

http://www.trolltech.com/developer/downloads/qt/windows

Und klar ist Qt gut. Guckt ja auch eine Menge von Cocoa ab. ^^ *gg*

Coda
2006-06-10, 22:40:52
Ich weiß dass es Qt 4 auch als GPL für Windows gibt. Allerdings nicht für Visual Studio...

Hat Cocoa auch Signals/Slots? Wenn nich isses nicht vergleichbar. Und nein ich mag Objective-C immer noch nicht.

Ganon
2006-06-10, 22:49:39
Coda[/POST]']Hat Cocoa auch Signals/Slots?

Ich kenn das jetzt nicht so genau. Ist das so etwas was unter Cocoa Bindings heißt? Oder Notifications?

Coda
2006-06-10, 22:53:35
Weiß ich nicht. Mir ist Objective-C zu hässlich ums mir genauer anzusehen :tongue:

Ganon
2006-06-10, 22:58:44
Naja. Scheint wohl Objekt-Kommunikation über Notifications zu sein ^^ Ja, ist drinnen. ;)

Also quasi, wenn in einem Objekt etwas bestimmtes passiert, soll ein anderes Objekt das erkennen und etwas machen. Seh ich das richtig? ;)

Ohne das würde z.B. growl nicht wirklich was nutzen ^^ Das Framework fängt solche Distributed Notifications (globalere Version davon ;) ) auf und tut dann was. Z.B. den Titel von iTunes anzeigen, wenn dieser wechselt.

Gast
2006-06-10, 23:48:11
Coda[/POST]']Was für ein "Krampf" denn bitte? Qt (Nicht QT, das spricht man auch "cute", nicht "ku-tee") ist so ziemlich das beste Widget Toolkit das ich jemals gesehen habe und ich hab daneben schon Windows.Form, wxWidgets, MFC, natives Win32, GTK und Swing durch.


Kannst du das auch mal an einem konkreten Bsp. erklären? Und was genau ist an Signals/Slots so besser, was andere nicht bieten?

Coda
2006-06-11, 00:08:27
Man spart sich wegen jedem Scheiß die Widget-Klassen ableiten und virtuelle Funktionen überladen zu müssen.

Beispielsweiße kannst du dir nen QSlider und ne QSpinBox erzeugen und mit nem connect(slider,SIGNAL(valueChanged(int)),spinbox,SLOT(setValue(int))) das ganze so verbinden, dass die Spinbox immer den Wert des Sliders anzeigt. Das ist jetzt nur ein einfaches Beispiel aber illustriert die Sache ganz gut.

Qt ist einfach viel produktiver - vor allem dadurch. Es ist aber auch einfach sehr komplett, man spart sich viel Arbeit die ich z.B. mit wxWidgets hatte (wobei das im Gegensatz zu MFC auch schon gut ist).

Odal
2006-06-11, 00:16:19
Coda[/POST]']Was für ein "Krampf" denn bitte? Qt (Nicht QT, das spricht man auch "cute", nicht "ku-tee")

jawohl herr ath's 2


ist so ziemlich das beste Widget Toolkit das ich jemals gesehen habe und ich hab daneben schon Windows.Form, wxWidgets, MFC, natives Win32, GTK und Swing durch.


natives win32 ist hack müll das ist richtig, MFC ist schon besser aber auch nicht das wahre. wxWidges hat nicht genug Möglichkeiten und gefällt mir auch nicht so hatte ich mal in form von wxPhyton verwendet es ging aber einigermaßen. GTK ist ihmo das beste gui toolkit wenn man non java code schreibt und eine gui für win und linux haben will ohne gross sourcecode zu ändern. Swing ist absolut "Userfriendly" von der Programmierung her. Es gibt praktisch nix was nicht geht und ist absolut einfach und intuitiv zu benutzen. Das .net framework das gleiche. Daran gibts nichts zu bemängeln wenn man windows only apps entwickeln will und nicht das letzte quäntchen performance herausquetschen muss.


Du hast anscheinend wirklich nicht viel Erfahrung damit, sonst würdest du solche Äußerungen sicherlich bleiben lassen. Es klingt auch nicht sehr fundiert was du an Gründen vorbringst.

Meine Erfahrungen damit leigen zwar ne weile zurück aber ich hab genug gesammelt um sagen zu können was trolltech da zum teil abliefert ist müll. Ich hatte des öfteren qt code welcher unter windows mit der damals frei herunterladbaren GPL Qt Version 2.3 nicht compilierte mit der 2.3 educational unter windows aber schon? Wie kann denn son scheiss passieren? Vor allem bis ich heraus gefunden hatte das es am Qt 2.3 != Qt 2.3 lag hab ich mir Stundenlang den Kopf zerbrechen dürfen beim Bug suchen. Von dem Mist bin ich geheilt ich brauchte es in den letzten Jahren zum Glück nicht mehr einsetzen.


Ja Qt kostet auf Windows was, aber dafür bekommt man auch einiges mehr geboten als beim Rest.

Gesetz dem Fall man will Windows only GUI Apps entwickeln: Nenn mir eine Sache die mit Qt möglich ist und mit java+swing oder .Net Framework nicht?


Mir ist es eigentlich ziemlich egal mit was du deine Zeit sonst verschwendest. Bitte.

Was soll denn der Spruch? :confused: :|

Coda
2006-06-11, 00:19:21
Och komm bitte, Qt 2.3 ist 100 Jahre alt. Es wird langsam lächerlich.

Odal[/POST]']GTK ist ihmo das beste gui toolkit wenn man non java code schreibt und eine gui für win und linux haben will ohne gross sourcecode zu ändern.
Du hast Qt echt nicht angeschaut. Allein die Performance und der Look von GTK unter Windows sind furchtbar.

Odal[/POST]']Von dem Mist bin ich geheilt ich brauchte es in den letzten Jahren zum Glück nicht mehr einsetzen.
Ich finde Ignoranz ist eine ziemlich schlechte Eigenschaft für einen Programmierer. Und Vorurteile sind es sowieso.

Odal[/POST]']Gesetz dem Fall man will Windows only GUI Apps entwickeln: Nenn mir eine Sache die mit Qt möglich ist und mit java+swing oder .Net Framework nicht?
Es geht nicht darum was möglich ist sondern wie. Und da hat Qt einfach den deutlich größten Umfang und die einfachste Programmierung.

Odal[/POST]']Was soll denn der Spruch? :confused: :|
Schon das richtig. Um die gleiche App mittels GTK oder wxWidgets zu programmieren wie mit Qt brauchst du auf jedenfall länger und hast am Ende mehr Source.

Gast
2006-06-11, 00:31:11
Coda[/POST]']Man spart sich wegen jedem Scheiß die Widget-Klassen ableiten und virtuelle Funktionen überladen zu müssen.

Beispielsweiße kannst du dir nen QSlider und ne QSpinBox erzeugen und mit nem connect(slider,SIGNAL(valueChanged(int)),spinbox,SLOT(setValue(int))) das ganze so verbinden, dass die Spinbox immer den Wert des Sliders anzeigt. Das ist jetzt nur ein einfaches Beispiel aber illustriert die Sache ganz gut.

Qt ist einfach viel produktiver - vor allem dadurch. Es ist aber auch einfach sehr komplett, man spart sich viel Arbeit die ich z.B. mit wxWidgets hatte (wobei das im Gegensatz zu MFC auch schon gut ist).

Ich kenne Qt natürlich nicht, aber nach dem, was ich im Internet dazu gefunde habe, frage ich mich, was denn da der genaue Unterschied zu Callbacks bzw. um beim Thema zu bleiben zu Events/Delegates von .NET ist?

Odal
2006-06-11, 00:34:45
Coda[/POST]']Och komm bitte, Qt 2.3 ist 100 Jahre alt. Es wird langsam lächerlich.


Ja mag sein aber ich hab wie ich schrieb damals eben Qt2.3 benutzt denn da gab es nur noch Qt 3 und dafür wollte Trolltech für eine Windows Lizenz tüchtig abkassieren. Und 100 Jahre her ist das nicht. Ich glaube 3 Jahre ist es ca. her wo man nur Qt 2.3 frei für Windows beziehen konnte.



Du hast Qt echt nicht angeschaut. Allein die Performance und der Look von GTK unter Windows sind furchtbar.


Wie gesagt ich habe mir Qt 2.3 angeschaut danach hatte ich die Schnauze voll. Wenn sie es nicht gebacken bekommen eine Implementierung ihres Toolkits fertigbekommen was unter gleicher Versionsnummer manchmal nicht kompatibel ist, ist der Laden für mich gestorben. Und ich habe auch noch in erinnerung das die 2.3 Sachen sowieso inkompatibel mit Qt 3 waren. Sprich Abwärtskompatiblität war nicht vorhanden.


Es geht nicht darum was möglich ist sondern wie. Und da hat Qt einfach den deutlich größten Umfang und die einfachste Programmierung.


dann muss sich das um 180° gedreht haben in den letzten Jahren. Es gibt aber nichts was ich an Swing unhandlich finde. Ich bekomme mit Swing äusserst schnell eine schöne benutzerfreundliche Oberfläche hin wozu also Qt. Aber wie dem auch sei benutz du man ruhig weiter dein Qt ich kann Qt && C++ aber keinem empfehlen vor c# und .net zu bevorzugen wenn er für windows gui apps entwickeln will und einsteiger ist.
Ich mag viele Microsoft Produkte nicht weil sie Macken haben aber mit c# + .net lässt sich extrem schnell und konfortabel entwickeln. Sogar Visual Studio ist relativ brauchbar.


Schon das richtig. Um die gleiche App mittels GTK oder wxWidgets zu programmieren wie mit Qt brauchst du auf jedenfall länger und hast am Ende mehr Source.

Das mag sein, ich sprach ja auch von GUI apps die mit c# + .net oder java und swing entwickelt wurden sind. Aber jeder hat halt so seine Vorlieben.

Coda
2006-06-11, 00:38:05
Gast[/POST]']Ich kenne Qt natürlich nicht, aber nach dem, was ich im Internet dazu gefunde habe, frage ich mich, was denn da der genaue Unterschied zu Callbacks bzw. um beim Thema zu bleiben zu Events/Delegates von .NET ist?
Callbacks sind in C++ generell nur schwer machbar (brauchst Hacks über boost::functor usw.)
http://boost.cppll.jp/HEAD/doc/html/ch06s06.html#id2527530

Odal[/POST]'] Sprich Abwärtskompatiblität war nicht vorhanden.
Fast jede Lib ist zwischen ihren Major-Releases nicht mehr kompatibel. Qt ist es wenigstens noch größtenteils, aber manchmal muss man halt mal ausmisten.

Odal[/POST]']Ich kann Qt && C++ aber keinem empfehlen vor c# und .net zu bevorzugen wenn er für windows gui apps entwickeln will und einsteiger ist.
Das habe ich ja auch nicht behauptet. Ich sage das ich mit Qt schneller unterwegs bin. Und erzähl mir bitte nicht ich hätte nicht genug Erfahrung...

Odal[/POST]']Sogar Visual Studio ist relativ brauchbar.
Was heißt "relativ brauchbar". Es gibt keine bessere C++ IDE. Und für C# sowieso nicht.

Odal[/POST]']Das mag sein, ich sprach ja auch von GUI apps die mit c# + .net oder java und swing entwickelt wurden sind. Aber jeder hat halt so seine Vorlieben.
Auch da dürfte man schneller sein. Für Swing gibts ja noch nichtmal gescheite GUI-Tools. Hardcoden ist nich so toll.

Odal
2006-06-11, 00:48:03
Coda[/POST]']
Das habe ich ja auch nicht behauptet. Ich sage das ich mit Qt schneller unterwegs bin. Und erzähl mir bitte nicht ich hätte nicht genug Erfahrung...


Hier gehts aber nicht um dich sondern um jemanden der fragt ob c# einfach zu erlernen ist und im weiteren verlauf wie es so mit gui entwicklung aussieht. Is soll auch durchaus Leute geben die lieber mit der win32 Api direkt entwickeln als irgendein Toolkit zu nutzen.
Und der einzige der hier jemanden wohlmöglich Erfahrungen absprechen will bist wohl eher du. Viele deiner Postings sind ja durchaus gehaltvoll aber meistens mit einer gewissen Arroganz und Dekadenz gewürzt die selbst du dir in diesem Ausmaß nicht leisten können dürftest.

Coda
2006-06-11, 00:49:51
Ich kanns einfach nicht ab wenn jemand irgendwelches Zeug niedermacht wegen subjektiven Erfahrungen vor ewiger Zeit. Das geht einfach nicht.

Jeder der sich ernsthaft mit Qt beschäftigt hat wird dir das gleiche wie ich erzählen.

Nicht umsonst ist die Liste der Firmen die Qt benützen ziemlich umfangreich:
http://webshop.trolltech.com/company/customers.html

Gast
2006-06-11, 00:53:57
Coda[/POST]']Callbacks sind in C++ generell nur schwer machbar (brauchst Hacks über boost::functor usw.)
http://boost.cppll.jp/HEAD/doc/html/ch06s06.html#id2527530



Require exact type matches between a delegate and what it is calling.


Verstehe ich nich, das ist doch gerade ein Vorteil bzw. verhindert Fehler :|


Do not allow return types


Delegaten erlauben sehr wohl Rückgabetypen, Ereignisse (spezielle Instanzen von Delegaten) erlauben nur keine Rückgabetypen. Aber das ist eigentlich auch ziemlich irrelevant, denn man kann ja irgend etwas per Referenz übergeben und so bekommt der Caller auch Änderungen mit.

Coda
2006-06-11, 00:59:20
Ja das sind Feinheiten. Delegates sind ja auch in Ordnung, nur kannst du damit auch nicht ein Signal so einfach auf mehrere Empfänger verteilen. Bei Qt machst halt connects und danach ein emit(signal) und gut is.

Btw, mal was zu GTK vs. Qt: http://www.staikos.net/~staikos/whyqt/

Based on my experience porting GTK applications to Qt, the resulting code is typically 30%-60% smaller than the GTK equivalent (in terms of lines of code).

Gast
2006-06-11, 01:10:36
Coda[/POST]']nur kannst du damit auch nicht ein Signal so einfach auf mehrere Empfänger verteilen.


Und wieso sollte das nicht gehen? :|

Coda
2006-06-11, 01:11:08
Natürlich geht es, aber dann brauchst ja auf jedenfall ne Schleife o.ä. statt nem einfachen emit.

Im Endeffekt geht auch alles mit Inheritance und virtuellen Funktionen, aber es ist halt alles um einiges nerviger als das Qt-Konzept.

Gast
2006-06-11, 01:12:24
Coda[/POST]']Natürlich geht es, aber dann brauchst ja auf jedenfall ne Schleife o.ä. statt nem einfachen emit.

Wie kommst du denn auf sowas? :|

Coda
2006-06-11, 01:15:15
Schau mal:
http://www.microsoft.com/germany/msdn/library/net/SoWerdenEreignisseInNETGemeldetUndBehandelt.mspx?mfr=true

Du brauchst tausend remove, insert usw. Funktionen (Das ist ja ein ganz einfaches MVC-Pattern was die da treiben).

Mit Qt reduziert sich darauf signals & slots zu definieren, connectect und emit und den Rest dem Qt-Metacompiler zu überlassen. Gut ich hatte Delegate-Chains vergessen, aber der Aufwand ist trotzdem noch höher.

Gast
2006-06-11, 01:19:31
Coda[/POST]']Du brauchst tausend remove, insert usw. Funktionen (Das ist ja ein ganz einfaches MVC-Pattern was die da treiben).


Du brauchst exakt eine Zeile, um ein Delegate mit einem Handler zu verbinden.


Gut ich hatte Delegate-Chains vergessen, aber der Aufwand ist trotzdem noch höher.

Ein Delegate ist implizit immer ein Multicast Delegate

Coda
2006-06-11, 01:22:06
Gast[/POST]']Du brauchst exakt eine Zeile, um ein Delegate mit einem Handler zu verbinden.
Ja das Combine-Zeug, allerdings must das die Klasse ja trotzdem in ner Memberfunktion machen lassen.

C++/Qt Beispiel:
class Foo : public QObject
{
Q_OBJECT
public:
Foo();
~Foo();
public slots:
void bar(int);
signals:
void qux(double,int);
};In Foo könnte man jetzt z.B. emit qux(2.0,3); verwenden und eine andere Klasse mit connect(foo,SIGNAL(qux(double,int)),blub,SLOT(whatever(double,int))); dran binden.

Gast
2006-06-11, 01:36:15
Coda[/POST]']Ja das Combine-Zeug, allerdings must das die Klasse ja trotzdem in ner Memberfunktion machen lassen.


Ein += reicht vollkommen aus, um mehrere Methoden dranzuhängen.


In Foo könnte man jetzt z.B. emit qux(2.0,3); verwenden und eine andere Klasse mit connect(foo,SIGNAL(qux(double,int)),blub,SLOT(whatever(double,int))); dran binden.

Ich sehe hier nicht wirklich einen Unterschied zu:

MyCustomDelegate myDelegate = new MyCustomDelegate(this.DisplayValue);
myDelegate += new MyCustomDelegate(this.DisplayValue);

myDelegate(5);

Ich kann natürlich anstatt auf die Instanz mit this. auch auf ein Objekt vereisen, kein Problem.

D-Swat
2006-06-11, 02:54:48
Coda[/POST]']In Foo könnte man jetzt z.B. emit qux(2.0,3); verwenden und eine andere Klasse mit connect(foo,SIGNAL(qux(double,int)),blub,SLOT(whatever(double,int))); dran binden.

Das geht mit C#/.NET mit einer Zeile. Stichwort DataBinding.


txtBox.DataBindings.Add( "Text", dsCust, "Customers.FirstName");


Und schon zeigt die TextBox immer den Wert der Propery FirstName an. Funktioniert auch in die andere Richtung.