Ödev (bilgisayar bilimi) - Assignment (computer science)

İçinde bilgisayar Programlama, bir atama deyimi ayarlar ve / veya yeniden ayarlar değer ile gösterilen saklama yer (ler) inde saklanır değişken isim; başka bir deyişle, değişkene bir değer kopyalar. Çoğunlukla zorunlu Programlama dilleri atama ifadesi (veya ifade) temel bir yapıdır.

Bugün, bu temel işlem için en yaygın kullanılan notasyon, x = ifade (aslında Süper plan 1949–51, popüler hale gelen Fortran 1957 ve C ) bunu takiben[1] x := ifade (aslında Algol 1958, popülerleşen Pascal ),[2] kullanımda birçok başka gösterim olmasına rağmen. Bazı dillerde, kullanılan sembol bir Şebeke (bir bütün olarak atama ifadesinin bir değer döndürdüğü anlamına gelir), diğerleri ise atamayı bir ifade olarak tanımlar (yani bir ifadede kullanılamaz).

Atamalar tipik olarak bir değişkenin ömrü boyunca farklı zamanlarda farklı değerler tutmasına izin verir ve dürbün. Ancak, bazı diller (öncelikle kesinlikle işlevsel ) bu tür bir "yıkıcı" yeniden atamaya izin vermeyin, çünkü bu yerel olmayan devletin değişikliklerini ima edebilir. Amaç zorlamaktır referans şeffaflık yani, bazı değişken (ler) in durumuna bağlı olmayan, ancak belirli bir parametrik girdi seti için herhangi bir zamanda aynı sonuçları üreten fonksiyonlar. Diğer dillerdeki modern programlar da, genellikle karmaşıklığı azaltmak için, daha az katı olmasına rağmen ve yalnızca belirli kısımlarda, normalde gibi tamamlayıcı metodolojilerle bağlantılı olarak benzer stratejiler kullanır. veri yapılandırma, yapısal programlama ve nesne yönelimi.

Anlambilim

Atama işlemi, zorunlu programlama Zaman geçtikçe farklı değerlerin belirli bir değişken adıyla ilişkilendirildiği.[1] Bu modelde program, ardışık atama ifadeleri kullanarak durumunu değiştirerek çalışır.[2][3] Zorunlu programlama dillerinin ilkelleri, yapılacak ödevlere dayanır yineleme.[4] En düşük seviyede, atama kullanılarak gerçekleştirilir makine işlemleri gibi HAREKET veya MAĞAZA.[2][4]

Değişkenler değerler için kaplardır. Bir değişkene bir değer girip daha sonra onu yenisiyle değiştirmek mümkündür. Bir atama işlemi, yürütülen programın mevcut durumunu değiştirir.[3] Sonuç olarak, görevlendirme kavramına bağlıdır değişkenler. Bir ödevde:

  • ifade programın mevcut durumunda değerlendirilir.
  • değişken hesaplanan değer atanır ve bu değişkenin önceki değerinin yerini alır.

Örnek: Varsayalım ki a sayısal bir değişkendir, atama a: = 2 * a değişkenin içeriğinin a ifadenin yerine getirilmesinden sonra iki katına çıkar.

Örnek bir segment C kod:

int x = 10; yüzen y;x = 23;y = 32.4f;

Bu örnekte, değişken x ilk önce bir int olarak bildirilir ve sonra 10 değeri atanır. Bildirim ve atamanın aynı ifadede gerçekleştiğine dikkat edin. İkinci satırda, y atamasız ilan edilir. Üçüncü satırda, x 23 değeri yeniden atanır. Son olarak, y 32.4 değeri atanır.

Bir atama işlemi için, değerinin ifade iyi tanımlanmıştır (geçerli bir rvalue ) ve değişken değiştirilebilir bir varlığı temsil eder (geçerli bir değiştirilebilir (non-sabit ) lvalue ). Bazı dillerde, tipik olarak dinamik olanlar, bir değişkeni bir değer atamadan önce bildirmek gerekli değildir. Bu tür dillerde, bir değişken, ilk atandığında otomatik olarak bildirilir ve kapsamı dile göre değişerek bildirilir.

