Hallo zusammen, Ich erstelle bisher hobbymäßig Software für Mikrocontroller in Assembler und C. Hin und wieder müsste ich ein kleines Programm auf dem PC schreiben, um da diverse Daten zum Mikrocontroller hin und herzuschicken (Seriell, TCP/IP). Umfang des Programms: ein Fenster, paar Buttons und paar Felder zum Eingeben/Anzeigen von Werten. Sollte an C angelehnt sein, da ich mit C schon Erfahrungen im Mikrocontrollerbereich habe. Im Bereich PC-Programmierung ist es für mich komplett Neuland. Da ich das ganze privat nutze, sollte die Software frei erhältlich sein. Welches Programm/Programmiersprache/Literatur würdet ihr zum Einstieg empfehlen bzw. wie sollte man überhaupt anfangen? Betriebssystem wäre Windows. Würde mich freuen wenn der ein oder andere da ´ne Idee hat.
Hier einige Schlagwörter (einfach mit div. Suchmaschinen suchen): FLTK (für Oberfläche) RL-Library (TCP/IP, RS232) DEV-C++ mit MinGW Compiler (Entwicklungsumgebung) Mit diesen Punkten solltest du deine Aufgaben lösen können. mfg Weichinger Klaus
Hi, eine Möglichkeit wäre auch Microsoft Visual C++ 2005 Express Edition. Die ist speziell für Hobby-Entwickler und gratis. http://www.microsoft.com/germany/msdn/vstudio/products/express/default.mspx Ganz nett ist der "Dialogeditor". Man kann mit wenig Ahnung recht schnell zu halbwegs funktionierenden Ergebnissen kommen (Buttons, Eingabefelder, ...). Die Programmierdoku von Windows (MSDN) ist gelinde gesagt Sch****, aber im Lauf der Zeit beißt man sich da auch durch. Gruß Markus
Ein Tip, wenn du möglichst kompatibel sein willst, lass die Finger von irgend welchen offenen Klassenbibliotheken wie wxWidgets o. ä., damit kommst du auf keinen grünen Zweig.
> DEV-C++ mit MinGW Compiler (Entwicklungsumgebung)
Dev-C++ ist nicht empfehlenswert, diese IDE wird nicht mehr
weiterentwickelt und ist total veraltet (letzte Aktivität ist zwei Jahre
her).
Besser ist Code::Blocks.
Erwähnenswert ist vllt. auch noch Turbo-C++ von Borland, das ist auch für lau zu haben und eine prima IDE.
Nimm lieber C#, gibts von Microsoft als Visual C# Express kostenlos. Visual C++ mit MFC für die Oberfläche ist die Pest. MFC wurde offensichtlich von alten DOS Assembler Programmierern oder von zum IT-Profi umgeschulten Metzgern entwickelt.
Jaja, die üblichen Vorurteile. Sicher, MFC ist eine der verkrauteteren Klassenbibliotheken, und die würde ich Anfängern auch nicht nahelegen, bedenkt man aber, wann_ die MFC entwickelt wurden und _was damals C++-Compiler so konnten, und vor allem, was das dem ganzen zugrundeliegende Windows damals so machte, dann ist das Zeug gar nicht so übel. Nur leider sehr schlecht dokumentiert, da prinzipiell nie die Prinzipien, sondern nur die Anwendung erklärt wird. Eine Alternative ist schon in Ordnung, aber ich würde dieses ganze .Net-Geraffel vermeiden wie der Teufel das Weihwasser. Damit erlernte Programmierfähigkeiten sind auf so gut wie kein anderes System übertragbar (jaja, es gibt Mono), und eine Programmiersprache, die keine echten Pointer kennt und einem eine GC vorschreibt, hilft einem überhaupt nicht, brauchbare Programme auch für Microcontroller zu entwickeln. Sinnvolle Klassenbibliotheken für Windows-Oberflächenprogrammierung sind plattformunabhängige Klassenbibliotheken, und da stehen wxWidgets und Qt recht weit vorne. Beide sind auch für Linux, MacOS und auch für embedded-Systeme PDAs verfügbar. Wer also dafür programmieren lernt, hat die Chance, seine Programme auch auf eine Waschmaschine mit graphischer Benutzeroberfläche portieren zu können. Die hier von vielen Leuten als Heilsmittel vorgeschlagenen Borland-Produkte (BCB oder gar Delphi) sind nicht plattformunhängig, sie schreiben einem gewissermaßen das Verweilen bei Windows vor. In Anbetracht der derzeitigen Entwicklung (Vista-DRM etc.) ist das vielleicht nicht die klügste aller Entscheidungen; andere Töchter haben auch schöne Mütter.
Rufus t. Firefly wrote: > Die hier von vielen Leuten als Heilsmittel vorgeschlagenen > Borland-Produkte (BCB oder gar Delphi) sind nicht plattformunhängig, sie > schreiben einem gewissermaßen das Verweilen bei Windows vor. Microsoft Visual [whatsoever] ist ebenfalls nicht plattformunabhängig und schreibt somit Windows vor. Stimme ansonsten aber zu.
Wobei der Vollständigkeit halber "Kylix" erwähnt werden sollte, was ein Versuch der Firma Borland war, Delphi und auch BCB unter Linux zu veröffentlichen. Ist aber wohl zwischenzeitlich gestorben und von der Bildfläche verschwunden.
@ rufus, was schlägst du denn nun als brauchbare lösung vor, die auch dem stand der zeit entspricht und für anfänger zu empfehlen ist um schnelle ergebnisse zu erzielen? Hab auch interesse kleinere anwendungen am pc für pic zu proggen
> Sinnvolle Klassenbibliotheken für Windows-Oberflächenprogrammierung sind > plattformunabhängige Klassenbibliotheken, und da stehen wxWidgets und Qt > recht weit vorne. Beide sind auch für Linux, MacOS und auch für > embedded-Systeme PDAs verfügbar. Also ich habe mir wxWidgets mal angesehen, und ich finde, das ist nicht viel weiter entwickelt als das was MS mit den MFC auf die Beine gestellt hat. Vor allem sind die Entwicklungstools Generationen von MS.Net oder Borland (BCB oder Delphi) entfernt. Für gaanz kleine Anwendungen kann man den Aufwand auf sich nehmen, und sich damit herumquälen. Für Anwendungen wo die Entwlcklungszeit berechnet wird, halte ich wxWidgets zumindest für inakzeptabel (auch da jedes "Hallo Welt" Programm mit GUI gleich min. 4Mb einnimmt).
wxWidgets ist halt wieder so ein (überflüssiges) Geraffel von vermutlich gelangweilten Informatikern, die mit ihrer Freizeit nichts anzufangen wissen. > Also ich habe mir wxWidgets mal angesehen, und ich finde, das ist nicht > viel weiter entwickelt als das was MS mit den MFC auf die Beine gestellt > hat. Richtig, und vor allem sieht man es den "Programmen" sofort an, dass es wxWidgets-Gerffel ist. Die Oberfläche entspricht nicht dem gewohnten Standard. wxWidgets ist definitiv nur was für Leute, die ihre Software/Betriebssysteme aus "Prinzipgründen" wählen, und dabei sogar schlechtes in Kauf nehmen.
Ich persönlich würde Ruby/TK verwenden, für deine Anforderungen denke ich aber dass Java/Swing am besten passt. Mit C++ handelst du dir deutlich mehr Ärger ein.
Mal ehrlich, die Hand hoch, wer von den Rat-Schläger hier schon mal ernsthaft unter Windows entwickelt hat. Ich meine so richtige Anwendungen mit kompletter Windows Oberfläche und allen Pipapo. Keiner oder?
Ich nutze Java/Swing und finde Javas strikte OOP wunderbar. (@VC-Profi: Damit habe ich auch bereits umfangreiche Software geschrieben (GUI und Basisfunktionalitäten >50 KLOC)) Aber Java erwartet ein nicht geringes Maß an Einarbeitung bis man damit richtig loslegen kann. Dafür lassen sich dann die Klassen und Packages nachher wunderbar in zig späteren Projekten auf allen Plattformen wiederverwenden und es gibt zig hochqualitative kostenlose packages für alle möglichen Zwecke. Als Alternative mit der man sofort loslegen kann könnte ich auch PureBasic empfehlen: http://www.purebasic.com Da gibts auch eine kostenlose Demo-Version von, die allerdings einige entscheidende Einschränkungen hat (z.B. keine WinAPI-Anbindung). Du müsstest die Software also kaufen. Vorteile dort: Sehr einfache Programmierung von GUI-Anwendungen, z.B. erzeugt der Dreizeiler OpenWindow(0, 0, 0, 400, 200, "TestFenster", #PB_Window_SystemMenu) While WaitWindowEvent() <> #PB_Event_CloseWindow Wend ein Fenster inkl. Ereignisabfrage. Ebensoleicht lassen sich sogleich Buttons, Listen oder alles andere an GUI-Elementen hinzufügen und deren Events in der Hauptschleife verarbeiten. Das kompiliert auch unter Linux mit GTK und Mac. In der Windows-Version ist die WinAPI direkt angebunden, einfach nur ein _ hinter den entsprechenden Befehl schreiben Ansonsten werden dieselben Sprachkonstrukte wie in C unterstützt (Schleifen, Strukturen, Macros, etc.), auch Pointer-Spielereien sind ohne weiteres möglich und es gibt Inline-ASM (Man kann direkt ASM-Zeilen in den Code schreiben). .exe-files sind klein (so ab 4kB), auch in .dll kompilierbar Es gibt zig mitgelieferte Funktionen ohne weitere Libs (Dateizugriffe, Netzwerk, Kompression, 2D/3D-Grafik, usw.) Es gibt kompetente Hilfe in den Foren (englisch/deutsch/französisch) und eine Menge freie Codes Nachteile: Wer C kann muss sich in der Syntax komplett auf einen BASIC-Dialekt umstellen Die Sprache ist nicht verbreitet und daher sicherlich bei professioneller Software nicht 'anerkannt' Die 64-bit-Integers sind buggy und man stößt manchmal auch woanders auf einen Bug in der Sprache Trotz der nicht ganz banalen Nachteile nutze ich diese Sprache gerne für kleinere Windows-Tools, und mittlerweile sogar für ein größeres Projekt, eine Touchpanel-Mediensteuerung über TCP eines MPEG2-Players und zugehörigem Content-Management-System. Für größere Projekte halte ich aber OOP für unverzichtbar, PureBasic ist wie C nur prozedural. Allerdings kann ich auch nicht über meinen eigenen Tellerrand sehen, da ich keines der weiter oben im Thread erwähnten Visual-Tools kenne und auch in C bisher keine GUI-Programmierung mit irgendwelchen Toolkits gemacht habe. Allerdings würde ich von ausschließlich auf der WinAPI beruhender GUI-Programmierung abraten, da man sich dort mit allerlei Nebensächlichkeiten rumplagen muss. Also summa summarum meine Empfehlung: 1. Wenn du 'richtig' in die Progammierung einsteigen willst => Java 2. Zum schnell kleinere Tools schreiben => PureBasic 3. Irgendwas anderes, das ich nicht kenne Bye, Sven
Aha kein Hände oben, habe ich mir es doch gedacht @André Unter Windows führt kein Weg an Visualstudio vorbei , die meisten Anwendungen werden mit VC und MFC erstellt . C# lässt man besser links liegen. Alle was sonnst noch an Möglichkeiten rumkraucht und empfohlen wird, ist für Leute die nicht programmieren können bzw. wollen. Visualstudio stammt vom Herausgeber von Windows und nur die wissen wie man eine Windows-Gui und das Messagehandling und all das ganze Zeug richtig programmiert (auch wenn immer einige was zu meckern haben). Und VC ist die nun mal der Marktführer wenn es um "Windows-Programming" geht. VC und MFC ist nicht das einfachste aber das Beste wenn man richtig programmieren will. Gruß VC-Profi
naja, wenn ich mir das alles so anschaue: Ruby/TK, Java/Swing, Delphi,... - das ist alles so zurechtgebastelt, dann ist es einfacher und übersichtlicher, wenn ich gleich mir etwas in Visual Basic erstelle, da ich die Anwendung ja sowieso in Windows Umgebung einsetze. Oder sehe ich hier etwas falsch ??
@VC Deine Einstellung ist riguros, aber ich finde die Argumente lahm. > Visualstudio stammt vom Herausgeber von Windows und nur die wissen wie man eine Windows-Gui und das Messagehandling und all das ganze Zeug richtig programmiert Messagehandling ist umfangreich, aber nicht wirklich kompliziert. Nach dem Konsum einschlägiger Literatur (z.B. der Bibel von Petzold) kann man das auch komplett selbst über WinAPI machen. Aber sogar einer Randsprache wie PureBasic gelingt es ein sehr simples und intuitives Interface bereitzustellen, das absolut zuverlässig die GUI unter 3 Plattformen verwaltet. > Und VC ist die nun mal der Marktführer wenn es um "Windows-Programming" geht. Marktführer zu sein heißt nicht, für jeden Anwendungszweck das richtige zu sein. Sich für eine Plattform auf eine Sprache festzulegen ist Blödsinn. Das tut man anwendungsgebunden. Java hat z.B. in einigen Bereichen große Vorteile gegenüber C++, und C++ in anderen gegenüber Java, losgelöst davon kann man dann noch seine IDE wählen. Ich habe jetzt keinen Bock hier anhand von Einzelheiten irgendein sinnloses 'Welche Sprache/IDE ist die Beste'-Geplänkel anzufangen, aber für Leute, die mal eben ein kleines Tool schreiben möchten gibt es sogar weitere Alternativen zu den Riesen, die erst bei umfangreichen Projekten notwendig werden. >Alle was sonnst noch an Möglichkeiten rumkraucht und empfohlen wird, ist für Leute die nicht programmieren können bzw. wollen. immer locker bleiben... @piccie Ich weiß nicht, was du mit Gebastel meinst, aber Visual Basic gehört für mich mit in die Bastelecke :) Im Endeffekt sollte es eh darauf hinauslaufen, dass man sich ein paar mögliche Sprachen mal genauer anschaut (installieren, Hello-World-Progrämmchen und weitere Tests die in die Richtung gehen wo man hinwill) und dann feststellt, welche erstmal am Besten für den eigenen Zweck geeignet ist...
Du spielst ein bisschen mit Basic rum und meinst damit kann man Anwendungen für Windows schreiben? viel Spaß Ausprobiert hast du das aber noch nie oder? sonst würdest du die Grenzen schnell sehen. Die Mehrzahl der Anwendungen für Windows wurden mit Visualstudio / C++ und MFC entwickelt . Ich rede aber von richtigen Anwendungen nicht „Minit-Tools“
Das ist seltsam: In egal welchem Forum, immer wenn es um
Programmiersprachenvergleiche geht, artet es am Rande in kleine
Flame-Wars aus. Seltsam wir Menschen...
> Du spielst ein bisschen mit Basic rum und meinst damit kann man
Anwendungen für Windows schreiben? viel Spaß
Ausprobiert hast du das aber noch nie oder? sonst würdest du die Grenzen
schnell sehen.
Auch wenn ich es etwas albern finde mich zu rechtfertigen, mache ich das
nun mal:
Beruflich programmiere ich am Liebsten mit Java, in einem gegenwärtigen
Projekt besteht mein Part aus GUI und Projekt-Handling und umfasst
bereits 50 KLOC (kilo lines of code), insgesamt sind daran 5 Leute
beschäftigt. Das andere ist ein Forschungsprojekt eines rennomierten
Instituts, dort programmiere ich überwiegend in Matlab (hat mittlerweile
auch OOP), gepaart mit einigen Java-Komponenten und
ActiveX-Erweiterungen per MSVisualC++ für die komplette Steuerung des
Messystems. Ansonsten mache ich nebenher gerne für Multimediaprojekte
Dinge mit Flash, z.B. Touchpanelsteuerungen für Events, Messen, Museen.
Für Internet php, perl, oder auch JavaScript, achja und HTML/CSS :) Für
kleinere Tools wie Terminal-progrämmchen, COM-Port-Interaktionen,
Mini-Client/Server-Tools, etc. nutze ich gerne auch PureBasic, da man
damit solche kleinen Dinge direkt runtercoden kann, denn sehr viel
Funktionalität wird mit der Software mitgeliefert, da braucht man sich
nicht um irgendwelche Drittanbieter-Lösungen zu kümmern. Z.b. schreibst
du Sounddaten in den Speicher und nutzt einen Befehl: CatchSound() und
danach PlaySound(). Mach das mal mit 2 Zeilen in C++ mit hauseigenen
Funktionen. Den Grenzen aller dieser Sprachen bin ich mir bewusst - auch
denen von C++. Das meinte ich mit anwendungsbezogener Sprachenwahl. Den
Kram studiere ich derzeit im Hauptstudium und lebe schon lange davon,
also bitte versuche persönliche Attacken nicht als Argumente für deine
engstirnige Sprachenwahl heranzuziehen :P
Viele Anwendungen wurden mit Visualstudio / C++ und MFC entwickelt. Na
und ? Viele andere mit anderen. Das hat nichts damit zu tun, welche
Sprache für die Zwecke von Andre zu empfehlen ist. Es kann zwar gut
sein, dass Visualstudio / C++ und MFC das richtige für ihn ist und er
sollte es sich unbedingt mal ansehen, aber jenseits des Tellerrands gibt
es noch mehr.
Einen guten Start in die Woche!
Sven
> Anwendungen für Windows schreiben?
Eine Oberfläche hat nicht viel mit Programmieren zu tun. Wenn man weis,
wie sie auszusehen hat, kann man die auch zurechtklicken. Das geht auf
jeden Fall sehr viel schneller und die gewonnene Zeit kann man sinnvoll
in die Umsetzung von Algorithmen stecken. Das ist programmieren! Naja
und Basic bietet naturgemäß nicht die Möglichkeiten, die z. B. C/C++
bietet.
Handhebung: Verdiene mir seit Anfang der 90er Jahre mein Geld mit der Windows-Applikationsentwicklung - und mache das überwiegend mit (o Schreck!) MFC. Zu wxWidgets gibt es mit dem (allerdings nicht für lau zu bekommenden) GUI-Editor DialogBlocks* ein durchaus brauchbares Werkzeug. Huberts "Kommentar" kommentiere ich nicht weiter, als daß ich darauf verweise, daß der Audioeditor "Audacity" eine wx-Applikation ist. Der Kommentar würde zu Tcl/TK-Anwendungen passen, die sehen unter Windows tatsächlich oft nach irgendwas merkwürdigem aus ... *) www.anthemion.co.uk - Autor ist Julian Smart, der Kopf hinter wxWidgets.
Eine Oberfläche kann man nicht mal eben so zusammenklicken. Wer das meint, ist Schuld an den frustrierten Anwendern!
Für kleinere Windows-Programme, die schnell entstehen sollen, ist wohl C# die beste Wahl. Ist quasi ein Visual-Basic mit C-Syntax. Etwas vergleichbares, aber bei weitem nicht so ausgereiftes bietet wxdsgn, das ist ein Dev-Cpp, das mit wxwidgets und einem RAD erweitert wurde. Der entstehende Code ist vermutlich auch plattformunabhängig. Bei gewünschter Plattformunabhängigkeit ist Java aber vermutlich die bessere Alternative. Hier wurde doch definitiv nach etwas zum Einstieg und nach etwas C-ähnlichen gefragt. MFC ist doch inzwischen "veraltet", zu einem Neueinstieg für Windows-Programmier ist also .NET das Mittel der Wahl. Klar, dass einige hier noch ein paar Jahre mit MFC ihre Programme schreiben, aber das liegt ja dran dass da schon Programme vorhanden sind die sowieso gepflegt werden und zweitens halt das Know-How schon da ist. Deswegen muss man es aber nicht einem Neueinsteiger empfehlen. Und was will man bei nem kleinen Anwendungsprogramm schon mit Pointern? Dieses Basic mag zwar toll sein, aber er hat ja nach einer kostenlosen Möglichkeit gefragt. Und ich konnte jetzt keinen deutlichen Vorteil aus deiner Argumentation raushören. Und auch wenn es generell stimmt, dass ein Programmierer jede Programmiersprache schnell lernen kann, finde ich es trotzdem vorteilhaft, bei ähnlichen Sprachen zu bleiben, auch wenn das natürlich auch öfters mal zu Verwirrungen führt (geht mir zumindest so). Das ganze geflame ist hier doch etwas sinnlos. Anhand des verwendeten Tools kann man doch lang nicht entscheiden wie professionell das entstehende Produkt ist. Man kann mit Java genauso wie mit C# oder C++/MFC Schrott produzieren. Es gibt ja auch genug professionelle Anwendungen, die mit einem alten VisualBasic geschrieben wurden (hab ich hier schon gesehen und so schlecht ist das gar nicht - allerdings habe ich auch nicht den Code gesehen). Die sind natürlich nicht so umfangreich, aber für ihren Zweck völlig ausreichend, schließlich steckt da ja noch mehr Wissen dahinter als das reine Programmieren. Dagegen habe ich hier auch schon C#/C++-Anwendungen, die grottig lahm sind und sogar Speicherlecks aufweisen (ok, war nur ne Beta), gesehen. Ihr habt ja jetzt ein paar Alternativen geliefert, der Threadersteller muss am Ende selbst entscheiden was er nutzen möchte - ich gehe aber fast davon aus, dass er (evtl. auch wegen eurem geflame) das Interesse verloren hat.
> MFC ist doch inzwischen "veraltet", zu einem Neueinstieg für > Windows-Programmier ist also .NET das Mittel der Wahl. Dem zweiten Teil der Aussage widerspreche ich. Das .Net-Geraffel ist nur dann Mittel der Wahl, wenn man niemals irgendwas anderes als Windows-Systeme programmieren will (nein, komm mir jetzt nicht mit Mono) und auch, wenn man niemals vernünftig C bzw. C++ programmieren lernen möchte. Genauso wie Java nimmt einem "managed C++" oder "C#" nämlich das Denken ab ... und Leute, die mit sowas gearbeitet haben, habens ganz besonders schwer, das Konzept eines Pointers zu verstehen.
Wie hier schon erwähnt wurde, anwendungsbezogen entscheiden. Hier ging es um Einstieg in die Windows-Programmierung. Von Pointern usw. wird er ja wohl Ahnung haben, wenn er Assembler und C auf uC's verwendet.
Rufus t. Firefly wrote: > Genauso wie Java nimmt einem "managed C++" oder "C#" nämlich das > Denken ab ... Offensichtlich ist das auch dringend notwendig. Der Großteil aller Sichsheitslücken entsteht dadurch, dass Fehler mit Pointern, Formatstrings usw. gemacht werden. Und zwar nicht nur von Anfängern.
Hi Ich rate dir von Microsoft Visual Studio ab. Es mag vl eine brauchbare Programmierumgeben zu sein. Nur durch die tatsache, dass dein Computer danach nicht mehr brauchbar ist, wenn du dieses Programm installiert hast, ist das, meiner Meinung nach, ein grund wieso man es nicht verwendet. Also bevor ich das installiert habe, ging auf meinem PC so ziemlich alles. Nachdem ich es installiert habe. Gingen meine anderen Compiler, meine CAD-Programme und Spiele usw. nicht mehr. Daraufhin bin ich bzw sind wir(das hat mehrere Betroffen) zum Professor hin und haben in auf dieses PRoblem angesprochen. Er hat dann nur mehr gemeint: Es tut im leid, er hat vergessen zu erwähnen, dass man dafür am besten ein eigenes System aufsetzten soll, denn nach der installation geht gar nichts mehr ;-) Nunja... ich verwende jetzt den DEV-C++ compiler und bin recht zufrieden damit. Da ich aber lieber C Programmiere als C++, verwenden ich, wenn möglich, den CVI von NI.Dieser ist leider nicht kostenlos.. aber ansonst sehr empfehlenswert. mfg SChoasch
Hi, schau Dir doch mal den LCC-Compiler ist ist für die private Nutzung kostenlos, es gibt auch ausreichend Doku dazu und er besitzt ähnlich wie der DevC++ eine einfache Oberfläche inkl. eines Projekt-Wizards. Herstelle QSoftware Solutions GmbH oder google nach lccwin32.exe
Hallo, in der Firma gab es damals oefter die gleichen Aufgabenstellungen z.B. Spannungsanzeige, paar Button und die Kommunikation zum AVR sollte per USB / RS232 auf einem Windows PC laufen. Leider war für die Windows Anwendung keine Zeit eingeplant, sondern nur die AVR Programmierung. Aus diesen Grund habe ich mich für Visual Basic (2005) entschieden und bin soweit zufrieden. Ich wollte auch nicht meine ganze Zeit damit verbringen auch noch Visual C++ / MFC zulernen, obwohl es sich um simple Frontend Software handelt.
"Nur durch die tatsache, dass dein Computer danach nicht mehr brauchbar ist, wenn du dieses Programm installiert hast, ist das, meiner Meinung nach, ein grund wieso man es nicht verwendet." Kann ich nicht bestätigen. Ich habe Visual Studio 6 sowie Visual Studio .NET parallel installiert, und beide Umgebungen sowie das OS und alle anderen Programme funktionen einwandfrei.
Andreas Schwarz wrote: > Rufus t. Firefly wrote: >> Genauso wie Java nimmt einem "managed C++" oder "C#" nämlich das >> Denken ab ... > > Offensichtlich ist das auch dringend notwendig. Der Großteil aller > Sichsheitslücken entsteht dadurch, dass Fehler mit Pointern, > Formatstrings usw. gemacht werden. Und zwar nicht nur von Anfängern. Exakt. Formatstrings und manuelle Speicherverwaltung sind in üblicher PC Umgebung (also Rechenleistung und Speicher satt) eine stupide Fleisarbeit für den Programmierer und genau dort passieren dann Fehler. Warum soll einem das nicht eine Laufzeitumgebung abnehmen? Über "managed C++" brauchen wir nicht diskutieren. Das ist eine Krücke. Aber C# (besser .NET) ist nunmal für Windows-Only Anwendungen (ja, die gibt es) die Zukunft. So hat M$ beschlossen und so wird es kommen. Und wer sich mal mit der Sprache, der Laufzeitumgebung und der Bibliothek (unvoreingenommen!) beschäftigt hat wird feststellen dass das Zeug eigentlich garnicht schlecht ist. Schade nur das M$ auf einigen Teilen der Bibliothek "den Finger drauf hat". So ist die rechtliche Situation der mono Windows.Forms Implementierung noch offen. Matthias
Habe erst jetzt Zeit dazu handheb Coden beherrsche ich seit 1986, seit Delphi 1 bin ich Entwickler unter Windows und hab mehrere Großprojekte allein damit abgewickelt. Dabei reicht der Bogen von Medienneutralen Datenbanken über GPS-gestützte Ortungssysteme bis hin zu Dispatcher-Anwendungen im TETRA-Bündelfunknetz, wo manche Aufgabe den Einsatz von Assembler erfordert... Alles in Delphi, mit GUI, Soundausgabe und allem PiPaPo. IMHO sind Delphi, C++ Builder und VC++ zur Zeit die einzig ernstzunehmenden IDE's unter Windows. Aus C# könnte vielleicht was werden, wenn sich das auf andere Plattformen ausbreiten würde - sieht eigentlich nicht so schlecht aus, die Sprache, stimme Matthias da zu. Übrigens - die .NET-Geschichte dient IMHO eher dazu, Windows sicherer zu machen. Wer keinen Schimmer von Pointern hat, spielt damit auch nicht herum (schnell mal n Meg Speicher abholen etcpp). Das vermeidet dann Buffer underruns, Overflows und all die anderen bösen Dinge, die Hacker so sehr mögen. Olaf
Nach Aussage eines Microsoftlers wird VC++ aber weiter entwickelt. Ich kenne vielen Entwickler die nicht auf C# umsteigen. Und das ist das Problem für Microsoft. C# findet nicht die gewünschte Resonanz. Am Markt vorbei zuentwickeln, können die sich auch nicht leisten. Meisten sind es nur die Neueinsteiger die C# nutzen .Weil es Dummi und Idioten-Gerecht ist. Aber für komplexe Anwedungen muss man das Speichermanagement selber machen ,(wer richtig programmiert, kann das bestätigen). Auch die fehlenden Pointer sind fatal für richtiges arbeiten.
@VC-Profi: Darf ich fragen wie alt du bist und wie lange du schon programmierst? Ich will dich nicht angreifen, ist nur aus Interesse. Und um Fragen vorzubeugen: Ich bin 18, programmiere seit etwa fünf Jahren vorwiegend VB6 und VB2005, sowie ASM und C für Microcontroller. Seit Kurzem auch Assembler und C++ für Windows. Dann hätte ich da noch eine Aussage bzw. Bezeichnung die ich gerne erklärt hätte: "richtig programmieren" Kannst du mir sagen, was ich unter "richtigem Programmieren" verstehen soll? Anwendungen ab 10kLoC? @André: Also ich programmiere meine Proggies zur Kommunikation mit den Controllern in VB6 bzw. VB2005. Damit lassen sich serielle und parallele Schnittstelle recht gut ansprechen und die GUI kann man sich sehr schnell und einfach zusammenklicken. Für solche Tools (Und meiner Meinung nach auch grössere Anwendungen) völlig ausreichend. Allerdings halt nicht plattformunabhängig und auch nicht an C angelehnt. Aber die Syntax lernt sich recht schnell. Wenn man programmieren kann ist es ohnehin nicht übermässig schwer und zeitaufwändig, sich in eine andere Sprache einzuarbeiten solange dort nicht ein vollkommen anderes Konzept der Programmierung verfolgt wird. Gruss Philipp
Hallo Phillipp Burch, wie machst du unter Visual C++ die grafische Auswertung? Gibt es im Netz irgendwo ein Beispiel dazu? ich möchte die Daten von einem Controller via RS232 in Visual C++ grafisch darstellen.
> Kannst du mir sagen, was ich unter "richtigem Programmieren" verstehen > soll? Anwendungen ab 10kLoC? Unter richtiger Programmierung versteht er sicher, wenn er sich für bestimmte Funktionen tagelang den Kopf zerbrechen muß, obwohl dies in einer "hohen" Programmiersprache wie C# vielleicht ein Einzeiler darstellt.
"wie machst du unter Visual C++ die grafische Auswertung? Gibt es im Netz irgendwo ein Beispiel dazu? ich möchte die Daten von einem Controller via RS232 in Visual C++ grafisch darstellen." Im wesentlichen mit du das wohl mit einem "Pen" selber zeichnen usw. Schau mal unter www.codeproject.com Da habe ich mal ein Beispiel für so etwas gesehen (ich glaube unter MFC-Controls).
@Frank: Hallo? VC++? Ich sprach oben doch von Visual BASIC 2005 und da ist sowas mit wenigen Mausklicks erledigt. Ausserdem läuft im .net Framework auch alles über GDI+, da hast du dann auch gleich solche Sachen wie Anti-Aliasing und solches Zeugs standardmässig drin (Lässt sich natürlich auch abschalten), das vereinfacht die Grafikausgabe :) Aber wie du das realisierst hängt natürlich im Wesentlichen davon ab, wie es denn aussehen soll. Willst du ein komplettes Diagramm erstellen oder sowas, dann wirst du auch da entweder alles selbst zeichnen müssen oder aber ein fertiges Control verwenden. Ich empfehle allerdings selber zeichnen, ist viel flexibler. Willst du allerdings einfach nur Daten auflisten, beispielsweise in einer ListBox oder so, dann ist das wirklich sehr einfach zu lösen. Auch ohne Pointer.
Richtig programmieren ist, wenn man einem anderen seinen Quelltext gibt, und der dann damit weiterarbeiten kann.
Na wenn du meinst... Was das dann allerdings mit der gewählten Programmiersprache zu tun hat ist mir schleierhaft.
@phillip: hast du dir schonmal C# angeschaut? Ist quasi VB mit C-ähnlicher Syntax. Für kleine Tools finde ich es echt nett.
Hallo! Obwohl ich schon anfangs mal einen ähnliches Kommentar gegeben haben, möchte ich mich hier nochmal melden. Ich programmieren auch viel Delphi (finde es sehr nett, kann schön objektorientiert arbeiten, große Community). In der letzten Zeit versuche ich auch mit C++ und FLTK (für GUI) Anwendungen zu schreiben (Screen-Shot von UNI-Projekt siehe Anhang). Als IDE verwendet ich DevC++, da dort ein nettes Package-Management dabei ist (direktes Downloaden und Installieren aus dem Internet). Außerdem kann mans auch für die Mikrocontroller verwenden (derzeit für AVR und MSP430). Ich finde FLTK gut und auch als Anfänger in C++ sollte man mit den Hello-World Beispielen anfangen können und selber seine kleinen Toolz entwickeln können. Sehr schön finde ich auch die Entwicklung eigener Widgets (z.B. das Scope im Screenshot). Einziger Schönheitsfehler ist das Callback-System. Plattformunabhängigkeit ist auch gegeben (obiges Programm läuft auch auf Linux und die RS232 läuft auch). Weitere Libs für die Hobby-Entwickler: RS232: rlserial TCP usw.: rllibrary USB: libusb mfg Weichinger Klaus
@Weinga-Unity: btw, JPEG ist für Screenshots ein ziemlich ungeeignetes Format, weil es Kanten verschwimmen lässt und daher "unsauber" aussieht. PNG oder GIF führen bei Screenshots oft zu kleineren Dateien bei besserer Qualität.
@Gast2: Jop, C# kenne ich, ich programmiere auch viel mit VB 2005, das ist ja ungefähr das Gleiche (.NET-Framework 2.0), nur die Syntax ist eben etwas anders. Cool ist daran vor Allem die kostenlose IDE (Express Edition), aber auch die Sprache ist recht gut. Allerdings ist die Darstellung von Controls schnarchlahm. @Weinga-Unity: Also für ganze Anwendungen mit guter GUI usw. bevorzuge ich dann doch eher etwas wie VB 2005 oder VB6. Falls mal wirklich was zeitkritisches drin sein sollte, kann man das ja immer noch in C, C++ oder Assembler proggen (ASM ist echt cool, kann ich auch empfehlen :) ).
Gibt es im Netzt irgendwo eine Vergleichstabelle von C / C++ Tools? Ich suche nähmlich auch noch eine Windows Entwicklungsumgebung mit Debugger für C/C++. Ich habe schon Erfahrungen mit Delphi, C++ für DOS, C für µC.
Wenn Delphi-Erfahrung da ist, liegt doch der Turbo-Explorer C++ bzw. Turbo C++/C++Builder von Borland/Inprise/Codegear nahe (wenn nicht schon wieder was geändert wurde). Ansonsten: Visual Studio, Code::Blocks oder Eclipse ansehen
Wie wäre es denn mal mit einer modernen Sprache: Groovy Vorteile: - Eine dynamische Sprache (geht in Richtung scriptsprache) - untypisiert (wer basic-Vorkenntnisse hat) oder auch typisiert - Riesen API - Java kann verwendet werden - Komfortable Entwicklung mit Eclipse - plattformunabhängig Nachteile: - Kommt darauf an
Nochmal eine dumme Frage von mir ... Wie sieht es z.B. bei Code::Blocks oder Eclipse mit einem Debugger aus? Ist immer schön, wenn man so Zeile für Zeile sein Programm ausführen kann.
Klospülung wrote: >> Kannst du mir sagen, was ich unter "richtigem Programmieren" verstehen >> soll? Anwendungen ab 10kLoC? > > Unter richtiger Programmierung versteht er sicher, wenn er sich für > bestimmte Funktionen tagelang den Kopf zerbrechen muß, obwohl dies in > einer "hohen" Programmiersprache wie C# vielleicht ein Einzeiler > darstellt. Nein. Unter richtiger Programmierung versteht man, wenn man nicht stundenlang nach einem fehlendem Dispose suchen muss um dem GC unter die Arme zu greifen. Statt dessen benutzt man das RAII-Idiom um mit dem üblichen Konstruktor/Destruktor Aufbau das Resource Management schon fast nebenher zu machen (das dann auch funktioniert. Ooops, Destruktoren sind unter C# unbrauchbar; in C++ sind sie es nicht. Statt dessen muss in C# der Verwender(!) eines Objekts darauf aufpassen, dass er einem Objekt beim Freigeben mit einem Aufruf von dispose die Möglichkeit gibt, Resourcenmanagement zu betreiben. Tschuldigung: aber das ist doch Steinzeit. Das unterscheidet sich in nichts von den init() und cleanup() calls, die man vor 30 Jahren in Fortran schon nicht vergessen durfte. Und wehe man vergass einen. Ist heute nicht anders: Vergiss einen dispose auf einer wichtigen, grossen Struktur und schau im Taskmanager zu, wie dein Programm den 2GByte Speicher zumüllt. Irgendwann fängt dann Windows zu pagen an, die Gesamtperformance geht in die Knie, bis sich irgendwann dann die .NET Runtime meldet: 'Out of Memory'. Hab ich bereits mehr als einmal beobachtet. Soviel zum Thema: Speichermanagementprobleme gehören der Vergangenheit an. Das funktionsgleiche C++ Programm, mittels Konstruktor, Destruktor und RAII sauber aufgebaut, werkelt dagegen wochenlang mit seinen 100kB Working Set, zu aller Zufriedenheit vor sich hin.
Um schnell mal Tools oder auch grössere Projekte zu programmieren, empfehle ich das Visual Studio .NET mit der Programmiersprache C#. In der Express Version ist das ganze kostenlos und man kann alles damit machen was man so braucht (GUI Anwendungen, Konsolenanwendungen, Datenbankanbindung, Netzwerkanbindung, Filehandling, RS232 Anbindung etc. etc.). Vieles lässt sich mit wenigen Zeilen Code realisieren, da das Rad für häufige Aufgaben nicht nochmals erfunden werden muss, sprich vieles gibts schon fix fertig im .NET Framework. Man kann somit sehr schnell entwickeln und sich auf die realisierung des eigenen Tools konzentrieren, statt auf die Programmiersprache und dessen Entwicklungsumgebung. Der Debugger im Visual Studio .NET ist super und auch die Doku/Hilfe ist mittlerweile sehr ausgereift und sogar in Deutsch vorhanden. Zum Einsteigen würde ich aber doch einen kleinen Kurs empfehlen, da man sonst schnell von der Gewaltigkeit des .NET Frameworks erschlagen wird. Auch ist es von Vorteil, neue Projekte gleich Objektorientiert zu programmieren und da ist es hart, sich das alles im Selbststudium beizubringen. Das objektorientierte Programmieren empfiehlt sich aber auch für andere Programmiersprachen.
> Unter richtiger Programmierung versteht man, wenn man nicht > stundenlang nach einem fehlendem Dispose suchen muss um > dem GC unter die Arme zu greifen. oder einem fehlenden delete, free, nicht virtuellen Desktrutoren, falscher Destruktor-Reihenfolge beim Verlassen einer Methode, da abhängig von der Reihenfolge der Deklaration und/oder der Blöcke in denen die Variablen deklariert wurden, schön wird's auch wenn a = new(ptr) AClass verwendet wird oder Exceptions die in Desktruktoren auftauchen > Statt dessen benutzt man das RAII-Idiom um mit dem üblichen > Konstruktor/Destruktor Aufbau das Resource Management schon fast > nebenher zu machen (das dann auch funktioniert. Ooops, Destruktoren sind > unter C# unbrauchbar; in C++ sind sie es nicht. Unbrauchbar nicht, man braucht sie nur so gut wie nie. > Statt dessen muss in C# der Verwender(!) eines Objekts darauf aufpassen, > dass er einem Objekt beim Freigeben mit einem Aufruf von dispose > die Möglichkeit gibt, Resourcenmanagement zu betreiben. > Tschuldigung: aber das ist doch Steinzeit. Nur bei nicht-verwalteten Resourcen (File-Handling zum Beispiel, nur nennt man es da, wie in anderen Sprachen auch, nicht Dispose sondern Close. Will man deterministisches Verhalten benutzt man using. > Das unterscheidet sich in nichts von den init() und cleanup() calls, die > man vor 30 Jahren in Fortran schon nicht vergessen durfte. Und > wehe man vergass einen. Ist heute nicht anders: Vergiss einen > dispose auf einer wichtigen, grossen Struktur und schau im > Taskmanager zu, wie dein Programm den 2GByte Speicher zumüllt. Wie oben schon gesagt, gilt das nur bei nicht-verwalteten Resourcen. Dispose ist in C# eine ganz normale Methode die explizit (Ausnahme: using oder foreach) aufgerufen werden muss, wenn man Resourcen freigeben will. Das eigentliche Objekt, das die Resource verwendet, und der dazugehörige (verwaltete) Speicher werden auch dann nicht freigegeben (wie z.B. auch bei Eiffel, Java oder Smalltalk üblich)
> Um schnell mal Tools oder auch grössere Projekte zu programmieren, > empfehle ich das Visual Studio .NET mit der Programmiersprache C#. nee, das ist doof. da muss man sich die magafette .NET runtime installieren etc. sowas nervt nur, erst recht wenn man's weitergeben will und der andere hat kein .NET drauf (ist mit Java übrigens das gleiche Problem, nur dass Java als sprache nicht ganz so grottig ist wie C# oder C++/CLI). am besten man nimmt ein gui-toolkit: http://www.geocities.com/SiliconValley/Vista/7184/guitool.html (egal ob C oder C++) und dann geht das schon ;)
Graphik-Frontend bauen: http://www.wxwidgets.org/ nur so ein Tipp. Kann von mehreren Sprachen verwendet werden. Gruss,c.
>nee, das ist doof. da muss man sich die magafette .NET runtime >installieren etc. sowas nervt nur, erst recht wenn man's weitergeben >will und der andere hat kein .NET drauf (ist mit Java übrigens das >gleiche Problem, nur dass Java als sprache nicht ganz so grottig ist wie >C# oder C++/CLI). Gewisse Grundvoraussetzungen müssen halt erfüllt sein. So wird Dein C++ Programm auch nicht ohne Betriebssystem laufen. Zudem kann das .NET Framework ganz bequem per Windows Update installiert werden. Aber ich zwinge natürlich keinem C# und .NET auf. Wenn jemand genügend Freizeit/Arbeitszeit hat um sich mit C++/MFC herumzuschlagen, dann soll er das tun.
Aha, Jetzt kenne ich mich voll aus.(Ums Ehrlich zu sagen gar nicht) Also man soll gar nichts verwenden denn sonst wäre es ja arbeit - das leuchtet ein. Aber was verwende ich jetzt ich kann nur ASM und kein C,C++,C Kanalgitter,Delfi,Java gar nichts von dem. Ich will aber ein Windows Programm schreiben das lediglich 7 Buchstaben + Steuereungscode an einen selbstgebauten Locher schickt das wäre es. Also Programm Tasterturabfrage mit Anzeige am Bildschirm und ein Print Taster (Icon) das man mit Enter oder per Maus anklicken kann. Das Ding soll dann die Daten + Steuerungsdaten an den Locher per USB Bus schicken. Wenn der nicht Reagiert ein Rotes ICO aufleuchten. Mein Vorgesetzter hat mir gesagt das ich nicht so lange mit USB herumtun soll und ich mich mit PC Programmierung ja sowieso nicht auskenne. Ich habe Ihm gesagt das jeder Mensch verschiedene Fähigkeiten hat und Ich bei diesem Projekt ja sowieso wieder alles alleine Entwickeln darf - da sich bei uns in der Firma ja nimmand auskennt. (Auch er nicht) Für die USB wird es wohl einen Standart Treiber geben oder so eine Libery wie man das von C kennt naja ich hab noch nie was damit gemacht. Soll ich MFC nehmen? VB6 hab ich mal ein Buch gekauft aber läuft das auf Win7? C wäre glaube ich das einfachste. Ich versuche mal das MFC und werde euch berichten. MfG weakbit
Ich empfehle dir etwas Zeit in Qt zu stecken. Alles open source verfügbar und in kurzer Zeit lässt sich mit wenig Aufwand viel erreichen! zum USB: Wenn du z.B. einen FTDI baustein als Interface verwendest ist es recht einfach Daten hin und her zu schicken... Ich hab das auch mit Qt gemacht... http://qt.nokia.com/products/ Open source Compiler: MinGw
Ich glaube auch, das MinGW eine gute Ausgangsbasis ist, es basiert auf dem GCC, es sind ne Menge nützliche Tools zum Umgang mit Resourcen mit bei, die man ja braucht, um unter Windows ne vernünftige Benutzeroberfläche zu bauen. Von Frameworks halte ich weniger. Ich hatte früher meine ersten Windowsprogramme mit dem Borland BCPPB "zusammengeklickt", wie es hier auch schon geschrieben wurde, war damit aber nie so richtig zufrieden. Vor Allem, das man für ein 50 bis 100k großes Programm 3 MB an Libs mitgeben muss, von denen man nur Bruchteile an Funktionen benutzt. Das Programmieren nach dem SDK (das ist die Beschreibung der API's von Microsoft) mag zwar am Anfang etwas mühselig sein, wenn man das Prinzip aber einmal verstanden hat, geht es auch sehr effektiv. Dazu gibt es auch ne Menge Nützliche Tutorials im Netz viele auch in deutsch. mfG Ingo
Hallo, ich selbst benutze Eclipse als Entwicklungsumgebung. Zu dieser gibt es das CDT Plugin für C/C++. Von QT gibt es ein Eclipse Plugin, so dass es einfach möglich ist GUI's zu erstellen. Wie bereits geschrieben verwende ich QT als Klassenbilbiothek. Diese hat auch noch den Vorteil der Portierbarkeit auf andere Betriebssysteme. Desweiteren finden sich sehr viele Beispiele und erweiterungen zur Bibliothek im Internet. Als Compiler verwende ich MinGW. Und das ganze gibt es zum OpenSource Tarif. Als negativ habe ich die ganze Installation empfunden. Es kann ein wenig dauern bis alle Tools nahtlos ineinander greifen und ohne Fehlermeldung ihren Dienst verrichten. Für USB ist wohl am einfachsten erstmal einen virtuellen COM Port mit einem FTDI Chip zu verwenden. Es gibt auch fertige Library's, hier wäre Libusb zu nennen. Oder du schreibst dir deinen eigenen Treiber mit dem Windows DDK. PS: Wäre es nicht besser einen neuen Thread für Entwicklungsumgebung und USB zu eröffnen??
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.