Skip to content

Latest commit

 

History

History
23 lines (12 loc) · 7.17 KB

Algorithms - The Core of Problem Solving in Programming.md

File metadata and controls

23 lines (12 loc) · 7.17 KB

Ի՞նչ է ալգորիթմը: Ինչու՞ է Ադիթյա Բհարգավայի «Grokking Algorithms» գիրքը համարվում ամենահանրամատչելին և լավագույնը՝ սկսնակ ծրագրավորողների համար:

Եվ այսպես ի՞նչ է ալգորիթմը։ Ալգորիթմը դա բառ է, որն օգտագործում են ծրագրավորողները, երբ չեն ցանկանում բացատրել, թե ինչ են արել 😄 Իսկ եթե ավելի լուրջ՝ ալգորիթմը հստակորեն սահմանված գործողությունների վերջավոր հաջորդականություն է, որը բերում է տարբեր բնույթի խնդիրների լուծմանը։ Ալգորիթմը պարտադիր չէ, որ կապ ունենա ինֆորմատիկայի հետ, անգամ սուրճ պատրաստելու բաղադրատոմսը կարելի է համարել ալգորիթմ:

Երբ շվեյցարացի հայտնի գիտնական՝ Pascal, Modula և Oberon ծրագրավորման լեզուների ստեղծող, պրոֆեսոր Նիկլաուս Վիրտին հարցնում են, թե ի վերջո ինչ է ծրագիրը, նրա պատասխանը լակոնիկ էր՝ Ալգորիթմեր + Տվյալների կառուցվածքներ։

Հետաքրքիր է տերմինի ծագման պատմությունը։ Առաջացել է 9-րդ դարում ապրած պարսիկ գիտնական Ալ-Խորեզմիի անունից, ով համարվում է ժամանակակից հանրահաշվի հիմնադիրներից մեկը։ Նա ուսումնասիրել, վերամշակել, զարգացրել և համակարգված շարադրել է անտիկ աշխարհի և արևելքի ժողովուրդների մաթեմատիկական գիտելիքները։ 12-րդ դարից սկսած Ալ-Խորեզմիի աշխատանքները թարգմանվում են միջնադարյան Եվրոպայի կրոնի և գիտության լեզուն հանդիսացող լատիներենով և լայն տարածում են գտնում։ Հենց այդ՝ դեռևս 12-րդ դարում թարգմանված գրքի մեջ էլ առաջին անգամ օգտագործվում է ալգորիթմ բառը, որպես Ալ-Խորեզմի բառի լատինականացված տարբերակ։ Գիրքը կոչվում էր Algoritmi de numero Indorum։

Չնայած հասկացությունը ստեղծվել է մի քանի դար առաջ, սակայն ժամանակակից իմաստով այն հայտնվել է 20-րդ դարում։ Առաջին անգամ եզրի ժամանակակից սահմանումը տրվել է անգլիացի մաթեմատիկոս, փիլիսոփա և ինֆորմատիկայի հայր Ալան Թյուրինգի կողմից։

Ալգորիթմերի և տվյալների կառուցվածքի մասին հրաշալի գրքեր շատ կան։ Օրինակ՝ Դոնալդ Կնուտի «Ծրագրավորման Արվեստը» ֆունդամենտալ բազմահատոր աշխատությունը, որտեղ մանրամասն նկարագրված են մինչ օրս հայտնի բոլոր ալգորիթմերն ու տվյալների կառուցվածքները։ Այդ գրքի առաջին հատորի երրորդ հրատարակության մեջ Բիլլ Գեյթսի խոսքերն է նույնիսկ մեջբերվում, ով առաջարկում է բոլոր այն ծրագրավորողներին, ովքեր մինչև վերջ հասկանալով կկարդան այդ գիրքը, իրեն պարտադիր ռեզյումե ուղարկեն: Դոնալդ Կնուտի և նրա մեծանուն աշխատության մասին կարող եք ծանոթանալ այս հղումով։

Շատ լավ աշխատություն է նաև Սենջոյ Դասգուպտայի, Քրիստոս Պապադիմիտրիուի և Յումեշ Վազիրանիի համահեղինակությամբ «Ալգորիթմեր» գիրքը։

Սակայն թե՛ Դոնալդ Կնուտի «Ծրագրավորման Արվեստը» բազմահատոր աշխատությունը, և թե՛ վերը նշված խրթին անուն ազգանուններով ինֆորմատիկայի տեսաբան պրոֆեսորների «Ալգորիթմեր» գրքերը մեղմ ասած այնքան էլ հարմար չեն սկսնակ ծրագրավորողների համար: Ալգորիթմերի և տվյալների կառուցվածքի մասին ամենահանրամատչելի գիրքը ըստ իս Ադիթյա Բհարգավայի «Grokking Algorithms»-ն է։

Գրքում շատ պարզ ոճով, նկարազարդումներով բացատրվում են ամենատարածված ալգորիթմերն ու տվյալների կառուցվածքները։ Գիրքը կարդալուց հետո դուք շատ լավ կպատկերացնեք, թե ինչով են իրարից տարբերվում զանգվածները (array), կապակցված ցուցակները (linked list), հեշ ցուցակները (hash list), ինչ են իրենցից ներկայացնում հեշ ֆունկցիաները (hash function), կիմանաք ինչ է Big O նոտացիան, «բաժանիր և տիրիր» ռազմավարության ոգով ալգորիթմերի խումբը՝ բինար որոնում, արագ տեսակավորում և այլն, նաև կծանոթանաք գրաֆների հետ և կսովորեք նրանց հետ աշխատելու ալգորիթմերին (Օրինակ Դեյքստրայի ալգորիթմ):

Գրքում օրինակները բերված են Python ծրագրավորման լեզվով, սակայն դա ամենևին չի խանգարում գիրքն ուսումնասիրելուն, անգամ եթե դուք Python չգիտեք։ Կարևորը տվյալների կառուցվածքը հասկանալ և ալգորիթմերը պատկերացնելն է, իսկ առաջադրանքների Python-ով բերված լուծումները նայելու փոխարեն կարելի է ինքնուրույն փորձել լուծել նույն առաջադրանքները, բայց JavaScript-ի կամ ցանկացած այլ ծրագրավորման լեզվի միջոցով։

Նաև նշեմ, որ եթե դուք գիտեք թեկուզ մեկ ծրագրավորման լեզու, հեշտությամբ կհասկանաք նաև Python-ով գրված կոդը, քանի որ հիմնական կոնստրուկցիաները ծրագրավորման լեզուների մեծ մասում նույնական են, իսկ Python-ն աչքի է ընկնում իր հասկանալի սինթաքսով՝ պարզությամբ երբեմն հիշեցնելով փսևդոկոդի:

Ադիթյա Բհարգավայի բլոգ կարող եք այցելել այս հղումով։