pg.gimran.org

Тел дизайны тураһында биш һорау

Пол Грэмдың «Тел дизайны тураһында биш һорау» эссеһы тәржемәһе. Төп нөсхә: https://paulgraham.com/langdes.html. Машина тәржемәһе (Gemini).

Translation of Paul Graham's essay 'Five Questions about Language Design'. Original: https://paulgraham.com/langdes.html. Machine translation (Gemini).

(Был 2001 йылдың 10 майында MIT-ла үткән программалау телдәре дизайны буйынса панель фекер алышыу өсөн яҙған ҡайһы бер яҙмаларым.)

1. Программалау телдәре кешеләр өсөн тәғәйенләнгән.

Программалау телдәре — кешеләрҙең компьютер менән аралашыу ысулы. Ҡәтғи һәм бер мәғәнәле булған теләһә ниндәй телдә һөйләшеү компьютер өсөн бер тирә. Юғары кимәлдәге телдәрҙең булыу сәбәбе — кешеләрҙең машина телендә эшләй алмауында. Программалау телдәренең төп маҡсаты — беҙҙең ярлы, көсһөҙ кеше мейеһен сикһеҙ күп ваҡ-төйәк деталдәр аҫтында батып ҡалыуҙан ҡотҡарыу.

Архитекторҙар проектлау мәсьәләләренең ҡайһы берҙәре башҡаларына ҡарағанда шәхсирәк икәнен белә. Иң таҙа һәм абстракт проектлау мәсьәләләренең береһе — күперҙәр эшләү. Унда һеҙҙең бурысығыҙ, нигеҙҙә, бирелгән арауыҡты мөмкин тиклем әҙерәк материал менән ҡаплауҙан ғибәрәт. Спектрҙың икенсе осо — ул ултырғыстар проектлау. Ултырғыс дизайнерҙарына үҙ ваҡытын кеше янбаштары тураһында уйланып үткәрергә тура килә.

Программа тәьминәте лә шундай уҡ төрлөлөккә эйә. Селтәр аша мәғлүмәтте йүнәлтеү алгоритмдарын эшләү — күпер проектлау кеүек яҡшы, абстракт мәсьәлә. Ә программалау телдәрен проектлау ул ултырғыс эшләүгә оҡшаш: бында бөтә нәмә кеше көсһөҙлөктәре менән эш итеүгә ҡайтып ҡала.

Күбебеҙ быны танырға яратмай. Ғәйәт ҙур математик нәфислеккә эйә системалар эшләү беҙҙең күпселегебеҙ өсөн кеше көсһөҙлөктәренә яраҡлашыуға ҡарағанда күпкә йәлеп итеүсән күренә. Һәм математик нәфислеккә лә урын бар: нәфислектең ҡайһы бер төрҙәре программаларҙы аңлауҙы еңеләйтә. Ләкин нәфислек үҙ маҡсаты булып тормай.

Һәм телдәр кеше көсһөҙлөктәренә яраҡлаштырылып эшләнә тигәндә, мин телдәр насар программалаусылар өсөн проектланырға тейеш тип әйтмәйем. Ысынында, һеҙ телде иң яҡшы программалаусылар өсөн эшләргә тейешһегеҙ тип уйлайым, ләкин иң яҡшы программистарҙың да сикләүҙәре бар. Бөтә үҙгәреүсәндәре бөтөн һанлы индекслы x хәрефенән генә торған телдә кемдеңдер программа яҙырға теләүен күҙ алдына килтерә алмайым.

2. Үҙегеҙ һәм дуҫтарығыҙ өсөн проектлағыҙ.

Программалау телдәре тарихына ҡараһағыҙ, иң яҡшыларының күбеһе авторҙарҙың үҙҙәре ҡулланыу өсөн эшләнгән телдәр булған, ә иң насарҙарының күбеһе башҡа кешеләр ҡулланһын өсөн яһалған.

Телдәр башҡа кешеләр өсөн проектланғанда, ул һәр ваҡыт башҡаларҙың билдәле бер төркөмө була: тел дизайнеры кеүек аҡыллы булмаған кешеләр. Шуға күрә һеҙгә өҫтән түбән ҡарап һөйләшкән тел килеп сыға. Cobol — бының иң сикке осрағы, ләкин күп кенә телдәр ошо рух менән һуғарылған.

