Mit was zum programmieren anfangen?
Geizhals » Forum » Programmierung » Mit was zum programmieren anfangen? (74 Beiträge, 1489 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.............
Re(13): Mit was zum programmieren anfangen?
12.12.2014, 22:14:32

Afaik wenn Du das erste Element der struct angibst kommst direkt auf den
plain-memory der Struktur.


Folgendes Problem:

struct s_bubu {
 char a;
 int b;
};

struct s_bubu x,y;

Das Problem ist, dass der Compiler ja beschließen kann, dass er padding zwischen a und b anfügt, um schnellere Zugriffe zu ermöglichen. In Pascal kann man sagen, ob er das soll - da gibt es "normale" und "packed" records. Erstere mit padding, letztere ohne. In C... Schade :-D

Du kannst nicht wissen, ob er padding anfügt, drum müsstest x.a mit y.a und x.b mit y.b vergleichen, denn  ein memcmp kann ein "false negative" liefern (wenn a und b eh gleich sind, nur das Padding halt anders).

auch ein furchtbares Konstrukt

Wenn Du es nicht lieben gelernt hast, hast zuwenig Zeit mit Pascal oder PL/I oder Modula 2 verbracht.

  Die C Compiler waren damals

Also ich habe 1984 mit Turbo Pascal begonnen... Die Pascal-Compiler auf den DOS-Rechnern waren schon seeehr ok. Alles in RAM, -pfeilschnelle- Entwicklung.

Nicht wie bei C-Compilern, wo Du Editor lädst, schreibst, Editor beendest, Compiler anwirfst, Editor startest, ... Alleine die IDE war um so viel voraus, dass niemand etwas anderes wollte als Pascal coden  Turbo C (ebenfalls mit IDE) kam erst -einige- Jahre später.
----------------------------------------------------------------------------------

Wenn man sich wundert, warum ich die Aussagen mancher Deppen komplett ignoriere...
... diese Armlöcher sind geplonkt - die lese ich nicht einmal.
12.12.2014, 22:14 Uhr - Editiert von kombipaket, alte Version: hier
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
..............
Re(14): Mit was zum programmieren anfangen?
13.12.2014, 00:06:29
Das Problem ist, dass der Compiler ja beschließen kann, dass er padding
zwischen a und b anfügt, um schnellere Zugriffe zu ermöglichen. In Pascal kann
man sagen, ob er das soll - da gibt es "normale" und "packed" records. Erstere
mit padding, letztere ohne. In C... Schade :-D
Du kannst nicht wissen, ob er padding anfügt, drum müsstest x.a mit y.a und
x.b mit y.b vergleichen, denn  ein memcmp kann ein "false negative" liefern
(wenn a und b eh gleich sind, nur das Padding halt
anders).


Ich kenn halt vom Compiler nur den GCC besser und da kannst das Padding direkt bestimmen, memset'test das noch vorher mit 0en sollte das schon gehen, auch wenn ich persönlich solche Konstrukte in C für bissl gefährlich halte, man weiß ja nie wann was deprecated wird und dann nimmer funktioniert.

Wenn Du es nicht lieben gelernt hast, hast zuwenig Zeit mit Pascal oder PL/I
oder Modula 2 verbracht.


Also nicht wirklich ich hab mit Modula2 mal ein paar Anfängerübungen für einen Kumpel gemacht, aber ich bin mit C eher warm geworden und nachdem sich C++ gegenüber Delphi ja massiv durchgesetzt hat, hab ich eigentlich das auch nimmer nachgeholt.

Also ich habe 1984 mit Turbo Pascal begonnen... Die Pascal-Compiler auf den
DOS-Rechnern waren schon seeehr ok. Alles in RAM, -pfeilschnelle-
Entwicklung.


Ich meinte da eher die erzeugte Binary, wir haben damals in DOS so Cracktros programmiert wo es wirklich auf jeden CPU-Cycle ankam und da war der Pascal Compiler nicht so optimal - schlußendlich haben wir aber alles in x86 Assembler gemacht (leider gabs damals noch ned so gute Extensions wie SSE oder so ... ).

Nicht wie bei C-Compilern, wo Du Editor lädst, schreibst, Editor beendest,
Compiler anwirfst, Editor startest, ... Alleine die IDE war um so viel voraus,
dass niemand etwas anderes wollte als Pascal coden  Turbo C (ebenfalls mit
IDE) kam erst -einige- Jahre später.


Ja, Small-C war in den Anfangstagen nicht unbedingt das Gelbe vom Ei :). Aber er hat ganz guten Code produziert.


"I am serious. And don't call me Shirley."
Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung