Vergleich C++ und Assembler



  • Mhhm. Ok danke für die Antwort...

    Habe mir auch gerade ein paar Tutorials angeschaut und wie du schon sagtest braucht man auch viel Hintergrundwissen und es ist schon anders als C++.

    Das wichtigst über den Prozessor haben wir ja schon in der Schule gelernt jetzt nur noch das Wissen vertiefen und nach ein paar Monaten anfangen diese SCHÖNEN PDF TUTORIALS ausm Faq durchzuarbeiten 😃



  • Wir haben in der Schule auch Assembler (8051 Familie), wobei ich vorher schon x86 Assembler privat gelernt habe und Assembler ist wirklich nur so lange schwer bis es *klick* gemacht hat, danach ist es nur noch unübersichtlich *g*

    Wobei Aufgaben die du in der Schule bekommst mit asm einfach zu lösen sind, nur triviale Dinge die du mit C++ jeden Tag machst (na gut vllt. ne Stufe höher) sind in asm schon ne richtige Herausforderung. Das liegt nicht daran, dass es so schwer ist, sondern so schnell unübersichtlich wird.



  • Assembler ist aber nicht schwer zu lernen. Es gibt eben n-Befehle mit einer Syntax, die man lernen muss. Also keine ausgefallenen Konzepte.

    Man braucht eben nur viel wissen um wirklich guten Code zu erstellen (deswegen nimmt man ja ein Compiler :))



  • kingruedi schrieb:

    Assembler ist aber nicht schwer zu lernen. Es gibt eben n-Befehle mit einer Syntax, die man lernen muss. Also keine ausgefallenen Konzepte.

    Man braucht eben nur viel wissen um wirklich guten Code zu erstellen (deswegen nimmt man ja ein Compiler :))

    c++ ist auch nicht schwer zu lernen. Es gibt eben n-keywords mit einer Syntax, die man lernen muss. Also keine ausgefallenen Konzepte.

    du siehst, der flame geht auch andersrum 😉

    sowohl für c++ als auch assembler muss man viel zeit investieren damit man das wirklich kann. gerade wenn man bei c++ alles designpattern kennen und sie richtig anwenden können möchte und bei assembler wenn man eine OutOfOrder cpu ausreizen möchte, kann man nicht genug üben.

    rapso->greets(0.02€);



  • @rapso
    nö, in C++ gibt es keine Befehle :p

    Aber mal im Ernst. C++ hat sehr viele Konzepte mit komplizierter Syntax. Bei Assembler gibt es ja eine Syntax (zB. <befehl><operandenlänge> <operand0>,<operand1>,...) danach funktionieren alle Befehle. Verstehst du was ich meine?

    Anders gesagt, formulier mal die Gramatik eines Assemblers und dann die von C++ und vergleich den Unterschied :p

    Und besonders RISC Prozessoren haben ja wenig Befehle. Schwierig ist es aber die Geheimnisse der CPU auszunutzen. zB. in welcher Reihenfolge man zB welchen Befehl setzen sollte, damit der Code möglichst parallel geladen werden kann; Wie man die Branchvorhersage so füttert, dass die Vorhersagen eher zutreffen; Welche Befehle man durch Befehle ersetzen kann, die weniger Strom oder Takte verbrauchen; Wo kann man SIMD benutzen usw.



  • kingruedi schrieb:

    @rapso
    nö, in C++ gibt es keine Befehle :p

    deswegen schrieb ich auch keywords 🤡

    kingruedi schrieb:

    Aber mal im Ernst. C++ hat sehr viele Konzepte mit komplizierter Syntax. Bei Assembler gibt es ja eine Syntax (zB. <befehl><operandenlänge> <operand0>,<operand1>,...) danach funktionieren alle Befehle. Verstehst du was ich meine?

    ja, bei c++ ist die sprache das aufwendige, wenn man sie voll ausreizen möchte

    kingruedi schrieb:

    Und besonders RISC Prozessoren haben ja wenig Befehle. Schwierig ist es aber die Geheimnisse der CPU auszunutzen. zB. in welcher Reihenfolge man zB welchen Befehl setzen sollte, damit der Code möglichst parallel geladen werden kann; Wie man die Branchvorhersage so füttert, dass die Vorhersagen eher zutreffen; Welche Befehle man durch Befehle ersetzen kann, die weniger Strom oder Takte verbrauchen; Wo kann man SIMD benutzen usw.

    und bei assembler ist das verständniss der hardwarearchitektur das aufwendige, wenn man sie voll ausnutzen möchte.

    aber was bei beiden sprachen gleich ist, ist:
    man kann ein noch so gutes design sich ausdenken, wenn man schon monate am implementieren ist, merkt man immer mehr, dass es da 100 dinge gibt, die man eleganter/schneller desginen kann. deswegen finde ich beide sprachen extrem reizvoll und in kombination ist das ein extrem mächtiges werkzeug!

    rapso->greets();



  • Es handelt sich hier um den klassischen Vergleich von Äpfeln und Birnen.

    Assembler ist eine sogenannte maschinennahe Sprache, C eine Hochsprache.
    Oder um es so zu sagen, Assembler ist eine Programmiersprache der 2., C/C++ der 3. Generation.

    Ist also in etwa so, als fragte man, ob es sinnvoller wäre, sich ne Dampflok zu kaufen oder nen Motorrad..



  • deswegen schrieb ich auch keywords 🤡

    Ich könnte schwören, da stand "Befehle" 😉

    man kann ein noch so gutes design sich ausdenken, wenn man schon monate am implementieren ist, merkt man immer mehr, dass es da 100 dinge gibt, die man eleganter/schneller desginen kann. deswegen finde ich beide sprachen extrem reizvoll und in kombination ist das ein extrem mächtiges werkzeug!

    Ja, wobei man Assembler definitiv seltener braucht (wenn man kein µC-Sklave ist ;))



  • DocJunioR schrieb:

    Es handelt sich hier um den klassischen Vergleich von Äpfeln und Birnen.

    Ja, du hast es auf den Punkt gebracht.

    Assembler ist eine sogenannte maschinennahe Sprache, C eine Hochsprache.

    Nö, C ist ein Macro-Assembler 😉



  • DocJunioR schrieb:

    Ist also in etwa so, als fragte man, ob es sinnvoller wäre, sich ne Dampflok zu kaufen oder nen Motorrad..

    es ist eher ein vergleich von tourenwagen mit formel wagen, wozu DTM wenn es F1 gibt?



  • Assembler ist schon ganz lustig. "Lern" es ruhig mal, man lernt vor allen Dingen viel darüber wie die Hardware so funktioniert und man kann danach auch die ganzen tollen Debugger einsetzen wenn man C++ programmiert. 👍



  • Manslaughter schrieb:

    Assembler ist schon ganz lustig.

    Wenn man nichts konkretes implementieren muss und ein bißchen herumspielen kann, ja. Aber sobald man Sachen machen muss für die eine Hochsprache ein besseres Abstraktionslevel bietet ist es einfach nur nervig. Ich jedenfalls bin froh, dass ich die dämliche Rechnerstrukturen-Vorlesung mit dem noch dämlicheren MMIX-Assembler nie wieder hören muss.



  • Walli schrieb:

    Manslaughter schrieb:

    Assembler ist schon ganz lustig.

    Wenn man nichts konkretes implementieren muss und ein bißchen herumspielen kann, ja. Aber sobald man Sachen machen muss für die eine Hochsprache ein besseres Abstraktionslevel bietet ist es einfach nur nervig.

    ist das nicht immer so? sobald das werkzeug nicht für die arbeit passt die man machen muss, ist es einfach nur nervig... ich bohre auch nie mit dem hammer 😉

    rapso->greets();


Anmelden zum Antworten