Был телдең ни тиклем абстракт булыуы менән бәйле түгел. C шаҡтай түбән кимәлле, ләкин ул үҙ авторҙары ҡулланһын өсөн проектланған, һәм хакерҙар уны нәҡ шуның өсөн ярата ла.

Телдәрҙе насар программистар өсөн проектлау файҙаһына дәлил — насар программистарҙың яҡшыларға ҡарағанда күберәк булыуы. Бәлки, шулайҙыр ҙа. Әммә шул бер нисә яҡшы программалаусы бөтә программа тәьминәтенең ғәйәт ҙур өлөшөн яҙа.

Мине ошо һорау ҡыҙыҡһындыра: иң шәп хакерҙарға оҡшарлыҡ телде нисек эшләргә? Минеңсә, был һорау «яҡшы программалау телен нисек эшләргә?» тигән һорауға тиң, ләкин улай булмаһа ла, ул һәр хәлдә бик ҡыҙыҡлы һорау.

3. Программалаусыға мөмкин тиклем күберәк контроль бирегеҙ.

Күп кенә телдәрҙә (бигерәк тә башҡалар өсөн проектланғандарында) тәрбиәсе холоҡ-фиғеле хакимлыҡ итә: улар һеҙгә үҙҙәре насар тип тапҡан нәмәләрҙе эшләргә бирмәҫкә тырыша. Мин быға ҡапма-ҡаршы ҡарашты өҫтөн күрәм: программисҡа мөмкин тиклем күберәк контроль бирегеҙ.

Мин Lisp телен тәү тапҡыр өйрәнгәндә, иң оҡшағаны уның мине тиң хоҡуҡлы партнер итеп күреүе булды. Уға тиклем өйрәнгән башҡа телдәрҙә тел үҙе айырым һәм унда яҙылған минең программам айырым ине, улар икеһе бер-береһенән ныҡ айырылып тора ине. Ә Lisp-та мин яҙған функциялар һәм макростар телдең үҙен төҙөгән элементтарҙан бер ҙә айырылмай ине. Теләһәм, мин телдең үҙен яңынан яҙа ала инем. Был асыҡ кодлы программа тәьминәте (open-source) кеүек үк йәлеп итеүсән ине.

4. Ҡыҫҡалыҡҡа ынтылығыҙ.

Ҡыҫҡалыҡты баһалап бөтмәйҙәр, хатта уны кәмһәтәләр. Әммә хакерҙарҙың күңеленә күҙ һалһағыҙ, уларҙың быны ысынлап та яратыуын күрерһегеҙ. Хакерҙарҙың, мәҫәлән, APL телендә ни бары бер нисә юл код менән ниндәй ғәжәп нәмәләр эшләй алыуҙары тураһында нисек һоҡланып һөйләгәнен нисә тапҡыр ишеткәнегеҙ бар? Ысынлап та аҡыллы кешеләр ихлас яратҡан һәр нәмәгә иғтибар итергә кәрәк тип уйлайым.

Программаларҙы ҡыҫҡараҡ итеү өсөн эшләнгән һәр нәмә тиерлек файҙалы тип иҫәпләйем. Китапхана функциялары күп булырға тейеш; асыҡ күрһәтелмәйенсә генә аңлашылырлыҡ һәр нәмә шулай булырға тейеш; синтаксис сиктән тыш тығыҙ булырға тейеш; хатта атамалар ҙа ҡыҫҡа булырға тейеш.

Һәм программалар ғына түгел, ҡулланма ла йоҡа булырға тейеш. Ҡулланмаларҙың яҡшы ғына өлөшөн аңлатмалар, иҫкәртмәләр, киҫәтеүҙәр һәм айырым осраҡтар биләй. Әгәр ҡулланманы ҡыҫҡартырға үҙегеҙҙе мәжбүр итһәгеҙ, иң яҡшы осраҡта һеҙ быға телдәге шул хәтлем күп аңлатыу талап иткән урындарҙы төҙәтеү аша өлгәшәсәкһегеҙ.

