in Ծրագրավորում, Մանկավարժի Նոթեր, ՏՏ

Բարի լույս․

Շատերը ուզում են ծրագրավորում սովորել։ Դա նորմալ աշխատանքի հնարավորություն  է, շատ հետաքրքիր ու լավ վարձատրվող։ Սակայն որքան էլ շատ են ուսումնական կենտրոնները, առցանց ռեսուրսները ու գրքերը, սկսնակները դժվարանում են ընտել առաջին ծրագրավորման լեզուն։ Իրականում առաջին լեզվի և տեխնոլոգիական ուղղության ընտրությունը որոշվում է որևէ կոմպետենտ մարդու կողմից տրված խորհրդով։ Հիմա ես ուզում եմ իմ փայ խորհուրդը տալ, թե իմ կարծիքով (ու ոչ միայն իմ), որ լեզուն արժե սովորել որպես առաջին լեզու։

Իհարկե պետք է հասկանալ, որ միայն ծրագրավորման լեզվի իմացությունը մարդուն դեռ ծրագրավորղ չի դարձնում, այլ բաներ էլ է պետք իմանալ, տենց computer science-ոտ բաներ։ Տվյալների տիպեր և կառուցվածքներ, ալգորիթմներ, նախագծման կաղապարներ, մաթեմատիկա և այլն, սակայն այս բոլորը ուսումնասիրելու համար գոնե մեկ ծրագրավորման լեզու նախապես իմանալը շատ օգտակար է, որոշ դեպքերում նաև պարտադիր է։

Մարդիկ այսպիսի ուղեցույց են ստեղծել, որը օգնում է կողմնորոշվել լեզվի ընտրության մեջ։ Սեղմեք պատկերին ավելի մեծ տարբերակը տեսնելու համար։ Նայեք, հետո չմոռանաք հետ գալ ։)

which-programming-language-should-i-learn-first-in

Իհարկե բավականին օգտակար է, գոնե հասկանալու համար, թե որ ոլորտում ինչ լեզուներ և տեխնոլոգիաներ են օգտագործվում։ Սակայն ծրագրավորումը դա կայքեր, հավելվածներ, խաղեր պատրաստելը չի միայն, դա ավելի լայն ու բազմազան գործունեություն է ենթադրում ու առաջին լեզվի ընտրությունը կապել կոնկրետ ոլորտի հետ նպատակահարմար չեմ համարում։ Ուզում եմ ասել, որ պետք չի կայք պատրաստող կամ բջջային հավելված պատրաստող դառնալ, պետք է դառնալ ծրագրավորող, իսկ ոլորտը հետո ընտրել ըստ հետաքրքրության կամ պրագմատիկ հարմարության։

Մտածում եմ, ինչ հատկանիշներ պիտի ունենա առաջին ծրագրավորման լեզուն։ Կարծում եմ , որ այդ լեզուն պիտի՝

  1. լինի կապված ամենօրյա կյանքի հետ (ստորև կբացատրեմ, ինչ նկատի ունեմ)
  2. ծրագրավորման և ծրագրի գործարկման միջավայրը հեշտ տեղադրվի
  3. կոմպիլյատոր/ինտերպրետատորը լինի քրոսպլատֆորմ (linux, mac, windows)
  4. կոմպիլյատոր/ինտերպրետատորը լինի սուբյեկտիվորեն արագ աշխատող
  5. ունենա հեշտությամբ ստեղծելու ինտերֆեյսներ հնարավորություն
  6. ունենա պրոցեդուրալ, օբյեկտային և ֆունկցիոնալ պարադիգմներում ծագրավորելու հնարավորություն
  7. ունենա մեծ առցանց համայնք
  8. ունենա բազմաթիվ բաց֊կոդով նախագծեր, որոնք կարելի է ուսումնասիրել
  9. ունենա բազմաթիվ գրադարաններ և ֆրեյմվորքներ տարատեսակ խնդիրների լուծման համար
  10. ունենա տարբեր ոլորտների համար ծրագրեր ստեղծելու հնարավորություն
  11. շուկայում պահանջված լինի
  12. պիտի սովորողին հնարավորություն տա չմտածել low-level բաների մասին

Շատ աշխարահռչակ ուսումնական հաստատություններում python լեզուն է հանդիսանում առաջին և հիմնական ծրագրավորման լեզուն, python-ը հրաշալի լեզու է, դա էլ կարող է լինել, սակայն ես առաջարկում եմ որպես առաջին լեզու սովորել javascript-ը:

Փորձեմ անցնել վերը նշված կետերով , պաշտպանելով  javascript-ի թեկնածությունը։

1․ Կապը ամենօրյա կյանքի հետ

Ի՞նչ է անում ժամանակակից մարդը միացնելով համակարգիչը։ Այո՛,  ճիշտ է․ բացում է դիտարկիչը (browser): Այս առումով շատ լավ է, երբ javascript-ի ուսումնասիրությունը անընդհատ զուգահեռ կընթանա ամենօրյա պրակտիկայի հետ, այսինքն javascript ուսումնասիրողը միշտ հարցեր կունենա, թե ինչպես է աշխատում այս կամ այն կայքի այս կամ այն հնարավորությունը։ Իսկ հարց ունենալը կարևոր ուսումնական խթան է։ Նաև կարելի է նայել սորս֊կոդը և շատ դեպքերում հասկանալ թե ինչպես է կազմակերպված այս կամ այն ֆունկցիոնալը։

2. Ծրագրավորման և ծրագրի գործարկման միջավայրը

Ծրագրի գործարկման միջավայրը այս դեպքում դիտարկիչն է, ամեն համակարգչում էլ կա։ Իսկ որպես խմբգրիչ (editor) կարելի է օգտագործել ցանկացած notepad++ կամ այլ բան , կամ ասենք javascript֊չիների նախընտրած sublimetext-ը

Vt8ve7s

3․ Քրոսպլատֆորմություն

Այստեղ բան չկա ասելու, քրոսպլատֆորմ է, ցանկացած linux, ios կամ windows-ով համակարգչի դիտարկիչում կարելի է աշխատեցնել ջավասքրիփթ։

4․ Կոմպիլյատոր/ինտերպրետատորի սուբյեկտիվորեն արագ աշխատանք

Սուբյեկտիվությունը կարևոր է, որովհետև շատերը ծրագրավորումից հիասթափվում են երբ չէն կարողանում ինքնուրույն տեղադրել ասենք ինչ որ մի կոմպիլյատոր, կամ աշխատել քոմմանդ փրոմփում/շելլում, առավել ևս երբ մտածելու, կոդը գրելու և գործարկելու փուլերի միջև ընկած ժամանակահատվածը երկար է տևում։ Javascript-ը հնարավորութուն է տալիս արագ տեսնել գրածդ ծրագրի արդյունքը ․․․ ու ավելի շատ ժամանակ ծախսել մտածելու և ոչ թե միջավայրի հետ պայքարելու վրա։

5․ Ինտերֆեյսներ

Իհարկե javascript-ի հետ աշխատանքի ինտերֆեյսները ստեղծվում են HTML և CSS-ի միջոցով։  Իմ դասավանդման փորձը հուշում է ինձ, որ այս երկու տեխնոլոգիաներին բավարար չափով տիրապետելու համար անհրաժեշտ է մի 10֊15ժ, այստեղ բավարար ասելով նկատի չունեմ պրոֆեսիոնալ էջատողին բավարար գիտելիք, սակայն բավարար javascript-ով աշխատող և ինտերֆեյս ունեցող ծրագրեր ստեղծելու համար։

6․ Պրոցեդուրալ, օբյեկտային և ֆունկցիոնալ պարադիգմներ

ֆունցիոնալ և պրոցեդուրային պարադիգմներում հանգիստ կարելի է ծրագրավորել, օբյեկնտեր նույնպես կարելի է օգտագործել և ստեղծել։ Հետո սովորելիս մի պահ է գալիս, որ հասկանում ես, որ ջավասքրիփթում անեմ ինչ օբյեկտ է, նույնիսկ ֆունկցիաները ։)

7. Առցանց համայնք

Այս առումով էլ ամեն ինչ հրաշալի է, այս հետազոտութունը ասում է, որ ամեն բան լավ է ջավասքրիփթում, օրինակ stackowerflow-ում ամենաշատ մարդը հետաքրքրված է javascript-ով

Մեծ համայնքը օգնություն գտնելու հնարավորություն է, բազմաթիվ արդեն մշակված խնդիրների լուծումները գտնելու և ուսումնասիրելու հնարավորություն, նաև միևնույն խնդրի տարբեր լուծումների ուժեղ ու թույլ կողմերը համամտելու հնարավորություն։ Բացի այդ մեծ համայնքը նշանակում է, որ կան բազմաթիվ ինչպեսներ(howto), ուղեցույցներ և ֆունդամենտալ դասընթացներ, տեսանյութեր, հարց ու պատասխաններ։ Համայնքը կարևոր է ցանկացած տեխնոլոգիայի զարգացման համար։

8. Բաց֊կոդով նախագծեր, որոնք կարելի է ուսումնասիրել

github-ում, որը բաց կոդով ծրագրերի ամենամեծ պահոցն է այսպիսի վիճակ է

