Twój szef prosi cię o napisanie programu „witaj świecie”. Ponieważ zarabiasz za wiersze kodu, chcesz uczynić go tak złożonym, jak to możliwe. Jednak jeśli dodasz po prostu nonsensowne wiersze lub oczywiście bezużyteczne lub zaciemniające rzeczy, nigdy nie uzyskasz tego poprzez przegląd kodu. Dlatego wyzwaniem jest:
Napisz program „witaj świecie”, który jest tak złożony, jak to tylko możliwe, pod warunkiem, że możesz podać „uzasadnienie” dla każdej złożoności kodu.
Wymagane zachowanie programu to wypisanie jednego wiersza „Hello world” (bez cudzysłowów, ale z nową linią na końcu), a następnie pomyślne zakończenie.
„Uzasadnienia” obejmują:
- kompatybilność z modnym hasłem („Nowoczesne oprogramowanie jest zorientowane obiektowo!”)
- ogólnie przyjęte dobre praktyki programistyczne („Każdy wie, że należy oddzielić model i widok”)
- łatwość konserwacji („Jeśli zrobimy to w ten sposób, łatwiej zrobimy XXX później”)
- i oczywiście wszelkie inne uzasadnienia, jakie możesz sobie wyobrazić, używając (w innych sytuacjach) prawdziwego kodu.
Oczywiście głupie uzasadnienia nie będą akceptowane.
Musisz także „uzasadnić” swój wybór języka (więc jeśli wybierzesz z natury pełny język, musisz uzasadnić, dlaczego jest to „właściwy” wybór). Zabawne języki, takie jak Unlambda lub Intercal, są niedopuszczalne (chyba że możesz podać bardzo dobre uzasadnienie ich używania).
Wynik zakwalifikowanych zgłoszeń jest obliczany w następujący sposób:
- 1 punkt za każde oświadczenie (lub cokolwiek równoważnego oświadczeniu w wybranym języku).
- 1 punkt za każdą definicję funkcji, typu, zmiennej itp. (Z wyjątkiem głównej funkcji, w stosownych przypadkach).
- 1 punkt za każdą instrukcję użycia modułu, plik zawiera dyrektywę, przestrzeń nazw za pomocą instrukcji lub podobnego.
- 1 punkt za każdy plik źródłowy.
- 1 punkt za każdą niezbędną deklarację przekazania (jeśli możesz się jej pozbyć poprzez zmianę kodu, musisz „uzasadnić”, dlaczego wybrana przez ciebie umowa jest „właściwa”).
- 1 punkt za każdą strukturę kontroli (jeśli, podczas, za, itp.)
Pamiętaj, że musisz „uzasadnić” każdą pojedynczą linię.
Jeśli wybrany język jest na tyle inny, że nie można zastosować tego schematu (i można podać dobre „uzasadnienie” jego zastosowania), proszę zasugerować metodę punktacji, która najbardziej przypomina powyższy dla wybranego języka.
Uczestnicy proszeni są o obliczenie wyniku swojego wpisu i wpisanie go w odpowiedzi.