5. Хакерлыҡтың асылын танығыҙ.

Күп кеше хакерлыҡ математика, йә булмаһа тәбиғәт фәндәре һымаҡ бер нәмә булһын ине тип теләй. Минеңсә, хакерлыҡ күберәк архитектураға оҡшаған. Архитектура физика менән бәйле, шул мәғәнәлә ки, архитекторҙар емерелмәй торған биналар проектларға тейеш, әммә архитекторҙарҙың төп маҡсаты — статика буйынса яңы асыштар яһау түгел, ә шәп биналар ҡороу.

Хакерҙар үҙҙәре иң яратҡан нәмәне — шәп программалар яһауҙы үҙ итә. Һәм, исмаһам, үҙебеҙҙең аңыбыҙҙа бөйөк программалар яҙыуҙың үҙе үк һоҡланырлыҡ эш булыуын онотмаҫҡа тейешбеҙ, хатта был хеҙмәт ғилми мәҡәләләрҙең ғәҙәти интеллектуаль валютаһына еңел генә әйләнмәһә лә. Интеллектуаль йәһәттән, программалаусылар яратып ҡулланырлыҡ тел яһау — ғилми хеҙмәт баҫтырып сығарырлыҡ ниндәйҙер идеяны сағылдырған ҡот осҡос насар тел яһау менән бер тирә ҡиммәткә эйә.

1. Ҙур китапханаларҙы нисек ойошторорға?

Китапханалар программалау телдәренең көндән-көн мөһимерәк өлөшөнә әйләнә бара. Улар шулай уҡ ҙурая, һәм был хәүефле булырға мөмкин. Әгәр кәрәкле нәмәне эшләй торған китапхана функцияһын табыу уны үҙегеҙ яҙыуға ҡарағанда күберәк ваҡыт алһа, ул бөтә код һеҙҙең ҡулланмағыҙҙы ҡалынайтыуҙан башҡа бер нәмә лә эшләмәй. (Symbolics ҡулланмалары быға асыҡ миҫал). Шуға күрә, беҙгә китапханаларҙы ойоштороу ысулдары өҫтөндә эшләргә тура килер тип уйлайым. Идеаль осраҡта уларҙы программист ниндәй китапхана саҡырыуы тап шул дөрөҫ эште башҡарасағын самалап белерлек итеп проектларға кәрәк.

2. Кешеләр ысынлап та префикслы синтаксистан ҡурҡамы?

Был асыҡ проблема, шул мәғәнәлә ки, мин уның тураһында йылдар буйы уйландым һәм һаман да яуабын белмәйем. Префикслы синтаксис миңә тулыһынса тәбиғи күренә, бәлки, математиканан башҡа. Әммә Lisp-тың киң таралмауының күп өлөшө ябай ғына ғәҙәти булмаған синтаксис менән аңлатылыуы ихтимал. Әгәр был дөрөҫ булһа, был турала нимәлер эшләргәме-юҡмы икәне — башҡа һорау.

3. Серверға нигеҙләнгән программалар өсөн нимә кәрәк?

Минеңсә, алдағы егерме йылда яҙыласаҡ иң ҡыҙыҡлы яңы ҡушымталарҙың күбеһе веб-ҡушымталар буласаҡ, йәғни серверҙа ятҡан һәм һеҙҙең менән веб-браузер аша аралашҡан программалар. Һәм был төрҙәге программаларҙы яҙыу өсөн беҙгә ҡайһы бер яңы нәмәләр кәрәк булыуы ихтимал.

Беҙгә кәрәк буласаҡ нәмәләрҙең береһе — серверға нигеҙләнгән ҡушымталарҙың сығарылыу яңы ысулына булышлыҡ итеү. Десктоп программалары кеүек йылына бер йәки ике ҙур релиз урынына, сервер ҡушымталары бер-бер артлы килгән бәләкәй үҙгәрештәр теҙмәһе булараҡ сығарыла. Һеҙҙә көнөнә биш йәки ун релиз булыуы ихтимал. Һәм ҡағиҙә булараҡ, һәр кем һәр ваҡыт иң һуңғы версияны ҡулланасаҡ.

