Topshiriq (informatika) - Assignment (computer science)

Yilda kompyuter dasturlash, an topshiriq bayonoti ni o'rnatadi va / yoki qayta o'rnatadi qiymat bilan belgilangan saqlash joylarida saqlanadi o'zgaruvchan ism; boshqacha qilib aytganda, u o'zgaruvchiga qiymatni ko'chiradi. Ko'pchilikda majburiy dasturlash tillari, topshiriq bayonoti (yoki ifoda) asosiy tuzilishdir.

Bugungi kunda ushbu asosiy operatsiya uchun eng ko'p ishlatiladigan yozuvlar paydo bo'ldi x = expr (dastlab Superplan 1949–51, tomonidan ommalashtirilgan Fortran 1957 va C ) dan so'ng[1] x := expr (dastlab ALGOL 1958 yil, tomonidan ommalashtirilgan Paskal ),[2] ishlatilayotgan boshqa ko'plab belgilar mavjud bo'lsa-da. Ba'zi tillarda ishlatiladigan belgi an deb qaraladi operator (ya'ni topshiriq bayonoti umuman qiymatni qaytarishini anglatadi), boshqalari topshiriqni bayon sifatida belgilaydilar (uni ifodada ishlatib bo'lmasligini anglatadi).

Topshiriqlar odatda o'zgaruvchiga umr bo'yi turli vaqtlarda har xil qiymatlarni ushlab turishga imkon beradi va qamrov doirasi. Biroq, ba'zi tillar (birinchi navbatda qat'iy funktsional ) bunday "buzg'unchi" qayta tayinlashga yo'l qo'ymang, chunki bu mahalliy bo'lmagan davlatning o'zgarishini anglatishi mumkin. Maqsad - majburiy ijro etish ma'lumotlarning shaffofligi, ya'ni ba'zi bir o'zgarmaydigan (lar) ning holatiga bog'liq bo'lmagan, ammo istalgan vaqtda istalgan parametrli kirishlar to'plami uchun bir xil natijalarni beradigan funktsiyalar. Boshqa tillardagi zamonaviy dasturlar ko'pincha shunga o'xshash strategiyalardan foydalanadi, ammo unchalik qat'iy emas va faqat ba'zi qismlarda, odatda murakkablikni kamaytirish uchun, odatda qo'shimcha metodologiyalar bilan birgalikda. ma'lumotlarning tuzilishi, tizimli dasturlash va ob'ektga yo'naltirish.

Semantik

Belgilash operatsiyasi - bu jarayon majburiy dasturlash unda turli xil qiymatlar vaqt o'tishi bilan ma'lum bir o'zgaruvchining nomi bilan bog'liq.[1] Bunday modeldagi dastur ketma-ket tayinlash operatorlari yordamida holatini o'zgartirish orqali ishlaydi.[2][3] Imperativ dasturlash tillarining ibtidoiy vazifalari topshiriqqa tayanadi takrorlash.[4] Eng past darajadagi topshiriq yordamida amalga oshiriladi mashina operatsiyalari kabi HARAKAT yoki DO'KON.[2][4]

O'zgaruvchilar qadriyatlar uchun idishlardir. O'zgaruvchiga qiymat qo'yish va keyinchalik uni yangisiga almashtirish mumkin. Topshiriq operatsiyasi bajarilayotgan dasturning hozirgi holatini o'zgartiradi.[3] Binobarin, tayinlash tushunchasiga bog'liq o'zgaruvchilar. Topshiriqda:

  • The ifoda dasturning hozirgi holatida baholanadi.
  • The o'zgaruvchan ushbu o'zgaruvchining oldingi qiymatini almashtirib, hisoblash qiymati beriladi.

Misol: buni taxmin qilish a raqamli o'zgaruvchidir, topshiriq a: = 2 * a o'zgaruvchining mazmuni degan ma'noni anglatadi a bayonot bajarilgandan keyin ikki baravar oshiriladi.

Misol segmenti C kod:

int x = 10; suzmoq y;x = 23;y = 32.4f;

