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.