Программаларҙы төҙәтеүгә (debug) уңайлы итеп нисек проектлап булғанын беләһегеҙ бит? Сервер программалары ла нәҡ шулай уҡ еңел үҙгәртелә торған (changeable) итеп проектланырға тейеш. Һеҙ уны еңел генә үҙгәртә алырға, йәки, исмаһам, нимә бәләкәй үҙгәреш, ә нимә ҙур әһәмиәткә эйә икәнен белергә тейешһегеҙ.

Сервер программалары өсөн файҙалы булырға мөмкин булған тағы бер нәмә, ғәжәп булһа ла — дауамдар (continuations). Веб-ҡушымталарҙа һеҙ веб-сессияның тәбиғәтенән үк хәл-торошто һаҡламаған (stateless) донъяһында аҫпрограммалар (subroutines) эффектын алыу өсөн continuation-passing стиле кеүек нәмәне ҡуллана алаһығыҙ. Бәлки, әгәр бик ҡыйбатҡа төшмәһә, ысын дауамдарға (actual continuations) эйә булыу файҙалы булыр ине.

4. Асылырға ниндәй яңы абстракциялар ҡалды?

Был өмөт ни тиклем нигеҙле икәнен төгәл белмәйем, ләкин үҙем өсөн иң ныҡ эшләргә теләгән нәмәм — яңы бер абстракция асыу, беренсе класлы функциялар йәки рекурсия, йә хатта асҡыс һүҙле параметрҙар (keyword parameters) биргән кеүек ҙур үҙгәреш яһай алырлыҡ нәмә. Был мөмкин булмаған хыял булыуы ихтимал. Бындай нәмәләр бик йыш асылмай. Ләкин мин һәр ваҡыт эҙләнеүҙәмен.

1. Үҙегеҙ теләгән теләһә ниндәй телде ҡуллана алаһығыҙ.

Элек ғәмәли программалар яҙыу десктоп программаларын яҙыуҙы аңлата ине. Ә десктоп программаларында ҡушымтаны операцион система яҙылған шул уҡ телдә яҙыуға ҙур ынтылыш бар ине. Шулай итеп, ун йыл элек программа яҙыу ғәмәлдә C телендә программа яҙыуҙы аңлата ине. Ахырҙа традиция барлыҡҡа килде: ғәмәли программалар ғәҙәти булмаған телдәрҙә яҙылырға тейеш түгел. Һәм был традиция шул тиклем оҙаҡ үҫеште, хатта менеджерҙар һәм венчур инвесторҙары кеүек техник булмаған кешеләр ҙә уны үҙләштерҙе.

Серверға нигеҙләнгән программа тәьминәте был тотош моделде селпәрәмә килтерә. Сервер программалары менән һеҙ теләгән теләһә ниндәй телде ҡуллана алаһығыҙ. Быны әлегә бер кем дә тиерлек аңламай (бигерәк тә менеджерҙар һәм венчур инвесторҙары түгел). Бер нисә хакер аңлай, һәм тап шуға күрә беҙ Perl һәм Python кеүек яңы, бойондороҡһоҙ телдәр тураһында ишетәбеҙ. Беҙ Perl һәм Python тураһында кешеләр уларҙы Windows ҡушымталары яҙыу өсөн ҡулланғанға күрә ишетмәйбеҙ.

Программалау телдәрен проектлау менән ҡыҙыҡһынған кешеләр булараҡ, был беҙҙең өсөн эшебеҙҙең хәҙер ысын аудиторияһы барлыҡҡа килеү ихтималлығын аңлата.

2. Тәҙлек профилировщиктарҙан килә.

Тел дизайнерҙары, йәки, исмаһам, телде тормошҡа ашырыусылар (implementors), тиҙ эшләй торған код сығарыусы компиляторҙар яҙырға ярата. Ләкин мин ҡулланыусылар өсөн телдәрҙе тиҙ иткән нәмә тап ошо тип уйламайым. Кнут күптән инде тиҙлектең тик бер нисә критик тар урында ғына мөһим булыуын күрһәткәйне. Һәм быны һынап ҡараған һәр кем ул тар урындарҙың ҡайҙа булыуын алдан самалап булмағанын белә. Быға яуап — профилировщиктар.