Ushbu namunada o'zgaruvchi x avval int deb e'lon qilinadi, so'ngra 10 qiymati beriladi. E'tibor bering, deklaratsiya va topshiriq bir xil bayonotda uchraydi. Ikkinchi qatorda, y topshiriqsiz e'lon qilinadi. Uchinchi qatorda, x qiymati 23 ga o'zgartirildi. Nihoyat, y 32.4 qiymatiga ega.

Topshiriqni bajarish uchun, ning qiymati bo'lishi kerak ifoda aniq belgilangan (u amal qiladi qiymat ) va o'zgaruvchan o'zgartirilishi mumkin bo'lgan shaxsni ifodalaydi (u o'zgartirilishi mumkin bo'lgan (mavjud bo'lmagan)konst ) qiymat ). Ba'zi tillarda, odatda dinamik Birinchisi, unga qiymat berishdan oldin o'zgaruvchini e'lon qilish shart emas. Bunday tillarda o'zgaruvchi birinchi marta tayinlanganda avtomatik ravishda e'lon qilinadi, uning ko'lami tilga qarab o'zgaradi.

Bitta topshiriq

Mavjud qiymatni o'zgartiradigan har qanday topshiriq (masalan: x: = x + 1) taqiqlangan faqat funktsional tillar.[4] Yilda funktsional dasturlash, topshiriq bitta topshiriq foydasiga tavsiya etilmaydi, shuningdek chaqiriladi boshlash. Bitta topshiriq - misol nom majburiy va ushbu maqolada tasvirlangan topshiriqdan farqi shundaki, u faqat bir marta, odatda o'zgaruvchi yaratilganda amalga oshirilishi mumkin; keyinchalik qayta tayinlashga yo'l qo'yilmaydi.

Ifodani baholashda a mavjud emas yon ta'sir agar u mashinaning kuzatiladigan holatini o'zgartirmasa,[5] va bir xil kirish uchun bir xil qiymatlarni ishlab chiqaradi.[4] Imperativ topshiriq yon ta'sirlarni keltirib chiqarishi mumkin va yo'q qilish va eski qiymatni yangisiga almashtirish paytida mavjud emas,[6] va deb nomlanadi halokatli topshiriq shu sababli LISP va funktsional dasturlash, o'xshash halokatli yangilanish.

Yagona topshiriq - bu faqat funktsional tillarda mavjud bo'lgan yagona topshiriq shakli, masalan Xaskell, imperativ dasturlash tillari ma'nosida o'zgaruvchiga ega bo'lmagan[4] balki ularning elementlari bosqichma-bosqich aniqlangan holda, ehtimol murakkab tabiatning doimiy qiymatlari deb nomlangan so'rov bo'yicha; talabda. Sof funktsional tillar imkoniyat yaratishi mumkin parallel ravishda amalga oshiriladigan hisoblash, oldini olish fon Neymanning tiqilishi bajarilish vaqtida ketma-ket bir qadam, chunki qiymatlar bir-biridan mustaqil.[7]

Nopok funktsional tillar bitta topshiriqni ham, haqiqiy tayinlashni ham ta'minlaydi (garchi haqiqiy tayinlash odatda imperativ dasturlash tillariga qaraganda kamroq chastotada qo'llaniladi). Masalan, sxemada ikkala bitta topshiriq (bilan ruxsat bering) va haqiqiy topshiriq (bilan o'rnatilgan!) barcha o'zgaruvchilarda ishlatilishi mumkin va ro'yxatlar, vektorlar, satrlar va hokazolarni vayronkor yangilash uchun ixtisoslashgan primitivlar taqdim etiladi. OCaml-da o'zgaruvchilar uchun faqat bitta tayinlashga ruxsat beriladi. ruxsat bering ism = qiymat sintaksis; ammo vayronkor yangilanishni alohida va qatorli elementlarda ishlatish mumkin <- operator, shuningdek, aniq e'lon qilingan yozuvlar va ob'ektlar maydonlarida o'zgaruvchan (Dastlabki e'lonidan keyin o'zgartirilishi mumkin bo'lgan ma'no) dasturchi tomonidan.

Bitta topshiriqdan foydalanadigan funktsional dasturlash tillariga quyidagilar kiradi Klojure (ma'lumotlar tuzilmalari uchun emas, balki), Erlang (agar Haskelldan farqli o'laroq qiymatlar teng bo'lsa, u bir nechta topshiriqni qabul qiladi), F #, Xaskell, JavaScript (doimiy uchun), Lava, OCaml, Oz (hujayralar emas, balki ma'lumotlar oqimining o'zgaruvchilari uchun), Raketka (ba'zi ma'lumotlar tuzilmalari uchun belgilar emas, balki ro'yxatlar kabi), SASL, Scala (vals uchun), SISAL, Standart ML. Yo'qorqaga qaytish Prolog kodni ko'rib chiqish mumkin aniq bitta topshiriq, aniq bir ma'noda, uning (nomlangan) o'zgaruvchilari aniq belgilanmagan holatda bo'lishi yoki aniq bir marta o'rnatilishi mumkin. Haskellda, aksincha, tayinlanmagan o'zgaruvchilar bo'lishi mumkin emas va har bir o'zgaruvchini uning qiymatiga (aniqrog'i uning qiymatini ishlab chiqaradigan hisoblash ob'ekti) bilvosita o'rnatilgan deb o'ylash mumkin. so'rov bo'yicha; talabda) yaratilganida.

Topshiriqning qiymati

Ba'zi dasturlash tillarida tayinlash bayonoti qiymatni qaytaradi, boshqalarida esa yo'q.

Ko'pchilikda ifoda yo'naltirilgan dasturlash tillari (masalan, C ), tayinlash bayonoti berilgan kabi qiymatni qaytaradi, bu kabi iboralarga yo'l qo'yadi x = y = a, unda topshiriq bayonoti y = a ning qiymatini qaytaradi a, keyin tayinlangan x. Kabi bayonotda while ((ch = getchar ())! = EOF) {}, funktsiyani qaytarish qiymati o'zgaruvchiga xuddi shu qiymatni berish paytida tsiklni boshqarish uchun ishlatiladi.

Boshqa dasturlash tillarida, Sxema masalan, topshiriqning qaytish qiymati aniqlanmagan va bunday iboralar yaroqsiz.

Yilda Xaskell,[8] o'zgaruvchan tayinlash yo'q; ammo topshiriqqa o'xshash operatsiyalar (masalan, qator maydonini yoki o'zgaruvchan ma'lumotlar tuzilmasi maydonini belgilash kabi) odatda birlik turi sifatida ifodalanadi (). Ushbu turdagi faqat bitta mumkin bo'lgan qiymat mavjud, shuning uchun hech qanday ma'lumot yo'q. Bu, odatda, uning nojo'ya ta'sirlari uchun baholanadigan ifoda turi.

Topshiriqning variantli shakllari

Muayyan foydalanish naqshlari juda keng tarqalgan va shuning uchun ko'pincha ularni qo'llab-quvvatlash uchun maxsus sintaksis mavjud. Bu birinchi navbatda sintaktik shakar manba kodidagi ortiqcha miqdorni kamaytirish uchun, shuningdek kod o'qiydiganlarga dasturchining maqsadini tushunishda yordam beradi va kompilyatorga mumkin bo'lgan optimallashtirishga yordam beradi.

Kattalashtirilgan topshiriq

Belgilangan qiymat avvalgisiga bog'liq bo'lgan holat shunchalik keng tarqalganki, ko'plab imperativ tillar, xususan C va uning avlodlarining aksariyati chaqirilgan maxsus operatorlarni taqdim etadi kengaytirilgan topshiriq, kabi *=, shuning uchun a = 2 * a o'rniga yozilishi mumkin a * = 2.[3] Sintaktik shakardan tashqari, bu o'zgaruvchining joyida modifikatsiyasini aniqlashtirish orqali kompilyatorning vazifasiga yordam beradi a mumkin.

Zanjirli topshiriq

Shunga o'xshash bayonot w = x = y = z deyiladi a zanjirli topshiriq unda qiymati z bir nechta o'zgaruvchiga beriladi w, x, va y. Zanjirli topshiriqlar ko'pincha bo'lgani kabi bir nechta o'zgaruvchini boshlash uchun ishlatiladi

a = b = c = d = f = 0

Barcha dasturlash tillari zanjirli tayinlashni qo'llab-quvvatlamaydi. Zanjirli topshiriqlar topshiriqlarning ketma-ketligiga teng, ammo baholash strategiyasi tillar o'rtasida farq qiladi. Bir nechta o'zgaruvchini boshlash kabi oddiy zanjirli topshiriqlar uchun baholash strategiyasi muhim emas, ammo agar topshiriqdagi maqsadlar (l-qiymatlar) biron bir tarzda bog'langan bo'lsa, baholash strategiyasi natijaga ta'sir qiladi.

Ba'zi dasturlash tillarida (C masalan), zanjirli topshiriqlar qo'llab-quvvatlanadi, chunki topshiriqlar ifodalar va qiymatlarga ega. Bunday holda zanjirni belgilash a o'ng assotsiativ topshiriq va topshiriqlar o'ngdan chapga sodir bo'ladi. Masalan, i = arr [i] = f () ga teng arr [i] = f (); i = arr [i]. Yilda C ++ ular tayinlash operatori uchun tegishli qaytish turini e'lon qilish orqali sinf turlarining qiymatlari uchun ham mavjud.

Yilda Python, tayinlash bayonotlari iboralar emas va shuning uchun ularning qiymati yo'q. Buning o'rniga, zanjirli topshiriqlar bitta ibora uchun bir nechta maqsadga ega bo'lgan bir qator bayonotlardir. Topshiriqlar chapdan o'ngga shunday bajariladi i = arr [i] = f () ifodani baholaydi f (), so'ngra natijani chap tomondagi maqsadga belgilaydi, menva keyin xuddi shu natijani keyingi maqsadga belgilaydi, arr [i], ning yangi qiymatidan foydalangan holda men.[9] Bu aslida tengdir tmp = f (); i = tmp; arr [i] = tmp vaqtinchalik qiymat uchun haqiqiy o'zgaruvchi ishlab chiqarilmasa ham.

Parallel topshiriq

Kabi ba'zi bir dasturlash tillari APL, Umumiy Lisp,[10] Boring,[11] JavaScript (1,7 dan beri), PHP, Chinor, Lua, okam 2,[12] Perl,[13] Python,[14] BOShQARISh, Yoqut,[15] va PowerShell sintaksisi bilan parallel ravishda bir nechta o'zgaruvchilarni tayinlashga imkon bering:

a, b: = 0, 1

bir vaqtning o'zida 0 ni belgilaydi a va 1 dan b. Bu ko'pincha ma'lum parallel topshiriq; u kiritilgan CPL nomi bilan 1963 yilda bir vaqtning o'zida topshiriq,[16] va ba'zan chaqiriladi bir nechta topshiriq, garchi bu "bitta topshiriq" bilan ishlatilsa chalkash bo'ladi, chunki bu qarama-qarshi emas. Agar topshiriqning o'ng tomoni bitta o'zgaruvchiga ega bo'lsa (masalan, qator yoki tuzilma), funktsiya chaqiriladi ochish[17] yoki topshiriqni buzish:[18]

var ro'yxat: = {0, 1} a, b: = ro'yxat

Ro'yxat ochiladi, shunda 0 belgilanadi a va 1 dan b. Bundan tashqari,

a, b: = b, a

ning qiymatlarini almashtiradi a va b. Parallel tayinlanmagan tillarda bu vaqtinchalik o'zgaruvchini ishlatish uchun yozilishi kerak edi

var t: = aa: = bb: = t

beri a: = b; b: = a ikkalasini ham qoldiradi a va b ning asl qiymati bilan b.

Go va Python kabi ba'zi tillar parallel tayinlash, strelka va avtomatik usullarni birlashtiradi qutini ochish bitta Python misolida bo'lgani kabi bitta funktsiyadan bir nechta qaytish qiymatlariga ruxsat berish uchun

def f():    qaytish 1, 2a, b = f()

kabi boshqa tillar, masalan C #, bu erda ko'rsatilgan, aniq qavatli qurilish va qavslar bilan dekonstruksiya qilishni talab qiladi:

(a, b) = (b, a);
(mag'lubiyat, int) f() => ("foo", 1);var (a, b) = f();

Bu foydalanishga alternativa beradi chiqish parametrlari funktsiyadan bir nechta qiymatlarni qaytarish uchun. Bu sana CLU (1974) va CLU odatda parallel topshiriqni ommalashtirishga yordam berdi.

C # qo'shimcha ravishda umumlashtirishga imkon beradi dekontatsiya topshirig'i amalga oshirish bilan, o'ng tarafdagi ifoda bilan belgilanadi, chunki kompilyator mos keladigan narsani qidiradi misol yoki kengaytma Qayta qurish tayinlangan o'zgaruvchilar uchun chiqish parametrlariga ega bo'lishi kerak bo'lgan ifoda bo'yicha usul.[19] Masalan, beradigan usullardan biri sinf u qaytish qiymati bilan bir xil xatti-harakatlarda paydo bo'ladi f () yuqorida bo'lar edi

bekor Qayta qurish(chiqib mag'lubiyat a, chiqib int b) { a = "foo"; b = 1; }

C va C ++ da the vergul operatori parallel topshiriqqa o'xshaydi, bir nechta topshiriqlarni bitta bayonotda, yozishda amalga oshirishga imkon beradi a = 1, b = 2 o'rniga a, b = 1, 2. Bu birinchi navbatda ishlatiladi ko'chadan uchun, va Go kabi boshqa tillarda parallel topshiriq bilan almashtiriladi.[20]Ammo yuqoridagi C ++ kodi bir vaqtning o'zida mukammallikni ta'minlamaydi, chunki quyidagi kodning o'ng tomoni a = b, b = a + 1 chap tomondan keyin baholanadi. Python kabi tillarda, a, b = b, a + 1 yangi b ni hisoblash uchun a ning boshlang'ich qiymatidan foydalanib, ikkita o'zgaruvchini bir vaqtda tayinlaydi.

Tenglikka qarshi topshiriq

Teng belgisidan foydalanish = tenglikni taqqoslash uchun tenglik bilan ziddiyat tufayli topshiriq operatori sifatida tez-tez tanqid qilinmoqda. Bu kod yozishda yangilarning chalkashishiga va hatto tajribali dasturchilarning kodni o'qishda chalkashliklariga olib keladi. Topshiriq uchun tengdan foydalanish azaldan boshlangan Xaynts Rutishauzer til Superplan, 1949 yildan 1951 yilgacha ishlab chiqilgan va Fortran tomonidan ayniqsa mashhur bo'lgan:

Yomon fikr uchun taniqli misol, topshiriqni belgilash uchun teng belgisini tanlash edi. 1957 yilda Fortranga qaytadi[a] va til dizaynerlari qo'shinlari tomonidan ko'r-ko'rona ko'chirilgan. Nima uchun bu yomon fikr? "=" Ga tenglikning taqqoslanishini ko'rsatishga ruxsat berish asrlik an'anani bekor qiladi, chunki bu predikat yoki haqiqiy yoki yolg'ondir. Ammo Fortran buni tayinlash, tenglikni ta'minlash degan ma'noni anglatadi. Bunday holda, operandlar tengsiz asosda bo'ladi: chap operand (o'zgaruvchi) o'ng operandga (ifoda) tenglashtirilishi kerak. x = y y = x bilan bir xil narsani anglatmaydi.[21]

— Niklaus Virt, Yaxshi g'oyalar, ko'zoynak oynasi orqali

Dastlab dasturchilar ba'zan topshiriqni munosabat operatori tenglik uchun, "=" degan ma'noni anglatadi tenglik matematikada va ko'plab tillarda topshiriq uchun ishlatiladi. Ammo tayinlash o'zgaruvchining qiymatini o'zgartiradi, tenglikni sinash esa ikkita ifodaning bir xil qiymatga ega ekanligini tekshiradi.

Kabi ba'zi tillarda ASOSIY, bitta tenglik belgisi ("=") belgilash operatori va tenglik munosabat operatori uchun ishlatiladi, va bu qaysi kontekstni anglatishini belgilaydi. Ikki operator uchun boshqa tillarda turli xil belgilar ishlatiladi. Masalan:

  • Yilda ALGOL va Paskal, tayinlash operatori ikki nuqta va teng belgisi (":=") tenglik operatori bitta teng bo'lsa ("=").
  • Yilda C, tayinlash operatori bitta tenglik belgisi ("=") tenglik operatori esa juftlik tenglik belgilaridir ("==").
  • Yilda R, tayinlash operatori asosan <-, kabi x <- qiymat, lekin bitta tenglik belgisi ma'lum kontekstda ishlatilishi mumkin.

Agar dasturchi qaysi shaklni unutgan bo'lsa, ikkita belgidagi o'xshashlik xatolarga olib kelishi mumkin ("=", "==", ":=") mos yoki noto'g'ri yozilgan"=" qachon "=="mo'ljallangan edi. Bu C kabi tillar bilan keng tarqalgan dasturlash muammosi (shu jumladan, Linux yadrosini orqaga qaytarish bo'yicha mashhur urinish),[22] bu erda tayinlash operatori tayinlangan qiymatni qaytaradi (funktsiya qiymatni qaytaradigan tarzda) va ifodalar ichida to'g'ri joylashtirilgan bo'lishi mumkin. Agar n-dagi ikkita qiymatni taqqoslash niyat qilingan bo'lsa agar iborasi, masalan, topshiriq mantiqiy rost deb talqin qilinadigan qiymatni qaytarishi mumkin, bu holda keyin band bajariladi, bu dasturni kutilmaganda o'zini tutishiga olib keladi. Ba'zi til protsessorlari (masalan gcc ) bunday vaziyatlarni aniqlay oladi va dasturchini yuzaga kelishi mumkin bo'lgan xato haqida ogohlantiradi.

Notation

Nusxalash topshirig'ining eng keng tarqalgan ikkita vakili teng belgi (=) va yo'g'on ichakka teng (:=). Ikkala shakl ham semantik jihatdan topshiriqni anglatishi mumkin bayonot yoki topshiriq operator (bu ham qiymatga ega), tilga va / yoki foydalanishga bog'liq.

o'zgaruvchan = ifodaFortran, PL / I, C (va avlodlar kabi C ++, Java, va boshqalar.), Bourne shell, Python, Boring (oldindan e'lon qilingan o'zgaruvchilarga tayinlash), R, PowerShell, Nim, va boshqalar.
o'zgaruvchan := ifodaALGOL (va hosilalari), Simula, CPL, BCPL, Paskal[23] (va shunga o'xshash avlodlar) Modula ), Meri, PL / M, Ada, Kichik munozarasi, Eyfel,[24][25] Oberon, Dilan,[26] 7. Urug ', Python (topshiriq ifodasi),[27] Boring (o'zgaruvchini e'lon qilish va aniqlash uchun stenografiya),[28] Io, AMPL, ML,[29] AutoHotkey va boshqalar.

Boshqa imkoniyatlarga chap o'q yoki kalit so'z kiradi, ammo boshqa, kamdan-kam variantlar mavjud:

o'zgaruvchan << ifodaMagik
o'zgaruvchan <- ifodaF #, OCaml, R, S
o'zgaruvchan <<- ifodaR
tayinlash ("o'zgaruvchan", ifoda)R
o'zgaruvchanifodaAPL,[30] Kichik munozarasi, BASIC dasturlash
o'zgaruvchan =: ifodaJ
QO'YING o'zgaruvchan = ifodaASOSIY
ruxsat bering o'zgaruvchan := ifodaXQuery
o'rnatilgan o'zgaruvchan ga ifodaAppleScript
o'rnatilgan o'zgaruvchan = ifodaC qobig'i
O'zgaruvchan o'zgaruvchan (ifoda)PowerShell
o'zgaruvchan : ifodaMaksima, Maksima, Rebol, K
var o'zgaruvchan ifodamIRC skript yozish tili
mos yozuvlar o'zgaruvchisi :- mos yozuvlarSimula

Matematik psevdo kodi topshiriqlar odatda chap o'q bilan tasvirlangan.

Ba'zi platformalar ifodani chapga, o'zgaruvchini o'ng tomonga qo'yadi:

HARAKAT ifoda TO o'zgaruvchanCOBOL
ifodao'zgaruvchanTI-BASIC, Casio ASOSIY
ifoda -> o'zgaruvchanPOP-2, BETA, R
qo'yish ifoda ichiga o'zgaruvchanLiveCode

Kabi ba'zi bir ifodaga yo'naltirilgan tillar Lisp[31][32] va Tcl, barcha bayonotlar, shu jumladan topshiriq uchun prefiks (yoki postfiks) sintaksisidan bir xilda foydalaning.

(setf.) o'zgaruvchan ifoda)Umumiy Lisp
(o'rnatish! o'zgaruvchan ifoda)Sxema[33][34][35]
o'rnatilgan o'zgaruvchan ifodaTcl
ifoda o'zgaruvchan !To'rtinchi

Shuningdek qarang

Izohlar

  1. ^ Dan foydalanish = Fortran tomonidan ilgari surilgan, garchi u Fortran tomonidan mashhur bo'lgan.

Adabiyotlar

  1. ^ a b "2cs24 deklarativ". www.csc.liv.ac.uk. Arxivlandi asl nusxasi 2006 yil 24 aprelda. Olingan 20 aprel 2018.
  2. ^ a b v "Imperativ dasturlash". uah.edu. Olingan 20 aprel 2018.
  3. ^ a b v Ruediger-Markus Flaig (2008). Pythonda bioinformatika dasturlash: yangi boshlanuvchilar uchun amaliy kurs. Vili-VCH. 98-99 betlar. ISBN  978-3-527-32094-3. Olingan 25 dekabr 2010.
  4. ^ a b v d e Chegaralarni kesib o'tish: Haskell bilan funktsional dasturlashni o'rganing Arxivlandi 2010 yil 19-noyabr, soat Orqaga qaytish mashinasi, Bryus Teyt tomonidan
  5. ^ Mitchell, Jon C. (2003). Dasturlash tillaridagi tushunchalar. Kembrij universiteti matbuoti. p. 23. ISBN  978-0-521-78098-8. Olingan 3 yanvar 2011.
  6. ^ "Imperativ dasturlash tillari (IPL)" (PDF). gwu.edu. Olingan 20 aprel 2018.
  7. ^ Jon C. Mitchell (2003). Dasturlash tillaridagi tushunchalar. Kembrij universiteti matbuoti. 81-82 betlar. ISBN  978-0-521-78098-8. Olingan 3 yanvar 2011.
  8. ^ Hudak, Pol (2000). Haskell ifoda maktabi: Multimedia orqali funktsional dasturlashni o'rganish. Kembrij: Kembrij universiteti matbuoti. ISBN  0-521-64408-9.
  9. ^ "7. Oddiy bayonotlar - Python 3.6.5 hujjatlari". docs.python.org. Olingan 20 aprel 2018.
  10. ^ "CLHS: Makro SETF, PSETF". Umumiy Lisp giperspeki. LispWorks. Olingan 23 aprel 2019.
  11. ^ Go dasturlash tilining spetsifikatsiyasi: Topshiriqlar
  12. ^ INMOS Limited, tahrir. (1988). Occam 2 uchun qo'llanma. Nyu-Jersi: Prentis zali. ISBN  0-13-629312-3.
  13. ^ Devor, Larri; Christianen, Tom; Shvarts, Randal C. (1996). Perl dasturlash tili (2 nashr). Kembrij: O´Reilly. ISBN  1-56592-149-6.
  14. ^ Lutz, Mark (2001). Python dasturlash tili (2 nashr). Sebastopol: O´Reilly. ISBN  0-596-00085-5.
  15. ^ Tomas, Devid; Hunt, Endryu (2001). Yoqutni dasturlash: Pragmatik dasturchilar uchun qo'llanma. Yuqori Egar daryosi: Addison Uesli. ISBN  0-201-71089-7.
  16. ^ D.W. Barron va boshq., "CPLning asosiy xususiyatlari", Kompyuter jurnali 6:2:140 (1963). to'liq matn (obuna)
  17. ^ "PEP 3132 - kengaytirilgan o'zgaruvchan paketlarni ochish". legacy.python.org. Olingan 20 aprel 2018.
  18. ^ "Yo'q qilish uchun topshiriq". MDN veb-hujjatlari. Olingan 20 aprel 2018.
  19. ^ "Kornişlarni va boshqa turlarini qayta qurish". Microsoft Docs. Microsoft. Olingan 29 avgust 2019.
  20. ^ Effektiv o'tish: uchun, "Nihoyat, Go-da vergul operatori yo'q va ++ va - bu iboralar emas. Shunday qilib, a uchun bir nechta o'zgaruvchini ishlatmoqchi bo'lsangiz, parallel topshiriqdan foydalaning (garchi bu ++ va - ni istisno qilsa ham)."
  21. ^ Niklaus Virt. "Yaxshi g'oyalar, ko'zoynak oynasi orqali". CiteSeerX  10.1.1.88.8309. Yo'qolgan yoki bo'sh | url = (Yordam bering)
  22. ^ Corbet (2003 yil 6-noyabr). "Yadroni orqa eshikka o'tkazishga urinish".
  23. ^ Mur, Lawrie (1980). Paskal bilan dasturlash asoslari. Nyu-York: John Wiley & Sons. ISBN  0-470-26939-1.
  24. ^ Meyer, Bertran (1992). Eyfel tili. Xemel Xempstid: Prentice Hall International (Buyuk Britaniya). ISBN  0-13-247925-7.
  25. ^ Viner, Richard (1996). Eyfeldan foydalangan holda kompyuter faniga ob'ektiv yo'naltirilgan kirish. Yuqori Egar daryosi, Nyu-Jersi: Prentis-Xoll. ISBN  0-13-183872-5.
  26. ^ Feynberg, Nil; Keene, Sonya E .; Metyus, Robert O.; Xingington, P. Taker (1997). Dilan dasturlash. Massachusets shtati: Addison Uesli. ISBN  0-201-47976-1.
  27. ^ "PEP 572 - topshiriq ifodalari". python.org. 2018 yil 28-fevral. Olingan 4 mart 2020.
  28. ^ "Go dasturlash tili spetsifikatsiyasi - Go dasturlash tili". golang.org. Olingan 20 aprel 2018.
  29. ^ Ullman, Jeffri D. (1998). ML dasturlash elementlari: ML97 Edition. Englewood Cliffs, Nyu-Jersi: Prentis Xoll. ISBN  0-13-790387-1.
  30. ^ Iverson, Kennet E. (1962). Dasturlash tili. John Wiley va Sons. ISBN  0-471-43014-5. Arxivlandi asl nusxasi 2009-06-04 da. Olingan 2010-05-09.
  31. ^ Grem, Pol (1996). ANSI Common Lisp. Nyu-Jersi: Prentis zali. ISBN  0-13-370875-6.
  32. ^ Stil, Gay L. (1990). Umumiy Lisp: Til. Leksington: Raqamli matbuot. ISBN  1-55558-041-6.
  33. ^ Dybvig, R. Kent (1996). Sxema dasturlash tili: ANSI sxemasi. Nyu-Jersi: Prentis zali. ISBN  0-13-454646-6.
  34. ^ Smit, Jerri D. (1988). Sxemaga kirish. Nyu-Jersi: Prentis zali. ISBN  0-13-496712-7.
  35. ^ Abelson, Garold; Sussman, Jerald Jey; Sussman, Juli (1996). Kompyuter dasturlarining tuzilishi va talqini. Nyu-Jersi: McGraw-Hill. ISBN  0-07-000484-6.