Ni nini kilimfanya Lisp kuwa maalum

Β«Lugha kubwa zaidi ya programu kuwahi kuundwaΒ«
- Alan Kay, "juu ya Lisp"

Ni nini kilimfanya Lisp kuwa maalum

McCarthy alipoanzisha Lisp mwishoni mwa miaka ya 1950, ilikuwa tofauti sana na lugha zilizopo, ambayo muhimu zaidi ilikuwa. Fortran.

Lisp alianzisha mawazo mapya tisa:

1. Masharti. Taarifa za masharti ni kama-basi-mwingine miundo. Sasa tunawachukulia kawaida. Walikuwa zuliwa McCarthy wakati wa ukuzaji wa Lisp. (Fortran wakati huo ilikuwa na taarifa za goto tu, zilizounganishwa kwa karibu na maagizo ya tawi juu ya vifaa vya msingi.) McCarthy, akiwa kwenye kamati ya Algol, alichangia masharti kwa Algol, kutoka ambapo yalienea hadi lugha zingine.

2. Aina ya utendaji. Katika Lisp, kazi ni vitu vya daraja la kwanza - ni aina ya data, kama vile nambari, kamba, n.k., na ina uwakilishi halisi, inaweza kuhifadhiwa katika vigezo, inaweza kupitishwa kama hoja, nk.

3. Kujirudia. Recursion, bila shaka, ilikuwepo kama dhana ya hisabati kabla ya Lisp, lakini Lisp ilikuwa lugha ya kwanza ya programu kuunga mkono. (Labda hii ina maana katika kuunda kazi kama vitu vya daraja la kwanza.)

4. Dhana mpya ya vigezo. Katika Lisp, anuwai zote ni viashiria vyema. Maadili ni aina zile, sio vigeu, na kugawa au kufunga vigeu kunamaanisha kunakili viashiria, sio kile wanachoelekeza.

5. Mkusanyiko wa takataka.

6. Mipango inayojumuisha maneno. Programu za Lisp ni miti ya misemo, ambayo kila moja inarudisha thamani. (Baadhi ya misemo ya Lisp inaweza kurudisha thamani nyingi.) Hii inatofautiana na Fortran na lugha nyingine nyingi zinazofaulu ambazo hutofautisha kati ya "maneno" na "kauli."

Ilikuwa kawaida kuwa na tofauti hii katika Fortran kwa sababu lugha ilielekezwa kwenye mstari (haishangazi kwa lugha ambayo umbizo la ingizo lilikuwa kadi iliyopigwa). Hungeweza kuwa na taarifa zilizowekwa. Na mradi ulihitaji maneno ya kihesabu kufanya kazi, haikuwa na maana ya kuwa na kitu kingine chochote kirejeshe thamani kwa sababu kunaweza kuwa hakuna chochote kinachosubiri kurejeshwa.

Vikwazo viliondolewa na ujio wa lugha za muundo wa block, lakini wakati huo ulikuwa umechelewa. Tofauti kati ya misemo na kauli tayari imeanzishwa. Ilipita kutoka Fortran hadi Algol na zaidi kwa wazao wao.

Wakati lugha imeundwa kwa misemo kabisa, unaweza kutunga misemo kwa njia yoyote unayotaka. Unaweza kuandika ama (kwa kutumia syntax Safu)

(if foo (= x 1) (= x 2))

au

(= x (if foo 1 2))

7. Aina ya ishara. Wahusika ni tofauti na mifuatano, katika hali ambayo unaweza kuangalia usawa kwa kulinganisha viashiria.

8. Dokezo la msimbo kwa kutumia miti ya ishara.

9. Lugha nzima inapatikana kila wakati. Hakuna tofauti dhahiri kati ya wakati wa kusoma, kukusanya wakati na wakati wa kukimbia. Unaweza kukusanya au kuendesha msimbo unaposoma, au kusoma au kuendesha msimbo unapokusanya, au kusoma au kukusanya msimbo wakati unafanya kazi.

Nambari ya kuendesha wakati wa kusoma inaruhusu watumiaji kupanga upya syntax ya Lisp; nambari inayoendesha wakati wa kukusanya ndio msingi wa macros; ujumuishaji wa wakati wa kukimbia ndio msingi wa kutumia Lisp kama lugha ya kiendelezi katika programu kama vile Emacs; na hatimaye, usomaji wa wakati wa kukimbia huruhusu programu kuwasiliana kwa kutumia misemo, wazo lililoibuliwa upya hivi majuzi katika XML.

Hitimisho

Wakati Lisp ilipovumbuliwa kwa mara ya kwanza, mawazo haya yalikuwa mbali na mazoea ya kawaida ya upangaji yaliyoagizwa na maunzi yaliyopatikana mwishoni mwa miaka ya 1950.

Baada ya muda, lugha chaguo-msingi, iliyojumuishwa na mafanikio ya lugha maarufu, ilibadilika polepole kuelekea Lisp. Pointi 1-5 sasa zinakubaliwa na watu wengi. Pointi 6 inaanza kuonekana kwenye mkondo mkuu. Katika Python, kuna kifungu cha 7 kwa namna fulani, ingawa hakuna syntax inayofaa. Kipengee cha 8, ambacho (kilicho na kipengee cha 9) hufanya macros kuwezekana katika Lisp, bado kiko katika Lisp tu, labda kwa sababu (a) inahitaji mabano hayo au kitu kibaya sawa, na (b) ukiongeza ongezeko hili la hivi karibuni la nguvu, unaweza hawadai tena kuwa wamevumbua lugha mpya, bali tu kuwa na lahaja mpya ya Lisp; -)

Ingawa hii ni muhimu kwa watengeneza programu wa kisasa, ni ajabu kuelezea Lisp kwa suala la tofauti yake kutoka kwa mbinu za nasibu zilizopitishwa katika lugha zingine. Hii inaweza kuwa sio kile McCarthy alikuwa akifikiria. Lisp haikuundwa kusahihisha makosa ya Fortran; ilionekana zaidi kama matokeo ya kujaribu mahesabu ya axiomatize.

Chanzo: mapenzi.com

Kuongeza maoni