Тел дизайнерҙары дөрөҫ булмаған мәсьәләне сисә. Ҡулланыусыларға тиҙ эшләү өсөн бенчмарктар кәрәкмәй. Уларға үҙ программаларының тап ҡайһы өлөштәрен яңынан яҙырға кәрәклеген күрһәтә алған тел кәрәк. Ғәмәлдә тиҙлек тап ошонан килә. Шуға күрә, әгәр тел тормошҡа ашырыусылар компилятор оптимизацияларына сарыф иткән ваҡыттарының яртыһын алып, уны яҡшы профилировщик яҙыуға тотонһалар, был барыһы өсөн дә отошло булыр ине.

3. Тел дизайнын алға этәреү өсөн ҡушымта кәрәк.

Был мотлаҡ ҡағиҙә булмаҫҡа ла мөмкин, ләкин иң яҡшы телдәрҙең барыһы ла улар ярҙамында яҙылған ниндәйҙер ҡушымта менән бергә үҫешкән һымаҡ. C системалы программалау өсөн кәрәк булған кешеләр тарафынан яҙылған. Lisp өлөшләтә символик дифференциаллау башҡарыу өсөн эшләнгән, һәм Маккарти эшкә тотоноу өсөн шул тиклем ашҡынып торған, хатта 1960 йылда Lisp буйынса беренсе мәҡәләһендә үк дифференциаллау программаларын яҙған булған.

Әгәр ҡушымтағыҙ ниндәйҙер яңы проблеманы сисһә, был бигерәк тә яҡшы. Был һеҙҙең телде программалаусыларға кәрәкле яңы мөмкинлектәргә эйә булырға этәрәсәк. Шәхсән үҙем сервер ҡушымталары яҙыу өсөн яҡшы булған тел яҙыу менән ҡыҙыҡһынам.

[Панель ваҡытында Гай Стил дә был фекерҙе әйтте, өҫтәмә рәүештә ҡушымта телдең үҙ компиляторын яҙыуҙан ғибәрәт булырға тейеш түгел, әгәр телегеҙ махсус рәүештә компиляторҙар яҙыу өсөн тәғәйенләнмәгән булһа, тигән иҫкәрмә менән.]

4. Тел тиҙ яҙылып ташлана торған программалар өсөн яҡшы булырға тейеш.

Ташлап ҡуйыла торған программаның (throwaway program) нимә икәнен беләһегеҙ: ниндәйҙер сикле бурыс өсөн тиҙ генә яҙған нәмәгеҙ. Минеңсә, тирә-яҡҡа ҡараһағыҙ, бик күп ҙур, етди программаларҙың тап шундай ваҡытлыса программалар булараҡ башланыуын күрер инегеҙ. Күпселек программалар тап ташлап ҡуйыла торған программалар булараҡ башланған булһа, мин һис тә ғәжәпләнмәҫ инем. Шуға күрә, ғөмүмән алғанда программа тәьминәте яҙыу өсөн яҡшы тел яһарға теләһәгеҙ, ул ваҡытлыса программалар яҙыу өсөн яҡшы булырға тейеш, сөнки был — күпселек программаларҙың ҡарышлауыҡ үҫеш стадияһы.

5. Синтаксис семантика менән бәйле.

Синтаксис һәм семантиканы бер-береһенән тулыһынса айырым тип уйлау ғәҙәткә ингән. Был ҡот осҡос яңғырар, ләкин бәлки улар айырым да түгелдер. Минеңсә, телдә нимә күрергә теләүегеҙ уны нисек белдереүегеҙгә бәйле булыуы ихтимал.

Яҡында ғына Роберт Моррис менән һөйләшкәйнем, һәм ул инфикслы синтаксислы телдәрҙә операторҙарҙы ҡайтанан йөкмәтеү (operator overloading) ҙурыраҡ еңеү килтерә тип билдәләне. Префикслы синтаксислы телдә һеҙ билдәләгән теләһә ниндәй функция ғәмәлдә оператор булып тора. Әгәр уйлап сығарған яңы һан төрөгөҙ өсөн плюс билдәләргә теләһәгеҙ, уларҙы ҡушыу өсөн ябай ғына яңы функция билдәләй алаһығыҙ. Әгәр быны инфикслы синтаксислы телдә эшләһәгеҙ, ҡайтанан йөкмәтелгән операторҙы ҡулланыу менән функция саҡырыуы араһында тышҡы күренештә ҙур айырма була.

