Bahasa pemrograman mana lagi selain Python dan pendahulunya yang menggunakan indentasi untuk mendefinisikan blok kode? [Tutup]

12

Python cukup terkenal menggunakan lekukan untuk secara sintaksis mendefinisikan blok kode. (Lihat pernyataan majemuk dalam Referensi Bahasa Python). Setelah bertahun-tahun menggunakan Python saya masih tertarik dan sangat menyukai fitur sintaks ini.

Tapi saya bertanya-tanya: Terlepas dari Python dan bahasa "pendahulunya" (*) ABC bahasa pemrograman lain mana yang menggunakan lekukan untuk definisi blok kode ? Blok kode di sini berarti "beberapa pernyataan yang dalam beberapa cara diperlakukan sebagai satu komponen".

Saya terutama tertarik pada bahasa pemrograman praktis , tetapi bahasa esoteris mungkin layak disebut juga.


(*): " Pendahulu " adalah pilihan kata saya yang secara default diketahui di sini lebih baik. Guido van Rossum, pencipta Python, menggambarkan hubungan antara Python dan ABC mengenai indentasi dalam sebuah wawancara seperti ini: " Pilihan indentasi untuk pengelompokan bukanlah konsep baru dalam Python; Saya mewarisi ini dari ABC. "

halo
sumber
15
Saya tidak berpikir "tolong beri saya daftar bahasa pemrograman dengan fitur X" adalah pertanyaan ilmu komputer.
David Richerby
2
Mengapa, ada bahasa Whitespace itu sendiri yang memerlukan lekukan yang tepat untuk metode ekspresi intinya.
penguin359
1
YAML bentuk panjang mungkin layak disebut meskipun itu bukan bahasa pemrograman dalam arti yang paling ketat, karena mungkin salah satu bahasa yang paling mungkin berikutnya dengan fitur ini bagi seseorang untuk ditemui setelah Python.
Austin Hemmelgarn
1
@ penguin359 Saya juga memikirkan Whitespace. Itu bukan jawaban untuk pertanyaan karena lekukan, afaict, tidak digunakan untuk mendefinisikan blok; tapi itu tentu bahasa di mana ruang putih paling signifikan secara keseluruhan.
Peter - Reinstate Monica
1
@DavidRicherby Pengelompokan berdasarkan atribut (yaitu kategorisasi) jelas merupakan bagian dari sains: Misalnya pertanyaan yang menarik untuk StackExchange Biologi bisa menjadi: " Apa hewan lain berjalan dengan dua kaki? " Oleh karena itu saya menganggap pertanyaan di atas sangat sesuai untuk Ilmu Komputer StackExchange .
halloleo

Jawaban:

23

Wikipedia memiliki daftar bahasa yang luas yang menggunakan aturan off-side 1 :

  • ABC
  • Boo
  • BuddyScript
  • Kobra
  • CoffeeScript
  • Bertemu
  • Kari
  • Elixir ( , do:blok)
  • Elm
  • F # (jika #light "off"tidak ditentukan)
  • Jin
  • Haskell (hanya untuk where, let, do, atau case ... ofklausa ketika kawat gigi dihilangkan)
  • Informasikan 7
  • ISWIM, bahasa abstrak yang memperkenalkan aturan
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • occam
  • PROMAL
  • Python
  • Skema, saat menggunakan mis. SRFI 119
  • Berputar
  • XL

1: Aku belum pernah mendengar istilah ini sebelumnya.

Bergi
sumber
2
Aturan off-side adalah penemuan yang menarik!
halloleo
3
Tidak tahu apakah itu bahasa yang dipahami oleh Anda atau wikipedia, tetapi Makefiles juga menggunakan indentasi.
TheWildHealer
@TheWildHealer Artikel wikipedia juga memiliki bagian dengan bahasa non-pemrograman (termasuk hal-hal seperti Make, YAML, RST). Saya tidak mengutipnya karena OP bertanya tentang bahasa pemrograman.
Bergi
Anda benar, lain kali saya pasti akan membuka mata, terima kasih.
TheWildHealer
10

Ada: Elm , Haskell , pendahulunya Miranda dan pendahulunya ISWIM , YAML mana ruang sangat penting untuk sintaks dan tab dilarang, OCCAM , kopi naskah dan Cokescript keduanya bahasa untuk kompiler bahasa dengan JavaScript sebagai target dan esoteris Spasi Putih .

Ada juga Agda - teorema teorema interaktif, yang mungkin bukan yang ada dalam pikiran Anda, tetapi lexernya sangat sensitif terhadap ruang putih.
Makefile , yang mengumpulkan target dengan tujuan berbasis tab.

Jahat
sumber
1
Juga Miranda, bahasa yang menjadi dasar Haskell.
berlutut
1
Agda memiliki sintaks yang sangat mirip Haskell, dan peka terhadap lekukan dan spasi: (x-y)tidak (x - y)) bahkan jika itu mungkin tidak "praktis" cukup untuk OP.
chi
1
Juga, CoffeeScript dan CokeScript yang hampir tidak dikenal
Bergi
5
Jika YAML menghitung, maka saya kira Makefiles juga harus
Izkata
1
Ada juga PureScript .
duplode
4

Jadikan sesuai dengan deskripsi Anda, meskipun itu mungkin tidak sesuai dengan yang Anda pikirkan, dengan sintaks dan kekuatannya yang terbatas.

Ini terkenal menunjukkan blok kode ( resep ) dengan bentuk spasi khusus: satu karakter tab. Cara-cara alternatif tersedia (mis. GNU Make support menggunakan karakter alternatif ), tetapi jarang digunakan dalam praktik.

Contoh lain yang ada di ujung adalah buku pedoman Ansible . Mereka ditentukan dalam YAML , yang sangat bergantung pada indentasi. YAML bukan bahasa pemrograman, tetapi buku pedoman yang dimungkinkan dapat dianggap sebagai program khusus domain.

reinierpost
sumber