-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: welche programmiersprache ist die effizienteste?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.05.2009
    Beiträge
    55

    welche programmiersprache ist die effizienteste?

    Anzeige

    ich bescheftige mich erst seit kurzem mit microkontrollern und finde es echt toll was man alles damit anstellen kann, allerdings verfüge ich über keinerlei programmierkenntnisse. ich habe zwar mit dem tutorial von roboternetz ein bischen basic gelehrnt aber ein freund der zurzeit informatik studiert hat mir von basic dringend abgeraten, ich sollte lieber C und C++ lehrnen. ich habe auch beiträge gesehen wo die rede von assambler ist. also was für eine sprache soll ich am besten lehrnen, welche bringt die meisten vorteile?

    MFG Gary^^

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.574
    Das Einfachste zum erlernen ist Basic. Basic ist aber nicht so schnell, wie C oder ASM. Basic ist nicht für jeden µC verfügbar
    Die nächste Stufe näher am µC ist C. Es ist etwas schneller als Basic, aber langsaer als ASM. Ich schreibe meine Programme in C.
    ASM ist die schnellste der 3 Programiersprache. Sie ist allerdings auch am schwierigsten zu erlernen. ASM wird normalerweiße bei sehr zeitkritischen Anwendungen verwendet. ASM kann man meistens mit C kombinieren (Inlienassembler)

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    30
    Beiträge
    1.221
    Man sollte noch erwähnen, dass ASM primär schnell ist, wenn man sich damit auskennt/Erfahrung hat und willens ist, da Zeit reinzustecken.
    Oft ist C nicht viel langsamer, dafür ist der Code dann aber oft besser Les- und Wartbar.
    Dem Compiler fallen manchmal auch abstruse Optimierungen ein, auf die du selbst nicht ohne weiteres kommen würdest ...

    mfG
    Markus

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Willa
    Registriert seit
    26.10.2006
    Ort
    Bremen
    Alter
    37
    Beiträge
    1.269
    Alle schimpfen immer auf Basic.... Warum eigentlich? Gibt es echte, objektive Vergleiche der Geschwindigkeiten von kompiliertem Code aus verschiedenen Programmiersprachen?
    @Gary: Ich habe einen Tricopter mit Basic programmiert. Das ist eine ziemlich zeitkritische Angelegenheit, aber es funktioniert wunderbar. Würde mich mal sehr interessieren ob der gleiche Code - in C geschrieben - schneller laufen könnte...
    Außerdem sind bestimmt 90% der Roboterprojekte nicht sonderlich zeitkritisch.... Falls du lieber mit Basic programmieren willst - mach es einfach. Das funktioniert bestimmt für fast alle Projekte.
    Viele Grüße, William
    -> http://william.thielicke.org/

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.785
    Blog-Einträge
    8
    Hallo

    Die effizienteste Programmiersprache ist diejenige mit der du mit dem geringsten Aufwand dein Ziel erreichst. Aufwand ist dabei alles was benötigt wird um die gewünschte Funktion in den Kontroller zu stampfen.

    Wenn du Basic (Bascom?) schon kennst sehe ich keinen Grund eine andere Sprache zu wählen. Und wenn du irgendwann mal selbst einen Grund finden solltest, kannst du immer noch wechseln.

    Übrigens ist es auch sehr effizient, wenn man die Suchfunktionktion des Forums nutzt. Zum Thema Programmiersprachenvergleich gibt es unzählige Threads.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Es ist nicht so das Basic prinzipiell langsamer ist als C. Das hängt vom Compiler ab. Tendenzmäßig sind Basiccomplier aber mehr auf Anfänger zugeschnitten, wo die Geschwindigkeit nicht so wichtig ist. So ist der BSCOM basic Compiler für den AVR nicht besonders schnell. Dagegen ist GCC schon recht gut, die kommerziellen C Compiler sollten eher noch schneller sein, sonst würde die kaum einer nutzen.
    Im Wiki Bereich gibt es da ein paar Vergleiche. Es hängt aber immer sehr vom Programm ab, welcher compiler besser ist.

    GCC kennt z.B. nur 32 BIT Fließkommazahlen. Mehr Auflösung müßte man von Hand machen. Auch das Rechenen mit Byte Werten ist nicht optimal: da wird oft unnötig auf 16 Bit erweitert.

    Bascom hat ein ziehmlich lange Liste von speziellen Funktionen die gut optimiert sein können. In C wird man da mehr echten C Code nutzen müssen. Der andere Vorteil den ich bei Bascom sehe, ist das es da leichter ist die wirklich zeitkritischen Funktionen per inline ASM zu schreiben. Das inline ASM interface von GCC ist recht komliziert, aber auch sehr mächtig.

    Dafür schreibt Bascom die Variablem immer zurück ins RAM. Sonst würde man ohne ein "volatile" zum markieren von variablen die auch in einer ISR genutzt werden auch nicht klar kommen. GCC kann Zwischenergebnisse auch im Register halten und so teilweise viel schneller werden.

    Wenn man schon ein Verständniss davon hat, wie eine CPU arbeitet, dann ist ASM nicht unbedingt schwerer zu lernen. In gewisserweise ist es sogar einfacher, denn der Spachumfang ist eher begrenzt und klar begrenzt. Auch braucht man sich nicht mit Compiler BUGs rumschlagen, ein Assembler ist normalerweise ohne wirkliche BUGs, höchstens mal was in der Oberfläche. So wie ich das sehe, ist es auch nicht so schwer ein kurzes Porgramm besser als die Compiler hinzukreigen. Das Problem ist nur, das ASM Code recht schwer lesbar ist und das längere Programme deutlich erschwert.
    Bis auf wenige Ausnahmen muss man längere Programme auch nicht mehr in ASM Schreiben. Der größte Teil geht über den Compliler und für wirklich Zeitkritische Dinge per INLINE ASM.

    Der Vorteil von kürzerem Code in ASM (bzw. C gegen BASCOM) hat an Bedeutung verloren, seit auch µCs mit viel Speicher erschwinglich sind.

    Einen weiteren Vorteil hat C noch: die Prgramme sind besser auf andere Hardware übertragbar. Auch wenn es Bascom nun gerade für AVR und die 8051 Falmilie gibt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    12.10.2007
    Beiträge
    8
    Hallo. Ich fang jetzt auch demnächst mit µCs an. Ich habe geplant, erstmal Assembler zu lernen (um die Hardware zu verstehen) und dann auf C umzusteigen. Ich denke, bei C hat man Vorteile, wenn man Assembler mitnutzen (inline Assembler) kann.

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Hi Nicolasfura,

    nicht nur C kann man mit Assembler mischen, auch Bascom bietet diese Möglichkeit.

    Viele Grüße

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.05.2009
    Ort
    Sinsheim b. Heidelberg
    Alter
    24
    Beiträge
    519
    Ich habe mit C an meinem Pro-Bot128 angefangen. Viele meinen, dass C schwerer ist als Assembler. In meinen Augen ist Assembler leichter. Seit das ich das Lernpacket Mikrocontroller habe programmiere ich nur noch nin Assembler.
    Hier ein gutes Tutorial:
    http://www.mikrocontroller.net/articles/AVR-Tutorial

    MGF Flexxx



    PS: Schau dir versiedene Sprachen an.

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Es gibt dann auch noch die C-Controll Module. Die C und Basic Versionen dafür laufen über einen Zwischencode und sind damit nochmal deutlich langsamer.

    Für Viele Anwendungen ist aber die Rechengeschwindigkeit auch nicht wichtig. Wichtiger ist oft die Zeit die man braucht ein Programm zu schreiben und ggf. die Fehler zu beseitigen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •