LL1 таратыу исемлегендә Revenge of the Nerds мәҡәләһендә күтәрелгән һорауҙар буйынса фекер алышҡанда, Пол Прескод күңелемдә ҡалған бер фекер яҙғайны.
Python-дың маҡсаты — ҡыҫҡалыҡ түгел, ә бер төрлөлөк һәм уҡымлылыҡ.
Тәү ҡарашҡа, был программалау теле тураһында әйтелгән шаҡтай ауыр ғәйепләү булып күренә. Мин аңлағанса, ҡыҫҡалыҡ = ҡеүәт. Әгәр шулай булһа, алмаштырып ҡуйһаҡ, ошо килеп сыға:
Python-дың маҡсаты — ҡеүәт түгел, ә бер төрлөлөк һәм уҡымлылыҡ.
һәм был үҙегеҙ теләп барырлыҡ компромисс (әгәр ул ысынында компромисс булһа) түгел кеүек. Был Python-дың маҡсаты программалау теле булараҡ нәтижәле булыу түгел, тип әйтеүгә бик яҡын.
Ҡыҫҡалыҡ = ҡеүәт була аламы? Был миңә мөһим һорау булып күренә, бәлки, тел дизайны менән ҡыҙыҡһынған һәр кем өсөн иң мөһим һорауҙыр, һәм уға туранан-тура ҡарау файҙалы булыр ине. Яуап ябай ғына «эйе» булыуына әлегә ныҡ ышанып етмәйем, ләкин башлар өсөн был яҡшы гипотеза кеүек күренә.
Гипотеза
Минең гипотезам: ҡыҫҡалыҡ — ул ҡеүәт, йә булмаһа, патологик миҫалдарҙы иҫәпкә алмағанда, уларҙы бер тип иҫәпләрлек кимәлдә яҡын төшөнсәләр.
Минеңсә, программалау телдәре тап ҡыҫҡалыҡ өсөн булдырылған. Компьютерҙарға ни эшләргә кәрәклеген туранан-тура машина телендә әйтһәң дә, улар бер ҙә көйһөҙләнмәҫ ине. Юғары кимәлдәге телдәрҙе эшләү мәшәҡәтен үҙ өҫтөбөҙгә алыуыбыҙҙың төп сәбәбе — машина теленең 1000 юлын талап иткән нәрсәне юғары кимәлдәге телдең 10 юлында әйтә (һәм иң мөһиме, уйлай) алырлыҡ рычаг алыу, тип уйлайым. Башҡаса әйткәндә, юғары кимәлдәге телдәрҙең төп мәғәнәһе — башланғыс кодты бәләкәйерәк итеү.
Әгәр ҙә башланғыс кодтың бәләкәйерәк булыуы юғары кимәлдәге телдәрҙең маҡсаты икән, ә ниндәйҙер нәмәнең ҡеүәте уның үҙ маҡсатына ни тиклем яҡшы өлгәшеүе менән үлсәнә икән, тимәк, программалау теленең ҡеүәте — уның һеҙҙең программаларҙы ни тиклем бәләкәй итә алыуы ул.
Киреһенсә, программаларығыҙҙы бәләкәй итмәгән тел программалау телдәре эшләргә тейешле эште насар башҡара — нәҡ яҡшы ҡырҡмаған бысаҡ йәки уҡып булмай торған баҫма текст кеүек.
Метрикалар
Ләкин ниндәй мәғәнәлә бәләкәй һуң? Код күләменең иң таралған үлсәме — код юлдары һаны. Ләкин был метрика иң еңел үлсәнә торған булғанға ғына иң ныҡ таралған, тип уйлайым. Берәй кем уны программа оҙонлоғоноң ысын һынауы тип ысынлап ышаналыр тип уйламайым. Төрлө телдәрҙә бер юлға күпме һалырға кәрәклеге тураһында төрлө ҡағиҙәләр бар; C телендә күп юлдарҙа бер-ике айырма билдәһенән башҡа бер нимә лә юҡ.
Тағы бер ябай һынау — программалағы символдар һаны, ләкин был да бик яҡшы түгел; ҡайһы бер телдәр (мәҫәлән, Perl) башҡаларға ҡарағанда ҡыҫҡараҡ идентификаторҙар ҡуллана, һәм шул ғына.
Минеңсә, программа күләменең яҡшыраҡ үлсәме — элементтар һаны булыр ине, бында элемент — башланғыс кодты сағылдырған ағас төҙөгәндә айырым төйөн булырлыҡ теләһә ниндәй нәмә. Үҙгәреүсән йәки функцияның исеме — элемент; бөтөн һан йәки йөҙөүсе нөктәле һан — элемент; туранан-тура бирелгән текстың (литералдың) өҙөгө — элемент; ҡалып элементы йәки форматлау директиваһы — элемент; яңы блок — элемент. Сиктәш осраҡтар ҙа бар (-5 бер элементмы әллә икәүме?), ләкин уларҙың күбеһе һәр тел өсөн бер үк төрлө тип уйлайым, шуға күрә улар сағыштырыуҙарға артыҡ йоғонто яһамай.
Был метрика ентекләп эшкәртеүгә мохтаж һәм аныҡ телдәр осрағында аңлатма талап итеүе мөмкин, ләкин ул тап кәрәкле нәмәне — программаның нисә өлөштән тороуын үлсәргә ынтыла, тип уйлайым. Был күнегеүҙә һеҙ һыҙасаҡ ағас — программаны күҙ алдына килтереү өсөн башығыҙҙа төҙөргә тейешле нәмә, һәм шуға күрә уның күләме уны яҙыу йәки уҡыу өсөн башҡарырға тейешле эш күләменә пропорциональ.
Дизайн
Бындай метрика беҙгә төрлө телдәрҙе сағыштырырға мөмкинлек бирер ине, ләкин, кәм тигәндә минең өсөн, уның төп ҡиммәте бында түгел. Ҡыҫҡалыҡ һынауының төп ҡиммәте — телдәрҙе проектлағанда ҡулланма булыуында. Телдәр араһындағы иң файҙалы сағыштырыу — бер үк телдең ике потенциаль варианты араһында. Программалар ҡыҫҡараҡ булһын өсөн мин был телдә нимә эшләй алам?
Әгәр программаның концептуаль йөкләмәһе уның ҡатмарлылығына пропорциональ булһа, һәм бирелгән программист билдәле бер концептуаль йөкләмәне генә күтәрә алһа, был һорау ошоға тиң: программистар мөмкин тиклем күберәк эш башҡарһын өсөн мин нимә эшләй алам? Ә был миңә ошондай һорау менән бер үк булып күренә: яҡшы телде нисек проектларға?
(Әйткәндәй, «бөтә телдәр ҙә тиң» тигән иҫке уйҙырманың ялған булыуын тел проектлауҙан да асығыраҡ күрһәткән башҡа бер нимә лә юҡ. Яңы тел проектлағанда, һеҙ ҡайһыһы яҡшыраҡ икәнен хәл итеү өсөн өҙлөкһөҙ ике телде — x-ты эшләһәм барлыҡҡа килгән телде һәм эшләмәһәм булғанын — сағыштыраһығыҙ. Әгәр был ысынлап та мәғәнәһеҙ һорау булһа, тәңкә ташлап ҡарау ҙа шул уҡ булыр ине.)
Ҡыҫҡалыҡҡа ынтылыу яңы идеялар табыуҙың яҡшы юлы кеүек тойола. Әгәр һеҙ бик күп төрлө программаларҙы ҡыҫҡараҡ итә торған берәй нәмә эшләй алһағыҙ, был осраҡлыҡ түгелдер, моғайын: һеҙ, бәлки, файҙалы яңы абстракция асҡанһығыҙҙыр. Хатта башланғыс кодта ҡабатланған өлгөләрҙе эҙләү аша ярҙам итерлек программа ла яҙа алыр инегеҙ. Башҡа телдәр араһында ҡыҫҡалыҡ буйынса танылған телдәр яңы идеялар эҙләү өсөн иң ҡулайҙары булыр ине: Forth, Joy, Icon.
Сағыштырыу
Белеүемсә, был мәсьәләләр тураһында беренсе булып Фред Брукс The Mythical Man-Month китабында яҙған. Ул программистар, ниндәй тел булыуына ҡарамаҫтан, көнөнә сама менән бер үк күләмдә код сығара, тип яҙғайны. Егерме йәштәремдә быны тәүге тапҡыр уҡығас, был минең өсөн ҙур аптырау булды һәм уның бик тәрән эҙемтәләре бар кеүек тойолдо. Был ике нәмәне аңлата ине: (a) программа тәьминәтен тиҙерәк яҙыуҙың берҙән-бер юлы — ҡыҫҡараҡ тел ҡулланыу, һәм (b) бының менән мәшәҡәтләнгән кеше быны эшләмәгән көнәркәштәрен артта ҡалдыра аласаҡ.
Брукстың гипотезаһы, әгәр ул дөрөҫ булһа, хакерлыҡтың үҙәгендә ята кеүек. Шул ваҡыттан алып мин был һорау буйынса рәсми тикшеренеүҙәрҙән алып айырым проекттар тураһындағы хәбәрҙәргә тиклем таба алған һәр дәлилгә ҙур иғтибар бүлдем. Уның һүҙҙәренә ҡаршы килгән бер нимә лә күргәнем булманы.
Мин әлегә үҙемә тулыһынса инандырырлыҡ күренгән дәлил күргәнем юҡ, һәм күрермен тип тә көтмәйем. Лутц Прехельттың программалау телдәрен сағыштырыуы кеүек тикшеренеүҙәр, мин көткән һөҙөмтәләрҙе бирһә лә, ғәҙәттә мәғәнәле һынау булыу өсөн артыҡ ҡыҫҡа булған мәсьәләләрҙе ҡуллана. Телдең яҡшыраҡ һынауы — яҙыу өсөн бер ай талап ителгән программаларҙа нимә килеп сығыуы. Әгәр һеҙ ҙә, минең кеүек, телдең төп маҡсаты — унда уйлау уңайлы булыуында (уйлап бөткәс компьютерға ни эшләргә кәрәклеген әйтеү генә түгел), тип иҫәпләһәгеҙ, берҙән-бер ысын һынау — унда ниндәй яңы нәмәләр яҙа алыуығыҙ. Шуға күрә алдан билдәләнгән спецификацияға тап килергә кәрәк булған теләһә ниндәй сағыштырыу бер аҙ дөрөҫ булмаған нәмәне һынай.
Телдең ысын һынауы — һеҙ уның ярҙамында яңы проблемаларҙы ни тиклем яҡшы аса һәм сисә алыуығыҙҙа, ә башҡа берәү формалаштырған проблеманы уның ярҙамында ни тиклем яҡшы сисә алыуығыҙҙа түгел. Был икәү — бөтөнләй төрлө критерийҙар. Сәнғәттә, сигеү һәм мозаика кеүек саралар, әгәр һеҙ нимә эшләргә теләгәнегеҙҙе алдан белһәгеҙ, бик яҡшы эшләй, ләкин белмәһәгеҙ — бөтөнләй яраҡһыҙ. Һүрәтте төшөрөү барышында асырға теләгәндә — мәҫәлән, кеше һүрәте кеүек ҡатмарлы нәмә менән эшләгәндә мотлаҡ шулай итергә тура килә — ҡәләм, тушь йәки майлы буяу кеүек һығылмалыраҡ сара ҡулланырға кәрәк. Ысынында иһә гобелендар һәм мозаикалар яһағанда тәүҙә картина төшөрәләр, шунан уны күсерәләр. («Картон» һүҙе башта нәҡ ошо маҡсатҡа тәғәйенләнгән картинаны тасуирлау өсөн ҡулланылған).
Был беҙҙең программалау телдәренең сағыштырма ҡеүәтен бер ҡасан да теүәл сағыштыра алмауыбыҙҙы аңлата. Беҙҙә нескә сағыштырыуҙар булыр, ләкин дөрөҫтәре булмаҫ. Атап әйткәндә, телдәрҙе сағыштырыу маҡсатында үткәрелгән махсус тикшеренеүҙәр, моғайын, бәләкәй мәсьәләләр ҡулланасаҡ һәм мотлаҡ алдан билдәләнгән мәсьәләләрҙе аласаҡ, шуға күрә ҡеүәтлерәк телдәрҙең көсөн кәметеп баһаларға ынтыласаҡ.
Ғәмәлиәт яланынан алынған отчёттар, «ғилми» тикшеренеүҙәргә ҡарағанда кәмерәк теүәл булһа ла, күпкә мәғәнәлерәк булыуы ихтимал. Мәҫәлән, Ericsson компанияһынан Ульф Вигер үткәргән тикшеренеү Erlang теленең C++ теленә ҡарағанда 4-10 тапҡырға ҡыҫҡараҡ булыуын һәм программа тәьминәтен эшләүҙе шул самаға тиҙләтеүен күрһәткән:
Ericsson-дың эске эшкәртмә проекттарын сағыштырыу, программа тәьминәтен эшләүҙең бөтә этаптарын индергәндә, ниндәй тел (Erlang, PLEX, C, C++ йәки Java) ҡулланылыуына бәйһеҙ рәүештә, юл/сәғәт етештереүсәнлеге оҡшаш булыуын күрһәтә. Төрлө телдәрҙе айырып торған нәмә — башланғыс кодтың күләме.
Был тикшеренеү шулай уҡ Брукстың китабында ситтән генә әйтелгән (сөнки ул төҙәтелгән код юлдарын үлсәгән) бер фекергә туранан-тура ҡағыла: ҡеүәтлерәк телдәрҙә яҙылған программаларҙа хаталар аҙыраҡ була. Селтәр коммутаторҙары кеүек ҡушымталарҙа был үҙе үк төп маҡсатҡа әйләнә, бәлки, программист етештереүсәнлегенән дә мөһимерәктер.
Тәме буйынса һынау
Ахыр сиктә, эске тойғоға таянырға кәрәк, тип уйлайым. Был телдә программалау ниндәй тойғо бирә? Иң яҡшы телде табыуҙың (йәки проектлауҙың) юлы — телдең һеҙгә уйларға ни тиклем яҡшы мөмкинлек биреүенә үтә һиҙгер булыу, шунан иң яҡшы тойғо биргәнен һайлау/проектлау. Әгәр телдең ниндәйҙер үҙенсәлеге уңайһыҙ йәки сикләүсе булһа, борсолмағыҙ, һеҙ быны үҙегеҙ белерһегеҙ.
Бындай үтә һиҙгерлектең үҙ хаҡы буласаҡ. Һеҙ сос булмаған, сотоҡ телдәрҙә программалауға түҙә алмауығыҙҙы күрерһегеҙ. Макросһыҙ телдәрҙә программалау минең өсөн түҙеп булғыһыҙ сикләүле тойола, нәҡ динамик типлаштырыуға күнеккән кешегә һәр үҙгәреүсәндең тибын иғлан итергә тура килгән һәм төрлө типтағы объекттар исемлеген төҙөп булмаған телгә кире ҡайтып программалау түҙеп булғыһыҙ сикләүле тойолған кеүек.
Мин генә түгел. Был хәлде башынан үткәргән күп кенә Lisp хакерҙарын беләм. Ысынында иһә, программалау телдәренең сағыштырма ҡеүәтенең иң дөрөҫ үлсәме — шул телде белгән кешеләрҙең ҡулланыу өлкәһенә ҡарамаҫтан, шул телде ҡулланыу мөмкинлеге булған теләһә ниндәй эшкә ризалашыу проценты булыуы мөмкин.
Сикләүсәнлек
Минеңсә, хакерҙарҙың күбеһе телдең сикләүсе тойолоуы нимә аңлатҡанын белә. Быны тойғанда нимә була? Минеңсә, был һеҙ барырға теләгән урам ябылғанда һәм кәрәкле урынға етеү өсөн оҙон урау юл менән барырға тура килгәндә барлыҡҡа килгән тойғоға оҡшаш. Һеҙ нимәлер әйтергә теләйһегеҙ, ә тел быға ирек бирмәй.
Бында ысынында нимә бара һуң? Минеңсә, сикләүсе тел — ул етерлек дәрәжәлә ҡыҫҡа булмаған тел. Проблема планлаштырған нәмәне әйтә алмауығыҙҙа ғына түгел. Тел һеҙҙе барырға мәжбүр иткән урау юлдың оҙонораҡ булыуында. Бына ошондай уй эксперименты яһап ҡарағыҙ. Һеҙ яҙырға теләгән ниндәйҙер программа бар, ти, һәм тел уны планлаштырғанса белдерергә бирмәй, ләкин уның урынына программаны ҡыҫҡараҡ булған башҡа бер ысул менән яҙырға мәжбүр итә. Кәм тигәндә минең өсөн был артыҡ сикләүсе булып тойолмаҫ ине. Был һеҙ барырға теләгән урам ябылған, ә сатлағы милиционер һеҙгә урау юл урынына ҡыҫҡа юлды күрһәткән кеүек булыр ине. Бик шәп бит!
Минеңсә, сикләү тойғоһоноң күпселеге (туҡһан проценты?) телдә яҙылған программаны башығыҙҙағынан оҙонораҡ итеп яҙырға мәжбүр булыуҙан килә. Сикләүсәнлек — ул күбеһенсә ҡыҫҡалыҡтың етмәүе. Шуға күрә тел сикләүсе булып тойолһа, был (күбеһенсә) уның етерлек ҡыҫҡа түгеллеген аңлата, ә тел ҡыҫҡа булмаһа, ул сикләүсе булып тойоласаҡ.
Уҡымлылыҡ
Мин башлаған өҙөктә тағы ике сифат телгә алына: бер төрлөлөк һәм уҡымлылыҡ. Мин бер төрлөлөктөң нимә икәнен, йәки бер төрлө һәм уҡымлы кодтың ябай уҡымлы кодтан ниндәй өҫтөнлөгө барлығын (әгәр булһа) белмәйем. Ләкин уҡымлылыҡ аҫтында нимә күҙҙә тотолоуын беләм шикелле, һәм уның да ҡыҫҡалыҡ менән бәйле булыуына ышанам.
Бында беҙ айырым бер код юлының уҡымлылығы менән бөтә программаның уҡымлылығын айырырға тейешбеҙ. Икенсеһе мөһимерәк. Basic теленең бер юлы Lisp-тың бер юлына ҡарағанда уҡымлыраҡ булыуы ихтималлығы менән ризалашам. Ләкин Basic телендә яҙылған программа Lisp-та яҙылған шул уҡ программаға ҡарағанда күберәк юлдарға эйә буласаҡ (бигерәк тә Гринспан еренә аяҡ баҫҡас). Basic программаһын уҡыуҙың дөйөм көсө, һис шикһеҙ, ҙурыраҡ буласаҡ.
дөйөм көс = бер юлға көс x юлдар һаны
Уҡымлылыҡтың ҡыҫҡалыҡҡа туранан-тура ҡеүәт кеүек үк пропорциональ булыуына шул тиклем ныҡ ышанмайым, ләкин, һис шикһеҙ, ҡыҫҡалыҡ уҡымлылыҡта бер ҡабатлашыусы (математик мәғәнәлә; өҫтәге тигеҙләмәне ҡарағыҙ) булып тора. Шуға күрә телдең маҡсаты ҡыҫҡалыҡ түгел, ә уҡымлылыҡ тип әйтеү мәғәнәһеҙ ҙә булыуы мөмкин; был маҡсат уҡымлылыҡ түгел, ә уҡымлылыҡ тип әйтеү кеүек булыр ине.
Тел менән тәүге тапҡыр осрашҡан ҡулланыусы өсөн бер юлдың уҡымлылығы башланғыс кодтың ҡурҡыныс күренмәүен аңлата. Тимәк, бер юлдың уҡымлы булыуы яҡшы маркетинг ҡарары булыуы мөмкин, хатта насар дизайн ҡарары булһа ла. Был кешеләргә өлөшләп түләү мөмкинлеге биреүҙең бик уңышлы алымына оҡшаш: уларҙы юғары башланғыс хаҡ менән ҡурҡытыу урынына, һеҙ түбән айлыҡ түләүҙе әйтәһегеҙ. Әммә бүлеп түләү һатып алыусы өсөн таҙа отолош, ә программист өсөн ябай ғына юл буйынса уҡымлылыҡ та шундай уҡтыр, моғайын. Һатып алыусы шул түбән түләүҙәрҙе бик күп тапҡыр түләйәсәк; ә программист айырым алғанда уҡымлы булған шул юлдарҙың бик күбен уҡыясаҡ.
Был компромисс программалау телдәренә тиклем үк булған. Әгәр романдар һәм гәзит мәҡәләләре уҡырға күнеккән булһағыҙ, математика буйынса мәҡәләне тәүге уҡыу тәжрибәһе ҡурҡыныс тойолорға мөмкин. Бер генә битте уҡыу өсөн ярты сәғәт ваҡыт китеүе бар. Шулай ҙа, проблема тамғалауҙарҙа түгел, тип тулыһынса ышанам, гәрсә шулай кеүек тойолһа ла. Математик мәҡәләне уҡыуы ауыр, сөнки ундағы идеялар ауыр. Әгәр шул уҡ идеяларҙы сәсмә тел менән аңлатһағыҙ (ҡыҫҡа тамғалауҙар уйлап тапҡанға тиклем математиктар шулай эшләргә мәжбүр булған), уларҙы уҡыу бер ҙә еңелерәк булмаҫ ине, сөнки мәҡәлә китап дәүмәленә тиклем үҫер ине.
Ниндәй кимәлдә?
Бер нисә кеше ҡыҫҡалыҡ = ҡеүәт тигән фекерҙе кире ҡаҡты. Минеңсә, уларҙың бер үк йәки төрлө булыуы тураһында бәхәсләшеү урынына: ҡыҫҡалыҡ ниндәй кимәлдә ҡеүәткә тиң? тип һорау файҙалыраҡ булыр ине. Сөнки юғары кимәлдәге телдәрҙең төп тәғәйенләнеше тап ҡыҫҡалыҡ икәне асыҡ. Әгәр был уларҙың берҙән-бер тәғәйенләнеше булмаһа, улар тағы нимә өсөн кәрәк, һәм башҡа был функциялар нисбәт буйынса ни тиклем мөһим?
Мин быны бәхәсте мәҙәниәтлерәк итеү өсөн генә тәҡдим итмәйем. Мин яуапты ысынлап та белергә теләйем. Ҡасан, әгәр булһа, тел үҙенең файҙаһына зыян килтерерлек дәрәжәлә артыҡ ҡыҫҡа була?
Мин башлаған гипотеза шунан ғибәрәт ине: патологик миҫалдарҙан тыш, ҡыҫҡалыҡты ҡеүәт менән бер тип иҫәпләргә була. Минең әйтергә теләгәнем шул ине: кемдер проектлаған теләһә ниндәй телдә улар бер үк булыр ине, ләкин әгәр кемдер махсус рәүештә был гипотезаны кире ҡағыр өсөн тел проектларға теләһә, моғайын, ул быны эшләй алыр ине. Дөрөҫөн әйткәндә, быһына ла тулыһынса ышанып етмәйем.
Программалар түгел, ә телдәр
Был урында асыҡлыҡ индерергә кәрәк: һүҙ айырым программаларҙың түгел, ә телдәрҙең ҡыҫҡалығы тураһында бара. Айырым программаларҙың артыҡ тығыҙ яҙылыуы, әлбиттә, мөмкин.
Мин был турала On Lisp китабында яҙғайным. Ҡатмарлы макрос үҙен аҡлаһын өсөн, үҙ оҙонлоғонан күп тапҡырға күберәк урынды һаҡлап ҡалырға тейеш булыуы мөмкин. Әгәр ҡатмарлы макрос яҙыу уны һәр ҡулланған һайын ун юл кодты экономияларға мөмкинлек бирһә, ә макростың үҙе ун юлдан торһа, уны бер тапҡырҙан артыҡ ҡулланғанда юлдар буйынса таҙа отош алырһығыҙ. Ләкин был барыбер насар аҙым булыуы мөмкин, сөнки макрос билдәләмәләрен ғәҙәти кодҡа ҡарағанда уҡыу ауырыраҡ. Уҡымлылыҡ буйынса таҙа яҡшырыу алғансы һеҙгә макросты ун йәки егерме тапҡыр ҡулланырға тура килеүе ихтимал.
Һәр телдең шундай компромистары барлығына ышанам (тел ҡеүәтлерәк булған һайын, баҫым арта бара, тип шикләнәм). Һәр программист ниндәйҙер тапҡыр кешенең шикле программалау алымдарын ҡулланып, саҡ ҡына ҡыҫҡартҡан кодын күргәне барҙыр.
Шуға күрә был турала бәхәс юҡ — кәм тигәндә, минең тарафтан. Айырым программалар үҙҙәренә зыян килтерерлек кимәлдә артыҡ ҡыҫҡа була ала. Һорау шунда: тел шундай була аламы? Тел программистарҙы дөйөм уҡымлылыҡ иҫәбенә (элементтар буйынса) ҡыҫҡа код яҙырға мәжбүр итә аламы?
Телдең артыҡ ҡыҫҡа булыуын күҙ алдына килтереүҙең ҡатмарлы булыуының бер сәбәбе — нимәнелер әйтеүҙең саманан тыш ҡыҫҡа юлы булһа, уның оҙонораҡ юлы ла булыуы ихтимал. Мәҫәлән, әгәр күп макростар йәки юғары тәртиптәге функциялар ҡулланған Lisp программалары артыҡ тығыҙ тойолһа, теләһәгеҙ, Pascal-ға изоморфлы код яҙа алаһығыҙ. Әгәр Arc телендә факториалды юғары тәртиптәге функцияны саҡырыу итеп күрһәтергә теләмәһәгеҙ (rec zero 1 * 1-), рекурсив билдәләмә лә яҙа алаһығыҙ: (rfn fact (x) (if (zero x) 1 (* x (fact (1- x))))) Башыма бер ниндәй ҙә миҫал килмәһә лә, телдең артыҡ ҡыҫҡа була алыу-алмауы тураһындағы һорау мине ҡыҙыҡһындыра. Һеҙҙе аңлайышһыҙ һәм буталсыҡ итеп код яҙырға мәжбүр иткән телдәр бармы? Әгәр берәй кемдә миҫалдар булһа, уларҙы бик ҙур ҡыҙыҡһыныу менән ҡарар инем.
(Иҫкәртеү: Мин юғарыла һүрәтләнгән «элементтар» метрикаһы буйынса бик тығыҙ булған программаларҙы эҙләйем, айырма билдәләрен төшөрөп ҡалдырып булған һәм һәр нәмәнең бер хәрефле исеме булғанға ғына ҡыҫҡа булған программаларҙы ғына түгел.)