Forum: PC-Programmierung Wettbewerbe für kleinste Programme


von MaWin alias Palle (Gast)


Lesenswert?

Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die 
die geringste Anzahl an Bytes hatte.

Welche waren das und laufen die auch noch prinzipiell auf dem PC?

von c-hater (Gast)


Lesenswert?

MaWin alias Palle schrieb:

> Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die
> die geringste Anzahl an Bytes hatte.

Demo-Szene.

> laufen die auch noch prinzipiell auf dem PC?

Natürlich. Die, die halt für den PC gedacht sind. Aber leider: viele 
alte Demos laufen auf aktuellen PCs halt nicht mehr. Läßt man dann halt 
in einer "VM" laufen, die einen hinreichend historischen PC 
bereitstellt...

Bei wirklich modernen PCs ist es halt auch einigermaßen schwierig, etwas 
zu schreiben, was wirklich überrascht. Die Dinger haben halt einfach mal 
Rechenleistung ohne Ende.

Merkt man bloß bei normalen Anwendungen und OS nix von, weil die alle 
Rechenleistung, die den Fortschritt der Hardware zusätzlich bereit 
gestellt hat, in sinnlosen Verwicklungen irgendwelcher schwachsinnigen 
Abstraktionen verwursten.

von MaWin alias Palle (Gast)


Lesenswert?

Hast Du noch Beispiele für sinnvolle kleinste Programme?

von Mitleser (Gast)


Lesenswert?

Google mal nach .kkrieger

von MaWin alias Palle (Gast)


Lesenswert?

Solche Programme hatte ich nicht im Sinn, aber schaut mal her:

https://www.com-magazin.de/news/open-source-games/kleinste-computer-schachspiel-welt-885733.html

von Helge (Gast)


Lesenswert?

In der Ausbildung damals hatten wir einen DCF77-Empfänger auf dem SBC85 
programmiert, 984 der 986 bytes Programmspeicher ausgenutzt. Mel the 
programmer wäre stolz drauf gewesen.

Der DPT-twister für meine 324x16 Festplatte war 28 byte groß, TSR 18 
byte.

von foobar (Gast)


Lesenswert?

Evtl meinst du ja den IOCCC:

http://www.ioccc.org/2020/whowon.html

von MaWin alias Palle (Gast)


Lesenswert?

Ja, so ähnlich. Aber hier ist kein deutscher Programmierer aufgeführt.

von Christian M. (likeme)


Lesenswert?

Dachte immer unter 1GB geht gar nix mehr ;-)

von Georg (Gast)


Lesenswert?

Christian M. schrieb:
> Dachte immer unter 1GB geht gar nix mehr ;-)

Das Ganze ist eh nur Hobby, verkaufen lässt sich sowas nicht. Ich kann 
mich erinnern dass vor der Jahrtausendwende sogenannte Fachjournalisten 
in sogenannten Fachzeitungen sich über Programme lustig gemacht haben 
die ihnen zu klein vorkamen. Ein volle CD muss schon sein, sonst fühlen 
sich die Anwender betrogen - auch wenn die Software nichts kostet. Ein 
gigantischer Resourcenverbrauch, etwa auch an RAM, gilt heute als 
Leistungsnachweis.

Georg

von Fpgakuechle K. (Gast)


Lesenswert?

MaWin alias Palle schrieb:
> Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die
> die geringste Anzahl an Bytes hatte.

Nicht die geringste sondern kleiner als eine bestimmte Grenze.
Beispielsweise 64K
https://en.wikipedia.org/wiki/64K_intro

Diese Grenze resultiert as der maximalen größe für ein .Com-programm, 
was wiederum wegen der x64 codesegment struktur auf 64k limitiert waren


>
> Welche waren das und laufen die auch noch prinzipiell auf dem PC?

prinzipiell eher nicht, wenn die BIOS-Adressen nicht mehr gleich sind 
oder besondere Privilegien erfordern. Mit nen Emzlator wie Dosbox 
koennte es noch klappen.

Es gab auch ander Limits als die für ein COM, beispielsweise höchstens 
einen Disk-sector, oder muss in den Bootsector passen. War typisch für 
intros

Da mal ein Klassiker aus Teutonenland - Farbrausch:
https://www.youtube.com/watch?v=Y3n3c_8Nn2Y

Da was aus der 4k-Ecke:
https://www.youtube.com/watch?v=qg9Hltb9UU4

