Forum: PC-Programmierung Sammlung fuer Programmiertechniken gesucht


von Christian J. (Gast)


Lesenswert?

Hallo,

da ich derzeit doch hobbymässig viel C Code produziere möchte ich mal 
fragen wo ich Sammlungen von "Programmiertechniken" finde?

Sowas nützliches wie das hier (Bit Twddling Hacks)
http://graphics.stanford.edu/~seander/bithacks.html#OperationCounting

IM Konkreten Fall geht es darum eine größere Menge voneinander 
abhängiger "Aktionen" zeitgesteuert durch eine RTC durchzuführen, wobei 
Techniken wie Blockierung von Routinen nach Durchlauf und eine größere 
Menge logischer Verknüpfungen auftreten bei denen man wahnsinnig werden 
würde, wenn man die in if then else verpacken würde. Zur klass. 
Statemachine kommt noch der Zeitfaktor hinzu aber es ist und bleibt 
schon eine Finite Statemachine. Nur eben mit Zählern darin.

Aktuell arbeite ich mit einem ganzen Struct an globalen Flags und nahezu 
10 Softwaretimern, die von der RTC abgeleitet werden, die mir 1HZ 
ausspuckt für den Interrupt, der die Timer hochzählt. Jeder Timer kann 
durch ein Bit gestartet, gestoppt und resettet werden durch die 
Statemachine. Der Interrupt fegt durch die Routine und führt das dann 
aus.

Habt ihr da vielleicht Empfehlungen? Ich meine das wurde ja alles schon 
mal gemacht und davon würde ich gern profitieren.

von Noch einer (Gast)


Lesenswert?

Da sind die uralten Wälzer von Donald Knuth und Niklaus Wirth immer noch 
das beste.

von Pandur S. (jetztnicht)


Lesenswert?

Man kann auch parallele und ineinander geschachtelte Statemaschinen 
haben...

Und ich wuerd dann mal eine PC Simulation schreiben, um zu pruefen ob 
alle Zustaende, und wie errecht werden koennen.

Das Geniale an Statemaschinen ist das Debuggen. Man weiss wo der Code 
garantiert vorbeikommt, und muss sich dort nur die Variablen 
rausschreiben lassen. Desgleichen wartet man nur an einem Ort im ganzen 
Code. Und dort kann man auch nachsehen, wie kritisch das Timing ist, 
wieviel Zeit jeweils uebrig ist.

von Fpgakuechle K. (Gast)


Lesenswert?


von Christian J. (Gast)


Lesenswert?

Noch einer schrieb:
> Donald Knuth und Niklaus Wirth

Niklaus Wirth hat nur 2 Bücher herausgebracht, eines über Pascal (was 
ich habe) und eines über Datenstrukturen. Knuth, der auch den Turing 
Award (Nobelpreis für IT) mal erhielt ist auf einer Ebene unterwegs auf 
die ich ihm nicht folgen kann und es ist alles Englisch, was bei 
Fachbüchern nicht grad gut zu lesen ist.

Komplexe Statemaschines mit Timern, wie zb das Schalten von Ampeln an 
Kreuzungen würde ich auch als Zustände in einer Art Matrix als "array of 
struct" (Zustand, Bedingung, Aktion, naechster Zustand) implementieren, 
so dass keine endlose Folge von switch case Anweisungen dabei 
herauskommt. Es wird nur noch ein Pointer bewegt auf den jeweiligen 
Zustand.

von Oliver S. (oliverso)


Lesenswert?

Christian J. schrieb:
> und es ist alles Englisch, was bei
> Fachbüchern nicht grad gut zu lesen ist.

Englische Fachbücher sind im allgemeinen deutlich besser zu lesen als 
deutsche. Ganz ohne Grundkenntnisse des Angelsächsischen geht es 
natürlich nicht, das ist dann aber kein Problem der Fachbücher.

Oliver

von Rolf M. (rmagnus)


Lesenswert?

Christian J. schrieb:
> Noch einer schrieb:
>> Donald Knuth und Niklaus Wirth
>
> Niklaus Wirth hat nur 2 Bücher herausgebracht, eines über Pascal (was
> ich habe) und eines über Datenstrukturen.

Hmm, von den zweien habe ich dann wohl das dritte, den meins handelt von 
keinem dieser beiden Dinge.

von Bernd W. (berndwiebus) Benutzerseite


Lesenswert?

Hallo Fpga Kuechle.

Fpga Kuechle schrieb:
> http://www.oreilly.de/catalog/wenschleprogger/

Das kenne ich. Gibt gerade Anfängern wertvolle Tipps, und der 
Schreibstil von Frau Passig und Herrn Jander ist einfach genial!

Es geht aber doch mehr ums allgemeine des Programmierens und weniger um 
eine Algorithmensammlung, was ich vermute der TO sucht.

Trozdem würde ich dieses Bucht dem TO anraten.

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

: Bearbeitet durch User
von Possetitjel (Gast)


Lesenswert?

Christian J. schrieb:

> Komplexe Statemaschines mit Timern, wie zb das Schalten von
> Ampeln an Kreuzungen würde ich auch als Zustände in einer Art
> Matrix als "array of struct" (Zustand, Bedingung, Aktion,
> naechster Zustand) implementieren, so dass keine endlose
> Folge von switch case Anweisungen dabei herauskommt.

Glückwunsch!
Du stehst kurz vor der Erfindung der Schrittkette.

Die von den "richtigen" PC-Anwendungsprogrammierern im
Allgemeinen verachteten Steuerungs-Fritzen machen so etwas
seit ca. 30 Jahren auf ihren SPS...

von Softwerker (Gast)


Lesenswert?

>Sowas nützliches wie das hier (Bit Twddling Hacks)
>http://graphics.stanford.edu/~seander/bithacks.html#OperationCounting

Nützlich?
Die Beispiele aus der Website erscheinen mir als Beispiele, wie man 
einfache Sache (unnötig) kompliziert machen kann:

Compute the sign of an integer
Detect if two integers have opposite signs
Compute the integer absolute value (abs) without branching
Compute the minimum (min) or maximum (max) of two integers without 
branching

Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie 
oft kommt das in der Praxis vor?

von Rolf Magnus (Gast)


Lesenswert?

Softwerker schrieb:
> Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie
> oft kommt das in der Praxis vor?

Und nur weil man im C-Quellcode kein if oder ?: hat, bedeutet das noch 
lange nicht, daß der Compiler daraus keine Branch macht, genausowenig 
wie deren Vorhandensein bedeutet, daß eine Branch gemacht wird.
Es gilt also damit nur für ganz spezifische Kombinationen aus Compiler 
und Prozessor, bei denen man ermittelt hat, daß der Compiler trotz 
Optimizer ineffizienten Code erzeugt.

von Vlad T. (vlad_tepesch)


Lesenswert?

Softwerker schrieb:
> Es mag Fälle geben, wo man bei C das branching vermeiden muss, aber wie
> oft kommt das in der Praxis vor?

Für DSPs in rechenintensiven schleifen, kann das hilfreich sein.
Ein falsch vorhergesagte Branches kann das ganze significant 
verlangsamen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.