Freymvork

**Freymvork** — bul programmalastırıwda programmalıq támiynat sistemasınıń ulıwma funkcionallıǵın támiyinleytuǵın, programmalıq támiynattı qosımsha paydalanıwshı jazǵan kod penen tańlamalı túrde ózgertiwge bolatuǵın abstrakciya. Yaǵnıy freymvork programmalıq támiynattıń strukturasın belgilewshi programmalıq platforma bolıp, úlken programmalıq támiynat proektiniń túrli komponentlerin  jaratıw hám birlestiriwdi ańsatlastıratuǵın programmalıq támiynat bolıp tabıladı.

Freymvork — qollap-quwatlaw programmaların, kompilyatorlardı, kod kitapxanaların, úskeneler jıynaǵın hám proektti yamasa sistemanı jaratıwǵa imkaniyat beretuǵın barlıq hár túrli komponentlerdi biriktiretuǵın ámeliy programmalastırıw interfeyslerin *([[Inglis tili|ingl]]. application programming interfaces — API)* qamtıwı múmkin. 

Freymvorklardı ápiwayı kitapxanalardan ajıratıp turatuǵın tiykarǵı ayırmashılıq qásiyetleri bar:

* basqarıw inversiyası: kitapxanalardaǵı yamasa standart paydalanıwshı qosımshalarınan ayırmashılıǵı, ulıwma programmanıń basqarıw aǵımın shaqırıw menen emes, al freymvork tárepinen belgilenedi. Oǵan ádette Shablon metodı úlgisi arqalı *([[Inglis tili|ingl]]. Template Method Pattern)* erisiledi.
* *ádepki minez-qulıq:* Bul freymvork penen támiyinlengen abstrakt klastaǵı Shablon metodı úlgisiniń invariantlıq usılları menen támiyinleniwi múmkin.
* keńeytiw imkaniyatı: paydalanıwshı freymvorktı keńeyte aladı — ádette tańlap alıw arqalı — yamasa baǵdarlamashılar belgili bir funkcionallıqtı támiyinlew ushın arnawlı paydalanıwshı kodın qosa aladı. Oǵan ádette joqarı klastaǵı shablon metodın anıqlaytuǵın ishki klass penen ilmek metodı arqalı erisiledi.
* ózgertilmeytuǵın freymvork kodı: paydalanıwshı kirgizgen keńeytpelerdi qabıllawda ulıwma freymvork kodı ózgertilmewi kerek. Basqasha aytqanda, paydalanıwshılar freymvorktı keńeyte aladı, biraq onıń kodın ózgerte almaydı.

## Negiz
Freymvorklardıń islep shıǵarıwshıları dizaynerler menen baǵdarlamashılarǵa jumıs sistemasın támiyinlewdiń standart tómen dárejeli bólimleri menen shuǵıllanbastan, programmalıq támiynat talapların qanaatlandırıwǵa waqıtların bóliwge imkaniyat beriw arqalı programmalıq támiynattı islep shıǵarıwdı ańsatlastırıwdı maqset etedi, usılayınsha ulıwma islep shıǵarıw waqıtın qısqartadı. Mısalı, bank veb-saytın jaratıw ushın veb freymvorktı paydalanatuǵın topar sorawlardı qayta islew hám mámleketlik basqarıw mexanizmine emes, bank xızmetine arnawlı kod jazıwǵa itibar beredi.

Freymvorklar kóbinese programmalardıń ólshemin qosadı, bul qubılıs «kodtıń tolıwı» dep ataladı. Tutınıwshınıń talabına tiykarlanǵan qosımshalardıń zárúrliklerine baylanıslı básekiles te, qosımsha freymvorklar da geyde tamamlanadı. Keyin olardıń API quramalılıǵına baylanıslı, freymvorktı paydalanıwdı úyreniwge qosımsha waqıt jumsaw zárúrligine baylanıslı islep shıǵıw waqtınıń boljanǵan qısqarıwına erisilmewi múmkin; bul sın arnawlı yamasa jańa freymvorktı islep shıǵarıwshılar birinshi ret ushıratqanda durıs boladı. Eger bunday freymvork keyingi jumıs tapsırmalarında paydalanılmasa, freymvorktı úyreniwge jumsalǵan waqıt proekt xızmetkerlerine tanıs maqsetli túrde jazılǵan kodtan qımbat bolıwı múmkin; kóplegen baǵdarlamashılar ulıwma zárúrlikler ushın paydalı kodtıń kóshirmelerin saqlaydı.