Persönlich begeistere ich mich eher für Amiga-Demos. Nicht PC, sondern 
7.* MHz Homecumputer - der Apple des kleinen Mannes ;-)
https://youtu.be/cKy57re_6BY?t=4898

von Christian M. (likeme)


Lesenswert?

Georg schrieb:
> Christian M. schrieb:
>> Dachte immer unter 1GB geht gar nix mehr ;-)
>
> Das Ganze ist eh nur Hobby, verkaufen lässt sich sowas nicht. Ich kann
> mich erinnern dass vor der Jahrtausendwende sogenannte Fachjournalisten
> in sogenannten Fachzeitungen sich über Programme lustig gemacht haben
> die ihnen zu klein vorkamen. Ein volle CD muss schon sein, sonst fühlen
> sich die Anwender betrogen - auch wenn die Software nichts kostet. Ein
> gigantischer Resourcenverbrauch, etwa auch an RAM, gilt heute als
> Leistungsnachweis.
>
> Georg

Genau das denke ich mir auch, scheinbar programmieren die alle 
irgendwelche Luftballons rein die eigentlich keine Funktion haben. 
Hauptsache der Anwender benötigt noch einen Speicherriegel mehr um 
seinen Brief zu tippen.

von Martin H. (horo)


Lesenswert?

AtTiny85 mit 0.000011574 Hz Taktfrequenz. Taktgeber ist ein 
Tageslicht-LDR.

https://www.idogendel.com/en/archives/579
1
int main(void) {
2
3
    // Prepare value to load into PINB
4
    asm volatile("LDI R16, 1");
5
    // DDRB0 to Output
6
    asm volatile("OUT 0x17, R16");
7
8
    while (1) {
9
10
        // It's Saturday:
11
        // Set bit 0 of PINB to toggle PB0
12
        asm volatile("OUT 0x16, R16");
13
        // Sunday has come
14
        asm volatile("OUT 0x16, R16");
15
  
16
        // Loop JMP will take 2 cycles,
17
        // so we need 3 more...
18
        asm volatile ("NOP");
19
        asm volatile ("NOP");  
20
        asm volatile ("NOP");
21
   
22
    }
23
24
}

Das Gerät braucht allerdings 40 Tage zum "booten".

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Codegolf geht auch in die Richtung:

  https://de.wikipedia.org/wiki/Codegolf


Martin H. schrieb:
>         asm volatile ("NOP");
>         asm volatile ("NOP");
>         asm volatile ("NOP");

Das kann aber noch stark optimiert werden:

1
           asm volatile ("LPM");

von cppbert3 (Gast)


Lesenswert?

MaWin alias Palle schrieb:
> Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme
> gab die
> die geringste Anzahl an Bytes hatte.
>
> Welche waren das und laufen die auch noch prinzipiell auf dem PC?

da gibt es z.B. - kleinstes Windowsprogramm
https://github.com/pts/pts-tinype

oder die 256byte, 4k oder 64k Demos
die versuchen müssen in sehr wenig Platz sehr viel Demo unter zu bringen

von martin (Gast)


Lesenswert?

Kein Wettbewerb als solcher, aber dazu fällt mir spontan Linus Akessons 
"Craft" ein, der einen Synthesizer und VGA-Videogenerator auf einem 
Atmega88 programmiert hat:

https://www.linusakesson.net/scene/craft/

von Armin K. (-donald-) Benutzerseite


Lesenswert?

Ich erinnere mich an das wohl kleinste Programm überhaupt:
3 Byte.

Das war mal vor gefühlt 20 Jahren in einer Computerzeitschrift 
beschrieben, wie man sich das per Kommandozeile selbst herstellen kann. 
Es war wohl eine .com, genau kann ich mich nicht mehr erinnern.
Die Funktion des Programmes war obercool: Einfach den PC per 
Reset-Befehl zu booten. :-)
Das würde mit dem heutigen Windows gar nicht mehr funktionieren.

von Zwitter (Gast)


Lesenswert?

https://kolibrios.org/de/index


Ein komplettes Betriebssystem KEIN LINUX! auf einer Diskette!!! mit 
grafischer Oberfläche, spielen, Edistor, Norton Commaner Clon, 
Taschenrechner etc pp

von Εrnst B. (ernst)


Lesenswert?

Armin K. schrieb:
> Ich erinnere mich an das wohl kleinste Programm überhaupt:
> 3 Byte.

