Volker Neurath schrieb:
dann ist i=2.... in Pascal ein Inc(i); ist auch nicht viel länger als i++; Gruß Andy
Volker Neurath schrieb:
dann ist i=2.... in Pascal ein Inc(i); ist auch nicht viel länger als i++; Gruß Andy
Hi!
Was hast Du geraucht, daß Du in meinen Postings Worte liest, die ich nicht geschrieben hab? Gib mir was ab, ich will auch! :-)
Gruß, Michael.
Übersichtlich im Vergleich zu Assembler. C hat eben den Vorzug dass es praktisch auf jedem uC verfügbar ist.Wenn dir C nicht gefällt nimm Basic, Pascal oder was auch immer. Letztlich ist die Programmiersprache nur eine Gewöhnungssache. Alle bieten mehr oder weniger strukturierte Programmierung, komplexe Datenstrukturen, lokale Variablen, Fliesskommaberechnungen, usw.
Ich weiss, das kann man alles in Asssembler auch machen. Aber du brauchst die x-fachen Zeit es zu schreiben, zu debuggen und zu kommentieren.
Und wenn man sich den generierten Code mal ansieht, den ein guter C-Compiler für einen uC abliefert, ist man erstaunt, wie effektiv das ist. Man darf nicht alles mit Windows-Maßstäben messen, wo jedes Hello-World schon 5 MB hat und ein Dutzend Runtime-Libraries braucht.
IMHO verteidigen die Assembler-Freaks ihre Arbeitsweise deswegen, weil sie a) nicht bereit sind, etwas anderes zu lernen und b) die Firma damit von ihnen abhängig wird. Ein Assembler-Programm das in der Komplexität über einen LED-Farbwechelblinker rausgeht, ist im allgemeinen für jeden anderen unwartbar. _kann_ natürlich mit C auch passieren.
Georg
Michael Eggert schrieb:
Leider tun das die wenigsten.
-- Dipl.-Ing. Tilmann Reh Autometer GmbH Siegen - Elektronik nach Maß. http://www.autometer.de
Anders geht es auch nicht. Die Anweisung: i=i++; ändert den Wert von i nicht! Im Gegensatz zu: i=++i; was aber sehr umständlich ist.
mfg Andreas
Joerg schrieb:
Hallo,
ich meinte kein Inline-Assembler, sondern Unterprogramme in Assembler. Aber auch Inline-Assembler hat bei mir mit Keil C166 funktioniert.
Vom Zehnfachen habe auch nicht ich geschrieben, das hatte ich nur=20 zitiert, was Du dann mir als Zitat untergeschoben hast.
Aber 100 % Assembler w=FCrde ich vermeiden wenn es irgendwie geht und mit= =20 einem guten Compiler-Assembler Paket sollte es m=F6glich sein nur die=20 zeitkritischen Teile in Assembler zu schreiben.
Bye
Michael Eggert schrieb:
Sorry, war wohl schon bißchen spät...
-- Jörg Wunsch "Verwende Perl. Shell will man können, dann aber nicht verwenden." Kristian Köhntopp, de.comp.os.unix.misc
Daher schreibt man lieber "if (0 = a)", damit kann der Compiler den Vertipper erkennen. Das hilft aber natürlich nicht, wenn man zwei l-values vergleicht.
Wie wäre es mit
i = 1;
*grins*, Nils"Michael Eggert" schrieb im Newsbeitrag news: snipped-for-privacy@4ax.com...
Leider Nein, es fehlen geschachtelte Funktionen (immerhin erspart das das uneffiziente display) und WITH (gluecklicherweise, vermeidet dedizierte Programmierfehler).
Ansonsten sind natuerlich beides prozedurale Programmiersprachen, ebenso wie BASIC.
-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage: http://www.geocities.com/mwinterhoff/ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/ Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Hi,
"Sebastian Suchanek" schrieb
und deshalb wurde es im o.a. AVRco auch implementiert ...
Gruß Gunter
MaWin schrieb:
[Pascal und C]Nein.
BASIC ist nicht wirklich eine prozedurale Sprache, man hat erst spät einige Pascal-Features angeflickt.
Und C ist schon deshalb nicht direkt mit Pascal vergleichbar, weil wesentliche Datentypen einfach fehlen (boolean, string) und mühsam irgendwie angebastelt werden müssen.
-- Dipl.-Ing. Tilmann Reh Autometer GmbH Siegen - Elektronik nach Maß. http://www.autometer.de
Tilmann Reh schrieb:
bool gibt's (C99), außerdem ist das Standard-Handling durchaus nicht mühsam.
string-Datentypen finde ich bei Pascal auch erst in extended Pascal, der ursprüngliche Standard hatte sowas nicht, so daß jede Implementierung ihre eigene Variante mitbrachte.
-- Jörg Wunsch "Verwende Perl. Shell will man können, dann aber nicht verwenden." Kristian Köhntopp, de.comp.os.unix.misc
Ein anständiger Compiler erzeugt bei sowas eine Warnung, da er erkennen kann, dass dieser Ausdruck immer falsch ist (nicht wahr). Wenn man natürlich Warnungen nicht einschaltet, ist man selber schuld. Dieses ":=" ist aber auch gewöhnungsbedürftig.
Gruß, Bernhard
-- Der elektronische Marktplatz wird unsere Kultur ebenso verändern wie Gutenbergs Druckerpresse die Welt des Mittelalters. -- Bill Gates
Sebastian Suchanek schrieb:
Zumindest der GCC beantwortet obiges Konstrukt (bei passendem -W) mit
"warning: suggest parentheses around assignment used as truth value"
So passiert mir der Fehler beim GCC eigentlich nicht mehr.
i = i++; dürfte AFAIK kein gültiges C sein da i zweimal vor einem Sequenzpunkt verändert wird.
Diese Schreibweise wurde ja von vielen späteren Sprachen auch verwendet also kann es so schlecht nicht sein.
-- Matthias Weißer matthias@matwei.de http://www.matwei.de
"Tilmann Reh" schrieb im Newsbeitrag news:ck0lgq$vvm$ snipped-for-privacy@online.de...
Falsch. Eine waschechte. Man muesste noch nicht mal Prozeduren haben (GOSUB) um eine prozedurale Programmiersprache zu sein, Beispiel W
Unnoetigerweise.
In jeder Programmiersprache, die Vergleiche erlaubt, gibt es den BOOLean. Es ist die Wertemenge, die die Vergleiche als Ergebnis abliefern (und die von IF akzeptiert werden).
Dir fehlt offenbar ein expliziter NAME fuer die Wertemenge, um zu erkennen, das es sie gibt.
Ich erinnere mich, das Pascal die Strings fehlten... PACKED ARRAY OF CHARACTER;
-- Manfred Winterhoff, reply-to invalid, use mawin at despammed.com homepage: http://www.geocities.com/mwinterhoff/ de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/ Read 'Art of Electronics' Horowitz/Hill before you ask. Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Sebastian Suchanek schrieb:
[C Tippfehler-Fallen]
wer C ohne Lint benutzt, ist selbst schuld und soll nicht meckern (damit meine ich nicht Dich!).
PC-Lint ist eine grundlegende, nahezu unverzichtbare Investition für Embedded-Anwendungen in C. "Pure ANSI C"-Programmierer könnten vielleicht auch SPlint verwenden. Aber die 210EUR für PC-Lint bringen niemanden um, der mehr als ein paar Stunden C programmiert und Geld damit verdient. So schnell lohnt sich kaum ein anderes Tool.
"Lint early. Lint often. Lint is your friend."
Und nein, es ist IMNSHO _nicht_ die Aufgabe des Compilers, solchen Käse zu entdecken. Weshalb sollte jeder Compilerbauer noch einen statischen Codechecker entwickeln, wo es Lint gibt?
Der Compiler soll mich nur warnen, wenn er etwas nicht compilieren kann.
Ach ja, und ein paar MISRA-Regeln sind auch nicht ganz blöd, und ebenfalls von PC-Lint abgedeckt.
Oliver
-- Oliver Betz, Muenchen (oliverbetz.de)
Ich seh hier kein X-No-Archive, kein smiley, gar nix. Könnt ihr eurer Nachwelt, die vielleicht in 2 Jahren aus euren Postings in google was über C lernt, vielleicht auch noch die Wahrheit über die angezogenen Probleme verraten?
Hint:
i = i++;
wird von jedem ernstzunehmenden Compiler standardkonform in einen einzelnen Maschinenbefehle übersetzt: HCF (halt and catch fire) :-)
Ein Compiler der if (a=0) als true bewertet, könnte allerdings auch versuchen, i auf 4 zu setzen, um den Programmierer nicht zu sehr zu langweilen :-)
Siehe
Andreas
-- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. - Brian Kernighan
Darauf wollte ich raus ;-)
Volker
-- Im uebrigen bin ich der Meinung, das TCPA verhindert werden muss.
Hi,
"Dr Engelbert Buxbaum" schrieb
war mir klar, daß auf die Frage "welchen Controller unter Pascal" als "Antwort" kommt: --- > C lernen ! - sozusagen Thema verfehlt ;-) Hast Du Dir den AVRco mal angesehen. Ich finde den echt absolu super.
Schöne Grüße Gunter
Gunter Baab schrieb:
Stimmt, so ist das - aber C ist halt "hip" heutzutage...
Hier ist noch einer (Pascal!):
Gibt es für 8051, AVR, Z180 und Z380 - über die Qualität kann ich aber nichts sagen.
-- Dipl.-Ing. Tilmann Reh Autometer GmbH Siegen - Elektronik nach Maß. http://www.autometer.de
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.