Forum: Mikrocontroller und Digitale Elektronik Welche "Universalprogrammiersprache" ?


von Lutz (Gast)


Lesenswert?

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?

von Benedikt K. (benedikt)


Lesenswert?

Lutz wrote:

> Was schlagt Ihr also einem Quasi-Anfänger mit begrenzter Hirnleistung
> als möglichst universelle und relativ zukunftssichere Programmiersprache
> vor?

Eindeutig C.

von haga (Gast)


Lesenswert?

universalsprache ist asempler und dann c

von gonzo (Gast)


Lesenswert?

mit asempler kannst du alles machen von rauchmelder
bis hompage

von Lasse S. (cowz) Benutzerseite


Lesenswert?

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?

von Düsentrieb (Gast)


Lesenswert?

deutsch? englisch?

von Spess53 (Gast)


Lesenswert?

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

von grübler (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> 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.

von Karl (Gast)


Lesenswert?

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

von 6635 (Gast)


Lesenswert?

Aufm PC : Delphi. Ist am effizientesten fuer die Zeit die man braucht.

von heinz (Gast)


Lesenswert?

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.

von Spess53 (Gast)


Lesenswert?

Hi

@Rufus int64 habe ich auch. Aber ich brauche aber unsigned QWord. Also 
ohne Vorzeichen.

MfG Spess

von Lutz (Gast)


Lesenswert?

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!

von High-Performer bei Siemens (Gast)


Lesenswert?

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.

von OliverSo (Gast)


Lesenswert?

>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

von die ??? (Gast)


Lesenswert?

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von Winfried (Gast)


Lesenswert?

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.

von I_ H. (i_h)


Lesenswert?

@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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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.

von I_ H. (i_h)


Lesenswert?

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.

von Lutz (Gast)


Lesenswert?

@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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

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...

von Gast (Gast)


Lesenswert?

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?

von reimay (Gast)


Lesenswert?


von Jankey (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.