1. Яңы программалау телдәре.

1970-се йылдарҙа яңы программалау телдәрен проектлау модала ине. Һуңғы ваҡытта улай булманы. Ләкин серверға нигеҙләнгән программалар яңы телдәрҙе ҡабаттан модаға индерер тип уйлайым. Сервер программалары менән һеҙ теләгән теләһә ниндәй телде ҡуллана алаһығыҙ, шуға күрә кемдер булғандарынан ысынлап та яҡшыраҡ күренгән тел проектлаһа, хәүефкә барып, уны ҡулланыусы кешеләр табыласаҡ.

2. Ваҡытты бүлешеү (Time-Sharing).

Ричард Келси һуңғы панелдә быны ваҡыты яңынан килеп еткән идея тип атаны, һәм мин уның менән тулыһынса килешәм. Минең самалауымса (һәм, күрәһең, Microsoft самалауынса ла), иҫәпләүҙәрҙең күбеһе десктоптан алыҫтағы серверҙарға күсәсәк. Икенсе төрлө әйткәндә, ваҡыт бүлешеү кире ҡайтты. Һәм тел кимәлендә быға булышлыҡ итеү кәрәк булыр тип уйлайым. Мәҫәлән, мин Ричард менән Джонатан Риздың Scheme 48 эсендә процестарҙы планлаштырыуҙы (process scheduling) тормошҡа ашырыу буйынса ҙур эш башҡарғандарын беләм.

3. Һөҙөмтәлелек.

Һуңғы ваҡытта компьютерҙар ниһайәт етерлек дәрәжәлә етеҙ булды кеүек тойола башлағайны. Беҙ байт-код тураһында көндән-көн йышыраҡ ишетә башланыҡ, был иһә, минеңсә, беҙҙә иркенәйтә торған артыҡ процессор циклдары бар кеүек хис тыуҙыра. Ләкин сервер программалары менән беҙҙә ундай мөмкинлек булмаҫ тип уйлайым. Был программа тәьминәте эшләй торған серверҙар өсөн кемгәлер түләргә тура киләсәк, һәм бер машинала хеҙмәтләндерә алырлыҡ ҡулланыусылар һаны уларҙың төп сығымдарын бүлеүсе һан буласаҡ.

Шуға күрә етеҙлек, исмаһам иҫәпләүҙең тар урындарында, мөһим буласаҡ тип уйлайым. Бигерәк тә инеү/сығыу (i/o) ғәмәлдәрен тиҙ башҡарыу мөһим буласаҡ, сөнки сервер ҡушымталары ғәйәт күп i/o башҡара.

Ахыр сиктә байт-код отошло булмай сығыуы ла ихтимал. Әлеге ваҡытта Sun һәм Microsoft байт-кодтар ярышы кеүек нәмәлә ҡапма-ҡаршы тора. Ләкин улар быны байт-кодтың үҙе яҡшы идея булғанға түгел, ә байт-код үҙҙәрен был процессҡа ҡыҫтырыу өсөн уңайлы урын булғанға күрә эшләй. Тотош был яу яланының ситтә ҡалып үтеүе ихтимал. Был ҡыҙыҡ булыр ине.

1. Клиенттар.

Был бары тик фараз ғына, ләкин минең фаразымса, күпселек ҡушымталар өсөн еңеүсе модель саф серверға нигеҙләнгәне буласаҡ. Бөтә кешелә һеҙҙең клиент буласаҡ тигән фаразға таянып программа яҙыу — һәр кем намыҫлы ғына буласаҡ тигән өмөт менән йәмғиәт ҡороуға оҡшаш. Был, әлбиттә, бик уңайлы булыр ине, ләкин бының бер ҡасан да булмаясағын күҙ уңында тоторға кәрәк.

