pg.gimran.org

Lisp тамырлары

Пол Грэмның «Lisp тамырлары» эссесы тәрҗемәсе. Төп нөсхә: https://paulgraham.com/rootsoflisp.html. Машина тәрҗемәсе (Gemini).

Translation of Paul Graham's essay 'The Roots of Lisp'. Original: https://paulgraham.com/rootsoflisp.html. Machine translation (Gemini).

(Мин бу мәкаләне Маккарти нәрсәне ачканын үземә аңлау җиңелрәк булсын өчен яздым. Lisp телендә программалаштыру өчен бу нәрсәне белү мәҗбүри түгел, ләкин ул Lisp'ның асылын — аның килеп чыгышын да, семантик үзәген дә — аңларга теләүче һәркемгә файдалы булыр. Әлеге үзәкнең булуы — Lisp'ның аерып торучы сыйфатларының берсе һәм башка телләрдән аермалы буларак, Lisp'ның ни өчен диалектлары барлыгының сәбәбе.)

1960 елда Джон Маккарти искиткеч бер мәкалә бастырып чыгарды, анда ул программалаштыру өчен Евклид геометрия өчен эшләгән кебек нәрсәне эшләде. Ул бер уч гади оператор һәм функцияләр нотациясе нигезендә тулы бер программалаштыру телен төзеп булуын күрсәтте. Ул бу телне «List Processing» сүзләреннән кыскартып Lisp дип атады, чөнки аның төп идеяләренең берсе — код өчен дә, мәгълүматлар өчен дә исемлек (list) дип аталган гади мәгълүмат структурасын куллану иде.

Маккарти нәрсә ачканын аңлау мөһим, бу санаклар тарихындагы истәлекле вакыйга гына түгел, ә безнең көннәрдә программалаштыру нинди юнәлештә үсүенең моделе дә. Миңа калса, бүгенге көнгә кадәр программалаштыруның ике чыннан да саф, эзлекле моделе булды: C моделе һәм Lisp моделе. Бу ике модель — араларындагы сазлыклы үзәнлекләр өстендә калкып торучы биеклекләр кебек. Санаклар көчлерәк була барган саен, эшләнә торган яңа телләр Lisp моделе ягына эзлекле рәвештә күчә бара. Соңгы 20 елда яңа программалаштыру телләре ясауның популяр рецепты шундый иде: хисаплауларның C моделен алу һәм аңа, өлешләп, Lisp моделеннән алынган динамик типлаштыру (runtime typing) һәм чүп җыю (garbage collection) кебек элементлар өстәү.

Бу мәкаләдә мин Маккарти нәрсәне ачканын мөмкин кадәр гадирәк сүзләр белән аңлатырга тырышачакмын. Мәсьәлә кырык ел элек кемдер уйлап тапкан кызыклы теоретик нәтиҗә турында гына белүдә түгел, ә телләрнең кая таба юл тотуын күрсәтүдә. Lisp'ның гадәти булмаган ягы — асылда, Lisp'ны билгеләүче сыйфаты — аның үз-үзендә языла алуында. Маккарти моның белән нәрсәне күздә тотканын аңлар өчен, без аның математик нотациясен эшләүче Common Lisp кодына тәрҗемә итеп, аның адымнарын кабатлап узачакбыз.