www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Welche "Universalprogrammiersprache" ?


Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: haga (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
universalsprache ist asempler und dann c

Autor: gonzo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit asempler kannst du alles machen von rauchmelder
bis hompage

Autor: Lasse S. (cowz) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Düsentrieb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
deutsch? englisch?

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: grübler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 6635 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aufm PC : Delphi. Ist am effizientesten fuer die Zeit die man braucht.

Autor: heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

MfG Spess

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: High-Performer bei Siemens (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: OliverSo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: die ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.  ;-)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Winfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lutz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: reimay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Jankey (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.