Uzziniet Lisp programmēšanu: ievads, versijas un citas iespējas

Atklāšana: Jūsu atbalsts palīdz vietnei darboties! Mēs nopelnām nodošanas maksu par dažiem pakalpojumiem, kurus mēs iesakām šajā lapā.


Lisp programmēšana

Lisp ir programmēšanas valodu saime, kuru pirmo reizi iecerēja 1958. gadā un beidzot ieviesa 1961. gadā. Tas padara to par otro vecāko valodu, kas joprojām tiek plaši izmantota pēc Fortran.

Bet, lai gan Fortran turpina lēnām izgaist, Lisps joprojām ir ļoti svarīga datorzinātņu ainavas sastāvdaļa.

Lisps ir unikāls vairākos veidos. Pirmkārt, katrs izteiciens Lispā ir saraksts, viens no diviem primārajiem datu veidiem valodā. (Tāpēc to sauc par “Lisp”.)

Tā kā pats kods valodā ir vērtējams kā datu tips, Lisps izmanto atkārtošanos un introspekciju.

Turklāt – atšķirībā no vairuma citu valodu – Lisp kods ir cilvēkiem lasāma faktiskās datu struktūras versija, jo to apstrādā pamatā esošā Lisp sistēma.

Tas nozīmē, ka pastāv liela līdzība starp to, kā programmētājs domā par programmu, un to, ko programma patiesībā dara “zem pārsega”.

Lisp var izmantot jebkura skaita lietojumprogrammām un problēmu jomām, taču tas ir īpaši noderīgi mākslīgajam intelektam un mašīnmācībai..

Contents

Lisp patstāvīgas ieviešanas

Tas liecina par Lispa noderīgumu, ka ir tik daudz dažādu versiju. Tajos ietilpst gan atsevišķas valodas, gan valodas, kas izveidotas lietojumprogrammās. Tālāk mēs apspriedīsim abus.

Kopējā Lisp

Common Lisp ir viens no populārākajiem Lisp dialektiem. Pirmoreiz tas tika izlaists 1984. gadā, un pēc desmit gadiem kļuva par ANSI standartu.

Tas bija Maclisp uzlabojums. Bet tā nebija vienīgā Lisp versija, kas strādāja pie Maclisp; bija arī vairāki citi. Bet kopējā Lispa apņemšanās standartizēt padarīja to visveiksmīgāko.

Kopējie Lisp resursi

Ja jūs interesē Common Lisp, ir daudzi veidi, kā to iemācīties.

Grāmatas

Kopīgajai Lisp ir ļoti maz tiešsaistes apmācību, tāpēc, ja jūs patiešām vēlaties iemācīties valodu, jums būs jāizlasa viena vai vairākas grāmatas. Par laimi, daudzos no tiem ir tiešsaistes izdevumi.

  • Bieži sastopams saudzīgs ievads simboliskajā skaitļošanā
  • ANSI kopīgais lisp
  • Praktiska kopīga lisp
  • On Lisp: uzlabotas metodes kopējai Lisp
  • Veiksmīgs Lisp: kā saprast un izmantot kopējo Lisp
  • Objektorientēta programmēšana COMMON Lisp: Programmētāja ceļvedis CLOS
  • Metaobjekta protokola māksla
  • Lisp mazos gabalos
  • Mākslīgā intelekta elementi, izmantojot kopējo Lisp
  • Ļaujiet pār Lambda

Daudzas no vissvarīgākajām un ietekmīgākajām grāmatām par Lispu tika uzrakstītas septiņdesmitajos un astoņdesmitajos gados, un tagad tās vairs nav iespiestas un ir grūti atrodamas. Vairākas no šīm grāmatām ir pieejamas tiešsaistē, un saites uz tām varat atrast zemāk.

Tiešsaistes resursi

Ar vēsturisku nozīmi

Lispa ir vēsturiski interesanta valoda. Tā attīstība ir cieši saistīta ar mākslīgā intelekta un mašīnmācības attīstību. Tā ir arī viena no unikālākajām valodām, ko parasti izmanto, un sintakse un iekšējā loģika ir mežonīgi atšķirīga nekā vairumā citu valodu..

Šīs atšķirības ir daļa no datorzinātņu aprindās notiekošajām debatēm par aprēķinu raksturu un pareizo programmēšanas gramatiku.

Ikvienam, kurš šodien izmanto laiku, lai apgūtu Common Lisp, vajadzētu to norādīt uz valodas vēstures izpēti.

  • Simbolisko izteiksmju rekurējošās funkcijas un to aprēķināšana ar mašīnu – 1960. gadā sarakstījis Džons Makartijs. Šis ir oriģinālais darbs, kurā aprakstīts, kas kļūs par Lispu.
  • Pamats matemātiskai skaitļošanas teorijai – Makartija 1961. gadā sarakstīts raksts, kurā apskatītas daudzas idejas no “Rekursīvās funkcijas” darba. Skatiet arī pavaddokumentu Ceļā uz skaitļošanas matemātisko zinātni.
  • Lisps – piezīmes par tā pagātni un nākotni – Makartijs šo rakstu uzrakstīja 1980. gadā, 20 gadus pēc Lispa atbrīvošanas.
  • VIDEO: Mākslīgais intelekts

Džons Makkartijs (1927-2011) bija ilggadējs datorzinātņu profesors Stenfordas universitātē. Viņa mājas lapa ir dārgumu krājums ar interesantiem rakstiem par AI, Lisp, teorētisko datorzinātni un ar to saistītām tēmām.

Uzziniet Lispu

Common Lisp tiešsaistes apmācību nav ļoti daudz, jo ir populārākas valodas, piemēram, PHP vai Ruby. Tomēr par Lisp ir daudz grāmatu, kas izdotas kā tiešsaistes izdevumi.

Daudzi no tiem tika uzrakstīti 70. un 80. gados, lai gan noteikti ir arī daži mūsdienīgāki resursi.

  • On Lisp – Pola Grehema izcilās grāmatas tiešsaistes izdevums.
  • Bieži sastopams saudzīgs ievads simboliskajā skaitļošanā
  • Lisp mazās daļās – īsu apmācību sērija
  • Praktiskais parastais paraugs – klasiskā ievada grāmatas ar tādu pašu nosaukumu pilns tiešsaistes izdevums.
  • Lispa zeme – smieklīga, savdabīga vietne un grāmata, kas māca cilvēkiem izmantot Lispu.
  • Apgūstiet parasto lispu – iemācieties X Y minūtēs, kur X = parastais lisps.
  • ELM-ART Lisp kurss – iemācieties lietot Lisp ar epizodiskā audzēkņa modeli adaptīvajā tālvadības skolotājā
  • Lispa Ātrā starta
  • LispTutor Jr
  • Burtu liešana Lispē
  • Kopīgais izlaupījums: interaktīva pieeja
  • Lisp stila padomi iesācējiem
  • Paskāla Kostanza augsti vērtētais ceļvedis Lispam