Սա շատ կարևոր ցուցանիշ է, այն առումով, որ կարելի է սովորել բազմաթիվ հաջողված ու հայտնի նախագծերի կոդը ուսումնասիրելով։ Այդ փորձը հնարավոր չէ թերագնահատել։ Նաև նոր նախագծեր ստեղծելիս կարելի է ուղղակի սկսել որևէ մեկի արածի վրա հենվելով։ Ավելին, կարելի է աշխատել ուրիշների հետ զարգացնելով նրանց նախագծերը, զուգահեռաբար սովորելով ու կատարելագործվելով։

9․ Գրադարաններ և ֆրեյմվորքներ տարատեսակ խնդիրների լուծման համար

Հարյուրավոր գրադարաններ ու ֆրեյմվորքներ կան, ցանկացած տիպի խնդիրների համար, սկսած ֆորմաներում տվյալների վավերացման համար նախատեսվածներից, մինչև խաղային շարժիչներ ու անիմացիոն գրադարաններ․ շատերը բաց ծրագրային կոդով և ձախ լինցենզիաների տակ հրապարակված։

Վիքին այս ցանկն է տալիս, սակայն գրադարանների , փլագինների և ֆրեյմվորքների քանակը մի երկու կարգ բարձր է այս ցանկից։

https://en.wikipedia.org/wiki/List_of_JavaScript_libraries

Իսկ github-ում ապրող այս ցանկը ավելի տպավորիչ է

https://github.com/sorrycc/awesome-javascript

 

10․ Տարբեր ոլորտների համար ծրագրեր ստեղծելու հնարավորություն

