pg.gimran.org

Ни өсөн Arc айырыуса объект-йүнәлешле түгел

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

Translation of Paul Graham's essay 'Why Arc Isn't Especially Object-Oriented'. Original: https://paulgraham.com/noop.html. Machine translation (Gemini).

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

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

Минеңсә, кешеләрҙең объект-йүнәлешле программалауҙы яратыуының биш сәбәбе бар, һәм шуларҙың өс ярымы насар:

Әгәр ҙә һеҙҙә лексик йомолоуҙары (closures) йәки макростары булмаған статик типлы тел булһа, объект-йүнәлешле программалау ҡыҙыҡлы күренә. Ниндәйҙер кимәлдә ул ошо сикләүҙәрҙе урап үтеү юлын тәҡдим итә. (Гринспендың унынсы ҡағиҙәһен ҡарағыҙ.)

Объект-йүнәлешле программалау ҙур компанияларҙа популяр, сөнки ул уларҙың программалар яҙыу ысулына тап килә. Эре компанияларҙа программа тәьминәтен ғәҙәттә уртаса һәләтле программалаусыларҙан торған ҙур (һәм йыш үҙгәреп торған) командалар яҙа. Объект-йүнәлешле программалау был программистарға ҡәтғи тәртип таға, был иһә уларҙың береһенә лә үтә ҙур зыян килтерергә юл ҡуймай. Бының хаҡы — барлыҡҡа килгән кодтың төрлө протоколдар менән тулыуы һәм күпләп ҡабатланыуы. Ҙур компаниялар өсөн был артыҡ ҙур хаҡ түгел, сөнки уларҙың программалары барыбер ҙур булып ҡабарасаҡ һәм ҡабатланыуҙар менән туласаҡ.

Объект-йүнәлешле программалау тыштан ҙур эш булып күренгән күп нәмә етештерә. Ҡағыҙ таҫмалар заманында битенә бары биш-ун юл ғына код яҙған һәм уларҙың алдына егерме юл ентекләп биҙәлгән аңлатмалар (комментарийҙар) ҡуйған программалаусылар тибы бар ине. Объект-йүнәлешле программалау ундай кешеләр өсөн крэк кеүек: ул был «төҙөлөш урмандарының» барыһын да туранан-тура башланғыс код эсенә индерергә мөмкинлек бирә. Lisp хакеры символ ҡушыу менән генә хәл итә алған нәмә бында кластар һәм методтарҙан торған тотош файлға әйләнә. Шуға күрә, әгәр үҙегеҙҙе йәки башҡа берәүҙе бик күп эш башҡараһығыҙ тип ышандырырға теләһәгеҙ, был — яҡшы ҡорал.

Әгәр тел үҙе объект-йүнәлешле программа булһа, уны ҡулланыусылар киңәйтә ала. Бәлки, шулайҙыр. Йәки бәлки, һеҙ объект-йүнәлешле программалауҙың өҫтәмә төшөнсәләрен «a la carte» (айырым-айырым) тәҡдим итеп, тағы ла яҡшыраҡ һөҙөмтәгә өлгәшә алырһығыҙ. Мәҫәлән, функцияларҙы ҡайтанан йөкләү (overloading) асылда кластар менән генә бәйләнмәгән. Күрербеҙ.

Объект-йүнәлешле абстракциялар симуляциялар һәм CAD системалары кеүек ҡайһы бер аныҡ программа өлкәләренә бик яҡшы тура килә.

Шәхсән үҙемә бер ҡасан да объект-йүнәлешле абстракциялар кәрәк булманы. Common Lisp-та ифрат ҡеүәтле объект системаһы бар, әммә мин уны бер тапҡыр ҙа ҡулланғаным булманы. Мин көсһөҙөрәк телдәрҙә объект-йүнәлешле ысулдарҙы талап итәсәк бик күп нәмәләрҙе эшләнем (мәҫәлән, йомолоуҙар (closures) менән тулы хэш-таблицалар төҙөнөм), әммә CLOS-ты ҡулланыу бер ҡасан да талап ителмәне.

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