Nepieciešamais lasījums:

  • Kopējās Lisp ekosistēmas stāvoklis.
Lisp atsauce un dokumentācija

Ja sākat strādāt ar Lisp, vairāk nekā pat vairākās citās valodās jums nāksies bieži meklēt atsauces materiālus. Šeit ir daži no biežāk izmantotajiem Common Lisp atsauces darbiem, kas pieejami tiešsaistē.

  • Kopīgais Lisp Wikibook
  • Kopējā Lisp HyperSpec
  • Cliki: kopējā Lisp Wiki
  • LispWorks kopējā Lisp dokumentācija
  • Kopējā Lisp pavārgrāmata
  • Google stila rokasgrāmata Common Lisp – kā uzrakstīt Common Lisp tā, kā Google raksta Common Lisp. (Vai jūs pat zinājāt, ka Google raksta Common Lisp?)
  • Kopējā valodu valoda
Īpašās tēmas Lisp programmēšanā

Lisp pēc savas būtības ir diezgan specializēta valoda. Šeit ir daži resursi par īpaši specializētiem jautājumiem kopīgajā Lisp.

  • Mākslīgā intelekta programmēšanas paradigmas: gadījumu izpēte Common Lisp – iepazīstieties arī ar grāmatu.
  • Kopējā Lisp objektu sistēma
Lisp rīki

Ja vēlaties ar Common Lisp paveikt kaut ko būtisku, jums būs nepieciešams lielāks valodas atbalsta ekosistēma – bibliotēkas, spraudņi, izstrādes rīki, ietvari.

Šeit ir daži no populārākajiem rīkiem, kurus Lispers izmanto, lai paveiktu lietas.

  • ACL2 – aprēķina loģika piemērojamajam kopējam lisp
  • Reader Macros in Common Lisp – Reader makro ļauj Lisp virspusē izveidot pilnīgi jaunu sintakse
  • Quicklisp – Common Lisp bibliotēkas vadītājs
  • Clack – tīmekļa lietojumprogrammu vide programmai Common Lisp. Tam ir izveidotas vairākas tīmekļa lietojumprogrammu struktūras:
    • Alu cilvēks
    • Ningle
    • Lucerna
  • Parenscript – tulko parasto Lisp uz Javascript
  • jscl – vēl viens izplatīts JavaScript kompilatoru saraksts
  • Rosvels – komandrindas instalētājs programmai Common Lisp
  • CommonQT – parasts List paplašinājums QtTools, nodrošinot GUI risinājumu.
  • CLML – kopēja Lisp Machine Learning bibliotēka
  • MGL – vēl viena mašīnmācīšanās bibliotēka
  • Antik – bibliotēka, kas nodrošina rīkus zinātniskai un inženiertehniskai aprēķināšanai
  • Celtnis – ORM parastajam lisp.
  • cl-dbi – datu bāzes abstrakcijas slānis
  • CEPL – grafikas bibliotēka. (Skatiet viņu plašo video apmācību sēriju.)
  • Iron Clad – Kriptogrāfijas rīki.
  • SLIME – parastais IDE parastajam Lisp.
Lispa kultūra un kopiena

Vairāk nekā jebkurā citā valodā Lisp ir sava kultūra – unikāla mācība, humors un tradīcijas. Daļa no tā aizsākās saknēs universitāšu datorzinātņu nodaļās.

Turklāt daži no tiem ir saistīti ar agrīnu geek hakeru kultūru, un daži no tiem ir pašas valodas īpatnību un lietojumu veidu dēļ, kurus tā parasti izmanto.

