Datum: 30.06.2008 23:00
Hi! Um mit meinen µCs auf eine elegante Art und Weise zu kommunizieren möchte ich nun auch in die Windowsprogrammierung einsteigen. Meien Vorhaben sind zunächstmal vergleichsweise einfach. Ich möchte ein bisschen mit graphischer Oberfläche Arbeiten und dann meine µCgeräte per RS232 oder USB steuern können. D.h. verschiedene Steueranwendungen wie z.b. Farbauswahl für RGB beleuchtungen, Lightshows usw.. Anwendungen die ich aus der Trayleiste über ein kleines Icon und Kontextmenü steuern kann (z.B. einfach so eine einblendende, fensterlose Fläche wo verschiedene Schieberegler drauf sind usw..). Verschiedene Grafikfunktionen sollten auch möglich sein um sowas wie ein Oszilloskopprogramm oder einen logic Analyzer realisieren zu können. Mehr möchte ich zunächst nicht machen, ich denke, dass ich niemals großartig über solche Steuerungsanwendungen hinauskommen werde. Die Grafische Oberfläche soll hübsch werden, jedoch reicht es, wenn ich nur standardmäßige Windowskomponenten benutze. Also keine Programme mit selbstentworfenem GUI, höchtens sowas wie eine Bildergallery um verschiedene Programmabläufe schnell auswählen zu können oder sowas, sollte drin sein. Ich bin inzwischen schon in die C-Programmierung eingestiegen, bei µCs und habe auch ein allgemeines C-Buch für PCs, ist ja kaum ein Unterschied. Empfehlt ihr mir, auf meiner vorhandenen Programmiererfahrung mit C aufzubauen oder soll ich für solche Zwecke lieber eine geeignetere Programmiersprache nehmen, mit besserer Programmierumgebung, die mir es ermöglicht, leichter und schnelle solche entsprechenden Programme zu entwickeln? lg PoWl
Datum: 30.06.2008 23:25
Für Einsteiger ist es recht schwer in C/C++ Programme mit Benutzeroberfläche zu erstellen (man denke da an MFC, Qt, GTK oder gar nur Win32 per Hand). Der C++ Builder von Borland ist ja auch fast ausgestorben, sonst aber schon ganz gut. Ich würde Dir daher Delphi oder C# empfehlen. Das "Umlernen" ist nicht sehr schwierig und es gibt gute Bücher. Und bevor jetzt die Leute kommen mit Qt ist einfach oder MFC ist einfach... aus Erfahrung kann ich sagen, für den durchschnittlichen Einsteiger ist es das definitiv nicht.
Datum: 30.06.2008 23:28
Wenns Windows ist, kann man C# empfehlen. Sehr an C angelehnt, schnelle Entwicklung, kostenlose, gute IDE. Und mittlerweile gibt's seit .NET 2.0 auch eine Komponente/Klasse, mit der man schön einfach und gekapselt auf die serielle Schnittstelle zugreifen kann. GUI's machen geht auch kaum noch leichter. Die IDE gibt's hier: http://www.microsoft.com/germany/Express/product/v... Tutorials usw. sollte Google ausspucken, empfehlenswert sind hier Anlaufstellen wie codeproject.
Datum: 30.06.2008 23:29
Ich hab da im Moment keinen Überblick, was bedeutet "schwierig"? Schwierig zu verstehen, man muss vieles beachten und nachdenken, wie man programmiert. Oder einfach nur aufwändig da man für jede anklickbare Schaltfläche 5-10 Zeilen Code braucht? Am liebsten wär mir übrigens die Kommunikation via USB, damit ich nicht für jeden Mist einen Comport brauche. Bis ich aber in USBprogrammierung fit bin und auch den AVR damit zum kommunizieren gebracht habe, reichen ja USB -> RS232 converter. Man kann doch theoretisch zur automatischen Erkennung alle Comports durchscannen und gucken an welchem das entsprechende Gerät hängt indem man eine bestimmte Codesequenz sendet? lg PoWl
Datum: 30.06.2008 23:40
C ist dafür ungeeigned, die Lib ist auch sehr beschränkt. Die Investition eine passende Sprache zu lernen macht sich schnell bezahlbar. meistens ist es sowieso nur eine etwas andere syntax, ich würde dir zu python mit pyqt (+qtdesinger), mit python kanns du auch einfach guis mit tkinter machen. eclipse und java würden sich auch noch anbieten, es wird aber etwas länger dauern bis man damit produktiv ist c++ mit qt ist auch eine brauchbare kombination ich würde einen bogen machen um .NET (C++.NET, C# usw) machen, obwohl microsoft mit visual studio eine sehr gute (auch kostenlose) entwicklungs umgebung hat (ich glaube man kann das visual studio aber auch für normales c++ und qt nutzen)
Datum: 01.07.2008 00:06
Ich empfehle C++. Es stehen kostenlose IDEs/Compiler zur Verfügung und nach etwas Einarbeitungszeit hat man unbegrenzte Möglichkeiten. Im Gegensatz zu .NET kann man jederzeit auf einem anderen Rechnersystem programmieren (es gibt ja auch schon C++ für den AVR) und dank einiger Tools können Benutzeroberflächen mit C+ auch problemlos "zusammengeklickt" werden. Darüber hinaus erzeugt der C++ Compiler echten Maschinencode der Unabhängig von Interpretern (wie bei Java oder .Net) ausgeführt werden kann.
Datum: 01.07.2008 00:31
Also ich muss sagen, es wäre schon nicht schlecht wenn ich in der Entwicklungsumgebung mein GUI designen könnte ohne alles per Hand zu programmieren. Mit Delphi habe ich die schlechte Erfahrung gemacht, dass ich hinterher keine Ahnung.. 10 Dateien hatte und überhaupt keinen Überblick hatte wo nun was drin stehen soll, keinen Code gesehen der die Erstellung dieser Fenster darstellt. Ist das bei C/C#/C++ auch so schlimm? Im Moment fällt mein Augenmerk auf diese drei Programmiersprachen. Auf das NET Framework wollte ich allerdings möglichst auch verzichten. C oder C++, ihr werdet mir wohl zu C++ raten. Gibts dafür Entwicklungsumgebungen die das Designen für GUIs unterstützen? lg PoWl
Datum: 01.07.2008 00:40
Wenn du C++ lernen willst, schau dir QT (http://www.trolltech.com/) an. Gibts unter der GPL, Graphischer Oberflächen-Designer ist dabei, und man kann mit sehr wenig Code viel erreichen. Und als (für dich vielleicht nicht so interresanter) Bonus kannst du denselben Quelltext auch gleich für MacOS und Linux verwenden. Allerdings braucht man da schon solide C++ - Kentnisse, da gehts gleich mit Mehrfachvererbung, Templates usw. zur Sache.
Datum: 01.07.2008 00:44
Wenn du Ahnung von objektorientierter Programmierung in C++ hast kann ich nur qt empfehlen. Da brauchste auch für ein par slider keinen gui builder (obwohl es den auch gibt) denn so ein Programm ist vll. mal 20 zeilen lang. EDIT: Ich lese gerade kein C++. Wenns dich interessiert lern es aber BEVOR du dich an qt setzt alles andere frustet nur.
Datum: 01.07.2008 00:53
Keine Ahnung was ihr macht .. aber ich lerne Haskell :)
Datum: 01.07.2008 01:27
Martin wrote:
> Keine Ahnung was ihr macht .. aber ich lerne Haskell :)
Aber sicher nicht für die GUI-Windows-Programmierung :D
Datum: 01.07.2008 07:41
in den .net Zeug gibt es noch C++/CLI. Das ist deutlich näher an C/C++ es ist leichter damit C bibleotheken einzubinden. Und es gibt eine kostenlose Visual-Studio version. Hab gelesen das du einen Bogen um das .net Zeug machen wolltest. war nur als Ergänzung gedacht.
Datum: 01.07.2008 10:57
Also ich würde dir raten, dass du dir erst einmal Code::Blocks holst (kostenlose IDE + GNU C++ Compiler) (www.codeblocks.org) und dann arbeitest du dich erst einmal durch das Buch C++ in 21 Tagen (http://www.informit.de/books/c++21/data/start.htm). Danach solltest du die Grundlagen von C++ und OOP drauf und kannst dich dann mit der GUI Programmierung beschäftigen... Ja nach GUI Paket ist dann eventuell eine andere IDE besser geeignet ( Visual Studio bietet sich halt bei einer MS GUI an, Code::Blocks unterstützt recht gut wxWidgets oder eben was anderes, je nachdem, was dir dann lieber ist). Viel Erfolg!
Datum: 01.07.2008 11:33
Ich würde (werde demnächst) mit dem Erlernen einer weiteren Programmiersprache anfangen. Und zwar eine Skriptsprache (interpretierte Sprache), auf die man einfach ein halbwegs passable Grafikoberfläche aufsetzen kann. Ich sehe den Vorteil einer Skriptsprache darin, dass man quasi interaktiv sein Programm entwickeln kann. die Performanceeinbußen gegenüber kompilierten Sprachen ist IMHO bei einfachen Steuerprogrammen und/oder den modernen PCs erträglich. http://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen gibt eine nette Übersicht, was nötig ist, um ein einfaches "hello world" auf den Bildschirm zu bringen. Da gibt es je nach Sprache mehr oder weniger komplexe Quellcodes. Schick finde ich Python oder Ruby oder BASIC oder Tcl oder Lua oder Javascript oder Perl oder PHP oder R oder REXX oder ... Welche genau, würde (werde) ich davon abhängig machen, ob sie auf mehreren Plattformen läuft und ob es Grafikanbindungen gibt. Im Moment bin ich Python am ehesten zugeneigt. Ein Buch dazu kommt in den Urlaubskoffer ;-)
Datum: 01.07.2008 11:39
Stefan "stefb" B. wrote: > Welche genau, würde (werde) ich davon abhängig machen, ob sie auf > mehreren Plattformen läuft und ob es Grafikanbindungen gibt. Im Moment > bin ich Python am ehesten zugeneigt. Ein Buch dazu kommt in den > Urlaubskoffer ;-) Dann schau dir mal PyQT (besser gleich PyQT4) an. z.B. hier ein Tutorial: http://zetcode.com/tutorials/pyqt4/
Datum: 01.07.2008 11:41
Danke!
Datum: 01.07.2008 11:46
www.wxwidgets.org. Das ist das einfachst und umfangreichste, was ich kenne. Was ich gerade bei CodeBlocks gesehen habe : "The GCC toolchain for the Texas Instruments MSP430 MCUs" Hat das jemand im Gebrauch ?
Datum: 01.07.2008 12:06
Python + GUI, kann ich mir immer besser vorstellen. Welche GUI ist nebensächlich, denn es gibt Wrapper für die gängigsten z.B. Twilight GUI (http://students.ceid.upatras.gr/~sxanth/twgui/) als "SuperWrapper" für PyGTK (GTK), PyQT (QT), wxPython (wxWidgets) und Tkinter (Tcl/Tk)
Datum: 01.07.2008 12:17
Dir wird hier nun jeder etwas anderes erzählen :-) Mein Tipp: Nimm erst einmal eines von den genannten Sachen und arbeite dich da hinein. Nach einiger Zeit wirst du schon merken ob du damit gut klar kommst oder nicht. Ich z.B. habe (musste) mit MFC angefangen (anfangen), bin aber mittlerweile bei wxWidgets & C++ (für GUI) gelandet, bzw. C# wenns mal ganz quick and dirty gehen muss. C++ benutze ich auch mal gerne für kleine Konsolenprogrämmchen. Als GUI benutze ich für alle 3 Sachen Visual Studio Express von Microsoft. PS: Aber in einem werden mir wohl alle zustimmen: MFC ist einfach nur alt. Zumindest mit der Version, mit der ich gearbeitet habe (Ich habe gehört es gibt da wohl schon aktuelle Versionen wieder, mitgeliefert beim Visual Studio Professional oder so). Und mit Hinblick darauf, dass Qt oder wxWidgets und wie sie alle heißen open-source sind, sind diese eindeutig mehr zu empfehlen als MFC.
Datum: 01.07.2008 13:04
Falls Du evtl. auch im Berufsleben mal in der Softwareentwicklung arbeiten möchtest, würde ich auf jeden Fall etwas nehmen, das verbreitet ist. Z.B. Visual Studio. Die Programmiersprache ist dabei weniger entscheidend, aber ich denke C# oder Visual Basic wären sicher nicht schlecht. Selber verwende ich Privat das kostenlose Visual Studio .NET C# Express Edition. Da ist alles dabei was man so braucht und kommt schnell zum Ziel. Die Syntax von C# ist zudem sehr ähnlich wie C, so kann man auch gut mal in sich geschlossene C Codeblöcke vom Microcontroller in ein C# Projekt kopieren um sie dort elegant testen und debuggen zu können.
Datum: 01.07.2008 14:58
XPROFAN http://www.profan.de wäre auch eine Überlegung wert. Einfache, leistungstarke Befehle, keine speziellen Windows-Kenntnisse nötig, keine Objektorientierung und Recourcenverwaltung erforderlich. Benutze diese Software auch zur µC Kommunikation. Bis Version 6.6 kostenlos.
Datum: 01.07.2008 15:07
Ganz persönliche Erfahrung: Spring ins kalte Wasser und versuchs einfach
mal mit nacktem C -- ohne Windoof, ohne Fenster und ohne Klickibunti.
Das was dich bei Delphi verwirrt hat, wird dich auch bei
Borland-C++-Builder verwirren, der arbeitet identisch.
Schreib erstmal Programme für die Konsole, das ist einfach und du
lernst, wodraufs ankommt (nämlich nicht auf bunte Klickerei, sondern
auf praktikable Funktion). Hast du dich dann mal mit der
Standardbibliothek, Dateien und all so nem Zeugs vertraut gemacht,
stehen dir alle Wege offen.
Natürlich kannst du dir jeden Knopf von Hand programmieren, kein Ding.
Aber du kannst auch einen "Designer" benutzen. Wie in Delphi oder QT. Da
malst du dir deine Fenster quasi mit Drag'n'Drop und der Designer
erstellt dir dann (je nach dem) den passenden Quelltext (QT) oder eine
spezielle Resourcendatei (Delphi, BC++B) oder sowas und du füllst das
nur noch mit deinen Funktionen auf.
Und ganz ehrlich: Boote mit Linux (Knoppix) und fang damit an. Im
Gegensatz zu Windows brauchts da so gut wie keine Spezialfunktionen, um
z.B. auf Schnittstellen (seriell, Drucker...) zuzugreifen.
C ist puristisch, dadran wirste bestimmt Gefallen finden. Und wie
gesagt: hastus mal gerafft, ists auch egal ob du nu "{ ... }" schreibst
oder "begin ... end".
Viel Spaß und viel Erfolg ;-)
Datum: 01.07.2008 16:11
Matthias wrote:
> keine Objektorientierung [...] erforderlich.
Und ich dachte immer Objektorientierung wäre ein Konzept, was dem
Programmier entgegenkommt ;)
Datum: 01.07.2008 16:37
> ...Und ich dachte immer Objektorientierung wäre ein Konzept, was dem > Programmier entgegenkommt ;)... Ist auch so. Wenn man verstanden hat, um was es dabei geht... ;-) Markus
Datum: 01.07.2008 16:54
Kurz und bündig kann ich empfehlen: -Delphi (müsste es auch eine freie Personal- oder Expressversion geben) -Visual Studio 2008 (Express) -wxwidgets am besten zusammen mit Bloodshed DevC++ >Mit Delphi habe ich die schlechte Erfahrung gemacht, dass ich hinterher >keine Ahnung.. 10 Dateien hatte und überhaupt keinen Überblick hatte wo >nun was drin stehen soll, keinen Code gesehen der die Erstellung dieser >Fenster darstellt. Ist das bei C/C#/C++ auch so schlimm? Hm, drück mal F12, dann siehst du Deine Fensterklasse. Wenn du wissen willst wie ein Fenster (also z.B: die Form-Klasse) intern aussieht, öffne einfach die Unit Forms.pas. In welcher Datei was drinstehen soll kann Dir eigentlich erstmal egal sein, dafür hast du die IDE, im Gegensatz zu nackten Toolchains, wo man sich um jeden Furz selber kümmern muss (bevor das jetzt wieder so ein beleidigter Korintenkacker in den falschen Hals bekommt: Ich arbeite auch genauso oft und gerne mit solchen Toolschains, hat aber miteinander einfach nichts zu tun). Delphi ist ein RAD (rapid application development) System. Das Konzept geht davon aus dass Dir zunächst mal kackegal ist, wie die internen Klassen die Windows-API überreden ein Fenster auf den Schirm zu pinseln, vielmehr willst du möglichst schnell Deine Aufgabe (z.B. "Hallo Welt" in einer Messagebox ausgeben) bewerkstelligen.
Datum: 01.07.2008 16:59
Objektorientierung war vor einigen Jahren das Lieblingsthema der Akademiker. Wie die Praxis gezeigt hat ist das zwar ganz nett und erleichtert viele Sachen, aber es ist keine eierlegende Wollmilchsau, und fehlenden Grips/Erfahrung beim Programmierer kann's auch nicht wettmachen. C ist zum Einstieg sicherlich schwieriger als Java oder das ganze andere Geraffel, und wenn man nur ein bisschen nebenher programmieren will gibt es sicher besseres (zB. die ganzen Skriptsprachen, oder von miraus auch Java). Wenn man aber wirklich richtig programmieren will ist C/C++ nach wie vor die beste Lösung. Sieht man auch daran, dass die meisten Programme in C++ geschrieben werden. @Threadersteller Deine Probleme haben aber nix mit Delphi als Sprache zu tun, sondern mit der IDE von Borland. Die macht viel und zeigt dir davon garnix. Fang mit C auf der Konsole an, oder mit Java auf der Konsole.
Datum: 01.07.2008 17:15
Eine GUI Anwendung macht doch für den Einstieg viel mehr Spass als eine Konsolenanwendung. Und mit Visual Studio oder Delphi kommt man sehr schnell zu was lauffähigem. Mit genügend Motivation kommt dann der Rest von alleine...
Datum: 01.07.2008 17:23
> Mit genügend Motivation kommt dann der Rest von alleine...
Oder auch nicht, und er macht irgendwelche Sachen ohne zu verstehen
wieso das funktioniert. Das ist zwar ganz nett wenn man mal was sehen
will, aber wenn man später wirklich selber neue Sachen machen will,
nutzt es garnix.
Datum: 01.07.2008 17:35
Also ich kann Dir auch nur C/C++ empfehlen, alternativ noch Java oder dann als Nachfolger von beiden die Programmiersprache D. Java hat halt den Vorteil, dass es Plattformunabhängig ist aber auch den Nachteil, dass immer ein Interpreter benötigt wird.
Datum: 01.07.2008 17:41
tom wrote: > Java hat halt > den Vorteil, dass es Plattformunabhängig ist aber auch den Nachteil, > dass immer ein Interpreter benötigt wird. Naja, da gibt es z.B. den "GCJ", Gnu Java Compiler. Der propft ein Java-Frontend auf das normale GCC-Backend auf, d.H. übersetzt Java-Sourcecode (Mit Einschränkungen, IIRC geht Swing nicht) direkt in nativen Maschinencode, der dann ohne JRE läuft. Hat halt dann den Nachteil, dass es nicht mehr Platformunabhängig ist, und den Vorteil dass kein Interpreter/VM mehr gebraucht wird...
Datum: 01.07.2008 23:19
Mit Java wollte ich jetzt nicht unbedingt anfangen. Um die Serielle Schnittstelle zu nutzen muss ich sowieso Plattformabhängig programmieren. Windoof XP wird ja noch eine Weile durchhalten. Die Programme sind vorerst sowieso nur mal für mich. Ehrlich gesagt ist es wirklich Tatsache, dass ich recht wenig Freizeit hab (zum Programmieren) und eher eine Sprache erlenen möchte, mit der ich schnell zu einem Ansehlichen Ergebnis komme. Schön wäre es, wenn mir diese Sprache es trotzdem ermöglichen könnte, gescheite Programme damit zu schreiben die auch schnell laufen (also keine Scripts?). Ich muss übrigens sagen dass mir die C-Syntax recht gut gefällt. lg PoWl
Datum: 01.07.2008 23:45
Ja wie gesagt, da du eh aus der C Welt kommst ist der Umstieg auf C++ nicht mehr schwer. Klar es steckt eben ein anderes Denken dahinter, aber dich zwingt ja keiner OO zu programmieren. Im Grunde ist nahezu jedes C Programm auch ein gültiges C++ Programm. Daher kannst du mit deiner C Erfahrung sehr schnell in C++ einsteigen und dann Stück für Stück das obejektorientierte Design kennen und schätzen lernen. Ich finde das Buch C++ in 21 Tagen eben ganz gut für Umsteiger, da hier völlig losgelöst von irgendwelchen Bibliotheken das Wesen von C++ vermittelt wird. Viele Kapitel wirst du mit deinen Kenntnissen dann leicht überspringen können und dich eben auf die OOP konzentrieren können. Sobald du dann problemlos Klassen anlegen, vererben und Operatoren überladen kannst, dann guckst du weiter hinten im Buch nach Template und der Einführung in die STL und mit ein paar HowTos aus dem Netz hast du auch ganz schnell deine erste Benutzeroberfläche realisiert. Ich glaube wenn man schon gut C kann, dann ist der Umstieg auf C++ sehr leicht. Man muss ja keine neue Sprache erlernen sondern nur eine neue Denkweise. Die paar syntaktischen Neuerungen hat man auch schnell verinnerlicht.
Datum: 01.07.2008 23:51
ja, nunja was heißt "gut C". Ich programmiere damit mittlerweile relativ erfolgreich µCs, hab das Prinzip von Structs, Zeigern,.. usw. ganz passabel verstanden (an der Umsetzung haperts vll teilweise noch etwas). Viel am PC mit C programmieren konnte ich nicht, da ich mir angenehmeres Vorstellen kann als Warenverwaltungsprogramme vor mich hinzutexten, die so gut wie nix machen können. Das bringt zwar routine und übung, aber da lern ich lieber noch etwas dazu und probiere dann ein wenig rum. Dabei kommt dann auch ein Programm raus, das die ersten Hebel in Bewegung setzen und mehr als nur Text ausgeben kann :-)
Datum: 02.07.2008 00:13
War schon klar, dass da jetzt viele mit Ihrer "Lieblings-"Sprache / Entwicklungsumgebung kommen. Darum gehts aber nicht , sondern um was Einsteiger-freundliches . Und das ist, ich kanns nur wiederholen, MFC, Qt, Win32 nativ, wxWidgets nicht. Ich persönlich mag Qt auch sehr und genauso MFC. Hab aber genauso viele Einsteiger mit halbwegs-guten C-Kenntnissen an Qt-Vererbung und MFC-Klassen-Müll verzweifeln sehen. Und da das hier ein Hobby ist, dh Spass machen soll, bietet sich ein zusammen-klick GUI-Ersteller an. Wenns ein bischen wie C sein soll, nimm C#, auch wenns nicht GPL ist oder Delphi, auch wenns viele Sachen zunächst vor dem Programmierer verbirgt. Macht aber trotzdem/gerade deswegen mehr Spass für den Einstieg.
Datum: 02.07.2008 00:13
Ganz interessant können Simulationen von irgendwelchen Sachen sein. Bei
der heute üblichen Rechenpower kann man viele Probleme ganz banal
umsetzen, und es kommt trotzdem in brauchbarer Zeit ein gutes Ergebnis
raus.
Zb. Spielereien mit neuronalen Netzen, Wärmeausbreitung in irgendwelchen
Sachen simulieren, der eintausendunderste Sonnensystemsimulator, der
jede einzelne Sekunde simuliert (ok, da braucht's schon etwas Grips,
aber jede Minute ist gut machbar), Fraktale, (um mal auf das Thema
Elektronik zurückzukommen) nichtideales Verhalten von C und L, und
lauter solche Sachen.
Übrigens läuft nicht jedes C Programm durch einen C++ Compiler. Zum
einen gibt's oft Probleme bei Zeigern ("int*
a=malloc(sizeof(int)*1234);" funktioniert unter C++ so NICHT), und zum
anderen kennt C seit ISOC99 Sachen, die C++ nicht kennt (zB. "int
a[variable];"); ähm .
Datum: 02.07.2008 00:18
In Delphi hab ich mal reingeschnuppert, aber da.. nunja, bitte nicht schlagen, da gefällt mir die Syntax einfach nicht :-D Notfalls lass ich aber gerne mit mir Verhandeln. Ich bin denke ich nicht in der Position große Ansprüche zu stellen. Aber C# werde ich mir mal anschauen.
Datum: 02.07.2008 01:11
@Stefan python ist eine weise Entscheidung nach Jahren von C++ staunt man wie einfach sich manche Dinge auch schreiben lassen. Besonders stringmanipulationen, re, listen, maps herausfiltern aus listen und und und. Das liest sich alles wie pseudocode vom feinsten. Ich lerne Haskell im Moment weil ich mich mit Rekusion(beweisen) an sich beschäftige, currying verstehen will und einfach meine Denkweise etwas erweitern will. grüsse
Datum: 02.07.2008 01:32
Hi Ich bevorzuge Delphi. Eine gestandene Entwicklungsumgebung. Nichts für Leute, die mehr auf 'Modesprachen' fliegen. Und wird mit Sicherheit eine ganze Reihe der 'Eintagsfliegen'-Programmiersprachen überleben. MfG Spess
Datum: 02.07.2008 08:02
Ich mag ganz normales c. Das hat aber sicher damit zu tun, daß ich keine ganz riesigen Softwareprojekte mache, sondern immer mal ne Insellösung. Der Resourceneditor vom develop studio reicht mir da für normale guis. Vorteil von c mit win32 ist für mich - ich kann die Sprache, die win32 lernt man immer besser kennen und so habe ich die Möglichkeit den einen oder anderen Algorithmus schon mal in c auszuprogrammieren. Dazu kommt daß ich c++ nicht so wirklich gut kann (den oop Aspekt, der sich dann natürlich durch quasi alle Sprachen zieht und jede objektorienterte Sprache mehr Mittel zum Zweck werden lässt. Bei wirklich schwerer Windows Kost und größeren Projekten ist c aber sicher tot.
Datum: 02.07.2008 22:22
Ich hab auch ein wenig das Gefühl, dass jeder seine Lieblingssprache hat und sie mir natürlich auch empfehlen möchte. Die einen sagen, es wäre sinnvoll gleich mit größeren Geschützen anzufahren, die anderen sagen, ich soll erstmal eine einfacherere Sprache nehmen um schneller ans Ziel zu kommen. Ich denke C++ wäre für die Anwendung Overkill. C#, Delphi scheinen ja praktisch das gleiche zu sein. Brauchen die noch einen Interpreter oder sind die Programme überall lauffähig? Sich das GUI fürs Programm in der Entwicklungsumgebung zusammenzuklicken und dann mit Funktionen zu bestücken find ich ganz gut. Sieht zu mindest nach schnellem Erfolg aus. Welche Programmiersprachen eignen sich für sowas? lg PoWl
Datum: 02.07.2008 22:49
GUI zusammenklicken hat nix mit der Programmiersprache zu tun. Mit Glade oder QTDesigner bekommst du sowas auch für C++ und GTK bzw. Qt, und eigentlich gibt es da für jede halbwegs sinnvolle Sprache was.
Datum: 02.07.2008 23:02
OK in diesem Falle hole ich mir jetzt einfach gerne noch ein paar Meinungen ein und entscheide mich dann endlich für etwas: Ist es besser in C++ einzusteigen? Oder eher C#, Delphi zu nehmen? Nochmal meine Anwendungsgebiete: - Steuer- und Regelanwendungen (d.h. der Umgang mit Dateien und generell mit Strings soll nicht allzu schwierig sein (ich denke da an C, bei dem es gar keine echten "Strings" gibt, oder ist das wo anders auch so?)) - Verschiedene Formen von Fenstern - Tray-Icon Progrämmchen - Kommunikation mit der seriellen Schnittstelle - diverse Grafikfunktionen (Oszilloskop, Logicanalyzer, multifunktionelle Bildergallery) lg PoWl
Datum: 02.07.2008 23:29
Wenn du eh unter Windows bleiben willst, kann ich C# mit .NET empfehlen. Erleichtert im Vergleich zu C++ mit MFC vieles wesentlich. Serielle Schnittstelle ist gleich dabei, die grafischen Oberflächen sind nett und lassen sich zur Laufzeit total einfach anpassen usw. Oszi und Logic-Analyser sind schon recht aufwendige Sachen. Da gibts aber PlotLab. Tray-Icon geht eigentlich immer...egal ob C++ oder C#
Datum: 02.07.2008 23:39
Nun wie gesagt. Alle drei Sprachen erfüllen Deine Anforderungen. Aber bedanke, dass zumindest bei C# und C++ der Syntax deinem bekannten C schon recht ähnlich ist. Delphi hingegen baut auf Pascal auf, also andere Syntax, andere Befehle als C => mehr lernen. Aber grundsätzlich ist Delphi schon ne ganz nette Sprache. C# ist eben eine reine Microsoft Geschichte und soweit ich weiß vollständig an .net gebunden. Daher muss wohl im Hintergrund ein Interpreter laufen. Ich persönlich lehne solch ein Konzept bei einer Programmiersprache grundsätzlich ab. Ein weitere Nachteil ist halt, dass du damit auch nur auf Microsoft Betriebssystemen programmieren kannst. Ich glaube auch nicht, dass der Einstieg schneller ist als bei C++, denn in beiden Fällen musst du erst einmal Umdenken können (bei Delphi halt auch). C ist eine prozeduale Programmiersprache, Delphi, C++, C# sind eben objektorientiert. Man kann sicher darin programmieren ohne dieses Konzept verstanden zu haben, aber ob man dann weit kommt? Daher: Egal für welche Sprache du dich entscheidest. Auch für ein bloßes Hobby sollte man genügend Zeit aufbringen das Konzept dahinter zu verstehen. Also noch einmal klein anfangen ohne bunte Fenster, sondern nur auf der Kommandozeile. Lerne das objektorientierte Konzept und der Einstieg in die verschiedenen Bibliotheken für GUIs wird dann mit Sicherheit schneller gehen und mehr Spaß machen, weil du dann eben auch verstanden hast, was sich hinter einem Befehl, einem Operator oder einer Klasse so alles verbirgt. Diese Hürde musst du bei allen drei Programmiersprachen nehmen um damit was ordentliches auf die Beine zu stellen, der Unterschied ist nur, dass es dir die eine Programmiersprache eben etwas leichter macht ohne solch ein Hintergrundwissen ein Fenster anzuzeigen und Buttons zu definieren. Des ist wie mit C für µCs: Man kann sicher problemlso für µCs ein paar Programme zusammenschreiben ohne sich mit der Architektur der Controller auszukennen. Kennt man diese, dann geht aber vieles viel leichter und man erspart sich ne Menge arbeit, Zeit und Nerven um Fehler zu suchen oder Lösungevorschläge zu ergooglen.
Datum: 03.07.2008 00:13
Hi Da ich mich eh schon als Delphi-Fan geoutet habe kann ich auch weitermachen. Delphi ist das Produkt einer jahrzehntelanger Entwicklung (Turbo Pascal(Dos) -Turbo Pascal für Windows-Delphi). Auch wenn der Syntax manchen etwas komisch vorkommt (Pascal) ist er eigentlich weniger kryptisch als C... Die freie Version von Turbo Delphi beinhaltet eine ausgereifte IDE, ein komfortables GUI, Komponenten für Datenbank- Net-,Internet-, ActiveX-Unterstützung und ... Für mich persönlich mehr als ich brauche. MfG Spess
Datum: 03.07.2008 00:22
Ich habe es zwar selber nicht getestet, aber C#-Programme sollen auch unter Linux lauffähig sein. Stichwort "Mono". Dabei ist aber wohl nicht gewährleistet dass alle neuesten .Net Funktionen kurzfristig in Mono umgesetzt werden. Ich habe die letzten Tage das erste mal (zwangsweise) etwas mit Visual Studio 2005 in C# programmiert. Der IDE ist wirklich Klasse, und das MSDN lässt eigentlich selten Fragen unbeantwortet. Die Sprache an sich ist eigentlich auch nicht verkehrt, aber wenn man in C++ viel mit Zeigern gearbeitet hat muss die alten Vorgehensweisen doch etwas umstellen. An die automatische Speicherverwaltung muss man sich auch erst gewöhnen. In C++ habe ich viele Sachen im Destruktor einer Klasse erledigt, der bei C# aber nicht aufgerufen wird (erst wenn der GC das Objekt wirklich löscht).
Datum: 03.07.2008 00:55
OO ist ein netter Zusatz, aber keine grundlegend neue Programmierphilosophie. Verstanden haben sollte man es früher oder später aber schon. @powl Wenn du nur mal ein kleines bisschen Zeugs zusammenprogrammieren willst, ist C++ sicher nicht die beste Wahl. Da würde ich an deiner Stelle eher zu Java gehen, keinesfalls C#. Je mehr Leute diesen Mist benutzen, desto länger müssen wird damit leben. Für Java gibt es auch nette IDEs wie zB. Eclipse, es ist etabliert und unter praktisch allen OS lauffähig. Das JRE ist etwas nervig, aber was entsprechendes hast du unter .net auch. Und GUI in Java ist auch kein Problem. Wenn du später mal richtig mit Programmieren anfangen willst, führt eigentlich (früher oder später) kein Weg an C++ vorbei. C++ ist viel mächtiger als Java, und viel mächtiger als C# (mal abgesehen davon, dass es in den richtigen Händen auch deutlich schneller ist). Allerdings ist die Sprache schon deutlich komplizierter, und wahrscheinlich haben Anfänger gerade desswegen Probleme mit C++, weil es dir keinen Weg aufzwingt (mal abgesehen davon, dass es auch einiges an Disziplin verlangt, weil es auch Sachen erlaubt die unsauber sein können). Java, C# usw. lassen dir bei der Implementierung dagegen recht wenig Spielraum. Und auch wenn du ein paar Jahre C++ programmiert hast, wirst du bei weitem nicht die ganze Sprache können. Es ist eine Sache ein Programm irgendwie in C++ realisieren zu können, eine andere ist es ein Programm wirklich schön und elegant in C++ realisieren zu können, unter Ausnutzung aller sinnvollen Sprachmittel. Um seinen Horizont zu erweitern ist C++ in jedem Fall deutlich besser als Java oder c#.
Datum: 03.07.2008 10:57
Das Optimum scheint es für mich leider wirklich nicht zu geben. C# sieht verlockend aus, aber davon wird mir teilweise mehrfach abgeraten. Die Syntax von Delphi gefällt mir leider überhaupt nicht. C scheint nicht gerade komfortabel für Windowsprogrammierung und C++ scheint zu kompliziert für mein Vorhaben zu sein. Java braucht ebenso einen Interpreter und die Vorteile der Platformunabhängigkeit mache ich mir damit zunichte, dass ich die Windowsoberfläche nutzen möchte. Sicher bring ich euch mit meiner Unschlüssigkeit hier zum verzweifeln aber ich komm grad wirklich nicht zu einem Entschluss, alles hat seine Vor- und Nachteile. lg PoWl
Datum: 03.07.2008 11:11
> C# sieht verlockend aus, aber davon wird mir teilweise mehrfach abgeraten.
Also, ich verwende mittlerweile C# und bin sehr zufrieden damit.
Oberfläche ist schnell erstellt, gute Foren gibts auch (wie für alle
Sprachen), IDE ist gut, und es macht richtig Spass.
Ich find es halt gut, weil ich meine µC-Programme in C schreibe, also
nicht viel umdenken. Wenn man das generelle Vorgehen in C# mal
verstanden hat, läufts echt super. Sicher gibts am Anfang wie bei jeder
Sprache auch mal Stolperstellen, aber jeder beginnt so :)
Ich habe einige Behauptungen gelesen, dass bei C# ein Interpreter im
Hintergrund läuft, dass ist soweit ich weiss nicht ganz richtig. Zwar
ist die MSIL (Microsoft Intermediate Language) tatsächlich eine
Zwischensprache, aber das Programm wird nur einmal in Maschinencode
übersetzt. Zu .NET ist zu sagen, dass aufgrund der MSIL erstmal eine
einheitliche Struktur in den Datentypen usw. ALLER .NET-Sprachen gegeben
ist, d.h. ein INT in VB ist genauso groß wie in C#. Solche Sachen
empfinde ich halt als einen Vorteil, zumal es viele weiteren Sachen
gibt, die aufgrund dieser Kompatiblität der .NET-Sprachen einfach besser
flutschen.
Also kurz gesagt: Ich kann C# empfehlen.
Ralf
Datum: 03.07.2008 11:15
Ich denke ich werde mich wohl nun auch mal mit C# befassen. Scheint ja wirklich vielversprechend. Wenn ich ein Programm in C# schreibe, ist es so ohne weiteres auf anderen Windowsrechnern lauffähig oder müssen die sich dann erst das .NET runtime environment framework bla blub runterladen? lg PoWl
Datum: 03.07.2008 11:33
Im jetzigen Moment ist es eine weise Entscheidung, C# mit .NET für Dein Vorhaben zu nehmen, zumal Du bereits C Kenntnisse hast. Das .NET Framework ist normalerweise (ab windows XP) bereits auf dem PC installiert. Falls nicht, kann man es sich sehr einfach per normalem Windows Update besorgen. Wie bereits gesagt gibt es keinen Interpreter, denn wenn Du die EXE das erste mal startest, dann wird es per "just in time compiler" optimal für Deine Platform kompiliert und läuft dann rel. schnell. Der ehemalige Chefentwickler von Delphi wurde ja von Microsoft übernommen und seit da hat sich das Visual Studio sehr gemausert! Vor dem .NET Zeitalter fand ich das Visual Studio zum kotzen, aber nun ist es super. Ich denke, installier doch mal die kostenlose Express Version und mach mal die ersten Schritte. Falls es Deine Bedürfnisse nicht befriedigt, kannst Du es wieder deinstallieren und was anderes versuchen.
Datum: 03.07.2008 13:18
> C# ist eben eine reine Microsoft Geschichte und soweit ich weiß > vollständig an .net gebunden. Daher muss wohl im Hintergrund ein > Interpreter laufen. Ich persönlich lehne solch ein Konzept bei einer > Programmiersprache grundsätzlich ab. Weder C#, noch Java, genauer gesagt, jede ernst zunehmende Implementation, benutzt einen Interpreter. Alle benutzen entweder JIT und/oder AOT (bei .Net wären die Stichworte GAC und ngen, wenn man die Applikation z.B. während der Installation in nativen Code übersetzen lassen will). Das Konzept an sich, ist das einzig vernünftige, um den "Durchschnittsprogrammierer" zu halbwegs brauchbaren > Auch beim .NET-Framework soll einen deutlich besseren Toolkit als die MFC > dabei sein, aber da kenne ich mich nicht aus. Ich kann deswegen nicht > sagen, welche Programmiersprachen unterstützt werden, aber wahrschein- > lich sind es nur die spziellen .NET-Sprachen C#, VisualBasic und evtl. > dieser neue C++-ähnliche Verschnitt. Das gesamte Framework ist wesentlich besser. Angefangen z.B. mit dem älteren WinForms, über WPF, WCF, WF etc. Plattformunabhängig ist das ganze mittlerweile auch. Zumindest wenn man sich auf .NET 2.0 beschränkt. Unterstützte Sprachen: Z.B. F# für OCaml/ML Liebhaber, Python, Ruby (als IronRuby bzw. IronPython), div. Haskell, Lisp, Scheme oder Smalltalk-Implementationen oder auch ADA (GNAT Pro) etc. Wenns Eiffel - mit Mehrfachvererbung (im Gegensatz zu C++/CLI) - sein darf: EiffelEnvision > OO ist ein netter Zusatz, aber keine grundlegend neue > Programmierphilosophie. Dann hat man's nicht verstanden. > Da würde ich an deiner Stelle eher zu Java gehen, keinesfalls C#. Je > mehr Leute diesen Mist benutzen, desto länger müssen wird damit leben. Argumente? > Für Java gibt es auch nette IDEs wie zB. Eclipse, es ist etabliert und > unter praktisch allen OS lauffähig. Das JRE ist etwas nervig, aber was > entsprechendes hast du unter .net auch. Und GUI in Java ist auch kein > Problem. Kein Problem, wenn's auf jeder Plattform eindeutig als Java-App zu erkennen sein soll, umständlich zu erweitern u.a. sein soll. > Wenn du später mal richtig mit Programmieren anfangen willst, führt > eigentlich (früher oder später) kein Weg an C++ vorbei. C++ ist viel > mächtiger als Java, und viel mächtiger als C# (mal abgesehen davon, dass > es in den richtigen Händen auch deutlich schneller ist). Mächtiger als Turing-vollständig? Mehrfachvererbung: Ist nur in einer einzigen statisch getypten Sprachen brauchbar umgesetzt (Eiffel), alle anderen Sprachen brauchen dieses "Feature" schlicht und ergreifend nicht. Operatorüberladung: Gibt's z.B. in C# auch Templates / Generics: auch Dynamische Codegenerierung (zur Laufzeit kein Template-Metagefrickel zur Compile-Zeit): In C++ genauso wenig möglich wie: Dynamische Typen/Klassen, Lambda-Ausdrücke/Closures, Linq, DLR, Reflection/Introspection etc. > Um seinen Horizont zu erweitern ist C++ in jedem Fall deutlich besser > als Java oder c#. Wenn's nur um den Horizont geht, sind Smalltalk, Eiffel, Haskell oder Scheme die richtigen Kandidaten. "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." Alan Kay
Datum: 03.07.2008 13:35
Windows-Programmierung geht übrigens auch mit Basic. RealBasic beispielsweise erlaubt sogar plattformübergreifende Programmierung für MacOS X und Linux. Ein anderer Kandidat ist TrueBasic und, so man dem .Net-Geraffel doch nicht entgehen möchte, Visual Basic.Net. Letzteres ist in einer kostenfreien Version als Visual Basic Express verfügbar. Ist zwar alles nicht mein Ding, ich arbeite seit über zehn Jahren mit der MFC, aber das mache ich auch praktisch täglich. Für Einsteiger oder Gelegenheitsprogrammierer ist das definitiv nicht zu empfehlen. Gerade RealBasic wird von einigen bekannten Entwicklern aber durchaus geschätzt, da damit schnell lauffähige Programme erstellt werden können, die vor allem ohne Runtime-DLLs und der damit verbundenen "DLL Hell" auskommen. Die Cross-Platform-Aspekte sind sicherlich noch ein nettes Schmankerl.
Datum: 03.07.2008 13:44
Arc Net wrote: >> OO ist ein netter Zusatz, aber keine grundlegend neue >> Programmierphilosophie. > > Dann hat man's nicht verstanden. Nein, du hast es nicht verstanden (ok, das ist 'ner sachlichen Diskussion nicht gerade dienlich). Ich nehme mal an du kommst aus der C# / Java Ecke. Da ist es üblich, sich durch endlos verschachtelte Klassenbäume zu arbeiten, weil dir eigentlich garnix anderes übrig bleibt. Früher dachten die Akademiker mal das wäre das tollste überhaupt, inzwischen ist da aber ernüchterung eingekehrt. Es gibt aber auch die Möglichkeit OO etwas zurückhaltender einzusetzen. C++ bietet dir zB. namespaces, die mit OO direkt erstmal nix zu tun haben. Und auch wenn du massiv OO benutzt - es bleibt in der Praxis ein ähnliches programmieren. Du kannst dem Kind einen neuen Namen geben, aber im Endeffekt setzt du dich trotzdem hin und schreibst Zeile für Zeile Code, benutzt Schleifen, rufst Funktionen in anderen Klassen auf, etc. pp. Ein bisschen Automatisierung kommt dazu, ja. Aber ich kann dir das komplette OO Konzept auch in C umsetzen. OO ist eine Denkweise, unabhängig von der Programmiersprache. >> Da würde ich an deiner Stelle eher zu Java gehen, keinesfalls C#. Je >> mehr Leute diesen Mist benutzen, desto länger müssen wird damit leben. > > Argumente? Es ist propritär. Das reicht als Argument völlig aus. Und es kommt von einem Anbieter, der zurecht auf >1Mrd wegen Monopolmissbrauch verklagt wurde - was kein Problem wär, wenn's nicht propritär wäre. >> Für Java gibt es auch nette IDEs wie zB. Eclipse, es ist etabliert und >> unter praktisch allen OS lauffähig. Das JRE ist etwas nervig, aber was >> entsprechendes hast du unter .net auch. Und GUI in Java ist auch kein >> Problem. > > Kein Problem, wenn's auf jeder Plattform eindeutig als Java-App zu > erkennen sein soll, umständlich zu erweitern u.a. sein soll. Das "umständlich zu erweitern" liegt ja wohl nicht an der Sprache, sondern am Programmierer. Wenn du unfähig bist ein erweiterbares Konzept auf die Beine zu stellen... Du scheinst dich mit Java auch nicht besonders auszukennen - SWT benutzt die nativen Widgets. >> Wenn du später mal richtig mit Programmieren anfangen willst, führt >> eigentlich (früher oder später) kein Weg an C++ vorbei. C++ ist viel >> mächtiger als Java, und viel mächtiger als C# (mal abgesehen davon, dass >> es in den richtigen Händen auch deutlich schneller ist). > > Mächtiger als Turing-vollständig? Lass mich raten: Akademiker? Das sind die einzigen, die mit dem "Argument" ankommen. C++ ist neben Java die am weitesten verbreitete Sprache überhaupt. Damit ist das Thema ob du C++ brauchst oder nicht erledigt. > Mehrfachvererbung: Ist nur in einer einzigen statisch getypten Sprachen > brauchbar umgesetzt (Eiffel), alle anderen Sprachen brauchen dieses > "Feature" schlicht und ergreifend nicht. Weil du es nicht einsetzen kannst? > Operatorüberladung: Gibt's z.B. in C# auch > Templates / Generics: auch Und nun rate mal, was das Potenzial zu höherer Performance bei gleichzeitig sauberem Code liefert. C# sicher nicht. An Vista siehst du doch ganz deutlich, wohin "Perfomance ist mir sch***egal!" führt. > Dynamische Codegenerierung (zur Laufzeit kein Template-Metagefrickel zur > Compile-Zeit): In C++ genauso wenig möglich wie: > Dynamische Typen/Klassen, Lambda-Ausdrücke/Closures, Linq, DLR, > Reflection/Introspection etc. Vieles davon lässt sich in C++ viel eleganter und schneller als in C# mit Templates erschlagen. Die Dinger richtig einzusetzen ist ein Kapitel für sich. Nur mal so als Denkanstoß: Wann immer du einen vector<int> benutzt, wird neuer Code generiert. >> Um seinen Horizont zu erweitern ist C++ in jedem Fall deutlich besser >> als Java oder c#. > > Wenn's nur um den Horizont geht, sind Smalltalk, Eiffel, Haskell oder > Scheme die richtigen Kandidaten. > "I invented the term Object-Oriented, and I can tell you I did not have > C++ in mind." Alan Kay Im Gegensatz zu Smalltalk, Eiffel und Kaskell hat C++ aber auch einen echten praktischen Wert ;). Ich bleibe dabei: C++ ist zwar deutlich schwieriger als Java oder C# (und min. 50% der Leute die meinen C++ zu können können es nicht wirklich), aber es bietet sehr viel Mehrwert.
Datum: 03.07.2008 13:59
Der Paul will doch nur mit seinem uC kommunizieren können und per GUI ein paar Daten herumschicken und visualisieren können. Er will ja nicht PC Programmierer werden, wenigstens soweit ich das verstanden habe. Von da her kommt doch erst mal was in Frage, was dem C - das er schon kennt - relativ naher kommt und ihm noch erlaubt, rel. schnell ein GUI zu machen. Mit C# und dem .NET Framework ist doch dies recht gut abgedeckt. Für die serielle Schnittstelle gibts eine fixfertige Komponente, die einfach per drag & drop ins Projekt reingenommen werden kann. Im Visual Studio kann er sein GUI zusammenklicken und danach den Code dazu ausprogrammieren. Mit F5 builden und starten. Der in die Entwick