Tek ödev

Mevcut bir değeri değiştiren herhangi bir atama (ör. x: = x + 1) izin verilmiyor tamamen işlevsel Diller.[4] İçinde fonksiyonel programlama, tek bir atama lehine atama önerilmez, aynı zamanda başlatma. Tek ödev bir örnektir ad bağlama ve bu makalede açıklanan atamadan farklıdır, çünkü yalnızca bir kez, genellikle değişken oluşturulduğunda yapılabilir; sonradan yeniden atamaya izin verilmez.

İfade değerlendirmesinin bir yan etki makinenin gözlemlenebilir bir durumunu değiştirmezse,[5] ve aynı girdi için aynı değerleri üretir.[4] Zorunlu atama, eski değeri yenisiyle değiştirirken yok ederken ve kullanılmaz hale getirirken yan etkiler getirebilir,[6] ve olarak anılır yıkıcı görev bu nedenle LISP ve fonksiyonel programlama, benzer yıkıcı güncelleme.

Tek atama, aşağıdakiler gibi tamamen işlevsel dillerde kullanılabilen tek atama biçimidir: Haskell, zorunlu programlama dilleri anlamında değişkenleri olmayan[4] daha ziyade, kademeli olarak tanımlanmış öğeleri ile muhtemelen bileşik nitelikte sabit değerler olarak adlandırılmış Talep üzerine. Tamamen işlevsel diller, aşağıdakiler için bir fırsat sağlayabilir: paralel olarak yapılacak hesaplama kaçınarak von Neumann darboğazı Değerler birbirinden bağımsız olduğundan, zaman yürütmede sıralı bir adım.[7]

Saf olmayan işlevsel diller hem tek atama hem de gerçek atama sağlar (gerçek atama genellikle zorunlu programlama dillerinden daha az sıklıkta kullanılır). Örneğin, Scheme'de her iki tek atama ( İzin Vermek) ve gerçek atama (ile Ayarlamak!) tüm değişkenlerde kullanılabilir ve listeler, vektörler, dizeler, vb. içinde yıkıcı güncelleme için özel ilkeler sağlanır. OCaml'de, değişkenler için yalnızca tek atamaya izin verilir. İzin Vermek isim = değer sözdizimi; ancak yıkıcı güncelleme, ayrı ayrı dizilerin ve dizelerin öğelerinde kullanılabilir. <- işlecin yanı sıra açıkça bildirilmiş kayıt ve nesnelerin alanlarında değişebilir (ilk bildiriminden sonra değiştirilebileceği anlamına gelir) programcı tarafından.

Tek atama kullanan fonksiyonel programlama dilleri şunları içerir: Clojure (veri yapıları için, değişkenler için değil), Erlang (Haskell'in aksine değerler eşitse çoklu atamayı kabul eder), F #, Haskell, JavaScript (sabitler için), Lav, OCaml, Oz (veri akışı değişkenleri için, hücreler değil), Raket (semboller değil, listeler gibi bazı veri yapıları için), SASL, Scala (vals için), SİSAL, Standart ML. Olmayan-geri izleme Prolog kod düşünülebilir açık (adlandırılmış) değişkenlerinin açıkça atanmamış durumda olabileceğini veya tam olarak bir kez ayarlanabileceğini açıkça belirten tek atama. Haskell'de, tersine, atanmamış değişkenler olamaz ve her değişken, dolaylı olarak değerine (veya daha doğrusu değerini üretecek bir hesaplama nesnesine) ayarlanmış olarak düşünülebilir. Talep üzerine) oluşturulduğunda.

Bir ödevin değeri

Bazı programlama dillerinde, bir atama ifadesi bir değer döndürürken diğerlerinde vermez.

