Neden tamsayılar yerine doğal?


28

Doğal sayıların neden programlama dilleri teorisi ve tür teorisi hakkındaki kitapların yazarları tarafından çok sevildiğiyle ilgileniyorum (örneğin, J. Mitchell, programlama dillerinin temelleri ve B. Pierce, Tipler ve Programlama Dilleri). Basitçe yazılı lambda hesabının ve özellikle PCF programlama dilinin tanımı genellikle Nat ve Bool'lara dayanmaktadır. Genel amaçlı endüstriyel PL'leri kullanan ve öğreten insanlar için, doğal maddeler yerine tamsayıları tedavi etmek çok daha doğaldır. PL teorisyeninin nat'ınkileri tercih etmesinin bazı iyi sebeplerinden bahsedebilir misiniz? Bunun yanında biraz daha az karmaşık. Herhangi bir temel sebep var mı yoksa geleneğin bir onuru mu?

UPD Doğalların “temelliği” hakkındaki tüm yorumlar için: Ben tüm bu harika şeylerin farkındayım, ancak PL'nin teorisinin tip teorisinde bu özelliklere sahip olmanın gerçekten hayati olduğu bir örneği görmeyi tercih ederim. Yaygın olarak belirtilen indüksiyon. Herhangi bir tür mantığımız olduğunda (basitçe LC yazan), temel birinci dereceden mantık gibi, biz gerçekten indüksiyon kullanıyoruz - ama türetme ağacında indüksiyonu kullanıyoruz (lambda'da da var).

Benim sorum temel olarak, programlama dilleri üzerine bazı temel teoriler edinmek isteyen endüstrilerden geliyor. Programlarında tamsayılar vardı ve üzerinde çalışılan teoriye somut argümanlar ve uygulamalar olmadan (bizim durumumuzda tip teorisi) neden dilleri sadece nat'lerle çalıştığını, kendilerini oldukça hayal kırıklığına uğradıklarını düşünüyorlardı.


Sanırım bu ilginç bir soru olmasına rağmen, araştırma düzeyinde bir soru değil.
Raphael,

4
Bu değil, ama kabul ettiğimiz bir tür büyük resim sorusu.
Suresh Venkat

1
Bir şekilde, negatif olmayan tamsayılar kümesinin, içinde bulunmayan 0 değerinin benzersiz özellikleri nedeniyle, doğal sayılardan bile daha temel olup olmadığını merak ediyorum. Ben de bu 0. önemi verilen dijital bilgisayarlar için temel sayısal tür seçenek olarak daha geçerli olduğuna işaret edeceği
Richard Cook

UPD'nizi anlamıyorum . Doğal maddeler tam sayılardan daha temeldir ve cevaplar bunun neden böyle olduğuna dair örnekler verir.
Radu GRIGore

Re: UPD. Neden “endüstriden insanlar” “hayal kırıklığına uğradı” diye emin değilim. (Kariyerimi endüstride kendim geçirdim.) Neden kimse bu teorinin zaten aşina olduklarının açık bir uzantısı olmasını beklesin? Endüstride sıkça rastlanan, tamsayılı değişkenler gibi bazı şeylerin, "teorik nedenlerden" daha derin teorik olanlardan daha fazla olması oldukça yaygındır.
Marc Hamann

Yanıtlar:


24

Kısa cevap: tabiatlar ilk sınır sıralarıdır. Bu nedenle, aksiyomatik küme teorisinde (örneğin, sonsuzluk aksiyomu, var oldukları iddiadır) ve mantıkta merkezi bir rol oynarlar ve PL teorisyenler, temel düşünceleri, logistlerle paylaşma eğilimindedir. Toplam doğruluğu, sonlandırmayı ve benzeri özellikleri ispatlamak için indüksiyon prensibine erişebilmek istiyoruz ve doğalları iyi düzenlenmiş bir doğal seçenektir.

Sonlu genişlikli ikili tamsayıların daha az havalı nesneler olduğunu ima etmek istemiyorum. P-adic'lerin temsilidirler ve güç serisi yöntemlerini sayı teorisi ve birleştiricilerde kullanmamıza izin verir. Bu, algoritmalarda önemlerinin PL'den daha belirgin hale geldiği anlamına gelir; çünkü bu, sonlandırma yerine karmaşıklığı daha fazla önemsemeye başladığımız zamandır.


20

Doğal maddeler, tamsayılardan çok daha temel bir kavramdır.

İndüksiyon, doğal maddeler üzerinde meydana gelir ve tamsayılar, basit olmayan bir ters operatörün basit ilavesiyle doğallardan elde edilebilir.

Gerçek soruyu tersine sormak isterdim: neden erken programlama dili (ve kayıt makinesi) tasarımcıları bu kadar ikincil olduklarında ve doğallardan kolayca elde edildiklerinde tamsayıları temel veri türü olarak barındırıyorlar?

Ben sadece tamsayılar zarif bir şekilde işleyebilecek bazı serin ikili kodlamalar olduğundan şüpheleniyorum. ;-)

Programatik bir tamsayının negatif aralığını ne sıklıkta yok saymak istediğinizi düşünün ve kaybedilen bit'i kurtarmak için imzasız bir tamsayı türüne sahip olma dürtüsünü düşünün.


