Kod bloklarını tanımlamak için girintiyi kullanan Python ve selefinden başka hangi programlama dilleri var? [kapalı]


12

Python , kod bloklarını sözdizimsel olarak tanımlamak için oldukça ünlü bir girinti kullanır . (Bkz . Python Dil Başvurusu'ndaki Bileşik ifadeleri ). Python'u yıllarca kullandıktan sonra hala bu sözdizimi özelliğinden çok meraklıyım.

Ama merak ediyorum: Python ve "selefi" (*) dili ABC dışında hangi diğer programlama dilleri kod bloklarının tanımı için girintiyi kullanarak orada ? Kod blokları burada "bir şekilde tek bileşen olarak ele alınan birden çok ifade" anlamına gelir.

Özellikle pratik programlama dilleri ile ilgileniyorum , ancak ezoterik diller de söz etmeye değer olabilir.


(*): " Öncül " varsayılan olarak burada daha iyi bir kelime bilmek benim tercihimdir. Guido van Rossum, Python yaratıcısı, Python ve ABC ilgili girinti arasındaki ilişkiyi tarif röportajda böyle: " gruplandırmak için girinti seçimi Python yeni bir kavram değildi; ABC 'den bu miras. "


15
"Lütfen bana X özelliğiyle programlama dillerinin bir listesini verin" bir bilgisayar bilimi sorusu olduğunu düşünmüyorum.
— David Richerby

2
Neden, temel ifade yöntemi için uygun girinti gerektiren Whitespace dilinin kendisi vardır.
— penguin359

1
Uzun biçimli YAML, en katı anlamda bir programlama dili olmasa da, muhtemelen Python'dan sonra birisinin karşılaşacağı bu özellikle bir sonraki en olası dillerden biri olduğundan bahsetmeye değer.
— Austin Hemmelgarn

1
@ penguin359 Ben de Whitespace'i düşündüm. Bu sorunun cevabı değil çünkü girinti blokları tanımlamak için kullanılmıyor; ama kesinlikle beyaz boşluğun genel olarak en önemli olduğu dildir.
— Peter - Monica'yı

1
@DavidRicherby Özniteliğe göre gruplandırma (yani kategorizasyon) kesinlikle bilimin bir parçasıdır: Örneğin, bir Biyoloji StackExchange için ilginç bir soru olabilir: " Diğer hayvanlar iki ayak üzerinde yürüyor? " Bu nedenle yukarıdaki soruyu Bilgisayar Bilimi StackExchange için çok uygun görüyorum .
— halloleo

Yanıtlar:


23

Wikipedia, off-side kuralı 1'i kullanan kapsamlı bir dil listesine sahiptir :

  • ABC
  • Boo
  • BuddyScript
  • kobra
  • CoffeeScript
  • Yakınsak
  • köri
  • İksir ( , do:bloklar)
  • Karaağaç
  • F # ( #light "off"belirtilmemişse)
  • Cin
  • Haskell (sadece where, let, doveya case ... ofmaddeleri braketler ihmal edildiğinde)
  • Bilgilendir 7
  • ISWIM, kuralı tanıtan soyut dil
  • LiveScript
  • Miranda
  • Nemerle
  • Nim
  • Occam
  • PROMAL
  • piton
  • Şema, örneğin SRFI 119 kullanırken
  • Çevirmek
  • XL

1: Bu terimi daha önce hiç duymadım.


2
Off-side kuralı heyecan verici bir bulgu!
— halloleo

3
Siz veya wikipedia'nın anladığı gibi bir dil olup olmadığını bilmiyorum, ancak Makefiles de girinti kullanıyor.
— TheWildHealer

@TheWildHealer wikipedia makalesinde ayrıca programlama dışı diller (Make, YAML, RST gibi şeyler) içeren bir bölüm vardır. Bunu teklif etmedim çünkü OP programlama dillerini sordu.
— Bergi

Haklısın, bir dahaki sefere gözlerimi açacağımdan emin olacağım, teşekkürler.
— TheWildHealer

10

Şunlar vardır: Elm , Haskell , selefi Miranda ve selefi ISWIM , sözdizimi için boşlukların önemli olduğu ve sekmelerin yasak olduğu YAML , OCCAM , Coffee script ve Cokescript'in her ikisi de JavaScript ile hedef ve ezoterik Whitespaces olarak dil derleyicileri .

Agda - muhtemelen aklınızdakiler değil, etkileşimli teorem kanıtlayıcı da var , ancak lexer beyaz boşluğa çok duyarlı. Sekme tabanlı amaçlarla hedefleri toplayan
Makefile .


1
Ayrıca Miranda, Haskell diline dayanıyordu.
— diz

1
Agda çok Haskell benzeri sözdizimi vardır ve girinti ve boşluklar hem duyarlıdır: (x-y)değil (x - y)o OP için "pratik" yeterli olmayabilir bile).
— chi

1
Ayrıca, CoffeeScript ve az bilinen CokeScript
— Bergi

5
Eğer YAML
— önemliyse

1
Ayrıca PureScript de var .
— 1919'da

4

Yap muhtemelen onun sınırlı sözdizimi ve güçle, aklınızda ne var oldukça olmadığı halde, sizin tanıma uyar.

Bu , kötü niyetle kendi kod blokları (gösterir tarifleri bir sekme karakteri: boşluk belirli bir form ile birlikte). Alternatif yollar mevcuttur (örn. GNU Alternatif bir karakter kullanarak destek olun ), ancak pratikte nadiren kullanılır.

Öne çıkan diğer bir örnek Ansible playbook'ları . Bunlar , büyük ölçüde girintiye bağlı olan YAML'de belirtilmiştir . YAML bir programlama dili değildir, ancak Ansible playbook'ları alana özgü programlar olarak kabul edilebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.