Այն որ javascript-ը աշխատում է դիտարկիչում հանրահայտ է, սակայն javascript-ի օգնությամբ կարելի է գրել այսպես կոչված back-end, կայքի կամ վեբ֊հավելվածի սերվերային մասը․ nodejs-ն է դա ապահովում։ Javascript-ով կարելի է գրել բջջային հավելվածներ ` phonegap/cordova, react native և այլն ․․․ Մնացին դեսքթոփ ծրագրերը, խնդրեմ, դիմավորեք  appjs կամ electron  ․․․․

11․ Շուկայում պահանջվածություն

Ինչպես ասվել է մի հին գրքում՝ «Հունձքը շատ է, մշակները ՝ քիչ», գրաֆիկը ամեն բան ասում է

js_angellist

Ուզում եմ նշել, լեզուն սովորելուց հետո արագ աշխատանք գտնելն էլ կարևոր խթան է սովորելու համար։ Կարելի է իհարկե որպես առաջին լեզու ընտրել ասենք գեղեցկագույն lisp-ը կամ  haskel -ը բայց սրանք և ավելի երկար են սովորվում և աշխատանք էլ քիչ է։ Չնայած այս լեզուների սակավաթիվ մասնագետները շուկայում շատ թանկ արժեն։

12․ Չմտածել low-level բաների մասին

Ջավասքրիփթը ազատում է տեխնոլոգիական մանրամասների մեջ խորանալու անհրաժեշտությունից ՝ տարբեր տիպի վիրտուալ մեքենաների, ճարտարապետությունների և նման բաների մասին մտածելու անհրաժեշտությունից։ Այս բաների մեջ կարելի է խորանալ հետո, երբ դրա անհրաժեշտությունը կառաջանա այլ լեզուներ և տեխնոլոգիաներ ուսումնասիրելիս։ Իսկ բուն ծրագրավորումը մտածելակերպ է, որի առաջացման և զարգազման համար low-level բաները չպիտի խոչընդոտ լինեն։

ՀԳ։ Նորից եմ հիշեցնում, այս ամենը վերաբերում է առաջին լեզվի ընտրությանը, միշտ էլ կարելի է սովորել այլ լեզուներ ու ոչ միայն կարելի է այլև պարտադիր է։

ՀԳ2։ Իրականում գրեցի վերջացրեցի ու հիմա մտածում եմ թե ու՞մ համար էր սա։ Սկսնակների համար անհասկանալի տերմիններ կլինեն, արդեն կայացած ծրագրավորողներին սա պետք չի, կրթության նախարարության համա՞ր էր, չէէ, իրենք էլ «գիտեն» ինչ են անում։

ՀԳ3։ Իրականում հույս ունեմ, որ վերընշվածներից բոլորին էլ պիտանի կլինի, սկսնակները կգնան տերմինները կարդալու, կայացածները խորհուրդ տալիս գուցե այս հոդվածին դիմեն, իսկ կրթության նախարարությունում աշխատող մարդիկ գուցե որևէ օգտակար բան գտնեն այստեղ ․․․

ՀԳ4։ Ամենաշատը ինձ համար եմ գրել, նախ կարիք ունեի արտահայտվելու, հետո հույս ունեմ որ դիսկուսիա կսկսվի ու գրածս թեզերից ոմանք կհերքվեն ոմանք էլ կհարստանան ավելի ուժեղ հիմնավորումներով։

Դբա Լավը ։)

jquery_screenshot_part1

  1. Բարև Ձեզ: Շատ հետաքրքիր հոդված էր, համենայն դեպս ինձ համար բավականին օգտակար: Հարցս ուղղում եմ հոդվածի հեղինակին` ես ցանկանում եմ դառնալ ծրագրավորղ, բայց ծրագրավորումից այս պահին գրեթե գիտելիքներ չունեմ: Խնդրում եմ ինձ ասեք որտեղ, ում մոտ և ինչպես սկսեմ սովորել օրինակ javascript ծրագրավորման լեզուն: Դուք որտեղ եք սովորել? Բազմմիցս ընկերներից, ծանոթներից հարցրել եմ ինչպես սկսել ասել են ինքդ քեզանով փորձիր սովորել, youtube ից դասեր նայիր և այլն: Իմ կարծիքով դա այդքանել լուրջ չէ և պետք է կոնկրետ ինչ որ մեկը զբաղվի սովորեցնի:

    • Ես ինքս սովորել եմ ինքնուրույն, սկզբնական շրջանում ընկերներս են մի քիչ օգնել։ Դասընթացների համար լիքը տեղ կա, կարող եք գնալ օրինակ Հայ-Հնդկական Կենտրոն ։ Ես այնտեղ դասավանդել եմ միառժամանակ, գիտեմ որ վատ տեղ չի, բացի դրանից էլի լիքը տեղեր կան , որտեղ կարող եք սովորել, սկսած մասնավոր պարապունքներից, վերջացնելով ուսումնական կենտրոններով։

  2. Բարև ձեզ։ Ես ցանկանում եմ դառնալ ծրագրավորող, հաճախում եմ թումո։ Ցանկանում եմ ձեզ մի հարց տալ։ Եթե ցանկանում ես սովորել այնպիսի ծրագրավորում, որը կապված չէ կայքերի, խաղերի, կամ Desktop-ային ծրագրերի հետ, այլ ցանկանում եմ օրինակ ծրագրավորել մի տեխնիկա, օրինակ մոնիտոր, թէ նա ինչպես խետք է աշխատի, ապա ինչ ծրագրավորման լեզու պետք է ընտրեմ, կամ այդ ամենը անում են ծրագրավորման լեզուներով, թե ոչ?

    • ողջույն, հիմա շատ լեզուներով կարելի է գրել նմանատիպ ծրագրեր, սակայն ամենակարևորները հավանաբար C, C++, Java

  3. Բարև ձեզ։ Կարող եք ինձ ասել, թե որ բուհում մարդ կարող է ծրագրավորում սովորել?

    • Հարցը նրանում է, որ ծրագրավորում սովորելու համար երկու բան է պետք անել։ Նախ որևէ ծրագրավորման լեզվի ծանոթանալ և կոդ գրելու պրակտիկա ստանալ՝ զուտ կոդինգ։ Երկրորդ բանն է այսպես կոչված համակարգչային գիտությունը (computer science) , որը ավելի ինժիներա֊մաթեմատիկական գիտելիք է։ Ըստ էության երկուսն էլ կարելի է սովորել ինքնուրույն։ Այս պահին բուհերի վերաբերյալ շատ տեղեկացված չէմ բայց ամեն դեպքում պետք է նայել կիրառական մաթեմատիկայի, ինֆորմատիկայի, կիբերնետիկայի, ավտոմատ համակարգերի և նման ֆակուլտետների կողմը (Պետ․ Համալսարան, Պոլիտեխնիկ, Ամերիկյան Համալսարան ․․․)

Comments are closed.

Webmentions

  • Ծրագրավորման ուսուցում p5.js գրադարանի օգնությամբ – Ագռավաքար October 16, 2016

    […] Ես համոզված եմ, որ ծրագրավորում ուսուցանելու համար javasc… շատ հարմար է, սակայն մի բան կար, որը ինձ անհանգստացնում էր։ Ծրագրավորման դասավանդման արդեն քանի տարվա փորձ ունեմ, ու հասկացել եմ, որ մեծերին դասավանդելը մի բան է, իսկ երեխաներին դասավանդելը լրիվ այլ բան։  Երեխաներին դասավանդելու խնդիրը նրանում է, որ շատ աբստրակտ բաների մեջ դժվար է մտնելը, անիմաստ է ու վտանգավոր։ Միշտ անհրաժեշտ են գեղեցիկ ու ազդեցիկ մետաֆորներ, պատկերներ, մարմնի և արդեն ունեցած գիտելիքների հետ կապ և այլն։ […]