Ulıwma maqsetli programmalastırıw tili

Kompyuter programmalarında **ulıwma maqsetli programmalastırıw tili** *([[Inglis tili|ingl]]. General-purpose programming language. qısqasha.* GPL*)* − bul hár túrli ámeliy tarawlarda programmalıq támiynat jaratıwǵa arnalǵan programmalastırıw tili. Kerisinshe, belgili bir tarawda domenli programmalastırıw tili *(ingl.* DSL*)* qollanıladı. Mısalı Python - GPL, al SQL - relyaciyalıq maǵlıwmatlar bazaların sorawǵa arnalǵan DSL bolıp tabıladı.

## Tariyxı
Dáslepki programmalastırıw tilleri kompyuterdiń apparatlıq quralları sıyaqlı ilimiy esaplawlarǵa (sanlı esaplawlar *ingl. numerical calculations*) yamasa maǵlıwmatlardı kommerciyalıq qayta islewge arnalǵan. Fortran hám Algol sıyaqlı ilimiy tiller ózgermeli noqatlı esaplawlardı hám kóp ólshemli massivlerdi qollaydı, al COBOL sıyaqlı biznes tiller dizimge alınǵan maydan fayl formatları menen maǵlıwmatlar jazıwların qollaydı. Simvollı dizimdi qayta islewge arnalǵan IPL-V hám LISP sıyaqlı qánigelestirilgen tiller álleqayda azıraq qollanıldı; Qatardı manipulyaciyalawǵa arnalǵan COMIT; Sanlı basqarılatuǵın mashinalarǵa arnalǵan APT. Kórsetkishlerdi manipulyaciyalawdı talap etetuǵın sistemalardı programmalastırıw ádette assembler tilinde ámelge asırıldı, degen menen JOVIAL ayırım áskeriy qosımshalar ushın paydalanıldı.

1964-jılı járiyalanǵan IBM System/360 ilimiy hám kommerciyalıq qosımshalardı qollaytuǵın birtutas apparatlıq arxitektura retinde jaratılǵan hám IBM ilimiy, kommerciyalıq hám sistemalı programmalastırıwdı qollaytuǵın jalǵız, ulıwma maqsetli til retinde PL/I islep shıǵarıldı. Haqıyqatında da, PL/I ishki bólimi Multic operacion sisteması ushın standart sistemalı programmalastırıw tili retinde paydalanıldı. 

PL/I-den baslap ilimiy hám kommerciyalıq programmalastırıw tilleriniń arasındaǵı ayırmashılıq azaydı, kóplegen tiller ekewinde de talap etiletuǵın tiykarǵı imkaniyatlardı qollaydı hám arnawlı fayl formatların qayta islewdiń kóp bólimi arnawlı maǵlıwmatlar bazasın basqarıw sistemalarına berilgen. 

1960-jıllardan baslap kóplegen arnawlı tiller de islep shıǵarıldı: diskret waqıyalardı modellestiriw ushın GPSS hám Simula; Programmalastırıwdı oqıtıwǵa arnalǵan MAD, BASIC, Logo hám Pascal; C sistemalı programmalastırıw ushın; Interaktiv programmalastırıwǵa arnalǵan JOSS hám APL\360.