Degen menen, freymvorktı úyrengennen keyin keleshektegi jobalar tezirek hám ańsat juwmaqlanıwı múmkin; freymvork koncepciyası bir ólshemli sheshim jıynaǵın jaratıw bolıp tabıladı hám tanısıw arqalı kod óndirisi logikalı túrde joqarılawı kerek. Shıǵarılatuǵın ónim menen birge jıynalǵan kodtıń ólshemine de, onıń salıstırmalı ónimliligi menen qısqalıǵına baylanıslı bunday shaǵımlar joq. Hár qanday kitapxana sheshimin paydalanıw shártli túrde qosımsha hám paydalanılmaǵan bóten aktivlerdi tartadı, eger programmalıq támiynat tıǵız (kishi, tolıq basqarılatuǵın hám kórsetilgen) orınlanatuǵın modul jaratatuǵın kompilyator-obyektin baylanıstırıwshısı bolmasa.

Másele dawam etpekte, biraq on jıllıq sanaat tájiriybesi eń ónimli freymvorklar ulıwma «barlıǵına sáykes keletuǵın bir ólshemli» paydalanıwdıń ornına kárxananıń ulıwma kodın qayta faktorlawdan rawajlanatuǵın freymvorklar bolatuǵının kórsetti. Ulıwma maqsetler ushın úshinshi tárep jaratqan freymvork. Oǵan mısal retinde ofis toplamı sıyaqlı qosımshalar paketindegi paydalanıwshı interfeysiniń ulıwma kóriniske, sezimge hám maǵlıwmatlardı bólisiw atributları menen usıllarına iye bolıw ushın qalay ósetuǵının kórsetiwge boladı, óytkeni bir waqıtları bir-birinen ayırmashılıǵı bar kompleks qosımshalar tıǵızıraq toplamǵa biriktirilgen. Hám kishirek jańa/rawajlandırılǵan toplam integral xızmetlik kitapxanalar menen paydalanıwshı interfeyslerin ulıwma paydalanatuǵın ónim bolıwı múmkin.

Tartıslardaǵı bul úrdis freymvorklar tuwralı zárúr máseleni payda etedi. Tek máseleni sheshetuǵın freymvorkqa qaraǵanda talǵampaz freymvorktı jaratıw iliminen góre sheberlik bolıp tabıladı. «Programmalıq támiynattıń talǵampazlıǵı» anıqlıqtı, qısqalıqtı hám az shıǵındı (kóbinese paydalanıwshı anıqlaytuǵın qosımsha yamasa bóten funkcionallılıqtı) bildiredi. Kodtı generaciyalaytuǵın freymvorklar ushın, mısalı «talǵampazlıq» durıs kodtı generaciyalaytuǵınǵa qaraǵanda taza hám aqılǵa muwapıq baǵdarlamashıǵa túsinikli (hám sonlıqtan ańsat ózgeretuǵın) kodtı jaratıwdı bildiredi. Talǵampazlıq máselesi ne ushın salıstırmalı túrde az freymvorklardıń waqıt sınaǵına shıday alıwında: eń jaqsı freymvorklar olar dúzilgen tiykarǵı texnologiya retinde ájayıp túrde rawajlandı. Hátte sol jerde de rawajlanıp kiyatırǵan bunday paketlerdiń kópshiligi sońǵı programmalıq támiynattı keńeytetuǵın burınǵı imkaniyatlardı saqlaydı, óytkeni basqasha almastırılǵan metodlar jańa metodlar menen qatar saqlandı. 

## Mısallar

Freymvorklar ádette paydalanıwshı qosımshaların júklewge járdemlesiw ushın aytarlıqtay ishki jumıstı hám xızmetlik kodtı qamtıydı, biraq ádette belgili bir mashqalalı domenlerge itibar qaratadı, mısalı:

