Konkurs :)

0

Język programowania dowolny (znaczy Pascal, C, Java, asm, Haskell).
Cel: napisać program, który wypisze swój kod źródłowy.
Trudność: nie można korzystać z żadnych plików czy zasobów :)

0

Tzn, ma wyświetlić kod np. w pascalu, czy tylko w assemblerze? Bo to pierwszejest raczej niemożliwe bez żadnego osobnego dołączenia tegoż kodu. No, nie mówię oczywiście o czymś w rodzaju:

ShowMessage('ShowMessage(''ShowMessage(''ShowMessage(itd...)'')'')');

:-P

0

W tym samym języku, w jakim napisałeś program :)

Dryo: nie podawaj im odpowiedzi :)

0

http://www.256b.com/demo.php?demoId=195
W języku wysokiego poziomu jest to awykonalne.

i pisz normalne tematy [diabel]

0

Język dowolny powiadasz, a maszyna? Może być BASIC na C64? Tam chyba można było LIST wrzucić:)) (ale nie mam pewności) - tylko to był raczej interpreter:) Aaa... i w JavaScript i większości języków interpretowanych na upartego pewnie można by było:p

0

Marooned: jest wykonalne. Nawet bardziej niz w asm. Nie bez powodu Vogel podal w przykladowych jezykach Haskell. Jezyki funkcyjne idealnie sie do tego nadaja. Jak juz kiedys wspominalem pierwszym kompilatorem byla funkcja napisana w LISPie kompilujaca programy w LISPie. Analogicznie jest z tymi programikami. Maja one swoja nazwe... ale nie bede podawal bo zepsuje konkurs (chcialem naprowadzic was, ale niestety tam byly linki do gotowych programow :( ).
Krecik: nie mozna wykorzystywac LIST z basica. Zabroniony jest odczyt kodu zrodlowego (czyli np. napisanie programu, zapisanie zrodla na dysk i odczytanie go). LIST jest analogiczna instrukcja wczytujaca tylko ze z pamieci.

//hmm - chodziło mi raczej o Pascal/C++ etc. ;) - m.M

0

A Js może być ?

Bo w Js to bardzo proste :d

alert(document.getElementsByTagName('HTML')[0].outerHTML)
0

A Js może być ?

Bo w Js to bardzo proste :d

alert(document.getElementsByTagName('HTML')[0].outerHTML)

Ale w ten sposob odczytujesz zrodla strony, dlatego jest to niepoprawne, tak samo jak LIST z Basic'a. Chodzi o "stworzenie" kodu. Czyli moze on powstawac np. za pomoca jakies suerinteligentnego programu generujacego inny program (tzn. samego siebie) albo miec w kodzie gdzies jakis lancuch znakow zapisany, ktory bedzie identyczny z kodem programu. Problemem w niektorych jezykach jest koniecznosc zachowania formatowania (np. w TP mialem problem ze zbyt dlugim stringiem :/).
Juz chyba dosc podpowiedzialem. Wiecej to musialbym juz umiescic kod.

0

W Assemblerze by się chyba dało takim sposobem: znaleźć napisany w ASM dekompilator ASM, przerobić tak, żeby od razu brał się za siebie i wypisywał wynik, kilka razy przemaglować go kolejno przez jego samego i kompilator, żeby w końcu nie było żadnych rżnic wywołanych optymalizacją i tyle tego. Wypisze własne źródła.

Ewentualnie można zrobić plik EXE składający się z samego nagłówka - kodu źródłowego nie ma, więce nie ma czego wypisywać - program nie robi nic, natychmiast się zamyka. W pełni zgodne z zasadami, Vogel nie napisał, że są jakieś ograniczenia rozmiaru kodu :P :D :D :D

0

żeby w końcu nie było żadnych rżnic wywołanych optymalizacją i tyle tego.

Dlatego trzeba uzyc popularnie nazywanych "pure assembler", czyli generujacych kod taki jak uzytkownik sobie zazyczy, a nie co kompilator uzna za lepsze (np. FASM).

Ewentualnie można zrobić plik EXE składający się z samego nagłówka - kodu źródłowego nie ma, więce nie ma czego wypisywać - program nie robi nic, natychmiast się zamyka.

Tak. Zamknie sie... po jakims czasie z komunikatem access? :P
Jakis kod jest. W koncu musi byc jakis program. Czym innym jest program, a czym innym plik. Gdyby chodzilo o plik to moglbym stworzyc np. pusty plik js, albo lepiej plik txt i powiedziec, ze takie rozszerzenie maja pliki mojego wyimaginowanego kompilatora :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1