## GPL hám DSL
Ulıwma maqsetli programmalastırıw tilleri menen domenli programmalastırıw tilleriniń arasındaǵı ayırmashılıq bárqulla anıq bola bermeydi. Programmalastırıw tili belgili bir wazıypa ushın jaratılıwı múmkin, biraq sol túpnusqa domennen tıs paydalanıladı hám usılayınsha ulıwma maqsetli programmalastırıw tili bolıp esaplanadı. Mısalı COBOL, Fortran hám Lisp DSL (biznesti qayta islew, sanlı esaplaw hám simvollı qayta islew ushın) retinde jaratılǵan, biraq waqıttıń ótiwi menen GPL-ge aylandı. Kerisinshe til ulıwma qollanıwǵa arnalǵan, biraq tek ǵana belgili bir tarawda, tájiriybede qollanılatuǵın bolıwı múmkin. Máselege jaqsı sáykes keletuǵın programmalastırıw tili, meyli ol ulıwma maqsetli til yamasa DSL bolsın, mashqalalı domende ele de jetkilikli ańlatpalı bolıp, kerekli maǵlıwmatlar dárejesin azaytıwı kerek. Atınan kórinip turǵanınday, ulıwma maqsetli til «ulıwma» bolıp tabıladı, óytkeni ol domenge sáykes belgilerdi qollawdı támiyinley almaydı, al DSL bul máseleni sheshiw ushın hár túrli mashqalalı domelerde islep shıǵılıwı múmkin Programma domeni óz tiline kepillik beriw ushın jetkilikli túsiniksiz bolǵanda DSL-ge qaraǵanda ulıwma maqsetli tillerge artıqmashılıq beriledi. Bul jaǵdayda onıń ornına domenge arnalǵan maǵlıwmatlar tipleri menen funkciyalarınıń sáykes kitapxanası bar ulıwma maqsetli til paydalanılıwı múmkin.. DSL-ler ádette GPL-den kishirek, óytkeni olar abstrakciyalar belgileriniń kishirek diapazonın usınsa, ayırım DSL-ler ishki til retinde tolıq GPL-di qamtıydı. Bunday jaǵdaylarda DSL-ler GPL-diń ekspressiv kúshi menen birge domenge sáykes ekspressiv quwattı usına aladı.

Ulıwma maqsetli programmalastırıw tilleriniń barlıǵı Tyuring bolıp tabıladı, yaǵnıy olar hár qanday esaplaw máselelerin teoriyalıq túrde sheshe aladı. Domenge sáykes tiller kóbinese Tyuring-ke uqsas, biraq tek ǵana onday emes. 

### Artıqmashılıqları menen kemshilikleri
Ulıwma maqsetli programmalastırıw tillerin baǵdarlamashılar jiyi paydalanadı. Izertlewlerge sáykes, C, Python hám Java 2021-jılı eń kóp qollanılǵan programmalastırıw tilleri boldı. Ulıwma maqsetli programmalastırıw tillerin domenli tillerge qaraǵanda paydalanıwdıń bir dálili - jańa tildi úyreniw zárúrligin jeńip, bul tiller menen kóbirek adamlar tanıs boladı.

Sonıń menen bir qatarda, kóplegen wazıypalar ushın (mısalı, statistikalıq analiz, mashinalı oqıtıw h.t.b.) hár tárepleme tekserilgen hám optimallastırılǵan kitapxanalar bar. Teoriyalıq jaqtan alǵanda, bul kitapxanalardıń bolıwı ulıwma maqsetli hám domenli tiller arasındaǵı aralıqtı joq etiwi kerek.