Unter CP/M gab's sogar ein noch kürzeres Programm: 0 Byte. Weil CP/M den 
Speicher nicht gelöscht hat, hatte es sogar eine sinnvolle Funktion: 
Einfach das zuletzt geladene Programm nochmal starten.


Und auf die Gefahr hin, dass der Thread jetzt gesperrt wird:
1
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Lässt sich per Texteditor als *.com speichern (enthält nur 7-Bit-Ascii) 
und ist nachher ausführbar, und macht sogar was.

: Bearbeitet durch User
von Fpgakuechle K. (Gast)


Lesenswert?

cppbert3 schrieb:

> die versuchen müssen in sehr wenig Platz sehr viel Demo unter zu bringen

bei Demos ist das ja noch sinnvoll, anderswo wird 'anspruchsvoll klein 
programmieren' mit 'anspruchslos wenig programmieren' verwechselt und 
führt, weil man Bereichs- und Rückgabewertprüfung auslässt, zu 
katastrophalen Sicherheitslücken.

Eine 'Lücke' ist eben auch ein Ausdruck für ein (viel zu) kleinem 
Programm.

https://www.heise.de/security/artikel/So-funktioniert-der-Heartbleed-Exploit-2168010.html

von foobar (Gast)


Lesenswert?

>> Evtl meinst du ja den IOCCC:
>
> Ja, so ähnlich. Aber hier ist kein deutscher Programmierer aufgeführt.

Ja, und man weiß auch nicht, ob sie Linkshänder sind.


> Solche Programme hatte ich nicht im Sinn, aber schaut mal her:
> [...Bootchess...]

Das hat Oscar Toledo doch schon getoppt[1] - 326 Bytes.  Versionen 1 und 
2 (in C) hatten den 18. und 19. IOCCC gewonnen[2].

Ebenfalls beeindruckend: sein 8080 resp CP/M Emulator in 2k[3], 
ebenfalls IOCCC Best of the Show.

[1] https://nanochess.org/chess6.html
[2] https://nanochess.org/chess.html
[3] https://nanochess.org/emulator.html

von chris_ (Gast)


Lesenswert?

>Hallo, ich weiß das es mal Wettbewerbe für lauffähige Programme gab die
>die geringste Anzahl an Bytes hatte.

demo !

Hier das ultimativ unübertroffene Demo für einen Atmega8 von Linus 
Akkeson
https://www.youtube.com/watch?v=sNCqrylNY-0

>Welche waren das und laufen die auch noch prinzipiell auf dem PC?

Und hier Debris von Farbrausch:
https://www.youtube.com/watch?v=ffPPmrLbTyw

von Georg (Gast)


Lesenswert?

Die Urversion von Irfanview wurde nicht so recht ernstgenommen, weil das 
Programm auf eine Diskette passte. Das hat sich geändert, bloss passt 
die aktuelle Software auch nicht mehr annähernd auf die eine Diskette. 
So richtig traurig ist das allerdings nicht.

Georg

von Andreas R. (daybyter)


Lesenswert?


von Jens G. (jensig)


Lesenswert?

Also mein kleinstes Programm, was ich mal mir vor langer Zeit unter DOS 
zusammenbastelte für einen bestimmten Zweck, war das hier als Textfile:

e cs:100 EB 3C 90 42 4f 4f 54 2e 48 44 44 00 02 01 01 00
e cs:110 02 e0 00 40 0b f0 09 00 12 00 02 00 00 00 00 00
e cs:120 40 0b 00 00 00 75 3a e0 bf cb
f cs:12a 13d 0
a cs:13e
mov ax,0
mov ds,ax
mov es,ax
mov si,7c00
mov di,7e00
mov cx,200
repz
movsw
jmp 0:7e55
mov dl,80
mov dh,0
mov cl,1
mov ch,0
mov al,1
mov ah,2
mov bx,7c00
int 13
jmp 0:7c00

f cs:16b 2fd 0
e cs:2fe 55 AA
w cs:100 0 0 1
q

Und dann ausführen mit:
debug < bootC.deb

Was das macht? Es bastelt im Speicher ein kleines Assemblerprogramm zu 
sammen, und schreibt das Resultat dann in den Bootsektor einer Diskette 
(a:).
Zweck: booten von c:, wenn die Diskette (ohne  Betriebssystem) aus 
Versehen mal im LW steckte.
Das eigentliche Programm sind nur die asm-Befehle, der Rest sind nur 
nötige Datenbereiche, damit der Sektor als gültiger Bootsektor 
verarbeitet werden kann.

: Bearbeitet durch User
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.