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.
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.
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.
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 ;)
>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??