2010-jılı empirikalıq izertlew GPL (C#) hám DSL (XAML) sisteması menen tanıs emes paydalanıwshılarǵa mashqalalardı beriw arqalı GPL hám DSL arasındaǵı mashqalalardı sheshiw menen ónimlilikti ólshewge háreket etti. Aqırında, bul belgili bir domenge tán tildi paydalanıwshılar GPL-den kóbirek tanıs bolsa da, 15%-ke jaqsı nátiyje kórsetti, bul keyingi izertlewdi talap etedi.

## Mısallar

### C
C − bul B tiliniń predsheshi bolıp (B dan keyingi versiyası) tiykarınan belgili bir maqset ushın jaratıldı: sistemalı programmalastırıw *([[Inglis tili|ingl]]. [[:en:Systems_programming|systems programming]])*. Kerisinshe, C operacion sistemalar, qurılma drayverleri, ámeliy programmalar hám ornatılǵan sistemalar sıyaqlı hár túrli esaplaw domenlerinde qollanıldı.

C ulıwmalıǵına baylanıslı hár túrli tarawlarda qollanıwǵa iykemli. Ol ańlatpanıń únemliligin, aǵımdı basqarıwdı, maǵlıwmatlar strukturaların hám operatorlardıń bay toplamın támiyinleydi, biraq paydalanıwshılardı onı hár qanday kontekstte paydalanıwdı sheklemeydi. Nátiyjesinde, onı jaratıwshılar birinshi ret Unix operacion sistemasınıń yadrosın qayta jazıw ushın paydalanǵanı menen, ol qosımshalardı islep shıǵıwda, engizilgen sistemalarda (mısalı, mikroprocessorlı programmalastırıw), video oyınlarda (mısalı, Doom) h.t.b. paydalanıwǵa beyimlendi. Házirgi waqıttada C tili eń ataqlı hám keńnen qollanılatuǵın programmalastırıw tilleriniń biri bolıp qala beredi.

### C++
C keńeytpesi retinde qarastırılǵan C++ obyektke baǵdarlanǵan imkaniyatlardı, sonıń menen qatar siltemeler, operatordıń shamadan tıs júkleniwi hám ádepki argumentler sıyaqlı basqa da qolaylıqlardı engizdi. C sıyaqlı, C++ tiliniń ulıwmalıǵı onı keń kólemde qollanıwǵa imkaniyat berdi. Onı qollanıwdıń tiykarǵı tarawı sistemalı programmalastırıw bolǵanı menen (C++ tómen dárejeli arxitekturaǵa ruqsat beriw imkaniyatına baylanıslı), ol jumıs stolı qosımshaların, video oyınların, maǵlıwmatlar bazaların, qarjılıq sistemalardı h.t.b. jaratıw ushın keńnen qollanıladı. Microsoft, Apple, Bloomberg hám Morgan Stanley sıyaqlı iri programmalıq támiynat hám qarjı kompaniyaları ózleriniń ishki hám sırtqı qosımshalarında ele de C++ tilin keńnen qollanadı.

### Python
Python kodtı oqıwǵa hám keńeytiwge ayrıqsha itibar beretuǵın til retinde qarastırılǵan. Birinshisi programmalıq támiynat bolmaǵan injenerlerge kompyuter programmaların ańsat úyreniwge hám jazıwǵa imkaniyat berdi, al ekinshisi domen qánigelerine ózleriniń paydalanıw jaǵdaylarına sáykes kitapxanalardı ańsat jaratıwǵa imkaniyat berdi. Usı sebeplerge baylanıslı Python keń kólemli domenlerde qollanıldı.

Tómende Python qollanatuǵın tarawlardıń ayırımları berilgen:

* **[[Veb-programmalastırıw]]** *(ingl. Web Development)*:  Django hám  Flask sıyaqlı freymvorklar veb-baǵdarlamashılarǵa keńirek Python ekosistemasın paydalana alatuǵın isenimli veb-serverler jaratıwǵa imkaniyat berdi.
* **Ilim hám akademiya**: SciPy hám Pandas sıyaqlı ilimiy hám maǵlıwmatlar kitapxanaları Python-dı ilimiy izertlewlerde paydalanıwǵa imkaniyat berdi.
* **[[Mashinalıq oqıtıw]]** *(ingl.Machine Learning)*: scikit-learn hám Tensorflow sıyaqlı kitapxanalar baǵdarlamashılar ushın mashinalı oqıtıwdıń imkaniyatın arttıradı.
* **Ulıwma programmalıq támiynat islep shıǵıw:** paydalanıwshı qosımshaların, veb-skreping programmaların, oyınlardı hám basqa da ulıwma programmalıq támiynat jaratıw. 

## Dizim
Tómende ulıwma maqsetli programmalastırıw tilleri berilgen:
 

* C
* C++
* C#
* Clojure
* Crystal
* D
* Dart
* Delphi
* Elixir
* Erlang
* F#
* Go
* Harbour
* Haskell
* Java
* JavaScript
* Julia
* Kotlin
* Lua
* Modula-2
* Oberon
* Objective-C
* OCaml
* Perl
* PHP
* Pike
* PL/I
* Python
* Racket
* Ruby
* Rust
* Scala
* Swift
* Tcl
* V
* Visual Basic
* Visual Basic .NET
* Zig

## Sonday-aq qarań

* Ulıwma maqsetli belgilew tili *([[Inglis tili|ingl]]. General-purpose markup language)*
* Ulıwma maqsetli modellestiriw tili *([[Inglis tili|ingl]]. General-purpose modeling language)*

## Derekler