Ja jūs patiešām vēlaties saprast Lispu, jūs varat ne tikai iemācīties valodu – jums jāapgūst kultūra un jākļūst par šīs (dīvainās un brīnišķīgās) kopienas daļu.

  • Lisp forums
  • Seminārs par Lispa psiholoģisko realitāti
  • Citāti par Lispu
  • Saruna ar Alanu Kaju
  • Mūžīgā uguns
  • Lispa humors
  • Kopējā Lisp filma
  • Mūzikas video Lispa zeme
  • Planēta Lispa
  • Lisp sapulces – arī apskatiet [@lispmeetings vietnē Twitter] (https://twitter.com/lispmeetings)

Nepieciešamais lasījums:

  • Gēdels, Ešers, Bahs: mūžīgā zelta pīte, autors Douglas R. Hofstadter. Šī grāmata nav tieši saistīta ar Lispu (lai gan tas par to mazliet runā). Bet tas ir ārkārtīgi svarīgs kultūras un intelektuālais atskaites punkts cilvēkiem dažādās jomās, kuras apdzīvo Lisps: mākslīgais intelekts, mašīnmācība, matemātiskā loģika un rekursija. Šī grāmata mainīs jūsu domāšanas veidu, un jūs galu galā domāsit vairāk kā tas, kurš izmanto Lispu.
Izplatītas Lisp ieviešanas

Lisp ir ideja, un Common Lisp ir valoda – tā nav īpaša tehnoloģija. Šie ir daži no populārākajiem Common Lisp ieviešanas veidiem.

  • Clisp – GNU Clisp, ANSI Common Lisp ieviešana
  • GCL – vēl viena izplatīta Lisp ieviešana
  • CMUCL – augstas veiktspējas, bezmaksas Common Lisp ieviešana. Ir iekļauts Hemlock redaktors.
  • Allegro CL
  • Clozure Common Lisp
  • Tērauda bankas kopīgais Lisp
Video

Uzziniet par Lispu, skatoties. Šie video palaiž diapazonu no pamata pamācībām līdz padziļinātai Lispa loģikas un filozofijas izpētei.

  • Domā kā Lisp programmētājs
  • Praktiska kopīga lisp – Google Tech Talk
  • Īss ievads Lisp
  • Lisp – Google Tech Talk
  • Common Lisp: kāpēc makro ir lieliski
  • Common Lisp – kā sākt jaunu projektu
  • Interaktīva spēles izstrāde ar parasto lisp
  • LiveCoding programmā CommonLisp
  • Patriks Šteins uz Vimeo
  • Baggers kopīgās Lisp konsultācijas

Saistītās valodas un dialekti

Lisps nav viena valoda, bet gan valodu saime – ideja, kā veikt datorprogrammēšanu. Kopējā Lisp ir populārākā Lisp ieviešana, taču pastāv arī vairākas citas.

Galvenie Lispa dialekti ir:

  • Shēma – Shēma ir Common Lisp vadošais konkurents.
  • Klojure – Klojure ir Lispa dialekts, kas šobrīd gūst arvien lielāku popularitāti. Tas ir izveidots, lai darbotos Java virtuālajā mašīnā.

Bieži uzdotie Lisp jautājumi

Kas ir Lisp?

Lisp ir datoru programmēšanas valodu saime, kas pirmo reizi tika izstrādāta piecdesmito gadu beigās. Lisps nozīmē List Prnepieciešams, nosaukums, kas norāda uz to, ka valodas izmanto sarakstus kā galveno datu struktūru, kā arī programmēšanas sintaksei.

Kas ir parastais Lisps?

Common Lisp ir Lispa dialekts, kas tika izstrādāts 80. gadu sākumā kā mēģinājums radīt vienotu (kopēju) Lisp versiju. Tā ir viena no divām populārākajām valodas versijām (kopā ar shēmu).

Kāpēc lieto Lisp??

Lisp var izmantot jebkura veida lietojumprogrammām, taču tas īpaši interesē mākslīgo intelektu, mašīnmācīšanos un citus uzlabotas programmēšanas veidus, kuriem nepieciešama rekursīva loģika.

Kāpēc Lisp ir populārs ar mākslīgo intelektu?

Tam ir vismaz divi iemesli.

Pirmkārt, Lispa primārā datu struktūra (saraksts) ir arī tā programmēšanas sintakse struktūra. Tas ir, dati un instrukcijas par datiem notiek tādā pašā formā. (To sauc par homooniconicity.)

Tas nozīmē, ka Lisp var izmantot, lai pats sevi analizētu vai modificētu. Daudzi mākslīgā intelekta jomas eksperti, kā arī daudzi saistīto jomu filozofi un domātāji uzskata šāda veida retrospektīvu introspekciju par reāla, pašapzinīga intelekta pamatu. Turklāt mašīnmācības būtība ir programmas spēja mainīt sevi, pamatojoties uz ievadi.

Otrs Lispa popularitātes iemesls AI ir tas, ka valodas vadības sintakse ir cieši analoga aprēķina loģikai, kas ir tās pamatā. Tas dod Lisp programmētājiem daudz dziļāku ieskatu par to, kā dators faktiski interpretē programmas loģiku un sintakse, nekā tas ir iespējams ar citām valodām.

Klojure

Clojure ir salīdzinoši jauna (2007) programmēšanas valoda. Tas ir Lispa dialekts, kas paredzēts darbināšanai Java virtuālajā mašīnā.

Kas ir Java virtuālā mašīna?

JVM ir virtuāls dators, kas apkopo un vada Java un citas valodas. JVM ir ideja, nevis specifiska programmatūra – viena no populārākajām JVM ieviešanām ir HotSpot no Oracle.

Java un JVM ideja ir tāda, ka jūs varat rakstīt programmu Java (vai citā atbalstītā valodā) un apkopot to JVM. Pēc tam to var palaist jebkurā datorā, kurā darbojas JVM. Tas padara to par īpaši pārnēsājamu – jūs varat vienreiz rakstīt kodu un palaist to jebkur.

Klojure: Lisp par JVM

Java ir visur, kas nozīmē, ka Java virtuālās mašīnas ir visur. Izveidojot Lisp versiju, kas darbojas JVM, ļāva Lisp palaist jebkur. Tā bija galvenā motivācija Klojure veidošanai un lielisks iemesls valodas apgūšanai.

Vēl viens ieguvums ir tas, ka Klojure ar JVM starpniecību nodrošina piekļuvi neskaitāmiem rīkiem un trešo personu bibliotēkām, kas rakstītas Java. Tas Klojurei piešķir attīstības ekosistēmu, kas ir jaudīgāka nekā tās, kas iepriekš bija pieejamas jebkuram Lispa dialektam.

Clojure konsultācijas

  • Darba sākšana ar Klojūru un ievads Klojure nodrošina skaidru, ātru valodas iepazīstināšanu.
  • Clojure programmēšana ir plašs atvērtā koda valodas wikibook.
  • Iemācieties X Y minūtēs, kur X = clojure ir labs vienas valodas ievads cilvēkiem ar pašreizējām programmēšanas prasmēm citās valodās.
  • Clojure – JVM funkcionālā programmēšana ir detalizēta apmācība, kas paredzēta Java izstrādātājiem.
  • Klojures valoda ir 25 daļu video apmācības sērija, kas iepazīstina ar valodu.
  • Clojure Distilled ir obligāti jāizlasa apmācība / eseja, kas aptver ne tikai valodas sintakse un vārdu krājumu, bet arī filozofiju; tas mēģina destilēt to, kā Klojure izstrādātāji domā par problēmām, un pēta problēmu risināšanas veidu, kas, iespējams, būs jauns izstrādātājiem no citām valodām.
Citi resursi Clojure apguvei
  • Izmēģiniet Clojure, kas ir tiešsaistes Clojure tulks, ļaujot jums iegūt pieredzi ar Clojure pārlūkprogrammā pirms tās lokālās instalēšanas.
  • ClojureTV ir video pamācības un tiešraides sarunas par dažādām Clojure attīstības tēmām.
  • 4clojure ir interaktīva mācību vietne ar programmēšanas vingrinājumiem Klojurē.
  • Pilna Disclojure ir vēl viens video kanāls, kurā ir ļoti daudz lielisku Clojure apmācības video.
  • Clojure Newbie ceļvedis ir noderīgs resurss, kas jaunajam Clojure izstrādātājam norāda uz visiem būtiskajiem rīkiem un resursiem, kas veido Clojure ekosistēmu..

Klojūras atsauces materiāls

  • Clojure stila rokasgrāmata ir kopienas rakstīts ceļvedis, kurā aprakstīta labākā prakse skaidra, uzturējama Clojure koda rakstīšanai.
  • ClojureDocs un Grimoire ir neoficiāli oficiālās dokumentācijas pavadoņi, sniedzot komentārus un piemērus no kopienas..
  • Clojure Cheatsheet ir ātru uzziņu lapa par visām sīkumiem, kas jums vienkārši jāatceras.

Sabiedrība un notiekošās mācības

  • Clojure Subreddit ir ļoti aktīvs forums jautājumu uzdošanai un mijiedarbībai ar Clojure kopienu;
  • Clojure Google grupa un adresātu saraksts ir piemērota vieta, kur uzdot jautājumus un saņemt atbalstu Clojure izstrādē;
  • Disclojure ir populāra Clojure ziņu un notikumu vietne;
  • Planet Clojure apkopo svarīgākos rakstus no labākajiem Clojure emuāriem.

Grāmatas par Klojūru

Par Klojūru ir ļoti daudz grāmatu. Šie ir tie, kurus Klojures kopiena iesaka atkal un atkal:

  • Daniela Higinbothema grāmata Klojūra par drosmīgu un patiesu (2015) ir obligāti jāizlasa valodas ceļvedis. Tas ir pieejams arī bezmaksas lasīšanai tiešsaistē, un tas ir pamats fantastiskai vietnei, kas pilna ar Klojures resursiem.
  • Vanderharta un Neufelda veidotā Clojure pavārgrāmata (2014) ir Klojures recepšu un ideju apkopojums no pūļa. Tas ir pieejams kā drukāta grāmata un atvērtā koda projekts vietnē GitHub.
  • Pragmatiskajā grāmatplauktā ir vairākas lieliskas grāmatas par Klojūru:
    • Programmēšana Klojure (2012), Halloway un Bedra;
    • Apgūt Clojure makro: rakstīt tīrāku, ātrāku, viedāku kodu (2014), autore Kolīna Džounsa;
    • Klojure pielietots: No prakses līdz praktiķim (2015), autori Vandgrifts un Millers;
    • Tīmekļa izstrāde ar Clojure: veidojiet necaurlaidīgas tīmekļa lietotnes ar mazāku kodu (2016), autors Dmitrijs Sotņikovs.
  • Vanderharta un Sjerras praktiskā Clojure (2010) un Pragmatic Bookshelf’s Programming Clojure (minēts iepriekš) bija pirmās divas grāmatas, kas izdotas par Klojūras valodu. Pragmatiskajā grāmatā ir vairāk un labāki kodu paraugi, savukārt šai Apress grāmatai ir saskaņotāki skaidrojumi. Šīs divas grāmatas nosaka to, kā vairums Klojure izstrādātāju domā par valodu, un tāpēc tās būtu jāizlasa ikvienam, kurš nopietni vēlas to apgūt..
  • Clojure Programming (2012), autori Emeriks, Karpers un Grands, ir ļoti skaidrs valodas ievads, īpaši cilvēkiem, kas nāk no tīmekļa orientētas programmēšanas un skriptu valodām, piemēram, PHP un Python.
  • Carin Meier, Living Clojure (2015), ir ļoti praktisks valodas ceļvedis ar noderīgu pieņēmumu, ka lasītājs saprot programmēšanu kopumā. Grāmatā iekļauts strukturēts mācību plāns, kas izstrādāts gan pašmācībai, gan korporatīvajai apmācībai.

Vai man vajadzētu iemācīties Klojūru?

Droši vien.

Tas ir vispārpieņemts trisms, ka katram izstrādātājam vajadzētu iemācīties Lispu, kaut arī jūs to droši vien neizmantojat. Bet tagad, kad Lispa spēks ir apvienots ar Java visuresošo valodu, tā ir valoda, kas ir gan labi mācāma, gan ārkārtīgi noderīga.

Labi Clojure izstrādātāji ir ļoti pieprasīti un labi apmaksāti, un valoda kļūst arvien populārāka.

Ja jūs meklējat programmēšanas prasmes, lai jūs atšķirtu no citiem izstrādātājiem, Klojure ir viens no labākajiem rīkiem, ko pievienot savam komplektam un jūsu CV.

Shēma

Ja esat mazliet vecāks un vidusskolā vai universitātē esat apmeklējis datorzinātnes ievadkursu, iespējams, ka tajā kursā esat izmantojis veco labo shēmas programmēšanas valodu..

Īsa shēmas vēsture

Lai labāk izprastu Shēmas vēsturi, mums ir jāaplūko mūsdienu skaitļošanas agrīnie posmi. Shēmas attīstību ietekmēja divi agrāki, ļoti atšķirīgi priekšgājēji: Lisp un ALGOL programmēšanas valodas.

Lispu 1958. gadā izveidoja Masačūsetsas Tehnoloģiju institūta (MIT) Džons Makartijs. Shēma tika iegūta no Lisp, izmantojot tās vispārīgo semantiku un sintakse. Turklāt shēma aizņēmusies no ALGOL. To izstrādāja Eiropas un Amerikas datorzinātnieku komiteja sanāksmē 1958. gadā ETH Cīrihē. Shēmā izmantota tās bloka struktūra un leksiskā darbības joma.

1973. gadā MIT Guy L Steele un Gerald Jay Sussman sāka mēģinājumu ieviest Carl Hewitt aktiera modeli Lambda aprēķinos. Viņi to izdarīja, MacLisp uzrakstot niecīgu Lisp tulku un pievienojot mehānismus dalībnieku izveidošanai un ziņojumu sūtīšanai. Darba laikā viņi saprata, ka ir izveidojuši ļoti mazu un spējīgu Lispa izloksni, un nosauca to par Shēmu.

2003. gadā Shēmas darbnīca uzsāka jaunu Sistēmas standartizācijas procesu un galu galā izlaida ratificēto standartu R6RS 2006. gadā. Pēdējais stabilais Sistēmas izlaidums ir ratificēts R7RS standarts no 2013. gada..

Shēmas funkcijas

Shēma ir galvenokārt funkcionējoša programmēšanas valoda ar sarakstiem kā galveno datu struktūru un atbalstu pirmās klases funkcijām. Tā ir vienkārša, minimālistiska un viegli īstenojama programmēšanas valoda. Šī minimālisma filozofija ir novedusi pie plašām atšķirībām starp praktisko shēmu ieviešanu tiktāl, ciktāl shēmas vadības komiteja to sauc par “pasaules visnepieciešamāko programmēšanas valodu” un “dialektu saimi”, nevis vienu valodu. Atšķirībā no agrākiem Lisp atvasinājumiem ar dinamisku darbības jomas noteikšanu, shēma ir leksiski aptverta (ietekmē ALGOL).

Shēmā bloki tiek realizēti ar šādām konstrukcijām: ļaujiet, ļaujiet * un letrec. Šī bloka struktūra ir pārmantota arī no ALGOL. Ierācijas konstrukcija darīt tiek izmantots shēmā, un tiek nodrošināts arī atbalsts iterācijai, izmantojot astes rekursiju. Shēmas turpinājumi ir pirmās klases objekti, un tos atbalsta zvana ar strāvu-turpinājums Shēmas procedūra (pazīstama arī kā zvans / kopija). Shēmā visiem datiem un procedūrām ir kopēja nosaukumvieta, un ievades un izvades pamatā ir osta datu tips.

Ciparu tornis ir sarežģītu un racionālu skaitlisku datu tipu kopums, kas norādīts un ieviests shēmā. Novēlota novērtēšana tiek atbalstīta shēmā caur kavēšanās forma un spēks procedūra.

Shēmas ieviešana un izmantošana

Vienkāršības un minimālisma dēļ Scheme bibliotēkas kļuva ļoti populāras programmēšanas valodas izstrādātāju, pasniedzēju un hobijistu vidū. Tā rezultātā radās daudz dažādu shēmas ieviešanu un dialektu. Tradicionālais Lisp stila lasīšanas un novērtēšanas-drukas cilpa tiek atbalstīta lielākajā daļā shēmas ieviešanas, un dažas arī sastāda shēmas programmas izpildāmiem bināriem failiem.

Shēmas ieviešanas vienkāršība arī padara to par populāru izvēli skriptu pievienošanas iespējām lielākām sistēmām. Turklāt JScheme un Kawa shēmas implementācijas nodrošina integrāciju ar Java klasēm.

Shēma galvenokārt tiek izmantota izglītībā. Daudzos ievada datorzinātņu un programmu izstrādes kursos, lai demonstrētu datorprogrammēšanas pamatus. Starp citiem ievērojamiem shēmas lietojumiem ir Google App izgudrotājs operētājsistēmai Android, GIMP grafikas redaktors, Dokumentu stila semantika un specifikācijas valoda (DSSSL) utt..

Mācību shēma

Sakarā ar to, ka shēma tiek plaši izmantota izglītības jomā, tās apgūšanai un resursu atrašanai mācībām nevajadzētu radīt problēmas. Ir pieejami daudzi mācību resursi – gan bezmaksas, gan komerciāli, un mēs dažus no tiem izdalījām.

Shēmas kursi un resursi

Tā kā shēma ir minimālistiska un pilnveidota programmēšanas valoda, to ir salīdzinoši viegli apgūt. Izmantojot šos kursus un konsultācijas, jūs, iespējams, varēsit nekavējoties sākt programmēšanu shēmā.

  • Datorprogrammu struktūra un interpretācija ir MIT ievadkurss 6.001 ar daudziem noderīgiem resursiem shēmai, ieskaitot video lekcijas, tiešsaistes mācību grāmatas, projektus, atšifrējumus un atlasītas lekciju piezīmes.
  • DrScheme ir integrēta izstrādes vide (IDE) shēmu programmu rakstīšanai, atkļūdošanai un analīzei, to izmanto arī izglītībā.
  • Pilo shēmas vizuālie rīki (PVTS) ir pamata shēmas tulku ieviešana ar vizualizācijas rīkiem. Tas ir rakstīts Java, un tam ir ļoti ierobežotas tulka iespējas, un tā vienīgais mērķis ir grafiski parādīt shēmas kodu kā mācību palīglīdzekli.
  • Schemers.org ir jauka dokumentācijas un ievada tekstu kolekcija.
Shēmu grāmatas

Ir pieejamas neskaitāmas shēmu grāmatas, un daudzas no tām ir bezmaksas un tiek izmantotas izglītības kursos. Tie var būt ļoti noderīgi, ja jūs tikko sākat mācīties shēmas programmēšanas valodu.

  • Dizaina programmu uzbūve un interpretācija, ko izstrādājuši Abelsons, Sussmans un Sussmans, ir lieliska datorzinātņu grāmata, ko izmanto MIT ievadkursos. Šī ir viena no Lisp un Scheme pasaules bībelēm, un tā ir pieejama tiešsaistē bez maksas, no MIT Press.
  • Kā plānot programmas: Felleisen, Findler, Flatt un Krišnamurthi ievads skaitļošanā un programmēšanā sniedz ļoti jauku ievadni programmēšanas loģikā. Tas ir bezmaksas un pieejams tiešsaistē, publicēja MIT Press.
  • Sistēmas programmēšanas valoda, ceturtais izdevums, ko izstrādājis R Kents Dībvigs, ir paredzēts, lai sniegtu ievadu shēmas programmēšanas valodā, bet ne ievadi programmēšanā kopumā. Tas ir bezmaksas un pieejams tiešsaistē, publicēja MIT Press.
  • Mazais shēmotājs – Frīdmena un Felleisena 4. izdevums ievieš skaitļošanu kā aritmētikas un algebras paplašinājumu un programmas kā rekursīvas funkcijas. Šī grāmata nav bezmaksas.
  • Arī Frīdmena un Felleisena pieredzētais shēma informē lasītāju par skaitļošanas papildu dimensijām: funkcijām kā vērtībām, stāvokļa maiņu un izņēmuma gadījumiem. Šī grāmata nav bezmaksas.
  • Kā izmantot shēmu: Felleisen, Findler, Flatt, Krišnamurthi, Štkellers, rakstot skriptus un programmas ar PLT shēmu, jūs iepazīstinās ar dažām diezgan pamata idejām, piemēram, failu ievadi un izvadi, ar modernākām lietām, piemēram, vienkāršu GUI dizainu un Web skriptu shēmas aspekti. Tas ir brīvi pieejams tiešsaistē.

Vai shēma ir piemērota jums?

Shēma ir ne tikai labs veids, kā iemācīties programmēt, bet arī labs veids, kā sākt studēt datorzinātnes. Šie iemesli liek virzīties pareizajā virzienā.

Lisp lietojumprogrammu ieviešana

Lisp ir tik noderīgs, ka to bieži izmanto kā programmu skriptu valodu. Divi lielākie ir teksta redaktors Emacs un datorizēta dizaina (CAD) lietojumprogramma AutoCAD. Tālāk apskatīsim abus.

AutoLISP

Ja jūs izmantojat datorizētu projektēšanas (CAD) programmatūru, piemēram, AutoCAD, Bricscad vai IntelliCAD, kādā brīdī jums, visticamāk, būs nepieciešami papildu pielāgošanas vai automatizācijas līdzekļi jūsu CAD vidē.

Šajā vietā darbojas AutoLISP. AutoLISP ir vienkārša, viegla programmēšanas valoda, kas īpaši izstrādāta lietošanai ar CAD programmatūru..

Īsa AutoLISP vēsture

AutoLISP ir Lisp programmēšanas valodas dialekts, kas ir pielāgots un pilnveidots izmantošanai AutoCAD vidē.

Lisp ir programmēšanas valodu saime, kas datēta ar 1958. gadu. Nosaukums Lisp ir atvasināts no “List Processor”, un saistītie saraksti ir viena no Lisp galvenajām datu struktūrām.

AutoLISP pirmo reizi tika ieviests Autodesk AutoCAD versijā 2.18 1986. gadā un tika nepārtraukti pilnveidots jaunos laidienos līdz 1995. gada 13. izlaidumam, kad Autodesk apturēja AutoLISP attīstību par labu modernākām attīstības vidēm, piemēram, VBA vai .NET..

Neskatoties uz to, AutoLISP ir palikusi par galveno pielāgošanas valodu daudziem AutoCAD lietotājiem.

1997. gadā Autodesk izlaida AutoCAD 14 un ieviesa Visual Lisp kā komerciālu AutoCAD papildinājumu. Visual Lisp ietver integrētu izstrādes vidi (IDE), atkļūdotāju un kompilatoru, kā arī ActiveX atbalstu.

Līdz ar AutoCAD 2000 izlaišanu 1999. gadā, Visual Lisp tika iekļauts AutoCAD kā AutoLISP aizstājējs. Kopš tā laika Autodesk ir apturējis lielākos Visual Lisp uzlabojumus, lai koncentrētos uz VBA, .NET un C++.

Visual Lisp un AutoLISP joprojām tiek atbalstīti AutoCAD līdz šai dienai, savukārt atbalsts VBA versijām, kas vecākas par 7.1, ir atcelts no 2014. gada 31. janvāra..

Daudzi citi CAD programmatūras pārdevēji arī pieņēma atbalstu AutoLISP savos produktos, jo ir liela lietotāju bāze, kā arī daudzās utilītas un lietojumprogrammas, kas ir pieejamas AutoLISP.

Kāpēc cilvēki joprojām izmanto AutoLISP, nevis C++?

Ja izmantojat pilnu Autodesk AutoCAD versiju, AutoLISP kompilators jau ir iekļauts AutoCAD un gatavs lietošanai. Bortā ir arī jauks IDE – Visual Lisp. Lūdzu, ņemiet vērā, ka AutoCAD LT izdevumiem nav iebūvēta AutoLISP atbalsta.

Lielākā daļa AutoCAD lietotāju vai līdzīgu CAD risinājumu lietotāji neprot programmēšanas un programmēšanas valodas, tāpēc C ++ mācīšanās, lai izveidotu vienkāršu programmu vai automatizācijas funkciju AutoCAD, nebūtu praktiska..

AutoLISP ir vienkāršs, pilnveidots un daudz vieglāk lietojams un mācāms nekā C ++ vai Visual Basic, un viss, kas nepieciešams programmēšanas sākšanai, jau ir iekļauts AutoCAD.

Programmās un utilītprogrammās, kas rakstītas AutoLISP, ir viegli piekļūt un izpildīties no AutoCAD. Šie ir galvenie iemesli, kas padara AutoLISP par labāko iespēju AutoCAD pielāgošanai lietotājiem.

AutoLISP iespējas

AutoLISP ir skaidrojoša valoda, tā nav apkopota, tāpēc to var uzglabāt ASCII teksta failā, ielādēt un pēc tam izpildīt tieši AutoCAD.

Gandrīz visas darbības, kuras AutoCAD veicat manuāli, var automātiski veikt, izmantojot AutoLISP.

AutoLISP ir bagātīgs funkciju komplekts, kuru varat izmantot, lai veiktu jebkādas darbības AutoCAD, piemēram, vispārīgas programmēšanas funkcijas mainīgām manipulācijām, lēmumu kontrole, cilpas, aritmētiskās operācijas, kļūdu un funkciju apstrāde.

Tam ir arī īpašas funkcijas daudzās jomās, piemēram: ģeometrija, displeja vadība, vaicājumi un komandas, lietotāja ievade un objektu apstrāde.

AutoLISP ir arī dialoglodziņa Control Language – iebūvēta GUI mini valoda modālu dialoga lodziņu izveidošanai ar automatizētu izkārtojumu AutoCAD. Visas platformas, kuras var palaist AutoCAD, atbalsta arī AutoLISP.

Mācīšanās AutoLISP

Ir daži faktori, kas var atvieglot AutoLISP mācīšanos.

Ja esat pieredzējis AutoCAD lietotājs, jums būs vieglāk iemācīties AutoLISP. AutoLISP būtībā ir veids, kā kontrolēt AutoCAD, tāpēc jo labāk jūs zināt AutoCAD, jo labāk jūs zināt, kas jādara, lai to automātiski kontrolētu..

AutoLISP konsultācijas

AutoLISP ir ļoti vienkārša valoda, kas jāapgūst, un, iespējams, visproduktīvākā no dažādām lietojumprogrammu saskarnēm (API), kas iebūvēta AutoCAD. Izmantojot šīs apmācības, jūs, iespējams, būsit gatavs ātri uzrakstīt savas noderīgās programmas.

  • AfraLISP ir lieliska AutoLISP bezmaksas mācību materiālu kolekcija un resursi iesācējiem, vidējiem un pieredzējušiem lietotājiem.
  • Autodesk oficiālajā AutoLISP izstrādātāja rokasgrāmatā ir sniegts soli pa solim pārskats par galvenajām tēmām un darbplūsmām AutoLISP programmēšanas valodas izmantošanai. Interesanta ir arī viņu oficiālā AutoLISP funkciju atsauce, kas noteikti noderēs, programmējot AutoLISP.
  • AutoLISP apgūšana 80 minūtēs ir Power Point prezentācija no Augi CAD Camp 2005, bez maksas lejupielādējama. Tas aptver AutoLISP pamatus un ir paredzēts starpposma AutoCAD lietotājiem.
  • AutoLISP Quick Start vietnē CADTutor.net ir paredzēts AutoCAD lietotājiem, kuri vēlas sākt mācīties AutoLISP.
  • Jūsu pirmā AutoLISP programma: Tālummaiņa uz izcelšanos ir īsa apmācība, kas parāda īsas AutoLISP programmas rakstīšanas pamatus AutoCAD Visual Lisp redaktorā.
  • Lee Mac Programming ir interesanti resursi AutoLISP, piemēram, apmācības un daudzas funkcionālās AutoLISP programmas, kuras varat lejupielādēt un izpētīt.
AutoLISP grāmatas

Daudzas grāmatas par AutoLISP un tās izmantošanu AutoCAD ir plaši pieejamas. Jums var šķist, ka dažas no šīm grāmatām ir ļoti noderīgas, lai iemācītos programmēšanu AutoLISP, lai gan mēs vispirms iesakām iziet tiešsaistes konsultācijas.

  • AutoLISP programmēšana: Rawis un Hagen principi un paņēmieni nodrošina praktiskas un viegli izpildāmas instrukcijas AutoLISP programmēšanas valodas apguvē.
  • AutoCAD platformas pielāgošana: lietotāja saskarne, AutoLISP, VBA un citi, ko izstrādājis Lee Ambrosius, ir visaptverošs ceļvedis, kā pilnveidot un personalizēt AutoCAD platformu. AutoLISP un VBA programmēšanas valodas paver neskaitāmas pielāgošanas iespējas, un šajā grāmatā ir sniegti ekspertu norādījumi par to piemērošanu AutoCAD, Civil 3D, Plant 3D un citām programmām, kuru pamatā ir Autodesk AutoCAD platforma..
  • AutoCAD eksperta Visual LISP autors Reinaldo Togores: parāda Lisp programmēšanas paņēmienus, ieskaitot Visual Lisp integrētās izstrādes vides izmantošanu, kas izskaidroti sākot no jauna.

Vai esat gatavs AutoLISP?

Kaut arī AutoLISP ir atvasināts no Lisp, ļoti senas programmēšanas valodas, AutoLISP joprojām ir ļoti vērtīgs rīks AutoCAD lietotājiem.

AutoLISP joprojām ir izvēles rīks pielāgošanai un automatizācijai AutoCAD un citā CAD programmatūrā ar AutoLISP atbalstu.

Emacs Lisps

Ja izmantojat GNU Emacs vai kādu citu līdzīgu Emacs teksta redaktoru, iespējams, esat dzirdējis par Emacs Lisp. Emacs Lisp ir programmēšanas valoda, ko izmanto, lai attīstītu un kodētu lielāko daļu GNU Emacs teksta redaktora rediģēšanas iespēju. Emacs Lisp tiek dēvēts arī par Elsip.

Būtībā Emacs Lisp tiek izmantots, lai pielāgotu un paplašinātu GNU Emacs teksta redaktora iespējas.

Īsa Emacs Lisp vēsture

Emacs Lisp ir minimālisms Lisp programmēšanas valodas dialekts, ko lieto GNU Emacs un XEmacs teksta redaktoros. Lisps nozīmē “List Processor” un ir programmēšanas valodu saime, kas datēta ar 1958. gadu.

GNU projekta dibinātājs Ričards Štālmens izveidoja teksta redaktoru GNU Emacs.

Pirmoreiz iznākot 1985. gadā, GNU Emacs 13. versija ieviesa Emacs Lisp izmantošanu kā savu paplašināšanas valodu. Emacs Lisp lielā mērā bija iedvesmots no Lisp programmēšanas valodas Maksala dialekta.

Jaunākais GNU Emacs stabilais laidiens ir versija 24.5, un tā tika izlaista 2015. gada aprīlī.

Emacs Lisp ir neatņemama GNU Emacs sastāvdaļa, un tas darbojas visās platformās, kuras atbalsta GNU Emacs – GNU, GNU / Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Microsoft Windows un Solaris..

Gan Emacs Lisp, gan GNU Emacs ir atvērtā koda un bezmaksas. Tie ir publicēti ar GNU General Public License, un avota kods ir brīvi pieejams pārbaudei, modifikācijai un atkārtotai izplatīšanai.

Kas izmanto Emacs Lisp un GNU Emacs?

Izmantojot mūsdienu modernās integrētās izstrādes vides (IDE), koda rakstīšana specializētā teksta redaktorā, piemēram, GNU Emacs, no pirmā acu uzmetiena var šķist ļoti dīvaina..

Tomēr pieredzējušam lietotājam GNU Emacs ir daudz jaudīgu koda rediģēšanas iespēju, kas lielākajai daļai mūsdienu IDE nav.

GNU Emacs tiek aprakstīts kā paplašināms, pielāgojams, pašdokumentējošs, reālā laika displeja redaktors, un gandrīz visas šīs jaudīgās funkcijas nāk no tā integrētā Emacs Lisp tulka..

Mūsdienu IDE koncentrējas uz GUI un vizuālajiem elementiem, un tos galvenokārt kontrolē pele. Atšķirībā no tiem, GNU Emacs koncentrējas uz tastatūras ievadīšanu un jaudīgām teksta rediģēšanas funkcijām, tāpēc tas ir labāk piemērots programmētājiem, kas raksta tīru kodu, nekā vairums mūsdienu IDE..

GNU Emacs tiek atbalstīta katra populārā programmēšanas valoda. Turklāt Emacs Lisp ir pieejams kā spēcīgs rīks GNU Emacs paplašināšanai un pielāgošanai..

Emacs Lisp funkcijas

Tā kā Emacs Lisp programmēšanas valoda bija īpaši izstrādāta izmantošanai redaktorā, tā nodrošina īpašas funkcijas teksta parsēšanai un skenēšanai, apakšprocesu, buferu, displeju, failu u. Tml. Apstrādei. Rediģēšanas komandas ir funkcijas, kuras var izsaukt no Emacs Lisp programmām.

Emacs Lisp funkcijas parāda ciešu saistību ar Maclisp izloksni. Emacs Lisp pēc noklusējuma izmanto dinamisku tvērumu, atbalstot gan obligātās, gan funkcionālās programmēšanas metodes, koncentrējoties uz datu struktūru un īpašību, kas raksturīgas tās lietošanai, nodrošināšanu jaudīgā teksta redaktorā.

Statiskā tvērums ir pieejams kā opcija, sākot ar 24. versiju. To var aktivizēt, iestatot mainīgo leksiski saistošs. Ņemiet vērā, ka Emacs Lisp neatbalsta astes izsaukuma optimizāciju, tāpēc astes atkārtošanās var izraisīt kaudzes pārpildes kļūdas.

Emacs Lisp var izmantot arī kā GNU Emacs skriptu valodu, ko izsauc no komandrindas vai no izpildāmā faila, ar visām programmai pieejamajām rediģēšanas funkcijām.

GNU Emacs lietotāja saskarne netiek parādīta, kad tā darbojas pakešu režīmā ar Emacs Lisp, ko izmanto skriptu veidošanai, tāpēc tā darbojas vairāk kā parasts Unix rīks.

Jūsu attīstības vide

Lai sāktu lietot Emacs Lisp, jums būs jāinstalē GNU Emacs teksta redaktors. Tas ir ļoti vienkāršs process.

Vienkārši dodieties uz Gnu.org Emacs lejupielādes lapu un izpildiet instrukcijas par GNU Emacs lejupielādi un instalēšanu savā sistēmā. GNU Emacs atbalsta šādas platformas: GNU, GNU / Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, Microsoft Windows un Solaris.

Mācīšanās Emacs Lisp

Protams, ka Emacs Lisp būs vieglāk iemācīties, ja jums ir iepriekšēja programmēšanas pieredze, īpaši dažās funkcionālās programmēšanas valodās, kas atvasinātas no Lisp.

Apsveicama ir arī vispārējā programmēšanas pieredze, jo veterānu kodētāji parasti zina savus teksta / koda redaktorus no ārpuses.

Emacs Lisp konsultācijas un resursi

Emacs Lisp ir minimālistiska un viegli apgūstama programmēšanas valoda, taču tā samērā ierobežotās nišas pievilcības dēļ nav tik daudz tiešsaistes resursu. Mēs izvēlējāmies dažas konsultācijas un mācību resursus, kuriem vajadzētu būt noderīgiem, ja jūs tikko sākat darbu ar Emacs Lisp:

  • Ievads programmēšanā Emacs Lisp vietnē Gnu.org ir paredzēts jauniem lietotājiem, kuriem nav iepriekšējas programmēšanas pieredzes.
  • GNU Emacs Lisp uzziņu rokasgrāmata ir pilns Emacs Lisp apraksts un atsauce. Šajā rokasgrāmatā tiek pieņemts, ka jums ir ērti lietot Emacs rediģēšanai.
  • Elispa pavārgrāmatā ir daudz kodu piemēru, kas demonstrē Emacs Lisp programmēšanas pamatdarbības.
  • Emacs Lisp Wiki ir saites uz labiem resursiem, lai jūs sāktu darbu ar Emacs Lisp programmēšanu.
Emacs Lisp grāmatas

Tur ir arī vairākas Emacs Lisp grāmatas. Daži no tiem var būt ļoti noderīgi, taču mēs joprojām iesakām izmēģināt bezmaksas apmācības un resursus tiešsaistē. Ja jums nepieciešami vairāk resursu, varat iegādāties grāmatu vai divas.

  • Roberta J Šasela ievads programmēšanā Emacs Lisp ir vienkārša apmācības programma, kas nav paredzēta programmētājiem, lai parādītu, kā pielāgot GNU Emacs, izmantojot Emacs Lisp programmēšanas valodu.
  • Emacs Lisp – Roberta J Šasela ievads ir paredzēts, lai jūs sāktu darbu ar Emacs Lisp un palīdzētu apgūt programmēšanas pamatprincipus..
  • GNU Emacs paplašinājumu rakstīšana: Boba Glikšteina redaktora pielāgojumi un izveide ar Lisp parādīs visu, sākot no vienkāršām pielāgošanām līdz plašām Emacs Lisp modēm ar reālistiskiem piemēriem.

Ja jūs izmantojat Emacs, jums ir nepieciešams Emacs Lisp

GNU Emacs tika izveidots kā teksta redaktors ar atbalstu pielāgojumiem, izmantojot Emacs Lisp.

Tomēr GNU Emacs kļuva par gandrīz pilnvērtīgu IDE, pateicoties Emacs Lisp programmēšanas valodas nodrošinātajai jaudai un paplašināmībai..

Tā ir spēcīga, bet ļoti specializēta programmēšanas valoda. Tas nav kaut kas vidējam izstrādātājam, kas jāapgūst, bet dažās nišu lietojumprogrammās Emacs Lisp joprojām tiek plaši izmantots, un tas, visticamāk, drīzumā nemainīsies..

Secinājums

Mēs tik tikko esam saskrāpējuši Lispa pasaules virsmu. Bet kā redzat, tā ir ļoti noderīga valoda, kas jāzina neatkarīgi no tā, vai veidojat lietojumprogrammas vai vienkārši mēģināt atvieglot teksta rediģēšanu.

Citas interesantas lietas

Mums ir vairāk ceļvežu, mācību materiālu un infografiku, kas saistīti ar kodēšanu un attīstību:

  • F # Programmēšana: uzziniet par funkcionālo programmēšanu .NET ietvarā.
  • Erlang programmēšanas ievads un resursi: agrīna funkcionālā valoda, ko izmanto paralēla koda izveidošanai.
  • Java: ievads, kā mācīties un resursi: iepazīstieties ar mūsu detalizēto ceļvedi par kļūšanu par Java programmētāju.
Kāds kods jums jāiemācās?

Neizpratnē par to, kādā programmēšanas valodā jums vajadzētu iemācīties iekļūt? Iepazīstieties ar mūsu infografiku Ko kods jums jāiemācās?

Tajā aplūkoti ne tikai dažādu valodu aspekti, bet arī sniegti atbildes uz svarīgiem jautājumiem, piemēram, “Cik daudz naudas es nopelnīšu Java programmēšanai iztikai?”

Kāds kods jums jāiemācās?
Kāds kods jums jāiemācās?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map