Vielleicht findest du zum Thema Wiederverwendung so wenig, weil es dir hier mehr um das Thema Plattformunabhängigkeit geht? |
Vielleicht findest du zum Thema Wiederverwendung so wenig, weil es dir hier mehr um das Thema Plattformunabhängigkeit geht? :HartmutSchorrig: OK, beides hängt aber zusammen. Folgende Kurz-Statements: :* OpenSource ist Wiederverwendung pur. Das ist OK und gut, wird aber von vielen Programmierern nicht so gesehen. :* In Java gibts auch kaum Probleme mit Wiederverwendung. Auch das Theme Byte-Anordnungen, alignment usw. gibt es da nicht (außer auf Hardwarezugriffsebene usw.). Alles, was ich oben geschrieben habe ist ausschließlich auf C (C++) bezogen. Ich werden diesen Artikel also demnächst umräumen, Überschrift etwa 'portable Programmierung in C'. :* Die Alignment-Problematik hat sehr wenig mit Geschwindigkeit zu tun, sondern sehr viel mehr damit, dass eine Datenstruktur (C struct) in einem beliebigen System ohne Änderung compiliert werden kann und die Daten gleichartig abbildet. Zu denken dabei ist beispielsweise an einen Datenabzug, aus einem embedded System, auf dem PC ausgewertet. Das embedded System ist vielleicht nur 16 bit breit, der PC ist zufällig auf 4-Byte-Alignment geschaltet, (weil das an anderen Stellen so vorgesehen ist), und die Suche nach falschen Daten oder die 'Anpassung' des Headerfiles beginnt. Mir ist schonmal ein Compiler über den Weg gelaufen, der hat zwar Bytestrukturen dicht gepackt (struct{ char a,b; short c;} belegte also 4 Bytes), aber Werte, die von Haus aus 4 Byte lang waren (long), auf durch 4 teilbare Adressen gepackt. Und das notwendigerweise, weil die CPU das nicht anders verarbeiten konnte (kein Intel-Prozessor mit byteorientierten Zugriffen). Das ganze war aber nicht so ganz gut dokumentiert und auch nicht so gut bekannt. ..... Daher von mir der Hinweis, Strukturen so zu schreiben dass alles gepackt ist aber jedes Element auf einer durch soviel teilbaren Adresse beginnt wie es seiner Länge entspricht. Das ist zwar etwas mehr Denkarbeit beim Programmieren, aber ist immer die optimale Variante bzgl Rechenzeit und funktioniert immer kompatibel. --2006-05-27-HartmutSchorrig. |
KategorieWiederverwendung KategorieCee KategorieJava |
KategorieWiederverwendung KategorieC KategorieCee KategorieJava |
Meine Erfahrung:
struct Beispiel { int16 a; int32 b; //das ist nicht gut!!! }statt dessen
struct Beispiel { int16 a; int16 reserve; int32 b; }
typedef short int16; //short ist in diesem System 16 bit breit typedef int int32; //int ist bei diesem System (nicht überall!!) 32 bit breit.
Vielleicht findest du zum Thema Wiederverwendung so wenig, weil es dir hier mehr um das Thema Plattformunabhängigkeit geht?