Çoğunlukla ifade odaklı programlama dilleri (Örneğin, C ), atama ifadesi atanan değeri döndürür ve şu tür deyimlere izin verir: x = y = aatama ifadesinin y = a değerini döndürür a, sonra atanır x. Gibi bir açıklamada while ((ch = getchar ())! = EOF) {}, bir fonksiyonun dönüş değeri, aynı değeri bir değişkene atarken bir döngüyü kontrol etmek için kullanılır.

Diğer programlama dillerinde, Şema örneğin, bir atamanın dönüş değeri tanımsızdır ve bu tür deyimler geçersizdir.

İçinde Haskell,[8] değişken atama yoktur; ancak atamaya benzer işlemler (bir dizinin bir alanına veya değiştirilebilir bir veri yapısının bir alanına atama gibi) genellikle Birim tipi olarak temsil edilen (). Bu tipin yalnızca bir olası değeri vardır, bu nedenle bilgi içermez. Tipik olarak, yalnızca yan etkileri için değerlendirilen bir ifade türüdür.

Varyant atama biçimleri

Belirli kullanım kalıpları çok yaygındır ve bu nedenle onları desteklemek için genellikle özel sözdizimi vardır. Bunlar öncelikle Sözdizimsel şeker kaynak koddaki fazlalığı azaltmak, aynı zamanda kod okuyucularının programcının amacını anlamasına yardımcı olur ve derleyiciye olası optimizasyon için bir ipucu sağlar.

Artırılmış ödev

Atanan değerin bir öncekine bağlı olduğu durum o kadar yaygındır ki, çoğu zorunlu dil, en önemlisi C ve torunlarının çoğu, adı verilen özel operatörler sağlar artırılmış atama, sevmek *=, yani a = 2 * a bunun yerine şöyle yazılabilir a * = 2.[3] Sözdizimsel şekerin ötesinde, bu, değişkenin yerinde değiştirilmesini netleştirerek derleyicinin görevine yardımcı olur. a mümkün.

Zincirleme atama

Gibi bir ifade w = x = y = z denir zincirleme atama değerinin olduğu z birden çok değişkene atanır w, x, ve y. Zincirleme atamalar genellikle birden çok değişkeni başlatmak için kullanılır.

a = b = c = d = f = 0

Tüm programlama dilleri zincirleme atamayı desteklemez. Zincirleme görevler, bir dizi görevle eşdeğerdir, ancak değerlendirme stratejisi diller arasında farklılık gösterir. Birden çok değişkeni başlatmak gibi basit zincirleme atamalar için değerlendirme stratejisi önemli değildir, ancak atamadaki hedefler (l-değerleri) bir şekilde bağlantılıysa, değerlendirme stratejisi sonucu etkiler.

Bazı programlama dillerinde (C örneğin), zincirleme atamalar desteklenir çünkü atamalar ifadelerdir ve değerleri vardır. Bu durumda zincir ataması, bir sağ ilişkisel atama ve atamalar sağdan sola gerçekleşir. Örneğin, i = dizi [i] = f () eşdeğerdir dizi [i] = f (); i = dizi [i]. İçinde C ++ atama operatörü için uygun dönüş türünü bildirerek sınıf türlerinin değerleri için de kullanılabilirler.

İçinde Python, atama ifadeleri ifade değildir ve bu nedenle bir değeri yoktur. Bunun yerine, zincirleme atamalar, tek bir ifade için birden çok hedefi olan bir dizi ifadedir. Atamalar soldan sağa yürütülür, böylece i = dizi [i] = f () ifadeyi değerlendirir f (), ardından sonucu en soldaki hedefe atar, benve sonra aynı sonucu sonraki hedefe atar, arr [i], yeni değerini kullanarak ben.[9] Bu esasen eşdeğerdir tmp = f (); i = tmp; arr [i] = tmp geçici değer için gerçek değişken üretilmemesine rağmen.

Paralel atama