Вебҡа ниндәйҙер юл менән инә алған яйланмалар бик ныҡ үрсейәсәк, һәм улар тураһында берҙән-бер аныҡ әйтә алған нәмәгеҙ — уларҙың ябай html һәм формаларҙы хуплай алыуы ғына буласаҡ тип уйлайым. Кәрәҙле телефонығыҙҙа браузер булырмы? palm pilot-ығыҙҙа телефон булырмы? blackberry-ғыҙҙың экраны ҙурыраҡ булырмы? gameboy-ығыҙҙа вебты ҡарай алырһығыҙмы? Сәғәтегеҙҙәме? Мин белмәйем. Һәм бөтә нәмәнең серверҙа ғына булыуына таянһам, миңә быны белергә лә кәрәкмәй. Бөтә мейене серверҙа тотоу күпкә тотороҡлораҡ.

2. Объектҡа йүнәлтелгән программалау.

Был бәхәсле һорау икәнен аңлайым, ләкин мин объектҡа йүнәлтелгән программалауҙы шул тиклем ҙур нәмә тип иҫәпләмәйем. Тәҙрә системалары, симуляциялар һәм cad-программалар кеүек ошо үҙенсәлекле мәғлүмәт структураһына мохтаж булған билдәле бер төр ҡушымталар өсөн был бик яҡшы модель тип уйлайым. Ләкин ни өсөн ул бөтә программалау өсөн үрнәк булырға тейешлеген аңламайым.

Ҙур компанияларҙағы кешеләрҙең объектҡа йүнәлтелгән программалауҙы яратыуының бер сәбәбе — ул эшкә оҡшаған бик күп күренеш тыуҙыра тип уйлайым. Мәҫәлән, ғәҙәти рәүештә бөтөн һандар исемлеге тип кенә күрһәтеп булған бер нәмәне хәҙер төрлө ҡоролмалар, ығы-зығы һәм ҡаңғырыш менән тулған класс итеп күрһәтеп була.

Объектҡа йүнәлтелгән программалауҙың тағы бер ылыҡтырғыс яғы — методтар һеҙгә беренсе класлы функциялар эффектының бер өлөшөн бирә. Ләкин Lisp программалаусылары өсөн был күптән билдәле иҫке хәбәр. Ысын беренсе класлы функцияларығыҙ булғанда, бөтә нәмәне кластар һәм методтар ҡалыбына көсләп тығыу урынына, һеҙ уларҙы алда торған мәсьәләгә ҡарап нисек уңайлы, шулай ҡуллана алаһығыҙ.

Тел дизайны өсөн был нимәне аңлата тигәндә, минеңсә, һеҙ объектҡа йүнәлтелгән программалауҙы сиктән тыш тәрән итеп төҙөргә тейеш түгелһегеҙ. Бәлки, дөрөҫ яуап — дөйөмөрәк, төп нигеҙ булырлыҡ нәмәләр биреү һәм кешеләргә үҙҙәре теләгән теләһә ниндәй объект системаларын китапханалар рәүешендә проектларға мөмкинлек биреүҙер.

3. Комитет тарафынан проектлау.

Телегеҙҙең комитет тарафынан проектланыуы — ҙур ҡапҡан, һәм был барыһы ла белгән сәбәптәр арҡаһында ғына түгел. Комитеттарҙың ғәҙәттә тарҡау, эҙмә-эҙлекһеҙ дизайндар тыуҙырыуын барыһы ла белә. Ләкин тағы ла ҙурыраҡ хәүеф шунда: улар хәүеф-хәтәргә бармаясаҡ. Бер кеше етәкселек иткәндә, ул комитет бер ҡасан да килешмәйәсәк хәүефле аҙымдарға бара ала.

Әммә яҡшы тел проектлау өсөн хәүефкә барыу кәрәкме? Күптәр тел дизайны дөйөм ҡабул ителгән аҡылға ярайһы уҡ яҡын торорға тейеш булған өлкә тип шикләнергә мөмкин. Мин бының дөрөҫ түгеллегенә бәхәсләшергә әҙермен. Кешеләр эшләгән башҡа бөтә нәмәлә лә бүләк хәүеф-хәтәргә пропорциональ. Ни өсөн тел дизайны башҡаса булырға тейеш һуң?