Programmer Nyata yang ditentukan dapat menulis program Fortran dalam bahasa apa pun.
dari Real Programmer Jangan Gunakan Pascal
Tugas Anda adalah menulis program dalam bahasa pemrograman pilihan Anda, tetapi Anda hanya diperbolehkan menggunakan bahasa lain. Artinya, buang semua konvensi pengkodean dari satu bahasa dan ganti dengan konvensi pengkodean dari bahasa lain. Lebih banyak lebih baik. Jadikan program Anda terlihat seperti ditulis dalam bahasa lain.
Misalnya, penggemar Python yang membenci Java dapat menulis program Python berikut di Jawa:
void my_function() {
int i = 9 ;
while(i>0) {
System.out.println("Hello!") ;
i = i - 1 ;}}
Penggemar pascal yang dipaksa menggunakan C bisa menulis ini:
#define begin {
#define end }
#define then
#define writeln(str) puts(str)
if (i == 10) then
begin
writeln("I hate C");
end
Anda harus menulis program yang lengkap. Program tidak perlu melakukan sesuatu yang bermanfaat.
Semoga berhasil. Ini adalah kontes popularitas sehingga kode dengan suara terbanyak menang!
sumber
.litcoffee
. Mungkin membantu.Jawaban:
C dalam C ++
sumber
char*
bukannyastd::string
).char *argv[]
!rakitan x86 dalam GNU C
Tidak, saya tidak hanya menggunakan
asm
kata kunci, karena pertanyaan yang dibuat ini adalah untuk programmer nyata ... ini akan berjalan dengan baik di ARM.(Hanya untuk membuktikan intinya, saya tidak "menulis" perakitan sama sekali - ini adalah output yang dihasilkan oleh
GCCClang (503.0.38) untuk kode yang dikomentari di atas, diterjemahkan secara buta ke dalam makro.)Ini hanya berfungsi dalam mode 32-bit. Itu tidak masalah karena kode programer sungguhan untuk ukuran kata.
Lihat saja semua gips itu. Pemain berarti aku realer programmer dari compiler, kan?
sumber
call
, khususnya.for pass=1:3...next
. Melaksanakannya di penerjemah BASIC mengumpulkannya.Bahasa Inggris di C
Ada ide untuk menghilangkan
;
?sumber
the
dua kali?#define . ;
Brainfuck dalam JavaScript
Javascript adalah bahasa yang sulit! Mari kita gunakan Brainfuck, bahasa yang lebih dimengerti: o)
Saya kira saya menulis penerjemah brainfuck dalam javascript.
Contoh di atas hanya ouputs
Hello World!
dan mengabaikan input (tanpa,
simbol).Tapi itu bekerja dengan input juga! Misalnya, coba
,+>,+>,+>,+<<<.>.>.>.
dan ketikgolf
dialog. Ini akan menampilkan karakter berikutnya dalam tabel ASCII:hpmg
EDIT : Penjelasan singkat untuk orang yang tidak tahu brainfuck.
Bayangkan sebuah array integer tak terhingga yang
a
diinisialisasi ke nol di mana-mana, sebuah pointer pada satu elemen array inii
, dan input penggunau
.Brainfuck sangat mudah dipelajari tetapi sulit untuk menulis:
+
kenaikan ke nilai saat ini:a[i]++
-
menurunkannya:a[i]--
>
membuat untuk menunjuk poin elemen berikutnya:i++
<
sebelumnya :i--
[
dan]
tentukan loop yang terputus ketika nilai saat ini nol:while (a[i]) { ... }
.
cetak elemen saat ini:String.fromCharCode(a[i])
,
setel elemen saat ini dengan input pengguna:u.charCodeAt(...)
sumber
replace
pernyataan tidak memengaruhi program?--i
lebih cepat dari itui--
? Tampaknya salah sejak bertahun-tahun: jsperf.com/decrementgolf .Saya pikir Lennart Augustsson yang brilian telah memenangkan ini dua kali.
Pertama, inilah contoh implementasi "hack akhir pekan" nya BASIC sebagai Haskell Monadic DSL, dari 2009:
Ini bekerja dengan membebani jenis nomor. Nomor baris benar-benar fungsi yang menerima argumen. Sisa dari baris adalah argumen ke fungsi. Fungsi mengembalikan representasi Pohon Sintaks Abstrak untuk penerjemah BASIC untuk dikerjakan.
Saya juga merekomendasikan Anda untuk memeriksa entri Augustsson ke Kontes C International Obfuscated 2006, di mana ia berhasil masuk ke dalam 4k:
Mereka dapat berbagi file yang sama karena byetecode ditempatkan di dalam komentar C.
Sudah beberapa tahun sejak saya mengikuti karya Augustsson, jadi mungkin ada hal-hal brilian lain yang muncul sejak saat itu ....
sumber
PHP dan Javascript
Ini adalah polyglot:
Anda dapat menjalankan kode ini dalam kedua bahasa:
Kuncinya di sini adalah bahwa Javascript menggunakan urutan melarikan diri dalam string dimulai dengan
'
dan"
.Di sisi lain, PHP hanya menggunakan urutan pelarian dalam string yang dimulai dengan
"
dan<<<
.Kemudian, kita mendeklarasikan fungsi
printf
, yang mirip denganprint
tetapi menghasilkan string yang diformat dalam PHP.PHP mengharuskan vars mulai dengan
$
, sementara Javascript memungkinkan.sumber
Array(…)
JS, dan itu jelasarray(…)
dalam PHP.[…]
akan jauh lebih baik;)!Array()
JS atau tidak: Saya peduli bahwa saya memiliki polyglot yang BENAR . Saya membuat salah satu kejahatan JS terburuk dengan kode ini, tetapi yang saya inginkan adalah ia menjalankan dan melakukan hal yang sama persis di keduanya, tetapi terlihat seperti JS dan PHP pada saat yang sama.[...]
tidak valid dalam PHP <5.4.0, yang buruk ....... Jika saya melempar ini ke dalam PHP 4, 5 atau Javascript, saya berharap ini berfungsi, alih-alih memberikan kesalahan sintaksis di mana-mana.[…]
, yang tampaknya cukup standar di PHP, dan karenanya OK untuk tujuan Anda. Omong-omong, PHP <5,4? Saatnya memperbarui, kawan ...Array
adalah nama yang BENAR dari konstruktor objek Array. Pada dasarnya, menggunakan[]
sama denganArray()
. Saya tidak melihat hal buruk dengan itu. Tapi saya punya satu pertanyaan sederhana: Bekerja? (btw, saya harus menggunakan php 5.3.28 di tempat kerja.)Brainfuck di JS
sumber
><,.-
Ini adalah salah satu dari pemenang IOCCC 2005 , sebuah program C yang, kecuali oleh sekelompok definisi itu, terlihat seperti program java:
sumber
C ++ dalam C
OK, jadi Anda adalah seorang programmer C ++, tetapi dipaksa untuk menggunakan C? Tidak masalah, Anda hanya perlu menulis beberapa header tambahan yang hilang dalam C. Misalnya, inilah program Hello World yang valid di C:
Dalam file header tambahan
iostream
, tulis:Dalam file
string
, tulisDalam file
helloworld.c
(kode C Anda yang sebenarnya), tulisDan ketika kompilasi
helloworld.c
dengan kompiler C, instruksikan kompiler untuk juga mencari<...>
file header di mana pun Anda menyimpan fileiostream
danstring
, misalnya, jika Anda mengkompilasi dengan gcc dan meletakkan fileiostream
danstring
dalam direktori saat ini, kompilasi denganCatatan:
volatile
Header iniostream
ada untuk memungkinkan kompilasi bebas peringatan bahkan pada tingkat peringatan maksimum (pembacaan dari variabel yang tidak stabil dianggap memiliki efek).sumber
volatile
sini, dan peringatan seperti apa?CQL - Bahasa Query berkafein
(atau "SQL on Caffeine")
Ini mungkin agak terlalu ambisius. Berikut adalah upaya untuk menulis kode deklaratif SQL (ish) dalam CoffeeScript . Ini membutuhkan fitur Proxy ECMAScript 6 . Anda dapat mengujinya dalam simpul dengan
--harmony-proxies
.Mari kita membuat template untuk mendefinisikan proxy. (Diambil dari komentar Benvie tentang masalah ini )
Sekarang tentukan objek proxy dan beberapa variabel dan fungsi global yang mencurigakan:
Yah itu setup yang cukup banyak! Tapi sekarang kita bisa melakukan hal berikut (input / output dalam gaya konsol):
Ini bukan polyglot yang sebenarnya, tapi bukan itu intinya. Saya tahu itu
@
digunakan untuk variabel dalam SQL, tapi saya perlu semua@
s untuk nama kolom dan tabel karena saya belum menemukan cara untuk proxy objek global (dan saya tidak akan terkejut jika itu benar-benar tidak mungkin - dan untuk alasan yang bagus).Saya juga mengubah beberapa tanda kurung menjadi tanda kurung (khususnya setelah
VALUES
danIN
). Sayangnya, apa yang saya tidak tahu sama sekali adalah cara untuk memungkinkan kondisi normal sepertiyear > 2000
, karena mereka akan mengevaluasi ke boolean segera.Masih ini sangat mirip SQL dan jelas lebih deklaratif daripada imperatif / fungsional / berorientasi objek sehingga harus memenuhi syarat baik untuk pertanyaan. Saya sebenarnya berpikir jika saya sedikit memoles kode dan mendukung beberapa fitur, ini bisa menjadi modul CoffeeScript yang berguna.
Bagaimanapun, ini menyenangkan! :)
Bagi mereka yang tidak terlalu mengenal CoffeeScript, query SQL mengkompilasi ke JavaScript berikut:
sumber
@
di SQL digunakan untuk variabel sesi.@
s untuk nama kolom dan tabel.Visual Basic 6 (dalam JavaScript)
Ini juga berfungsi di VBScript.
sumber
F # dalam C ++
Penyalahgunaan preprocessor yang tidak imajinatif dan tidak menyenangkan. Saya pikir itu akan menyenangkan untuk mengubah C ++ agar terlihat seperti bahasa yang sama sekali berbeda daripada menggunakan beberapa alias untuk membuatnya terlihat seperti Java atau PHP. Saya tidak benar-benar berharap ini untuk mengumpulkan satu ton upvotes, ini hanya untuk bersenang-senang.
Coba di sini .
Sedihnya menulis sesuatu kepada STDOUT adalah semua yang bisa dilakukan, walaupun saya yakin jika seseorang melemparkan cukup sihir, mereka dapat membuatnya melakukan lebih banyak.
sumber
exit 0
atau adil0
.Python dan ... tidak ada yang akan menebak (edit: dc)
Berikut adalah beberapa kode python yang valid, tetapi sebenarnya program ini ditulis dalam bahasa yang sangat berbeda:
Kode berjalan dalam kedua bahasa tanpa kesalahan.
Kombinasi ini sangat gila; Saya akan senang menunggu satu atau dua hari sebelum mengatakan mana bahasa lain; silakan tinggalkan komentar untuk menebak.
sunting: Bahasa tersebut adalah bahasa berbasis stack dari dc. Anda mungkin lihat di sini kata kunci terkenal seperti
for
,if
,or
,in
, tetapi hanya surat-surat penting! Yang,
tidak memiliki arti dalam dc berubah menjadi register karena pertama kali muncul adalah setelah hurufs
(sama untuk:
).sumber
C ++ memungkinkan Anda untuk menulis kode mirip-lisp, dengan perpustakaan InteLib:
lih. http://www.informatimago.com/articles/life-saver.html
sumber
C # di Whitespace
Oke, pertama coba di salah satu dari ini, jadi mari kita lihat bagaimana kelanjutannya.
Dan jika pemformatan menjadi kacau karena harus meletakkan empat spasi di depan setiap baris, ini dia lagi. untuk ruang dan # untuk tab:
sumber
HTML dan CSS
Bukan bahasa pemrograman, tapi ... dokumen ini adalah HTML dan CSS yang valid :
Ini berfungsi, karena komentar HTML diizinkan dalam stylesheet karena alasan historis. Oh, dan setiap dokumen HTML yang valid juga merupakan program PHP yang valid, jadi ini juga PHP . :)
sumber
C dalam Scala
Layer bridging mengemulasi era yang lebih romantis ketika string masih null array yang diakhiri byte.
sumber
"This program does not take parameters!"
sed dan APL
Bos saya ingin saya menulis skrip sed, tapi saya lebih suka menulis APL sepanjang hari. Namun demikian, ia sangat senang dengan pekerjaan saya karena skrip tersebut berjalan dengan versi sednya:
Anda dapat mencobanya di situs web baru saya dengan tautan permanen ini . Ini adalah versi javascript yang dikompilasi untuk GNU APL. Rilis final nanti dengan rilis resmi GNU APL, v. 1.3 tetapi Anda dapat menggunakannya dengan sempurna untuk permalink Anda jika Anda menikmati GNU APL.
sumber
C dalam Haskell
Tentu saja, karena
cmain
tidak melakukan apa pun denganargc
atauargv
, kode marshaling argumen tidak berpengaruh, dan karenacmain
selalu mengembalikan 0, cabang "lain" dari pernyataan "jika" sudah mati. Tetapi pernyataan "jika" tidak melakukan apa-apa.Semua kurung kurawal dan titik koma tidak perlu, seperti juga sebagian besar kurung dan beberapa
do
kata kunci. Pernyataan "jika" bisa ditulis sebagaiif exitCode == 0 then exitWith ExitSuccess else exitWith (ExitFailure (fromIntegral exitCode))
.sumber
C ++ dalam Forth
Bukan solusi yang paling fleksibel, tetapi berfungsi jika ditulis persis seperti yang ditunjukkan.
sumber
Haskell di Jawa
("vanilla" Java 7, bukan Java 8) (Ya, saya tahu bahwa kinerja reruntuhan tinju; dan bahkan mencoba menggunakan fungsi orde tinggi menjadi gila verbose: D)
Java memiliki sintaks yang sangat kaku, jadi alih-alih mengubah sintaks, saya mencoba membuat kode yang secara semantik lebih mirip dengan gaya Haskell.
Edit - menambahkan aplikasi fungsi parsial.
(Ya, semua yang dilakukan kegilaan ini adalah komputasi
6!
)sumber
COBOL dalam AWK
Dalam semangat kutipan. AWK murni, tidak tercemar, karena dapat ditulis oleh programmer COBOL.
Tugasnya adalah untuk menghitung catatan pada file. Versi pengembangan awal ini menghitung sendiri untuk pengujian. File yang benar akan dikodekan kemudian ketika dirilis dari Unit Testing ...
Jika saya bisa mendapatkan sintaks untuk melakukan fosfor-hijau pada hitam, itu akan bagus ...
Bahkan mendapatkan nomor kolom yang benar pada yang satu ini, itu tujuh kosong pada awal setiap baris (tidak pernah melakukan itu di awk sebelumnya) dan melanggar pernyataan cetak panjang pada kolom 72.
sumber
Brainfuck (atau apa pun) di Racket
Modul fleksibel dan sistem makro Racket memungkinkannya untuk mengimplementasikan dukungan modul untuk bahasa yang sama sekali baru, baik untuk domain tertentu maupun untuk tujuan umum. Ada dukungan di luar kotak untuk Datalog dan Algol 60 , jadi berikut ini adalah program Racket yang valid:
Anda juga dapat menambahkan dukungan untuk bahasa lain: mis. Lihat deskripsi Danny Yoo tentang cara menerapkan dukungan untuk Brainfuck, yang memungkinkan program Racket seperti:
Dan karena dukungan ditambahkan pada level modul yang dikompilasi, dimungkinkan untuk menautkan modul yang ditulis dalam bahasa yang berbeda atau menyematkan cuplikan dari satu bahasa di dalam modul yang ditulis dalam bahasa lain.
sumber
SML di Jawa
Saya masih memiliki beberapa kode kuno dari mulai ketika saya mulai belajar Java dan mencoba menggunakannya dalam gaya fungsional. Dibersihkan sedikit:
sumber
Java dalam Perl
Mungkin dianggap melanggar peraturan, tapi saya tidak peduli. Jelas, ini dimaksudkan agar terlihat seperti program Java. Ini mencetak 20 angka Fibonacci, kalau-kalau tidak jelas.
sumber
J dan ... tidak ada yang akan menebak (edit: dc)
Ini adalah entri kedua saya; di sini adalah sepotong kode J yang valid, yang mengembalikan 1:
Saya menunggu satu atau dua hari sebelum memberitahu yang merupakan bahasa lain menjalankan bagian kode yang sama tanpa kesalahan. Tinggalkan komentar untuk mencoba menebak.
sunting: Bahasa lainnya adalah bahasa berbasis tumpukan dari kalkulator Unix yang sangat kuno.
sumber
.,+-<>[]
sehingga program Anda setara dengan...[.]+
di Brainfuck yang merupakan program yang valid tetapi tidak berguna. AFAIK program brainfuck hanya dapat tidak valid dengan memiliki ketidakcocokan[]
.dc menjalankan file PostScript
dc dapat menjalankan bagian kode berikut tanpa kesalahan:
sumber
ML / (Ketat) Haskell di Jawa
Ini dari proyek nyata yang sebenarnya. Itu menggunakan struktur data abadi yang tetap dan menggunakan rekursi bahkan ketika tidak diperlukan. Sebenarnya, ini lebih mirip Kore (bahasa yang diimplementasikan proyek) di Jawa, tetapi gayanya pada dasarnya sama dengan ML. Tetapi filosofi Kore adalah bahwa penulis tidak boleh memformat kodenya, jadi tidak ada kode Java yang diformat juga (itu autoformatted oleh gerhana).
drop n elemen dari daftar :
Di ML / Haskell, di mana Anda akan mencocokkan pola untuk mengekstrak kepala dan ekor, di sini Anda katakan
list.cons().x
danlist.cons().tail
.masukkan elemen dalam daftar :
Daftar didefinisikan secara harfiah bagaimana tipe data aljabar akan didefinisikan. Ini adalah versi dengan boilerplate yang dihasilkan eclipse dihapus:
Berikut adalah struktur data peta yang diimplementasikan dalam hal trie :
Jenis mulai mengambil ruang sebanyak kode. Sebagai contoh, di put , metode ini memiliki 302 karakter jenis dan 343 karakter kode (tidak termasuk spasi / baris baru).
sumber
BASIC dalam Ruby
Diterapkan ini sejak lama. The sumber di GitHub . Terinspirasi oleh hal serupa di Scala
Mempersiapkan
Kode dasar
sumber
Haskell di templat C ++
Saya membuat FizzBuzz ini dalam template C ++ beberapa bulan yang lalu di sebuah lark. Ini hampir merupakan implementasi dari kode Haskell berikut, semua dalam template C ++. Bahkan, bahkan aritmatika integer diimplementasikan kembali pada tingkat tipe --- perhatikan bahwa tidak ada templat yang menggunakan parameter int!
Kode Haskell:
dan versi pemrograman templat C ++:
sumber