Gibi bazı programlama dilleri APL, Ortak Lisp,[10] Git,[11] JavaScript (1.7'den beri), PHP, Akçaağaç, Lua, Occam 2,[12] Perl,[13] Python,[14] REBOL, Yakut,[15] ve Güç kalkanı aşağıdaki sözdizimiyle birkaç değişkenin paralel olarak atanmasına izin verin:

a, b: = 0, 1

eşzamanlı olarak 0 atayan a ve 1 ila b. Bu genellikle şu şekilde bilinir paralel atama; tanıtıldı CPL 1963'te adı altında eşzamanlı atama,[16] ve bazen denir çoklu atamaancak bu, "tek atama" ile kullanıldığında kafa karıştırıcıdır, çünkü bunlar zıt değildir. Atamanın sağ tarafı tek bir değişkense (ör. Bir dizi veya yapı), özellik denir ambalajdan çıkarma[17] veya yıkıcı görev:[18]

var liste: = {0, 1} a, b: = liste

Liste, 0'a atanacak şekilde açılacaktır. a ve 1 ila b. Ayrıca,

a, b: = b, a

değerlerini değiştirir a ve b. Paralel ataması olmayan dillerde, bunun geçici bir değişken kullanmak için yazılması gerekir.

var t: = aa: = bb: = t

dan beri a: = b; b: = a ikisini de bırakır a ve b orijinal değeri ile b.

Go ve Python gibi bazı diller paralel atama, tuple ve otomatik tuple paketten çıkarma Bu Python örneğinde olduğu gibi, tek bir işlevden birden çok dönüş değerine izin vermek için,

def f():    dönüş 1, 2a, b = f()

gibi diğer diller C #, burada gösterilen, parantezlerle açık bir demet oluşturma ve yeniden yapılandırma gerektirir:

(a, b) = (b, a);
(dizi, int) f() => ("foo", 1);var (a, b) = f();

Bu, kullanımına bir alternatif sağlar çıktı parametreleri bir işlevden birden çok değer döndürmek için. Bu tarihler CLU (1974) ve CLU, paralel atamanın genel olarak yaygınlaşmasına yardımcı oldu.

C # ayrıca genelleştirilmiş yapısöküm görevi Sağ taraftaki ifade tarafından tanımlanan uygulama ile derleyici uygun bir örnek veya uzantı Analiz atanan değişkenler için çıkış parametrelerine sahip olması gereken ifadede yöntem.[19] Örneğin, verebilecek böyle bir yöntem sınıf dönüş değeri ile aynı davranışta görünür f () yukarıda olurdu

geçersiz Analiz(dışarı dizi a, dışarı int b) { a = "foo"; b = 1; }

C ve C ++ 'da, virgül operatörü tek bir ifadede birden çok atamanın gerçekleşmesine izin verme açısından paralel atamaya benzer, a = 1, b = 2 onun yerine a, b = 1, 2. Bu öncelikle döngüler için, ve Go gibi diğer dillerde paralel atama ile değiştirilir.[20]Ancak yukarıdaki C ++ kodu, aşağıdaki kodun sağ tarafı nedeniyle mükemmel eşzamanlılığı garanti etmez. a = b, b = a + 1 sol taraftan sonra değerlendirilir. Python gibi dillerde, a, b = b, a + 1 yeni b'yi hesaplamak için a'nın başlangıç ​​değerini kullanarak iki değişkeni aynı anda atayacaktır.

Eşitliğe karşı atama

Eşittir işaretinin kullanımı = Bir atama operatörü olarak, eşitlik için karşılaştırma olarak eşittir ile çelişki nedeniyle sık sık eleştirilmektedir. Bu, hem kod yazma konusunda acemiler tarafından hem de kod okuma konusunda deneyimli programcılar tarafından bile kafa karışıklığına neden olur. Atama için eşittir kullanımı, Heinz Rutishauser dili Süper plan, 1949'dan 1951'e kadar tasarlanmış ve özellikle Fortran tarafından popüler hale getirilmiştir:

Kötü bir fikir için kötü şöhretli bir örnek, atamayı belirtmek için eşittir işaretinin seçilmesiydi. 1957'de Fortran'a geri dönüyor[a] ve dil tasarımcılarının orduları tarafından körü körüne kopyalandı. Neden kötü bir fikir? Bir asırlık geleneği alaşağı ettiği için “=” eşitlik için bir karşılaştırma, doğru ya da yanlış olan bir yüklem anlamına gelir. Ancak Fortran bunu eşitliğin dayatılması, atama anlamına geldi. Bu durumda, işlenenler eşit olmayan temeldedir: Sol işlenen (bir değişken), sağ işlenen (bir ifade) ile eşit yapılmalıdır. x = y, y = x ile aynı anlama gelmez.[21]

— Niklaus Wirth, Aynanın İçinden İyi Fikirler

Yeni başlayan programcılar bazen atamayı, ilişkisel operatör eşitlik için, "=" eşitlik matematikte ve birçok dilde atama için kullanılır. Ancak atama, bir değişkenin değerini değiştirirken, eşitlik testi iki ifadenin aynı değere sahip olup olmadığını test eder.

Gibi bazı dillerde TEMEL, tek bir eşittir işareti ("="), hem atama operatörü hem de eşitlik ilişkisel operatörü için kullanılır, bunun anlamı bağlamın belirlenmesi ile birlikte. Diğer diller, iki operatör için farklı semboller kullanır. Örneğin:

  • İçinde Algol ve Pascal, atama operatörü iki nokta üst üste ve eşittir işaretidir (":=") eşitlik operatörü tek bir eşittir ("=").
  • İçinde C, atama operatörü tek bir eşittir işaretidir ("=") eşitlik operatörü bir çift eşittir işaretidir ("==").
  • İçinde R, atama operatörü temelde <-, de olduğu gibi x <- değerancak tek bir eşittir işareti belirli bağlamlarda kullanılabilir.

İki semboldeki benzerlik, programcı hangi formu ("=", "==", ":=") uygun veya yanlış yazıyor"=" ne zaman "=="tasarlandı. Bu, C gibi dillerde yaygın bir programlama problemidir (ünlü bir Linux çekirdeğinin arka kapı girişimi dahil),[22] burada atama operatörü atanan değeri de döndürür (bir işlevin bir değer döndürmesi gibi) ve ifadelerin içinde geçerli bir şekilde yuvalanabilir. Niyet, iki değeri bir Eğer ifade, örneğin, bir atamanın Boolean true olarak yorumlanabilen bir değer döndürmesi oldukça olasıdır; bu durumda sonra cümlesi çalıştırılacak ve programın beklenmedik şekilde davranmasına yol açacaktır. Bazı dil işlemcileri (örneğin gcc ) bu tür durumları algılayabilir ve programcıyı olası hata konusunda uyarabilir.

Gösterim

Kopyalama ataması için en yaygın iki temsil eşittir işareti (=) ve iki nokta üst üste eşittir (:=). Her iki form da anlamsal olarak bir ödevi gösterebilir Beyan veya bir ödev Şebeke (aynı zamanda bir değeri vardır), dile ve / veya kullanıma bağlı olarak.

değişken = ifadeFortran, PL / I, C (ve torunları gibi C ++, Java, vb.), Bourne kabuğu, Python, Git (önceden beyan edilmiş değişkenlere atama), R, Güç kalkanı, Nim, vb.
değişken := ifadeAlgol (ve türevler), Simula, CPL, BCPL, Pascal[23] (ve soyundan gelenler gibi Modula ), Mary, PL / M, Ada, Smalltalk, Eyfel,[24][25] Oberon, Dylan,[26] Tohum7, Python (bir atama ifadesi),[27] Git (bir değişkeni bildirmek ve tanımlamak için kısa açıklama),[28] Io, AMPL, ML,[29] AutoHotkey vb.

Diğer olasılıklar arasında bir sol ok veya bir anahtar kelime bulunur, ancak daha nadir başka varyantlar da vardır:

değişken << ifadeMagik
değişken <- ifadeF #, OCaml, R, S
değişken <<- ifadeR
atamak("değişken", ifade)R
değişkenifadeAPL,[30] Smalltalk, TEMEL Programlama
değişken =: ifadeJ
İZİN VERMEK değişken = ifadeTEMEL
İzin Vermek değişken := ifadeXQuery
Ayarlamak değişken -e ifadeAppleScript
Ayarlamak değişken = ifadeC kabuğu
Set-Değişken değişken (ifade)Güç kalkanı
değişken : ifadeMacsyma, Maxima, Rebol, K
var değişken ifademIRC betik dili
referans değişkeni :- referans-ifadeSimula

Matematiksel sözde kod ödevler genellikle bir sol ok ile gösterilir.

Bazı platformlar ifadeyi sola ve değişkeni sağa koyar:

HAREKET ifade KİME değişkenCOBOL
ifadedeğişkenTI-BASIC, Casio TEMEL
ifade -> değişkenPOP-2, BETA, R
koymak ifade içine değişkenLiveCode

Gibi bazı ifade odaklı diller Lisp[31][32] ve Tcl, atama dahil tüm ifadeler için tek tip önek (veya sonek) sözdizimi kullanın.

(setf değişken ifade)Ortak Lisp
(Ayarlamak! değişken ifade)Şema[33][34][35]
Ayarlamak değişken ifadeTcl
ifade değişken !İleri

Ayrıca bakınız

Notlar

  1. ^ Kullanımı = Fortran tarafından popülerleştirilmesine rağmen, Fortran'dan öncedir.

Referanslar

  1. ^ a b "2cs24 Bildirimi". www.csc.liv.ac.uk. Arşivlenen orijinal 24 Nisan 2006. Alındı 20 Nisan 2018.
  2. ^ a b c "Zorunlu Programlama". uah.edu. Alındı 20 Nisan 2018.
  3. ^ a b c Ruediger-Marcus Flaig (2008). Python'da biyoinformatik programlama: yeni başlayanlar için pratik bir kurs. Wiley-VCH. s. 98–99. ISBN  978-3-527-32094-3. Alındı 25 Aralık 2010.
  4. ^ a b c d e Sınırları aşmak: Haskell ile işlevsel programlamayı keşfedin Arşivlendi 19 Kasım 2010, Wayback Makinesi, Bruce Tate tarafından
  5. ^ Mitchell, John C. (2003). Programlama dillerinde kavramlar. Cambridge University Press. s. 23. ISBN  978-0-521-78098-8. Alındı 3 Ocak 2011.
  6. ^ "Zorunlu Programlama Dilleri (IPL)" (PDF). gwu.edu. Alındı 20 Nisan 2018.
  7. ^ John C. Mitchell (2003). Programlama dillerinde kavramlar. Cambridge University Press. sayfa 81–82. ISBN  978-0-521-78098-8. Alındı 3 Ocak 2011.
  8. ^ Hudak, Paul (2000). Haskell İfade Okulu: İşlevsel Programlamayı Multimedya Aracılığıyla Öğrenmek. Cambridge: Cambridge University Press. ISBN  0-521-64408-9.
  9. ^ "7. Basit ifadeler - Python 3.6.5 belgeleri". docs.python.org. Alındı 20 Nisan 2018.
  10. ^ "CLHS: Makro SETF, PSETF". Ortak Lisp Hyperspec. LispWorks. Alındı 23 Nisan 2019.
  11. ^ Go Programlama Dili Spesifikasyonu: Ödevler
  12. ^ INMOS Limited, ed. (1988). Occam 2 Referans Kılavuzu. New Jersey: Prentice Hall. ISBN  0-13-629312-3.
  13. ^ Duvar, Larry; Christiansen, Tom; Schwartz, Randal C. (1996). Perl Programlama Dili (2 ed.). Cambridge: O´Reilly. ISBN  1-56592-149-6.
  14. ^ Lutz, Mark (2001). Python Programlama Dili (2 ed.). Sebastopol: O´Reilly. ISBN  0-596-00085-5.
  15. ^ Thomas, David; Av, Andrew (2001). Ruby Programlama: Pragmatik Programcı Kılavuzu. Upper Saddle Nehri: Addison Wesley. ISBN  0-201-71089-7.
  16. ^ D.W. Barron et al., "CPL'nin temel özellikleri", Bilgisayar Dergisi 6:2:140 (1963). tam metin (abonelik)
  17. ^ "PEP 3132 - Uzatılmış Tekrarlanabilir Paket Açma". legacy.python.org. Alındı 20 Nisan 2018.
  18. ^ "Yıkıcı görev". MDN Web Belgeleri. Alındı 20 Nisan 2018.
  19. ^ "Demetleri ve diğer türleri yeniden yapılandırma". Microsoft Docs. Microsoft. Alındı 29 Ağustos 2019.
  20. ^ Etkili Git: için, "Son olarak, Go'nun virgül operatörü yok ve ++ ve - ifadeler değil ifadelerdir. Bu nedenle, sizin için birden çok değişkeni çalıştırmak istiyorsanız, paralel atamayı kullanmalısınız (bu, ++ ve --'yi engellemesine rağmen)."
  21. ^ Niklaus Wirth. "Aynanın İçinden İyi Fikirler". CiteSeerX  10.1.1.88.8309. Eksik veya boş | url = (Yardım)
  22. ^ Corbet (6 Kasım 2003). "Çekirdeğe arka kapı girişimi".
  23. ^ Moore, Lawrie (1980). Pascal ile Programlamanın Temelleri. New York: John Wiley & Sons. ISBN  0-470-26939-1.
  24. ^ Meyer, Bertrand (1992). Eyfel Dili. Hemel Hempstead: Prentice Hall International (İngiltere). ISBN  0-13-247925-7.
  25. ^ Wiener Richard (1996). Eiffel Kullanarak Bilgisayar Bilimlerine Nesne Tabanlı Giriş. Upper Saddle Nehri, New Jersey: Prentice Hall. ISBN  0-13-183872-5.
  26. ^ Feinberg, Neal; Keene, Sonya E .; Mathews, Robert O .; Withington, P. Tucker (1997). Dylan Programlama. Massachusetts: Addison Wesley. ISBN  0-201-47976-1.
  27. ^ "PEP 572 - Atama İfadeleri". python.org. 28 Şubat 2018. Alındı 4 Mart 2020.
  28. ^ "Go Programlama Dili Spesifikasyonu - Go Programlama Dili". golang.org. Alındı 20 Nisan 2018.
  29. ^ Ullman, Jeffrey D. (1998). ML Programlamanın Öğeleri: ML97 Sürümü. Englewood Kayalıkları, New Jersey: Prentice Hall. ISBN  0-13-790387-1.
  30. ^ Iverson, Kenneth E. (1962). Bir Programlama Dili. John Wiley and Sons. ISBN  0-471-43014-5. Arşivlenen orijinal 2009-06-04 tarihinde. Alındı 2010-05-09.
  31. ^ Graham, Paul (1996). ANSI Ortak Lisp. New Jersey: Prentice Hall. ISBN  0-13-370875-6.
  32. ^ Steele, Guy L. (1990). Common Lisp: Dil. Lexington: Dijital Basın. ISBN  1-55558-041-6.
  33. ^ Dybvig, R. Kent (1996). Şema Programlama Dili: ANSI Şeması. New Jersey: Prentice Hall. ISBN  0-13-454646-6.
  34. ^ Smith, Jerry D. (1988). Şemaya Giriş. New Jersey: Prentice Hall. ISBN  0-13-496712-7.
  35. ^ Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996). Bilgisayar Programlarının Yapısı ve Yorumlanması. New Jersey: McGraw-Hill. ISBN  0-07-000484-6.