# Программалау

Программалау (программа яҙыу) — компьютер программаларын эшләү процесы. Программалау (программа яҙыу) телдәренә нигеҙ һалыусыларҙың береһе Никлаус Вирт фекеренсә: «Программалар = алгоритмдар + бирелмәләр структураһы».
Программалау программа яҙыу телдәрендә программаларҙың сығанаҡ текстарын яҙыуға ҡоролған.

# Программалау
## Тарих

Беҙҙең эраға тиклем 205 йыл (150 год до н. э.) — Боронғо Грециялағы антикитер механизмы тип аталған төрлө ҙурлыҡтағы һәм рәүештәге шестернялар ҡуйылған калькулятор, хәҙерге заманда ла Ай һәм Ҡояш календарында ҡулланылған Метон циклын иҫәпләү өсөн эшләнгән.
1206 йыл— Аль-Джазари программаланған автомат-гуманоид эшләй. 1804 йыл — Жозеф Мари Жаккар жаккард туҡыу станогын уйлап сығара. Уның станогында префокарталар ярҙамында төрлө биҙәктәр төшөрөп туҡырға була. Был туҡыу сәнәғәтендә революция була. 1843 йылдың 19 июле— Чарлз Бэббидж тәүге «Аналитик машина» эшләй, уны ҡайһы берәүҙәр беренсе программаланған хисаплау ҡоролмаһы ла тип атай .
19 июль, 1843 йыл — графиня Ада Августа Лавлейс, инглиз шағиры Джордж Байрон ҡыҙы, Аналитик машина өсөн донъялағы тәүге программаны яҙа. Был программа аҡҡан шыйыҡсала энергия һаҡланыуы законына ҡағылышлы Бернулли тигеҙләмәһен сисә. Үҙенең берҙән-бер фәнни хеҙмәтендә Ада Лавлейс бик күп мәсьәләрҙе яҡтырта.
1954—1957 йылдарҙа Джон Бакус етәкселегендә IBM хеҙмәткәрҙәре тәүге киң билдәле Fortran (Фортран) программалау телен эшләп сығара. Уларҙң эшенә таянмаған Джон Маккарти (Массачусетс технология институты) Lisp программалау телен эшләй (лямбда-хисаплауға нигеҙләнгән).

# Программалау
## Программа яҙыу телдәре

Программистар эшенең күп өлөшө программа яҙыу телдәренең береһендә сығанаҡ код яҙыуҙан, тестлауҙан һәм программаны көйләүҙән тора. Программаларҙың сығанаҡ текстары һәм башҡарыусы файлдары автор хоҡуғы объекттары була һәм авторҙарының һәм хоҡуҡ эйәләренең интеллектуаль милке булып тора. Программа яҙыуҙың төрлө телдәре программа яҙыуҙың төрлө стилдәрендә эшләүгә яраҡлаштырыла (программа яҙыу парадигмалары). Алгоритмдың ҡайһы бер өлөштәре өсөн программа яҙыу телен һайлау программа яҙыу ваҡытын ҡыҫҡарта һәм алгоритмды һүрәтләү мәсьәләһен һөҙөмтәлерәк сисергә мөмкинлек бирә. Төрлө телдәр программистан алгоритмды тормошҡа ашырыуҙа деталдәргә төрлө кимәлдәге иғтибар талап итә, бының һөҙөмтәһе — ябайлыҡ менән етештереүсәнлек араһында компромисс (йә иһә программист ваҡыты менән файҙаланыусы ваҡыты араһында).
ЭВМ тик машина теле (йәки машина коды һәм машина командалары теле) менән эш итә. Башта бөтә программалар ҙа машина кодында яҙылған, ләкин хәҙер улай түгел. Хәҙер программистар ниндәй ҙә булһа программа яҙыу телендә сығанаҡ код яҙа, шунан уны, компилятор ҡулланып, бер йәки бер нисә этапта маҡсатлы процессорҙа ҡулланыу әҙерлегенә еткереп машина кодына йәки махсус интерпретатор (виртуаль машина) үтәй алған арауыҡ күренешкә ебәрәләр (трансляциялайҙар). Был тик юғары кимәлдәге компьютер программалары яҙыу телдәренә генә ҡағыла. Әгәр система өҫтөнән машина командалары һәм айырым хәтер күҙәнәктәре кимәлендә түбән кимәлдәге тулы контроль кәрәкһә, программаларҙы ассемблер телендә яҙалар. Был телдең мнемоник инструкциялары ЭВМ-дың маҡсатлы процессорының машина теле инструкцияларына ярашлы итеп бермә-бер үҙгәртелә (шул сәбәпле ассемблер телдәренән трансляторҙар алгоритмдар яғынан иң ябай транслятор булып тора).
Ҡайһы бер телдәрҙә машина коды урынына интерпретацияланыусы икеле «виртуаль машина» коды, йәғни байт-код (byte-code) генерациялана. Ул Forth'та, Lisp, Java, Perl, Python'дың айырым ғәмәлләшеүҙәрендә һәм .NET Framework өсөн телдәрҙә ҡулланыла.

# Программалау
## Инструменттар

Программалау мөхите текст редакторының махсус функциялары булыуы мөмкин- исемдәр индекслау, документтарҙы күрһәтеү, синтаксисты яҡтыртыу, ҡулланыусы интерфейсын визуаль яһау. Программалау теле сығанаҡ кодтың синтаксисын һәм башланғыс семантикаһын билдәләй.
Хәҙерге ваҡытта программалау ваҡытында эштәрҙең интеграцияланған мөхиттәре ҡулланыла, улар иҫәбенә , ғәҙәттә ошолар инә:
* программалар текстын индереү һәм редакторлау өсөн код редакторы;
* йүнәтеү өсөн йүнәтеүсе ( хаталарҙы эҙләү һәм бөтөрөү өсөн);
* транслятор - программа тексын машина төшөнсәһенә әйләндереү өсөн;
* йыйыусы (компоновщик) - бер нисә модулдән программа йыйыусы;
* башҡа эш өсөн кәрәкле модулдәр һәм инструменттар.