-         

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

Thema: Warum immer nur C ?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433

    Warum immer nur C ?

    Anzeige

    nachdme bem asuro ein c++ compiler verwendet wird, frage ich mich, warum wird der asuro eigentlich immer nur in c programmiert und nicht in c++
    c++ hätte diverse vorteile (objektorientierung d.h klassen vererbung etc)
    liegt das einfach nur daran, das c leichter ist, als c++, oder gibt es da einen technischen hintergrund, den ich nihct kenne?


    mfg EDH

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    "When programming C++ in space- and runtime-sensitive environments like microcontrollers, extra care should be taken to avoid unwanted side effects of the C++ calling conventions like implied copy constructors that could be called upon function invocation etc. These things could easily add up into a considerable amount of time and program memory wasted. Thus, casual inspection of the generated assembler code (using the -S compiler option) seems to be warranted."
    Gerade unter diesem Aspekt ist auch Vererbung nicht so lecker, zumindest dann, wenn man abstrakte Klassen will, Thema VTables.

    Zudem gibt es keine volle C++ Unterstützung (Exceptions, new, delete, libstd++, etc).

    Und ob man wirklich ein objektorientiertes

    ATmega8.portC.bit3.set();

    will, wage ich auch zu bezweifeln...

    Mir persönlich ist C++ zu intransparent. Bei dem, was man alles beachten muss damit Code und Laufzeit nicht explodieren und den Einschränkungen ist man IMHO wesentlich besser mit C bedient.
    Disclaimer: none. Sue me.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    naja c++ is ja schön und gut, aber wenn ich mich nicht irre kann man mit c einzellne bits ansteuern, was für einen roboter ziemlich praktisch ist. bei c++ kann man keine einzellnen bits ansteuern, deshalb ist c für den asuro besser.

    falls ich mich irre bitte ich das zu entschuldigen

    mfg toschtosch

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.08.2006
    Beiträge
    183
    du kannst den asuro in c++ proggen, du kannst den asuro mit Bascom proggen, du kannst den asuro mit java proggen, du kannst den asuro mit fastavr proggen, du kannst den asuro mit microbasic for AVR proggen, du kannst den....

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    @tosch'
    also warum sollt ein C++ kein Befehl gemantelt sein, der auch Bitweise zugreifen kann ...

    .. also C++ ist in meinen Augen ein Mantel, der viele C-Funktionen abstrahiert.
    Das verursacht einen Overlay, der im begrenzen Speicherreich des uC mehr als unnötig ist.
    Frag einen asm-king, warum er keine Hochsprache nutzt - das gibt sehr effizienten Code ... vorausgesetzt, der Programmierer hat Ahnung und Erfahrung .. in C ist es ähnlich, eben eine Stufe abstrakter ... C++ wäre eben oversized .....

    Wenn Atmel einen mega mit 1GB/1GHz hätte, würde dies sicher verwendet werden ... aber ein asm-Profi wäre da immer noch im Vorteil

    "Oh mein Programmiergott, dann gäbe es sicher auch einen Basicinterpreter"
    .. sorry, daß mußte sein
    Ich kann mir keine Signatur leisten - bin selbständig!

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Naja, ganz so schlimm ist es ja nun nicht...

    wenn ich mich recht erinnere war ein Grundsatz bei C++,
    daß nicht verwendete Features auch keinen zusätzlichen Ballast erzeugen sollten.


    Man sollte also, wenn man Dinge wie abstrakte Klassen o.ä. nicht benutzt,
    mit C++ fast genauso effiziente Programme schreiben können wie mit C.

    Aber warum C++ wenn man die besten Sprachkonstrukte nicht benutzen sollte?
    Naja, selbst wenn man die für Mikrocontroller ungeeigneten Features nicht nutzt,
    kann das was von C++ noch übrig ist immernoch Vorteile gegenüber C haben.
    Objektorientierte Programmierung ist ja z.B. immernoch möglich,
    wenn auch nur in ihrer einfachsten Form.


    Gruß,
    Felix


    PS: @1GB/1GHz ... schau dir doch mal einen ARM9 an, die dürften da deutlich drunter liegen.
    (und in den meisten Fällen laufen auf den Dingern Betriebssysteme wie Windows CE oder Linux)
    So viele Treppen und so wenig Zeit!

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    also der klare nachteil an c++ ist wie schon oben genannt dass man eine funktion in c++ meist auf viele funktionen in c zurückführen kann. deshalb kann es gut und schnell sein dass die 7k des asuro plötzlich knapp werden.

    selbstverständlich ist es möglich, auch in c++ knappen, guten code zu schreiben, aber was spricht denn gegen c?

    such mal nach

    du kannst den asuro in c++ proggen, du kannst den asuro mit Bascom proggen, du kannst den asuro mit java proggen, du kannst den asuro mit fastavr proggen, du kannst den asuro mit microbasic for AVR proggen, du kannst den....
    da sind viele alternativen zu c zu finden... ich persönlich versuche mich gerade an bascom. aber auch das java würde mich mal interessieren...
    kleinschreibung ist cool!

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    java wäre aber genauso wie c++ objektorientiert. gäbe es dann nicht auch wieder diesen unnötigen balast?

  9. #9
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    an sich schon... wobei das hauptproblem an java wäre dass eine minimal- java-vm im prozessor (!) laufen müsste. es gibt sogar schon eine für den asuro (http://www.mikrocontroller.net/articles/NanoVM), die jedoch beinahe den gesamten flash braucht.

    darum würde ich java eher als spielerei als als alternative sehen =)
    kleinschreibung ist cool!

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Also Java ist definitiv viel schlimmer als C++, da es eben nur interpretiert wird.
    (ein C++ Programm wird vom Compiler in richtigen Maschinencode übersetzt)

    Interpretersprachen machen auf einem solchen Mikrocontroller nicht wirklich viel Sinn.
    (dazu würde eigentlich auch Basic zählen, aber Bascom ist hier eine Ausnahme da es ein Compiler ist)
    So viele Treppen und so wenig Zeit!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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