* Kórkem súwret, muzıkalı kompoziciya hám mexanikalıq CAD
* Qarjılıq modellestiriw programmaları
* Jer sistemasın modellestiriw programmaları
* Qarar qabıl etiwdi támiyinlew sistemaları
* Media ortalıq hám avtorlıq
* Veb freymvork
* Ortasha programmalıq támiynat
* Cactus Framework — Joqarı ónimli ilimiy esaplawlar
* Application framework — Ulıwma GUI qosımshaları
* Enterprise Architecture framework
* Oracle Application Development Framework
* Laravel (PHP Framework)
* Malware, mısalı Pipedream
* Php4delphi

## Arxitektura
Predtiń aytıwınsha, freymvorklar qatıp qalǵan noqatlardan hám ıssı noqatlardan ibarat. Muzlatılǵan noqatlar programmalıq sistemanıń ulıwma arxitekturasın, yaǵnıy onıń tiykarǵı komponentlerin hám olardıń arasındaǵı baylanıslardı anıqlaydı. Bul qosımshalar freymvorktıń hár qanday danasında ózgerissiz (muzlatılǵan) qaladı. Íssı noqatlardı paydalanatuǵın baǵdarlamashılar ózleriniń proektlerine tán funkcionallılıqtı qosıw ushın óz kodların qosatuǵın bólimlerdi bildiredi.

Obyektke baǵdarlanǵan ortalıqta freymvork abstrakt hám anıq klaslardan ibarat. Bunday freymvorktı jaratıw burınnan bar klaslardı dúziwden hám ishki klasqa ajıratıwdan ibarat.

Kerekli funkcionallılıqtı Shablon metodı úlgisin paydalanıw arqalı ámelge asırıwǵa boladı, ol jerde qatıp qalǵan noqatlar invariant metodlar retinde belgili hám ıssı noqatlar nusqa yamasa ilmek metodları retinde belgili. Joqarı klastaǵı invariant metodlar ádepki háreketti támiyinleydi, al hárbir ishki klastaǵı ilmek metodları retlenetuǵın háreketti támiyinleydi.

Freymvork penen anıq programmalıq sistemanı jaratıwda baǵdarlamashılar sistemanıń anıq zárúrlikleri menen talaplarına sáykes ıssı noqatlardı paydalanadı. Freymvorklar Gollivud principine súyenedi: «Bizdi shaqırmań, biz sizdi shaqıramız» Bul paydalanıwshı anıqlaytuǵın klaslar (mısalı, jańa ishki klaslar) aldınnan anıqlanǵan freymvork klaslarınan xabarlardı alatuǵının bildiredi. Baǵdarlamashılar bunı ádette superklass abstrakt metodların kirgiziw arqalı sheshedi.

## Eń kóp qollanılatuǵın freymvorklar
Tómende hár túrli programmalastırıw tillerine arnalǵan jiyi qollanılatuǵın freymvorklar keltirilgen. 

* Django (Python)
* Flask (Python)
* TurboGears (Python)
* PyTorch (Python)
* Ruby on Rails (Ruby)
* Garden (Ruby)
* Spring (Java)
* Play (Java)
* Spark (Java)
* Wicket (Java)
* Javalin (Java)
* Netty (Java)
* Reactor (Java)
* Laravel (PHP)
* CakePHP (PHP)
* Symfony (PHP)
* Phalcon (PHP)
* Yii (PHP)
* Zend (PHP)
* CodeIgniter (PHP)
* ReactJS (JavaScript)
* AngularJS (JavaScript)
* React Native (JavaScript)
* Vue (JavaScript)
* Xamarin (C#)
* ML.NET (C#)

## Sonday-aq qarań

* Klass *([[Inglis tili|ingl]]. [[:en:Class_(computer_programming)|Class]])*
* Programmalıq támiynattıń dizayn úlgisi *([[Inglis tili|ingl]]. [[:en:Software_design_pattern|Software design pattern]])*
* Ózińizdi qaytalamań *([[Inglis tili|ingl]]. [[:en:Don't_repeat_yourself|Don't repeat yourself]])*
* Jasırın shaqırıw *(ing. [[:en:Implicit_invocation|Implicit invocation]])*
* Programmalıq támiynat dvijogı *([[Inglis tili|ingl]]. [[:en:Software_engine#:~:text=A%20software%20engine%20is%20a,widespread%20in%20the%20software%20industry.|Software engine]])*

## Derekler