არ ვარ ექსპერტი და არც დეველოპერი ვარ. სისადმინი უფრო. მაგრამ ცოტა დავმუღამდი რაღაცეებში. ამ ბოლო 1 თვეში განსაკუთრებით. ჯავასკრიპტი es6-ი, ძალიან მომწონს კარგი ენაა და მის სრულად და სიღრმისეულად სწავლას რა ჯობია. ჰოდა ჩემნაირ ნუბებს მინდა გამოცდილება გავუზიარო.
დეველოპინგ სწავლის მრუდი არის wtf wtf WTF ahaa wtf a-ha და ფრემვორქით რო იწყებ ნაკლები ვადაფაქებია. თავიდან და მეტი aha მომენტები როცა უკვე სიღრმისეულად იწყებ გარკვევას მერე მოდის wtf.
ვიღაცამ გაიგო რა არის OOP, FP, ენის ყველა სისუსტე და ძლიერი მხარე ნახა და შექმნა ფრეიმვორქი. რომლის გამოყენებითაც შენც ავტომატურად იყენებ ამ ტექნოლოგიებს. ჰოდა ამ პრიციპების სწავლასთან ერთად თან სწავლობ სწორი ფორმით გამოყენებასაც. ორმაგი win.
ჯობია პირდაპირ ფრეიმვორკის სწავლით დაიწყო და ჯავასკრიპტის ის ნაწილი ისწავლო მარტო რაც მოგეთხოვება.
რამდენიც არ უნდა გელაპარაკოს ვინმემ inheritance, compostion, polymorphism, encapsulation-ზე აზრი არ აქვს ვერ გაიგებ სანამ არ გამოიყენებ.
ჯანგოში ფლასკში რეაქტში (ესენია რაც გავარჩიე) გჭირდება სულ რამოდენიმე კონცეპტი და ტექნიკაა იმ ენების რომელზეც არის აგებული ეს ფრეიმვორქი.
მაგ callback-ი. higher order functi0n, იგივე closure functi0ns. scope-ის გადატანა როგორ ხდება. რას ნიშნავს როცა ფუნქცია first class citizen-ია. ანუ როცა ფუნქციაც იგივე ობიექტია როგორც ცვლადი მაგალითად და შეგიძლია გადასცე ეს ფუნქცია როგორც ობიექტი რამეს თუნდაც ისევ ფუნქციას ან კლასს ან ცვლადში შეინახო ან ბაზაში გაუშვა და მოგვიანებით რამე ლოგიკას მიაბა. ნუ კიდევ protypes უნდა იცოდე, object construction და inheritance. ისე რომ ვთქვათ. ობიექტზე ორირენტირების ერთერთი მთავარი ამოცანაა მარტივი და უმოკლესი გზის პოვნა პრობლემის გადასაწყვეტად. ფრეიმვორქის შემქნელები გაიძულებენ სწორად გამოიყენო ფუნქციური პროგრამირების და OOP-ის ელემენტები იქ სადაც საჭიროა. ამ ყველაფერს აკეთებ ისეთი ტერმინების ცოდნის გარეშე როგორიცაა composition,encapsulation, inharitance, polymorphism. რომელიც უბრალოდ ტერმინია და დასაწყიში რამდენი თეორიაც არ უნდა იკითხო ვერ მიხვდები მათ არსს. აქ პირდაპირ მათ გამოყენებაზე გადადიხარ. ამ კონცეპტებს და პატერნებს თითქმის ინტუიციის დონეზე ამოიცნობ და ფიქრს გაჩვევს სწორს და დაგეგმვასაც. რაც მე მგონი ძალიან მნიშვნელოვანია როცა რაიმე დავალების გადაწყვეტაზე ფიქრს სწავლობ პროგრამულად. ჯერ ფიქრობ პრობლემაზე, მაქსიმალურად განაზოგადებ, მერე მის გადაწყვეტის დიზაინზე იმპლემენტაციაზე გადადიხარ. აკეთებ დრაფტს ყოფ ნაწილებად და მერე აკეთებ იმპლემენტაციას. რასაც პროგრამირებაზე წიგნებში კი წერენ მაგრამ მაინც ვერ გებულობ თავიდან რას გულისხმობენ)
ერთადერთი რაც ფრეიმვორკების თემაში ცუდია(თავიდან მხოლოდ)და გაბნევს ცოტათი. არის ის რაც მზითვებში მოყვება ხოლმე.
მაგ პითონში ინფრასტრუქტურა გჭირდება დამატებით ჯანგო და ფლასკისთვის. მაგალითად. enironment-ების მართვა. virtual env-ს ვგულისხმობ. პაკეტების მართვა pip. js-ში npm. ამიტომ არის კარგი. codepen.io და sandbox.io. ნაირი გვერდების არსებობა პირველ ეტაპზე. რადგან მთელი ყურადღება კონცეპტების გაცნობას დაუთმო და არა ინფრასტრუქტურის გამართვის სწავლას. პირველად რა პრობლემებსაც შევეჩეხე სულ თავიდან იყო import error-ები და პირველად რამაც დამბრკოლა ეგ იყო. ძალიან დამაბნეველი და გამაღიანებელი იყო და არსად არიყო ნახსენები არაფერი ამ პრობლემებზე რატომღაც. არც გაიდებში არც წიგნებში, არსად.
ჰოდა react-ის დოკუმენტაცია ამხრივ არის დახვეწილი და თანამედროვე მეტად, მარტივია სწორი და დალაგებული. აი სულ ცოტა ჯავასკრიპტი რომ იცოდე. პირდაპირ მიადგე შეგიძლია და დაიწყო წერა 0-დან. მთელი ფოკუსი და ენერგია გადაგაქვს იქ სადაც უნდა გქონდეს მიმართული წესით თავიდანვე. ფიქრობ პატერნებზე არქიტექტურაზე და უმნიშვნელო დეტალებში თავიდანვე არ იკარგები.
მოკლედ ფრეიმვორკი არის ენაზე დაშენებული ტექნოლოგია, შენს მაგივრად ვიღაცამ იფიქრა ენაში არსებული რომელი საშუალებებია საჭირო კონკრეტული ამოცანის გადაწყვეტისათვის ისე რომ ამ ენაში არსებული ყველა ის ტექნოლოგია გამოიყენო მზა პროდუქტების შესაქმნელად რაც საჭიროა და არაფერი ზედმეტი. იოლად მათი სიღრმიესლი ცოდნის გარეშე, სწრაფად და რაც მთავარია ყველაზე სწორი და ეფექტური გზით.
აღარ გიწევს ფიქრი არც წარმადობაზე, არც უსაფრთხოებაზე, მაიკრო მენეჯმენტი აღარ გიწევს IPC-ს არ მართავ. არც მულტიტრედინგზე ფიქრობ. race condition-ებზე. ასინქრონულობაზე, garbage collection-ზე და ა.შ
ფრეიმვორქის სწავლით სწავლობ ძალიან ბევრ რამეს ერთად, სწორი ფორმით გაწვდიან ეკოსისტემასაც (თუ რაც არის) პაკეტ მენეჯერები. ტემპლეით ენჯინები. ექსტენჟენები და ა.შ ეს და რომც გინდოდეს ძალიან მრუდე კოდს ვერ დაწერ, რასაც უბრალოდ რომელიმე ენის სწავლით დიდი ხანი ვერ მოახერხებ. როგორი ჭკვიანი მონდომებული და მაგარიც არუნდა იყო მაინც ყველა ეგეთ კოდს წერს სანამ რაღაც გამოცდილებას არ დააგროვებს და ეს აბსტრაქცია ანუ საქმის გაიოლება ფრეიმვორქით მიიღწევა ისევ OOP-ის და აბსტრაქციით.
ამიტომ არის 10+ ბიბლიოთეკა/ფრეიმვორკი ჯავაზე და სხვა ენებზეც. გაიოლება და გაჰაილეველება ხდება ენის და ეს გაიოლება და გაჰაილეველება მიიღწევა OOP-ით ან FP-ით. ხალხმა დაინახა ძირითადი პრობლემები/სუსტი წეტილები სად იყო ენაში და ზემოდან დააშენეს ეფექტური და ლოგიკური მეთოდები ენას ფრეიმვორქის სახით. ენის აბსტრაცია გამოდის. ანუ განზოგადებ-გამარტივება.
ენის სწავლა კარგია. მაგრამ ფრეიმვორქის სწალვით სწავლობ ამ ენის ახალი გზით გამოყენებას/გააბსტრაქებას პრობლემების. ჩათვალე ახალ ენას სწავლობ. ზოგერჯ სულ 4-5 ენაში არსებული კონცეპტი არის სულ საჭირო იცოდე რომ ძალიან ეფექტურად გამოიყენო.
მაგალითად დესკრიპტორების, დეკორატორების, closure-ების და მეტაკლასების გამოყენებით შეიქმნა მთლიანი django.
დალშე template-ენჯინებია და ORM-ები. მე ჯერ ყველა ამ კონცეპტის სწავლით დავიწყე და მიუხედავად იმისა რომ ყველაფერს გავეცანი და გაგივე, მაინც ახალი იყო ჯანგო ჩემთვის და დრო დამჭირდა ცალკე მის სწავლისთვის. მაინც უცხო იყო. ჰოდა ამიტომ პირდაპირ ამით დაიწყო ჯობია.
ეს ყველაფერი რაც დავწერე ადრე რომ წამეკითხა სანამ რამე მეცოდინებოდა. ძალიან რთულად და გაუგებრად მომეჩვენებოდა. მარტო იმიტომ არა რომ გაუგებრად და არეულად ვწერ) მთავარი აქ რაც არის არის ის რომ ფრეიმვორკებით დაწყება სულაც არაა ცუდი აზრი. შეიძლება რაღაც მომენტში უკეთესიც იყოს ბევრად. აი რის თქმა მინდა ეხლა არის ის რომ ფრეიმვორქის სწავლით ბევრად უფრო მეტ ცოდნას მიიღებ ვიდრე უბრალოდ პითონის ან ჯავასკრიპტის სწავლით. ნაკლებსაცც იწვალებ ბევრად. უფრო სწორედ იგივე ცოდნას მიიღებ, მაგრამ უკვე ამ OOP 4 ფუნდამენტური პრინციპი რომ არის მათ გამოყენებას სწორი გზით.
რო გასწავლიან წიგნით თავიდან გეწოდება ზღვა ინფორმაცია და დეტალები. მაგალით OOP-ის ახსნა თეორიის გზით იწყება. არის ურთულესი თეორიულად ასახსნელი და გაგება კიდევ უფრო შეუძლებელი) სანამ არ ნახავ პრაქტიკულად რა არის)
აი თუ არ გამოგიყენებია რამდენიც არ უნდა გელაპარაკონ ენკაპსულაციაზე აზრი არ აქვს )
ფრეიმვორკით კი ის გეწოდება რაც კონკრეტული ამოცანის გადაწყვეტის ყველაზე სწორი გზაა პირდაპირ. პრაქტიკულად. რაც ერთერთი მთავარი ამოცანა უნდა იყოს წესით. განსაკუთრებით პირველ ეტაპზე, სანამ გაერკვევი ყველაფერში გონება და ყურადღების და მოთმინების რესურსი გეზოგება ზღვა ინფორმაციის ერთიანად მიღების ნაცვლად იღებ მზა ტულს, რომლის გამოყენება თუ ისწავლე აუტომატურად იყენებ OOP-საც და FP-საც.
ინფრასტრუქტურის პრობლემა რაღაც დონით გაიოლდა linux containere-ებია მთლიანი გარემო შეგიძლია ჩააშენო და ფაბლიქ გახადო. მაგრამ ზოგი მათ სერთოდ არ იყენებს თავის დევ გარემოში და მეც არსად არცერთ წიგნში ან გაიდში არ შემხვედრია ჯერ ისეთი გარემო სადაც სათანადო ყურადღება ეთმობა იმ პრობლემებს რომელსაც პირველივე ნაბიჯებზე ეჩეხება ყველა და მერე მერე უფრო მნიშვნელოვანი ხდება ეს პრობლემები.
ამისთვის გჭირდება მზა გარემო და ფრეიმვორქი, რომ დეტალებში არ დაიკარგო თავიდან და არ დახარჯო შენი ენერგია წვრილმანებზე და ინფრასტრუქტურაში და გარდაემოს/სისტემების გამართვაზე არ იფიქრო.
როცა ვითარდები როგორც პროგრამისტი უკვე იწყებ ასეთ რაღაცეებზე ძალიან სერიოზულად ფიქრს და იქმნება უამრავი მიმდინარეობა. agile. conitinous delivery deployment მოდელები და ა.შ რაც რაღაც ეტაპზე ერთერთი მთავარი ამოცანა ხდება ინფრასტრუქტურა და არქიტექტურა დევ გარემოსი.
მეტი დრო ეთმობა დეველოპინგის ფლოუს/პროცესს.
რატომღაც დამწყებებზე არავინ ფიქრობს. ეგრევე არყრიან ინფორმაციას inheritance polymorphism bla bla bla როცა სულ 0-დან იწყებ არ გეწყოდა ინფორმაცია სწორი გზით. უფრო ეფექტური გზა მგონია ფრეიმვორქით დაწყება და მერე ნელნელა გადასვლა პატერნების და პრინციპების შესწავლაზე.
მთვრალ-მოუწეულზე ნაბოდვარია ნუ განსჯიტ მკაცრად იმედია გამოგადგებათ. თავისტკივილმა არ დამაძინა და რაღაცით ხო უნდა გამეყვანა დრო და აი ის მომენტი როცა დაბოლილზე გგონია რომ რაღაც ძალიან ჭვკიანური მოიფიქრე და რომ გამოფხიზლდები და ხვდები რომ მორიგი ბოდვაა მომენტი მქონდა