5
Başka bir neden: Kilise rakamları gibi bir şey istiyorsanız, negatif bir tamsayı, işlev inversiyonunu belirtmek zorunda kalır. Dolayısıyla bu bağlamda, tamsayılar, hesaplamalı olarak bijective fonksiyonların bir hesaplamasında daha doğal olacaktır.
Vognsen Başı

@Per Vognsen: Orada hangi yolu tartıştığınızdan emin değilsiniz. Ancak, bilişimsel bijektif fonksiyonların çoğu zaman keyfi hesaplanabilir fonksiyonlardan daha az temel olduğunu söylemenin güvenli olduğunu düşünüyorum. ;-)
Marc Hamann

Hiyerarşi sayısının en üstünde olan karmaşık sayılar Doğal Sayılar -> Tam Sayılar -> Rasyonel Sayılar -> Gerçek Sayılar -> Karmaşık Sayılar diğerlerinden daha temeldir, çünkü "daha güzel" cebirsel özelliklere sahiptirler. Onlar bilimin her yerinde, ama dikkat çekici bir şekilde matematiğin "temellerinde" yoklar. Bu nedenle, daha “temel” tamsayı veya doğal olanın cevabı gerçekten kime sorduğunuza bağlıdır: algoritma veya cebirci.
Tegiri Nenashi,

Bu bir TCS sitesi olduğundan, bilgisayar bilimi bakış açısına imtiyaz vereceğimizden eminim. ;-) Hesaplamalı olarak, bu hiyerarşi ilericidir: her yeni giriş kelimenin tam anlamıyla öncekine dayanır. "Temel" genellikle temelde bir şeye atıfta bulunduğundan, doğalların sona ermesinin bu sırayı vermek için doğru olduğunu düşünüyorum.
Marc Hamann

17

NZ

NZ


11

Yine bir başka sebep (daha önce verilenlerle ilgili, ancak bu cevap yeni bilgi ekliyor), [zaten söylendiği gibi] güzel bir indüksiyon prensibi ile birlikte gelen, doğalların çok basit, sorunsuz bir inşası var. . Üzerine yayılmayan, tamsayıların sorunsuz bir şekilde inşası ile ortaya çıkmanın ne kadar zor olduğu.

Güvence istediğim yerde ne kadar çok programlama yaparsam, o kadar doğal olana ihtiyacım var ve sadece benim için önceden tanımlanmış tam sayıların gerçek bir acı olduğunu düşünüyorum.


Tabii ki, tabiatlar için temel tipte diller var.
Raphael

@Raphael: Biliyorum. Ama başka türlü sevmediğimler değil (yani Haskell ve OCaml). Agda veya Coq'da 'programlamaya' başlamak için pek hazır değilim.
Jacques Carette

Bölümler hakkında bu kadar kötü olan ne?
David Harris,

3
Semantikte bölümler harika. Gerçek hesaplarda ve somut temsillerde uğraşmak çok daha zor. Coq, Isabelle, Agda'da (genel olarak tip teorisi) vb. Onlarla nasıl başa çıkılacağına dair sayısız makale var. Sadece toplulukların “gerçeklikte” başa çıkmanın bir acı olduğunu folklor bilgisi olduğunu kabul ettim.
Jacques Carette

2
Bunun, grubun en güçlü cevabı olduğunu hissediyorum: Naturals, en basit önemsiz olmayan endüktif veri türüdür. Doğal sayılar için tanım ve basit özellikler tanımladığınızda, listeler veya ağaçlar gibi daha karmaşık endüktif veri türlerinin yolunu açtınız.
cody

7

PL teorisyenlerinin tamsayılar yerine doğalları tercih etmelerinin iyi bir nedeni var mı? Bazıları var ancak programlama dili anlambilimi üzerine yazılmış bir kitapta, ihtiyaç duydukları teknik bir sebep olmadığını düşünüyorum. PL teorisinde verilere endüksiyonun önemli olduğu bağımlı tip sistemler dışında herhangi bir yer düşünemiyorum. Mike Gordon , David Schmidt , Bob Tennent ve John Reynolds tarafından yazılan diğer kitaplarda yazılmaz . (Ve, bu kitaplar muhtemelen genel amaçlı endüstriyel PL'leri önemseyen insanlara öğretmek için çok daha uygun olurdu!)

Öyleyse, gerekli olmadığına dair kanıtın var . Aslında, iyi bir PL teorisi ders kitabının , programlama dilinin ilkel türlerinde parametrik olması gerektiğini ve aksi takdirde önermek yanıltıcı olduğunu iddia edeceğim .


6

Bunların üzerindeki doğal ve boollar ile işlemler saf lambda matematiğinde Kilise rakamları (ve Kilise bools'u sanırım) gibi basit bir şekilde kodlanabilir. Birinin tamsayıları nasıl güzel bir şekilde kodlayacağı açık değildir, ancak açıkça yapılabilir.


Öncelikle türlenmiş lambda matematiğini kastettim. İlk yazımda bahsettiğim kitapların dersi buna dayanıyor. Türlenmemiş lambanın günümüzde tip teorisi ve PL teorisi için çok önemli olmadığını tahmin ediyorum (yanılıyor olabilirim ama bu kitaplarda görüyorum.). Neyse, teşekkür ederim!
Artem Pelenitsyn
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.