Photo by Nicolas Picard on Unsplash

Վեբ ծրագրավորումը և աշխարհը

Vahram Martirosyan
MutEx System Programming School
3 min readDec 20, 2019

--

Մեր օրերում դժվար է պատկերացնել ոչ վեբ լուծումներ։ Դժվար է հիշել, թե քանի՞ ծրագրային համակարգ կա աշխարհում, որոնց վեբ տարբերակները չկան, և պետք է բեռնել և տեղադրել այն սեփական համակարգչի մեջ։ Իսկ արդյո՞ք միշտ եղել է հենց այսպես։

Եկեք շատ հեռու չգնանք պատմության մեջ։ Հնամենի ժամանակներում, երբ չկային համակարգչային ցանցեր, չկար նաև Ինտերնետը և չկար վեբը։ Այդ ժամանակներում ոչ մի հետաքրքիր բան չէր կատարվում՝ ժամանակակից երիտասարդ ծրագրավորողի տեսակետից։ Այն ժամանակ մարդիկ ծրագրավորում էին ասեմբլերային լեզուներով և ոչ մի “դրայվ” կչար։

Եկեք դիտարկենք աշխարհը 1990-ական թվականներին։ Արդեն կան ցանցեր և Ինտերնետ։ Օրեցօր ավելի շատ համակարգիչներ են միանում համաշխարհային ցանցին և օրեցօր ավելի մեծ հնարավորություններ են ստեղծվում ծրագրային համակարգերի զարգացման համար։

Բայց, արի ու տես, որ վեբ ծրագրավորումն իրենից դեռևս ներկայացնում է ստատիկ HTML էջերի պատրաստում, որոնց մեջ մի փոքր աշխուժություն է մտցնում JavaScript-ը։ Չնայած այն բանին, որ արդեն կան C/C++ և Java լեզուները, դրանք գրեթե կապ չունեն վեբի հետ։

Հետո ստեղծվեց PHP-ն։ Այն լեզու է՝ մշակված 90-ական թվականների վեբի աշխարհում առկա մարտահրավերները լուծելու համար։ Այն նման է C լեզվին, բայց շատ ավելի հարմար է դինամիկ գեներացվող վեբ կայք մշակելու համար։ Մարդիկ հեշտությամբ անցնում էին այդ լեզվին և ստեղծում հարյուրավոր հրաշալի վեբ-լուծումներ։ Կհավատա՞ք, որ մեր շատ սիրելի Facebook-ն էլ հենց PHP-ով է գրվել։

Բայց կյանքն առաջ էր գնում, և հին տեխնոլոգիաները հնանում էին։ Առաջ եկավ AJAX-ը, որը էապես փոխեց վեբ համակարգի ֆունկցիոնալությունը և, ինչու ոչ՝ տեսքը։ Այն թույլ էր տալիս էջի որոշ հատվածներ բեռնել ասինխրոն կերպով և թարմացնել դրանք։ Կախարդանքի պես մի բան։ Առաջին համակարգերից մեկը, որն ամբողջությամբ օգտվում էր այդ հրաշք նորարարությունից GMail ծառայությունն էր։ Կարող եք բացել և նայել նրա source code-ը։ Եվ կապշեք, քանի որ ոչինչ չեք հասկանա։ Կարծես, թե գրված է մեր սիրելի JavaScript լեզվով, բայց ոչ մի ծանոթ ու հասկանալի բան չեք տեսնի։

Իսկ ի՞նչ պատահեց համակարգի սերվերային կողմի հետ։ Այո, այո։ Այն ևս կրեց լուրջ փոոխություններ։ Սկսեցին մշակվել շատ ավելի բարդ համակարգեր, որոնց համար հին ու բարի PHP-ն այլևս բավարար չէր, և մարդիկ հնարեցին վեբ սերվերային նոր տեխնոլոգիաներ՝ Spring Framework, ASP.NET և այլն։ Դրանք իրենցից ներկայացնում են բավական լավ հղկված և հարուստ ֆունկցիոնալություն տվող համակարգեր, որոնց հետ աշխատելիս քեզ զգում ես ապահով ձեռքերում։

Մինչև եկավ մի օր, երբ մարդիկ հասկացան, որ այդ ամենը չափից դուրս մեծ և ծանր է՝ հասարակ Web API մշակելու համար։ Եվ բեմ բարձրացան նոր հերոսները՝ Node.JS, GoLang և ուրիշ թարմ դեմքեր, որոնք առավելագույնս պարզեցնում էին վեբ ծրագրավորողի գործը՝ մնալով հնարավորինս թեթև և թափանցիկ։

Նկատեցի՞ք։ Այս փոփոխությունները վերաբերում էին միայն սերվերային կտորին։ Իսկ մարդու համար տեսանելի և շոշափելի մասը շարունակում էր մնալ հին ու բարի JavaScript-ի տիրապետության տակ։ Այս լեզուն ունի մի շատ կարևոր առավելություն՝ դա մոնոպալ դիրքն է։ Այս պահին աշխարհում չկա նրա համար լուրջ մրցակից հանդիսացող որևէ այլ լեզու։ Զարմանալի է, բայց սա այն է, ինչ ունենք։

Այսպիսով՝ ի՞նչ է պետք անել լավ վեբ ծրագրավորող դառնալու համար։ Առաջին հերթին պետք է հասկանալ, թե ինչպես են կառուցված և ինչպես են աշխատում համակարգչային ցանցերը, հետո պետք է ծանոթանալ վեբ արձանագրությունների հետ, հետո՝ ուսումնասիրել մի քանի սերվերային լեզու և բոլոր UI տեխնալագիաները՝ HTML, CSS, JavaScript։

Իհարկե սա դեռ ամենը չէ։ Իր այս երկար ճամփորդության ընթացքում վեբը հարստացել է բազմազան հնարավորություններով, որոնց նույնիսկ անուններն արդեն բավական վախենալու են՝ cookie, session, CORS, authentication, ReSTful service և այլն։ Լավ վեբ ծրագրագրավորողը պետք է հստակ պատկերացնի այս բոլոր մեխանիզմները և գործիքները և պետք է կարողանա դրանք կիրառել իր աշխատանքում։

Չկարծեք, թե վեբ ծրագրավորողը կարող է իմանալ միայն JavaScript և ունենալ պայծառ ապագա․․․ Սկսել արժի մեր դասընթացից, որը կծածկի նշված հիմնական կետերը։

Սկզբնաղբյուր

--

--

Vahram Martirosyan
MutEx System Programming School

Programmer-philosopher, inspirer, architect and lecturer. Founder of Alan Turing School of Philosophy of programming https://www.philosophy.im