Hallo, ohne nun irgendwelche Glaubenskriege o.ä. anzufangen eine Frage: Ich kann nun ein bischen C und finde uC-Lösungen im Hobbybereich gelegentlich ganz hilfreich, z.B. Heizungs- und Farblichtsteuerung in der Sauna (mit ATTiny oder ATMega), "intelligente" Vernetzung von Rauchmeldern etc. Von Windoof bin ich privat zum Glück schon fast ganz weg und nutze Linux (Kubuntu) und FreeBSD (allerdings doch recht anstrengend). Ich möchte nun auch etwas mehr im PC-Bereich programmieren (nach Möglichkeit mit Fensterchen, z.B. Auswertung von uC-Datenlogger auf dem PC) und evtl. in einem Jahr im uC-Bereich auf die Cortex-M3 umsteigen. Da in meinem Schädel nicht so ewig viel Platz ist, würde ich natürlich für beides (uC- und PC-Programmierung) die gleiche Programmiersprache nutzen wollen. Es muß nicht für beides gleichzeitig optimal sein (was wohl auch kaum geht), aber für den Hobbybereich gut ausreichend und halbwegs zukunftssicher sein. Die Anforderungen (natürlich) wie immer: Kostenloser und gut verbreiteter Compiler (wie der gcc in C), auf Grund der besseren Erlernbarkeit objektorientiert, für die Fensterchen gibts bestimmt sowieso tolle GUI-IDEs für fast alle Sprachen. C++ wollte ich mir nicht antun, da für mich zu komplex. Ruby schaut sehr nett aus, obwohl Scriptsprache (egal, bei heutiger Hardware schnell genug) und vor allem nicht typsensitiv oder wie das heißt (keine Datentypen wie int etc.), kann ich mich aber evtl. dran gewöhnen. Was schlagt Ihr also einem Quasi-Anfänger mit begrenzter Hirnleistung als möglichst universelle und relativ zukunftssichere Programmiersprache vor?
Lutz wrote: > Was schlagt Ihr also einem Quasi-Anfänger mit begrenzter Hirnleistung > als möglichst universelle und relativ zukunftssichere Programmiersprache > vor? Eindeutig C.
mit asempler kannst du alles machen von rauchmelder bis hompage
Assembler gerade nicht. Assembler ist sehr hardware nah und damit ziemlich von der Hardware abhängig und die ist bei einem µC und einem PC ja doch sehr unterschiedlich. Daher sollte es auf jeden Fall eine Hochsprache sein. C bietet sich da hervorragend an, vorallem weil es für sehr viele Zielhardwaren* passende compiler gibt. Gruß, Lasse *) Was ist der Plural von Hardware? Hardwaren? Hardwares?
Hi Universalsprache gibt es nicht. Allerdings sind Assemblerkenntnisse dann von Vorteil wenn die Hochsprache ausgereizt ist. Im Moment habe ich gerade das Problem einer 64Bit Arithmetik. Und das geht auch auf dem PC nur in Assembler. MfG Spess
Also eine "universelle" Programmiersprache gibt es nicht. Jede imperative Programmiersprache läßt sich ineinander überführen. Sonst gäbe es wohl kaum Compiler die eine Hochsprache in verschiedene Assembler übersetzen können. Wenn Du schon den objektorientierten Ansatz für Dich ausschließt bleibt als meist verbreiteste und daher gut unterstützte Hochsprache C übrig.
> Im Moment habe ich gerade das Problem einer 64Bit Arithmetik. > Und das geht auch auf dem PC nur in Assembler. Auch schon deutlich angestaubte C-Compiler wie Visual C++ 6.0 kennen den Datentyp __int64.
The right tool for the right job! µC: Assembler, C, C++ C ist für µC Verhältnisse noch relativ Hardwareunabhängig PC: C++, Python, Matlab Da es auf dem PC oft wirklich nicht auf Geschwindigkeit ankommt und Python sehr leicht erlernbar ist, ist es meine Präferenz. Matlab/Scilab/Octave für spezielle Sachen ungeschlagen, C++ für performancekritische Sachen
Aufm PC : Delphi. Ist am effizientesten fuer die Zeit die man braucht.
Für den PC Java. Die Entwicklungszeiten sind bei Java doch merklich kürzer als bei C und es ist ziemlich egal für welches Betriebssystem man die Anwendung programmiert. Man muss nicht portieren. Für den Mikrocontroller führt kein Weg an C vorbei. Bei fetten embedded Lösungen ist manchmal auch Java vorteilhaft.
Hi @Rufus int64 habe ich auch. Aber ich brauche aber unsigned QWord. Also ohne Vorzeichen. MfG Spess
Besten Dank schon mal für Eure Meinungen. @ grübler: >Wenn Du schon den objektorientierten Ansatz für Dich ausschließt bleibt >als meist verbreiteste und daher gut unterstützte Hochsprache C übrig. Da hast Du mich falsch verstanden, es soll möglichst objektorientiert sein. => "auf Grund der besseren Erlernbarkeit objektorientiert". Mit C auf dem uC bin ich eigentlich auch sehr zufrieden, mit structs und Disziplin kann man auch schon recht objektorientiert arbeiten (zumindest in meinen bisher zugegeben recht simplen Programmen). Nur auf dem PC scheint mir C für GUI-Programmierung recht ungeeignet, ich bin aber absolut offen für Überzeugungsarbeit!
C! Es war seit 1990 die einzige gültige Antwort und wird es immer bleiben! Mit C kommt man auf jeden Contoller und mittlerweile auch in die FPGAs. Sowohl testend als auch erzeugend.
>C++ wollte ich mir nicht antun, da für mich zu komplex.
Na ja, das entscheidende bei objektorientierter Programmierung ist das
Verständnis für die Konzepte. Ob man die dann in C++, Jave, Delphi,
Ruby, oder sonstwas umsetzt, ist beinahe egal. Entweder, man bekommt es
in allen Sprachen hin, oder in gar keiner.
Wenn du vorhast, Windows-Programme zu schreiben, die sich wie
Windows-Programme benehmen und aussehen (mal eben drei, vier Menus, ein-
bis zwei Konfigurationsdialoge, und etwas Datenaustausch über die
Zwischenablage ist auch ganz praktisch :-), dann ist es egal, ob C,
Java, oder C++. Die Einarbeitung in die neue Programmiersprache ist
gegenüber der Einarbeitung in das jeweilige Windows-GUI-API
vernachlässigbar.
Oliver
Lasse S. wrote:
> Was ist der Plural von Hardware? Hardwaren? Hardwares?
Hard|ware [...:], die; -, -s <engl.> (EDV Gesamtheit der
techn.-physikal. Teile einer Datenverarbeitungsanlage; Ggs. Software)
Klingt komisch, is' aber so. ;-)
Warum unterstellt ihr ihm eigentlich alle, dass er Windows-Programme schreiben will, obwohl er das doch im ersten Artikel nahezu ausgeschlossen hat? Lutz, wenn du irgendwas ernsthaftes mit GUI-Programmierung anfangen willst, dann ist das Thema einfach mal sowas komplett anderes als die Firmware für einen Microcontroller. Mit dem Ruf nach einer Universal- Programmiersprache vernagelst du dir dabei gedanklich bestimmte Wege. Die Programmiersprache selbst ist der unwichtigste Teil des Ganzen, davon kann man (auch als Nicht-Informatiker) in seinem Leben wenigstens ein halbes Dutzend problemlos so weit erlernen, dass man sie auch benutzen kann. GUI-Programmierung ist von ihrem Ansatz her praktisch immer objektorientiert. Alles, was du auf dem Bildschirm siehst, jedes Fenster, jedes Eingabefeld, jedes Menü ist ein Objekt. Daher sind die entsprechenden Toolkits letztlich auch allesamt objektorientiert. Nun kann man das auch in C durchziehen, wenn man das unbedingt will. Das Ergebnis kannst du im (mittlerweile nun doch schon recht angestaubten) sogenannten Athena-Toolkit von X11 noch bewundern. Aber ganz ehrlich: dem Ding fehlt es nicht nur an Features und vielen Tools, sondern OO-Programmierung in C ist auch das letzte, was man sich (OK, nach Windows :-)) freiwillig antut. Mein Tip: gewöhn' dich an eine der OO-Sprachen, was die PC-Seite betrifft. (Für den Microcontroller bist du mit reinem C erstmal ganz gut bedient, dabei kannst du bleiben.) Such dir einen Toolkit aus, der die von dir bevorzugte Sprache unterstützt. Wenn du dich mit C++ anfreunden kannst (ist ja zumindest syntaktisch erstmal nicht so weit weg von C), dann kämen mir Qt oder GTK in den Sinn. Für eine plattformübergreifende Programmierung (X11, Win32, MacOS X) wäre auch noch wxWidgets eine nette Alternative. Alle diese moderneren Toolkits haben auch einen Interface-Builder, mit dem man sich das Grundgerippe einer Applikation zimmern lassen kann. Der wesentliche Lernaufwand steckt darin, die einzelnen Objektklassen des Toolkits zu verstehen und insbesondere das Geometrie-Management (wie wird was wann wo im GUI angeordnet). Wenn du wxWidgets nimmst, kann der Interface-Builder außer C++ auch noch Python- und Perl-Code generieren, falls dir OO in einer Scriptsprache mehr liegen sollte.
Kommt auch immer drauf an, was du in deinem zukünftigen Leben noch alles programmieren willst. Willst du GUI-Programmierung machen und dann auch noch möglichst portabel sein, wirst du mit Java wohl gut fahren. Wenn dagegen dein Hauptinteresse Werkzeuge auf der Kommandozeile sind oder du Webentwicklung machen willst, ist Ruby eine wirklich interessante Alternative. Wenn du hingegen darauf angewiesen bist, dass deine Webentwicklungen auf wirklich jedem Webspace laufen, wirst du derzeit um php nicht herum kommen. Ob Ruby oder Python ist dann wieder Geschmackssache, sind wohl beides nette objektorientierte Sprachen. Bei Ruby kann ich zumindest sagen, ist der Einstieg relativ schnell gemacht, vermutlich ganz anders, als die tonnenschwere Java-Umgebung. Auch wenn man mit Ruby GUI-Entwicklung machen kann, hat sich das in der Breite noch nicht durchgesetzt, weswegen die Unterstützung dafür nicht so berauschend ist. Delphi find ich auch ganz nett, aber ich glaub, unter Linux hat sich das auch nie wirklich durchgesetzt. Und ganz wichtig finde ich auch immer, dass man in langfristiges Wissen investiert. Und da sind mir Opensource-Sachen meist lieber. Ich hab früher mal viel Zeit in Foxpro investiert, was damals einen wirklich guten Ruf hatte. Leider war die komplette Investition 5 Jahre später, als Microsoft das übernahm und zu einem schlechten Werkzeug dekradierte, schon wieder völlig wertlos. Hingegen C++: Das, was ich vor 15 Jahren in dem Bereich gelernt habe, ist heute noch fast genauso gültig. Nicht zu guter letzt spielt auch der Fun-Faktor eine Rolle: Wie viel Freude bereitet es einem, mit einer Sprache zu arbeiten. Und da empfand ich C++ oft als trockene Knochenarbeit. Ruby hingegen macht mir mittlerweile schon seit Jahren echt Spaß. Kommt aber auch immer drauf an, was man genau macht. Manche Problemlösung ist in jeder Sprache ein mühsamer Knochenjob.
@Jörg Wunsch Es gibt haufenweise formal nicht objektorientierte GUI Toolkits, allen vorran zB. GTK (darauf baut Gnome auf) oder die windows GUI (ohne Wrapper drauf). Man kann auch in C eine Art Objektorientierung verwenden, Funktionszeiger und Unions sind deine Freunde. @Threadstartet Mit C und C++ kommst du unter *NIX sehr weit, unter Linux ist zB. fast alles in C/C++ geschrieben. C++ wird zwar häufig verwendet, aber es geht von der Sache her auch in reinem C. Auf Mikrocontrollern ist C auch die Standardhochsprache. Für GUI Programmierung kannst du dir mal FLTK angucken, das ist relativ übersichtlich.
I_ H. wrote: > Man kann auch in C eine Art Objektorientierung verwenden, > Funktionszeiger und Unions sind deine Freunde. Schrob ich ja auch, aber es gibt nichts, warum man dann nicht gleich C++ nehmen könnte. OO in purem C ist aufwändiger als C++ dafür zu nehmen, und man hat trotzdem viel mehr mögliche Fehlerquellen, die einem die striktere C++-Syntax abnimmt.
GUI in C wird eben nicht nur in irgendwelchen angestaubten Sachen verwendet, darum ging es mir. Gnome ist weit verbreitet und wird aktiv genutzt und weiterentwickelt. Und Windows, soweit ich weis, auch ;). C++ eignet sich halt nicht für mal eben schnell einsteigen, damit muss man sich dann schon eingehender beschäftigen. Also ich find C++ eine der besten Sprachen überhaupt und programmiere auch hauptsächlich in C++, aber die Sprache ist eben sehr umfangreich und es dauert lange bis man überall durchgestiegen ist. Zudem braucht man eine gehörige Portion Disziplin (kann man sich angewöhnen, aber dauert), damit am Ende kein Hickhack rauskommt, weil die Sprache einem, im Gegensatz zu zB. Delphi oder Java, sehr viel erlaubt. C ist da vom Sprachumfang her deutlich schlanker. Langfristig macht C++ in jedem Fall Sinn, aber für'n kurzes Geplänkel ist es zu umfangreich.
@Jörg @Winfried @All Es scheint also doch so wie befürchtet zu sein, daß man uC- und PC-Programmierung sprachlich trennen sollte. Nun gut, so sei es. Mit C auf uC habe ich bisher also nichts verkehrt gemacht, das ist schon mal seeehr beruhigend. Für den PC werde ich mir dann mal C++ (Vorteil ähnliche Syntax) und Ruby (soll leicht zu erlernen sein) näher anschauen. Soll, wie gesagt, auch nur für den Hobbybereich ausreichen. Besten Dank für die Ratschläge.
I_ H. wrote: > GUI in C wird eben nicht nur in irgendwelchen angestaubten Sachen > verwendet, darum ging es mir. Gnome ist weit verbreitet und wird aktiv > genutzt und weiterentwickelt. Ja, OK. Das GTK in der Tat ja wirklich mit C arbeitet, war mir irgendwie nicht mehr bewusst, ich hatte den unter C++ einsortiert. Ist natürlich schon fast ein Grund dagegen...
Unter Windows würde ich LabView für so Sachen wie die Datenlogger-Auswertung nehmen. Da kann man ziemlich direkt loslegen, anstatt mich erst viele Stunden lang um den Aufbau der GUI zu kümmern. Gibt es so eine Software auch üfr Linux?
Richtig universal wäre Pseudocode / Flussdiagramme, die kann man in jeder sprache auslegen. aber sonst: C/C++ manchmal recht lustig wenn ich einen Programmcode im Borland oder VisualC++ test um es dann im uC auszuprobieren dann benutzte ich gerne die "Copy + Paste" funktion, sofern die Parameter gleich sind und nicht gerade irgendwelchen Objekt Orientierenten Variablen drinnen vorkommen ... ich kenne keine andere programmiersprach in der es Egal ist ob du 10. Mio Polygone für OpenGL berechnest oder einfach nur einen Portpin auf low ziehen willst ...
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.