რა არის კოდირება. როგორ და სად ვისწავლოთ კოდირება? როგორ ავირჩიოთ მიმართულება და ენა

და აგიხსნით რატომ.

თხუთმეტი წლის წინ მირჩიეს პროგრამისტი გავმხდარიყავი იმის გამო, რომ მე ვიყავი ინტროვერტი და მორცხვი ადამიანი, ასევე მქონდა ანალიტიკური გონება და სოციალური ცხოვრების სრული ნაკლებობა, მაგრამ მე უბრალოდ გამეცინა და გავათავისუფლე ასეთი მრჩევლები. მაშინ მე თინეიჯერი ვიყავი და ჩემი თინეიჯერული გონებით პროგრამისტი ყოველთვის ცხოვრობდა ჩემი მშობლების სახლის სარდაფში, იყო მუწუკი და ეკეთა მახინჯი სათვალე, მას არასდროს ჰყოლია შეყვარებული, მაგრამ ფანტაზიებმა პრინცესა ლეიაზე გაამართლა (და საკმაოდ ხშირად). ეს ცხოვრების წესი არ მომეწონა. გარდა ამისა, მაშინ მე უკვე მყავდა შეყვარებული და საკმაოდ ლამაზი.

6 წელი: მე ვზივარ ბუდაპეშტის აეროპორტში და ვკითხულობ წიგნს HTML-ზე...

ექვსი წლის შემდეგ მე დავიქირავე ჩრდილოეთ ირლანდიის დამწყებ კომპანიაში გენერალისტად. დიახ, როგორც ჩანს, ამას გარკვეული დრო დასჭირდა. მაგრამ ზუსტად რამდენი? ზუსტად ვერ ვიტყვი. მაგრამ ბევრი. მითიური 10 ათასი საათი? არა. მიახლოებითი ციფრის მიცემას რომ მთხოვდნენ, ვიტყოდი, რომ იმ დღისთვის დაახლოებით 8 ათასი საათი მქონდა „დაშიფრული“. ტექნიკურად რომ ვთქვათ, 10000 საათის წესს რომ დავუჯერო, მაშინ 2000-ში გავხდებოდი ექსპერტი ამ სფეროში.

მაგრამ მე?

ეს არის ის, რისი მიღწევაც მოვახერხე 8 ათას საათში. იგრძენი თავი კომფორტულად, რადგან ჩემი ამბავი გრძელი იქნება. მე მაქვს კოდირებული შემდეგ ენებზე: C, HTML, CSS, JavaScript, Java (Android), Swift, PHP, Ruby, Python, Chuck, SQL, ვმუშაობდი შემდეგ ფრეიმიკებზე: Node, Angular, Bootstrap, Foundation, React, Rails , CodeIgniter, Ionic და შექმნა Landing Pages, Wordpress Sites, Ecommerce Solutions, eLearning Content, Moodle and Totara Sites, Mahara Sites, Common Cartridge და SCORM პაკეტები, Android და iOS აპები, ჰიბრიდული აპლიკაციები, შიდა ვებ აპები, ელექტრონული წიგნები, ჟურნალები , თამაშები და დამატებითი აპლიკაციები სამაგიდო თამაშებისთვის. მაშ, სად მივდივარ?

მინდა ვთქვა, რომ არ არსებობს სფერო, როგორც ასეთი, ამიტომ მისი ექსპერტის ამოცანა მიუღწეველია. კოდირება არ არის სფერო. კომპიუტერული მეცნიერება - დიახ, მაგრამ ეს სულ სხვაა.

კოდირება არის ის, რისკენაც პრეზიდენტები, მასწავლებლები და მშობლები უბიძგებენ ახალგაზრდა თაობას, თითქოს ცხვრებს მიჰყავთ შესაძლებლობების ოქროს ველში.

ეს დაპირება სიზმარია, პროპაგანდა იმდენად კარგად შექმნილი და გამოხატული (ახლა სიტყვებითაც კი არ არის გამოხატული), რომ აბსურდულად გამარტივდა სურათებად, რათა საყვარელი მცოცავი პატარები მიხვდნენ, რომ ლოგიკური აზროვნება უფრო მნიშვნელოვანია, ვიდრე საკუთარი თავის გამოკვების სურვილი (გთხოვთ ყურადღება მიაქციე სარკაზმს)...

15 წლის შემდეგ კოდირება გახდა პროგრამირების პოპ-კულტურული ვერსია და ახლა მოსახლეობას დიდი იმედი აქვს კოდირების მომავალ არმიაზე, რომლის წყალობითაც გვექნება ხელოვნური ინტელექტის კონტროლირებადი სახლები, მოძრაობა, საცალო ვაჭრობა, გართობა და რევოლუცია მედიცინაში. , მრეწველობა და სექსი - უბრალოდ საგიჟეთში, სხვა სიტყვა არ არსებობს. და ყველაფერი იმიტომ პროგრამირება ექვემდებარება კოდირებას და, თეორიულად, მისი სწავლა მარტივია... მაგრამ ეს შორს არის სიმართლისგან...

წყარო: LifeHacker

მოდით გავარკვიოთ. მითი იმის შესახებ, რომ ნებისმიერს შეუძლია პროგრამირების ერთ-ერთი ენის სწავლა სულ რამდენიმე საათში, „ფაქტად“ აღებული, მხოლოდ გარკვეულ მომენტამდეა მართალი და ეს მომენტი დგება სწავლის საწყის ეტაპზე. მართლაც, ენის სწავლა ერთ დღეში შეიძლება. ზოგადად, თუ საკუთარ თავს დასახავთ მიზნად, რომ ერთ თვეში გახდეთ პროგრამირების პოლიგლოტი, სამუშაოს არსებობისას, შეგიძლიათ დაეუფლოთ 8-10 ენას, თუ შაბათ-კვირას ისწავლით. მაგრამ აქ არის დაჭერა. ყველა პროგრამირების ენას აქვს თავისი ბიბლიოთეკა, ასევე სინტაქსური მახასიათებლები და ამ ყველაფრის სწავლა არ შეიძლება მარტივად ან სწრაფად ან შაბათ-კვირას. სინამდვილეში, რეალურ სამყაროში პროგრამირების ენა არ იქნება მთავარი პრობლემა.

მხოლოდ იმიტომ, რომ თქვენ საუბრობთ ინგლისურად, არ ნიშნავს რომ შეგიძლიათ დაწეროთ რომანები ან თუნდაც მოთხრობები. იგივე შეიძლება ითქვას კოდირებაზეც.

მხოლოდ იმიტომ, რომ თქვენ ისწავლეთ ენა, არ ნიშნავს რომ იცით როგორ დაწეროთ პროგრამა. დაამატეთ ამ უამრავ ჩარჩოს, დანამატს, ბიბლიოთეკას, წინასწარ პროცესორებს, პოსტპროცესორებს, კოდირების სტანდარტებს, ინდუსტრიის სტანდარტებს, ტესტზე ორიენტირებული განვითარება (TDD), ქცევაზე ორიენტირებული განვითარება (BDD), კონტენტის მართვის სისტემები, ფაილების ვერსიები, უწყვეტი ინტეგრაცია (CI), გამოშვება მენეჯმენტი და განლაგება, გამართვა, ბილეთების დალაგება, ჩანჩქერის მოდელები - და სკრამის მეთოდები და მათი კომბინაციები, და არ ვიცი სხვა რა დავასახელო. დასკვნა ის არის, რომ "კოდერის" კონცეფცია მოიცავს თითქმის ყველაფერს, რაც ზემოთ აღინიშნა. პროგრამირება გავლენას ახდენს მხოლოდ მცირე ნაწილზე. მნიშვნელოვანი, მაგრამ მაინც პატარა.

თუმცა, პროგრამირება კვლავ გამარტივებულია ...

Apple-მა გამოუშვა Playgrounds, MIT-მა გამოუშვა Scratch, Lego ამზადებს Boost-ს და ყველა ცდილობს მიყიდოს კოდირება ახალგაზრდა და ახალგაზრდა თაობას, თითქოს მათ სურთ 2020-იან წლებში ახალი პროგრამისტების სამუშაო ადგილების შევსება.

მე ამას ასე ვხედავ: "ნუ ინერვიულებ კოდზე, აიღეთ ეს ვირტუალური თავსატეხი და სულ ეს არის, შეგიძლიათ დაპროგრამოთ." თუ ეს სიმართლე იყო. აი, რა უნდა იცოდეთ პროგრამირების შესახებ: ის ტექსტზეა დაფუძნებული. ეს ყოველთვის იყო და იქნება მრავალი წლის განმავლობაში. ბავშვები, რომლებიც თამაშობენ Lego Boost-ს, Playgrounds-ს ან Scratch-ს, 22 წლისთვის არ გახდებიან უფრო გამოცდილი პროგრამისტები, ვიდრე ისინი, ვინც პროგრამირება დაიწყო 16 წლის ასაკში და მუშაობდა პროგრამირების რეალურ ენაზე. სინამდვილეში, საიდან მოდის ასეთი მოლოდინები? არ მგონია, რომ ჩემი შვილი 22 წლამდე ისწავლოს საკუთარი პურის შოვნა. მაგრამ თუ ის 6 წელი ისწავლის კოდირებას, მაშინ გარანტიას გაძლევთ, რომ ის სწრაფად იპოვის სამუშაოს.

სათამაშო მოედნები Apple-ისგან.

კოდირება შეიძლება იყოს პროგრამული უზრუნველყოფის განვითარების პროცესის ურთულესი ნაწილი. თუ თავიდანვე არ აწყობთ ყველაფერს (განსაკუთრებით მსხვილ პროექტებს), ამის შემდეგ კოდირება და გამართვა არამარტო დიდ დროს მიიღებს, არამედ თავის ტკივილსაც მოუტანს.

კარგი კოდი კარგად არის შენახული, ხელახლა გამოყენებადი და ტესტირებადი. შემდეგი ნაბიჯები გაჩვენებთ თქვენ და/ან თქვენს დეველოპერულ გუნდს, თუ როგორ უნდა გაუმკლავდეთ პროგრამირების სხვადასხვა ამოცანებს და შეინარჩუნოთ ყველაფერი რაც შეიძლება კარგად. მე გაგაცნობთ "საუკეთესო პრაქტიკას", რომელიც დაგეხმარებათ დაწეროთ კარგი კოდი და დაგეხმაროთ თქვენ და თქვენს გუნდს იყოთ ბედნიერი და ეფექტური.

1. გამოიყენეთ კოდირების სტანდარტები

ცუდი, არაორგანიზებული კოდის დაწერა ადვილია, მაგრამ ძნელი შესანარჩუნებელი. კარგი კოდი ჩვეულებრივ ინარჩუნებს ერთგვარ სტანდარტს ცვლადის დასახელებისთვის, ფორმატირებისთვის და სხვა. ასეთი სტანდარტები სასარგებლოა, რადგან ისინი პირობითს აქცევენ მათ, ვინც შემდეგ წაიკითხავს კოდს, მათ შორის თქვენც.

თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი კოდირების სტანდარტები, მაგრამ უმჯობესია გამოიყენოთ ერთი ფართოდ გამოყენებული. Zend Framework კოდირების სტანდარტის, ან PSR-1 კოდირების სტილის გამოყენებით, სხვებისთვის უფრო ადვილი იქნება ადაპტაცია.

2. გამოიყენეთ კომენტარები

კომენტარები კრიტიკულად საჭიროა. თქვენ არ ისწავლით მათ დაფასებას, სანამ არ დაწერთ ათასი სტრიქონიანი ზომის კოდს და არ დატოვებთ მას რამდენიმე დღით, შემდეგ კი არ დაბრუნდებით მის გარკვევაში. სასარგებლო კომენტარები უადვილებს ცხოვრებას მათ, ვინც თქვენს შემდეგ იმუშავებს კოდით.

დაწერეთ მკაფიო, ერთსტრიქონიანი კომენტარები კოდის გაუგებარი ნაწილებისთვის; დაწერეთ ფუნქციების და მეთოდების პარამეტრების და ფუნქციონირების სრული აღწერა; რთული ლოგიკური ბლოკებისთვის, საჭიროებისამებრ აღწერეთ მათ წინაშე არსებული ლოგიკა. არ დაგავიწყდეთ თქვენი კომენტარების განახლება!

3. რეფაქტორი

კოდის რეფაქტორირება ასევე კარგი ჩვევაა პროდუქტიული დეველოპერებისთვის. გინდ დაიჯერეთ, გინდ არა, ყოველ დღე გიწევთ თქვენი კოდის რეფაქტორირება, თორემ რაღაც არ არის! Refactoring ინახავს თქვენს კოდს კარგ ფორმაში, მაგრამ რა უნდა მოახდინო რეფაქტორირება და როგორ?

თქვენ უნდა გადააკეთოთ ყველაფერი, დაწყებული არქიტექტურიდან მეთოდებამდე და ფუნქციებამდე, ცვლადის სახელებამდე, მეთოდზე გადაცემული არგუმენტების რაოდენობამდე და ა.შ.

რეფაქტორირება უფრო ხელოვნებაა, ვიდრე მეცნიერება, მაგრამ არსებობს რამდენიმე კარგი წესი, რომელსაც შეუძლია ნათელი მოჰფინოს ამას:

  • თუ თქვენი ფუნქცია ან მეთოდი 20-25 სტრიქონზე მეტია, დიდი ალბათობით, იქ ძალიან ბევრი ლოგიკაა და შეგიძლიათ მისი დაყოფა ორ ან მეტ მცირე ფუნქციად/მეთოდად.
  • თუ თქვენი ფუნქციის ან მეთოდის სახელი 20 სიმბოლოზე მეტია, ღირს სახელის გადახედვა, ან მთელი ფუნქციის/მეთოდის გადახედვა პირველი წესის გამოყენებით.
  • თუ თქვენ გაქვთ ბევრი ჩასმული მარყუჟი, თქვენ იყენებთ ძალიან ბევრ რესურსს ამის გაცნობიერების გარეშე. ზოგადად, თქვენ უნდა გადახედოთ თქვენს ლოგიკას, თუ ორზე მეტი მარყუჟი გაქვთ ჩასმული. სამი წყობილი მარყუჟი უბრალოდ საშინელებაა!
  • იფიქრეთ, არის თუ არა რაიმე შესაფერისი დიზაინის ნიმუში, რომლის გამოყენებაც შეგიძლიათ. თქვენ არ უნდა გამოიყენოთ შაბლონები მხოლოდ შაბლონების გამოყენების მიზნით, მაგრამ შაბლონები გვთავაზობენ დადასტურებულ გადაწყვეტილებებს, რომლებიც შეიძლება იყოს შესაბამისი.

4. მოერიდეთ გლობალურ კოდს

გლობალებსა და მარყუჟებს შეუძლიათ პრობლემების დამატება, როდესაც თქვენი კოდი მილიონობით ხაზამდე გაიზრდება. ისინი გავლენას ახდენენ კოდზე ისეთ ადგილებში, სადაც ძნელია დანახვა, ან იწვევენ პრობლემებს ცვლადების, ობიექტების და სხვა ნივთების სახელებთან დაკავშირებით. ორჯერ დაფიქრდით, სანამ დააბინძურებთ გლობალურ სახელთა სივრცეს ცვლადებით, ფუნქციებით, მარყუჟებით და სხვა.

იდეალურ შემთხვევაში, თქვენ არ უნდა განსაზღვროთ ბლოკები გლობალურად. გადართვის განცხადებები, try-catch, foreach ციკლები, while მარყუჟები და მსგავსი უნდა იყოს აღწერილი მეთოდის ან ფუნქციის ფარგლებში. მეთოდები უნდა იყოს აღწერილი კლასებში, ხოლო კლასები და ფუნქციები სახელთა სივრცეებში.

5. გამოიყენეთ მნიშვნელოვანი სახელები

არასოდეს გამოიყენოთ სახელები, როგორიცაა $ k, $ m და $ ტესტი თქვენი ცვლადებისთვის. როგორ შეიძლება ასეთი კოდის წაკითხვა მომავალში? კარგ კოდში, ცვლადების სახელები, მეთოდები/ფუნქციები, კლასები; უნდა ატაროს სემანტიკური დატვირთვა. ზოგიერთი კარგი ცვლადის სახელია $ request, $ dbResult და $ tempFile (დამოკიდებულია თქვენი კოდირების სტილზე).

6. გამოიყენეთ მნიშვნელოვანი სტრუქტურები

მნიშვნელოვანია თქვენი განაცხადის სტრუქტურირება; ნუ გამოიყენებთ რთულ სტრუქტურებს, ყოველთვის იყავით მარტივი. დირექტორიებისა და ფაილების დასახელებისას გამოიყენეთ დასახელების კონვენცია, რომელიც თქვენ შეთანხმდით გუნდთან, ან რომელიც შეესაბამება კოდირების სტანდარტებს. ყოველთვის გამოყავით PHP აპლიკაციის ოთხი ნაწილი ერთმანეთისგან - CSS, HTML შაბლონები, JavaScript, PHP კოდი - და თითოეულისთვის შეეცადეთ გამოყოთ ბიბლიოთეკები ბიზნეს ლოგიკისაგან. ასევე კარგი იდეაა, რომ დირექტორიაში იერარქია შეძლებისდაგვარად მცირე იყოს, ასე რომ გაგიადვილდებათ კოდის ნაწილების ძიება და სტრუქტურაში ნავიგაცია.

7. გამოიყენეთ ვერსიის კონტროლის სისტემები

წარსულში, კარგი განვითარების გუნდები ენდობოდნენ CVS-ს. ახლა ჩვენ გვაქვს გადაწყვეტილებების ვარიაცია. ცვლილებებისა და გადასინჯვის მენეჯმენტი უნდა იყოს მარტივი, მაგრამ ეფექტური, ამიტომ აირჩიეთ რომელი ვერსიის კონტროლის სისტემა საუკეთესოდ მუშაობს თქვენი განვითარების გუნდის ნაკადთან. მირჩევნია გამოვიყენო განაწილებული ვერსიების კონტროლის სისტემა, როგორიცაა Git ან Mercurial; როგორც უფასო / ღია წყარო და ძალიან ძლიერი. თუ არ იცით რა არის ვერსიის კონტროლი, გირჩევთ გაეცნოთ შონ გუჯსტონის შესავალი Git სერიას.

8. გამოიყენეთ ავტომატური აგების ხელსაწყოები

9. გამოიყენეთ კოდის დოკუმენტატორები

დიდი აპლიკაციებისთვის, რომლებიც მოიცავს მრავალ კლასს და სახელთა სივრცეს, თქვენ უნდა გქონდეთ ავტომატურად გენერირებული API დოკუმენტაცია. ეს ძალიან სასარგებლოა და გუნდში ყველამ იცის რა არის. და თუ ერთდროულად რამდენიმე პროექტზე მუშაობთ, ეს დოკუმენტაცია კურთხევად გეჩვენებათ, რადგან ალბათ დაივიწყებთ სტრუქტურის თავისებურებებს და პროექტებს შორის სხვა განსხვავებებს. ერთ-ერთი ასეთი დოკუმენტური ფილმი, რომლის განხილვაც გსურთ, არის DocBlox.

10. გამოიყენეთ ტესტირება

არსებობს მრავალი ინსტრუმენტი, რომელსაც მე ნამდვილად ვაფასებ, მაგრამ ერთი, რომელსაც აშკარად ვაფასებ, არის ჩარჩოები, რომლებიც ხელს უწყობენ ტესტირების პროცესის ავტომატიზაციას. ტესტირება (კერძოდ სისტემატური ტესტირება) აუცილებელია თქვენი მილიონი დოლარის აპლიკაციის ყველა ნაწილისთვის. კარგი ტესტირების ხელსაწყოებია PHPUnit და SimpleTest თქვენი PHP კლასების ტესტირებისთვის. GUI ტესტირებისთვის გირჩევთ SeleniumHQ ინსტრუმენტებს.

შედეგი

ამ სტატიაში თქვენ იხილავთ საუკეთესო პრაქტიკის მიმოხილვას უკეთესი კოდის დასაწერად, კოდირების სტანდარტების გამოყენებით მთლიანი გუნდის ფორმატირებამდე, რეფაქტორირების მნიშვნელობა და როგორ დაეუფლონ მას, პროფესიონალური ინსტრუმენტების გამოყენებით, როგორიცაა ტესტირების ჩარჩო, კოდის დოკუმენტატორი და ვერსიის კონტროლი, რომელიც დაგეხმარებათ კოდის ბაზის მართვაში. თუ აქამდე არ გაგიკეთებიათ ეს ნაბიჯები, უნდა მოამზადოთ საკუთარი თავი და თქვენი გუნდი მათ შესასრულებლად.

უფასო პროგრამული უზრუნველყოფის დეველოპერების უმეტესობა მუშაობს Linux-ზე ან Mac-ზე, მაგრამ Windows-ის მხარდაჭერა ჩვეულებრივ ხორციელდება ნარჩენების საფუძველზე. მუშაობს - კარგი, არა უშავს - პორტოს ვისაც სჭირდება. ამ სტატიაში მე გაჩვენებთ, თუ როგორ უნდა შექმნათ Windows-ის ძირითადი შესრულება ამ სისტემის ხელმისაწვდომობის გარეშე.

Python 2.7-ის უახლესი გამოშვება გამოცხადდა წელს, რის შემდეგაც Python Software Foundation აღარ დაუჭერს მხარს 2.7 ფილიალს. ბევრი პოპულარული ბიბლიოთეკა და ჩარჩო ასევე წყვეტს Python 2-ის ოფიციალურ მხარდაჭერას და Linux-ის მრავალი დისტრიბუცია აღარ შეიცავს მას ნაგულისხმევ პაკეტში.

თქვენ ალბათ არაერთხელ გამოგიყენებიათ virustotal.com-ის სერვისები იმის შესამოწმებლად, შეიცავს თუ არა ორობითი ფაილები მავნე ფუნქციებს, ან საკუთარი განვითარების შესამოწმებლად. ამ სერვისს აქვს უფასო API, რომელსაც ამ სტატიაში Python-ში განვიხილავთ.

ნებისმიერი შესაძლებლობა უხილავად წვდომის გარე სამყაროს მასპინძელი შიგნით უსაფრთხო ქსელი არის ძვირფასი აღმოჩენა შეღწევადობის ტესტერი. ერთ-ერთი ბოლო ხელმისაწვდომი გზაა NTP, საათის სინქრონიზაციის პროტოკოლი. მისი მოძრაობა თითქმის ყველგან არის დაშვებული, ასე რომ ეს იქნება შესანიშნავი ტრანსპორტი მონაცემებისთვის. მე გაჩვენებთ, თუ როგორ უნდა დანერგოთ ძირითადი კლიენტი და სერვერი C #-ში.

თქვენ ალბათ გსმენიათ, რომ ნერვულმა ქსელებმა ბოლო დროს საკმაოდ კარგად გამოიჩინეს ობიექტების ამოცნობა სურათებში. ჩვენი ამოცანაა ვისწავლოთ როგორ გამოვიყენოთ ეს ნერვული ქსელები, რადგან მათი სიმძლავრე შეიძლება სასარგებლო იყოს სხვადასხვა შემთხვევაში. ამ სტატიაში მე გაჩვენებთ, თუ როგორ გამოიყენოთ იგი ყველაზე გავრცელებული ინსტრუმენტების გამოყენებით: Python და Tensorflow და Keras ბიბლიოთეკები.

შესაძლოა უკვე შეგხვედრიათ ხმოვანი იდენტიფიკაცია. იგი გამოიყენება ბანკებში ტელეფონის იდენტიფიკაციისთვის, საკონტროლო პუნქტებში ვინაობის დასადასტურებლად და საყოფაცხოვრებო ხმოვან ასისტენტებში, რომლებსაც შეუძლიათ მფლობელის ამოცნობა. იცი როგორ მუშაობს? გადავწყვიტე დეტალებში შემესწავლა და ჩემი განხორციელება გამეკეთებინა.

ადრე, რიცხვებით კაპჩა იყო შესანიშნავი გზა ბოტების მოსაშორებლად, მაგრამ ახლა ასეთი სახეობა თითქმის არ არის ნაპოვნი. ვფიქრობ, თქვენ თვითონ მიხვდით, რაშია საქმე: ნერვულმა ქსელებმა ჩვენზე უკეთ ისწავლეს ასეთი კაპჩების ამოცნობა. ამ სტატიაში ჩვენ გადავხედავთ, თუ როგორ მუშაობს ნერვული ქსელი და როგორ გამოვიყენოთ Keras და Tensorflow ციფრების ამოცნობის განსახორციელებლად.

ორი წლის წინ, სტრიმინგ პლატფორმის Twitch-ის დეველოპერებმა წარმოადგინეს სტრიმერებსა და მაყურებლებს შორის ურთიერთქმედების ახალი გზა - Twitch Extensions. ეს სისტემა დეველოპერებს საშუალებას აძლევს შეავსონ და გააუმჯობესონ როგორც საიტის, ასევე მობილური აპლიკაციის ინტერფეისი, შექმნან სხვადასხვა ინტერაქტიული ელემენტები. მე გაჩვენებთ, თუ როგორ მუშაობს ეს გაფართოებები და როგორ შეგიძლიათ შექმნათ თქვენი საკუთარი სურვილის შემთხვევაში.

საბანკო ტროასები ყოველწლიურად მილიონობით დოლარის ზიანს აყენებენ. ვირმეიკერები ცდილობენ, ბანკირების შიდა სამზარეულოსთან დაკავშირებული ყველაფერი ღრმა საიდუმლოებაში შეინახონ. ამიტომ, ჩვენ ვერ გამოვტოვებდით უნიკალურ მოვლენას - Carbanak-ის საბანკო ტროას წყაროს კოდის საზოგადოებაში მიღებას - და დავიწყეთ მისი სტრუქტურის შიგნიდან გამოკვლევა.

Julia არის ახალგაზრდა პროგრამირების ენა, რომელიც შექმნილია ძირითადად სამეცნიერო გამოთვლებისთვის. მის შემქმნელებს სურდათ, რომ შეევსო Matlab-ის, მისი კლონებისა და R-ის მიერ ადრე დაკავებული ნიშა. შემქმნელები ცდილობდნენ გადაეჭრათ ეგრეთ წოდებული ორი ენის პრობლემა: დააკავშიროთ R-ისა და Python-ის მოხერხებულობა და C-ის შესრულება. ვნახოთ, რა გააკეთეს. .

Forth გამოიყენება სხვადასხვა სფეროში, მათ შორის PCI ჩიპსეტებსა და კოსმოსურ ხომალდებში, ხოლო პაველ დუროვი გამოიყენებს მსგავს ენას TON კრიპტოვალუტის სმარტ კონტრაქტებში. ძირითადი ცვლილებების გარეშე, ერთ-ერთი უძველესი პროგრამირების ენა საშუალებას აძლევს მრავალი თანამედროვე პარადიგმის განსახიერებას. რა არის ზუსტად ეს იდუმალი Forth?

გამა რეჟიმი, განსხვავებით მარტივი ჩანაცვლების რეჟიმისგან, საშუალებას გაძლევთ დაშიფროთ თვითნებური სიგრძის შეტყობინებები padding ოპერაციის გამოყენების გარეშე. დღეს ვისაუბრებთ იმაზე, თუ როგორ ხორციელდება ასეთი რეჟიმი და დავწერთ მის განხორციელებისთვის საჭირო ყველა ფუნქციას.

როდესაც თქვენს პროგრამებში კოდის ხაზების რაოდენობა მილიონობით არის, შეცდომების პოვნა ათასჯერ უფრო რთული ხდება. საბედნიეროდ, დღეს შესაძლებელია ტესტირების ავტომატიზაცია ფუზერის გამოყენებით. როგორ მუშაობენ ისინი, რატომ უნდა იქნას გამოყენებული და რისი უნარი აქვთ - ამის შესახებ დღევანდელ სტატიაში შეიტყობთ.

აბსტრაქცია არის პროგრამირების საფუძველი. ჩვენ ბევრ რამეს ვიყენებთ მათ შინაგანზე ფიქრის გარეშე და ისინი მშვენივრად მუშაობენ. ყველამ იცის, რომ მომხმარებლის პროგრამები ურთიერთქმედებენ ბირთვთან სისტემური ზარების საშუალებით, მაგრამ ოდესმე გიფიქრიათ, როგორ ხდება ეს თქვენს აპარატზე?

ჰაკერები ავითარებენ თაღლითებს, მოთამაშეები ყიდულობენ მათ, კომპანიები ქირაობენ ინჟინრებს ახალი თავდაცვითი საშუალებების შესაქმნელად. ჰაკერები კვლავ პოულობენ ხვრელს და წრე სრულდება. ამ სტატიაში ჩვენ გადავხედავთ, თუ როგორ მუშაობს სხვადასხვა თავდაცვითი მეთოდები (და მუშაობს თუ არა ისინი!) და შევეცდებით შევქმნათ ჩვენი საკუთარი თაღლითობის დაცვის სისტემა.

Linux-ში, როგორც მოგეხსენებათ, ბევრი რამ დანერგილია ფაილების სისტემაში ფაილების სახით. და თუ არ არის დანერგილი, მაშინ შეგიძლიათ თავად განახორციელოთ ისინი FUSE-ის გამოყენებით. Windows-ში ეს ნაკლებად მისაღებია, მაგრამ თუ მაინც ნამდვილად გსურთ რაიმეს, როგორც ფაილური სისტემის დამონტაჟება, მაშინ ეს შესაძლებელია. მე გაჩვენებთ, თუ როგორ უნდა მიაღწიოთ ამას C # და Dokan ბიბლიოთეკის გამოყენებით.

თავდამსხმელისთვის ყველაზე მიმზიდველი სამიზნე ონლაინ ბანკინგია და ბოტნეტები გადამწყვეტ როლს თამაშობენ მის წინააღმდეგ ვირუსის შეტევების წარმატებაში. მაგრამ იმისათვის, რომ ამოიღონ ღირებული ინფორმაცია მათი დახმარებით ამოღებული მონაცემებიდან, თავდამსხმელს დიდი შრომა სჭირდება. დღეს მე გეტყვით, როგორ გაურთულოთ ცხოვრება ბოტებს და დაიცვათ თქვენი აპლიკაცია შეტევებისგან.

კომპიუტერული თამაშების მთავარი ის არის, რომ წარმატების ჯილდო არის ნამდვილი სიამოვნება, ხოლო წარუმატებლობის ღირებულება დაბალია. მაგრამ ზოგჯერ, ახალი შესაძლებლობების გასახსნელად ან უბრალოდ თამაშის დასაჩქარებლად, თქვენ მიმართავთ არა ყველაზე გულწრფელ მეთოდებს. და თუ თქვენ არ შეგიძლიათ შეცვალოთ სამყაროს წესები, შეგიძლიათ სცადოთ მათი წარმართვა. დიახ, ეს ასეა, ჩვენ ვისაუბრებთ თაღლითებზე.

კლავილოგერებთან ბრძოლა უამრავი ფუნქციით და აღმოჩენისგან დაცვით შეიძლება ათობით, თუ არა ასობით დოლარი დაჯდეს. მაგრამ keylogger არ არის ისეთი რთული რამ და თუ გინდათ, შეგიძლიათ გააკეთოთ საკუთარი და თუნდაც თავიდან აიცილოთ ანტივირუსების აღმოჩენა. ამ სტატიაში მე გაჩვენებთ, თუ როგორ უნდა გავაკეთოთ ეს და ამავდროულად ვივარჯიშებთ პროგრამების შემუშავებაში C #-ში.

C ++-ში არის ისეთი რამ, როგორიცაა დინამიური მონაცემთა ტიპის იდენტიფიკაცია (RTTI). ეს არის მექანიზმი, რომელიც საშუალებას გაძლევთ განსაზღვროთ ცვლადის ან ობიექტის ტიპი გაშვების დროს. შესრულებადი ფაილის შესამცირებლად, RTTI გამორთულია ბევრ პროექტში, რაც აჩერებს dynamic_cast და typeid მუშაობას. მაგრამ მაინც არსებობს გზა იმის შესამოწმებლად, არის თუ არა ობიექტის ეგზემპლარი რომელიმე საბაზო კლასიდან მიღებული.

სტატიკურად აკრეფილი ენები, როგორც წესი, გაიძულებთ დაწეროთ ცვლადი ტიპები რაიმე მიზეზით. მაგრამ ეს ყოველთვის ასე არ არის: პროგრამირების ენების თეორია და პრაქტიკა მნიშვნელოვნად განვითარდა, უბრალოდ, ეს მიღწევები დაუყოვნებლივ არ არის მიღებული ინდუსტრიის მიერ. დღეს ჩვენ გადავხედავთ OCaml ენას და დავინახავთ, რომ სტატიკური აკრეფა სულაც არ არის მოუხერხებელი.

არსებობს მრავალი უსაფრთხოების გადაწყვეტა, რომელიც განსაზღვრავს მუშაობას სავარჯიშო გარემოში, მუშაობს გამართვის საწინააღმდეგო ტექნიკით, აკონტროლებს მათი კოდის მთლიანობას და დინამიურად შიფრავს მათ მონაცემებს მეხსიერებაში ნაგავსაყრელზე. უსაფრთხოების კიდევ ერთი ძლიერი ტექნიკა არის კოდის ვირტუალიზაცია. ამ სტატიაში მე გაჩვენებთ როგორ მუშაობს.

უმჯობესია ენის სწავლა რეალურ პროექტზე, ასე რომ, როდესაც გადავწყვიტე ექსპერიმენტი ჩამეტარებინა ჯოჯოხეთში, ჩემს თავს რეალური და საინტერესო დავალება დამიდგინა: დამეწერა პროგრამა ჰიპერვიზორში სამუშაოს გამოსავლენად. ეს თავისთავად სახალისოა და ახალი პროგრამირების ენა გართობას შემდეგ დონეზე გადაიტანს.

თქვენს ცხოვრებაში არაერთხელ შეგხვედრიათ სხვადასხვა პროტოკოლი - ზოგიერთი გამოიყენეთ, ზოგიც, შესაძლოა, საპირისპირო. ზოგი ადვილად იკითხებოდა, ზოგის გარკვევა შეუძლებელია თექვსმეტი რედაქტორის გარეშე. ამ სტატიაში მე გაჩვენებთ, თუ როგორ უნდა შექმნათ თქვენი საკუთარი პროტოკოლი, რომელიც იმუშავებს TCP/IP-ის თავზე. ჩვენ განვავითარებთ მონაცემთა საკუთარ სტრუქტურას და განვახორციელებთ სერვერს C #-ში.

თუ თქვენ წერთ პითონში, მაშინ, ალბათ, ნახეთ სტანდარტულ ბიბლიოთეკებში ორმაგი ხაზგასმული მეთოდების განმარტებები. ეს "ჯადოსნური" მეთოდები ქმნის ბევრ სასარგებლო ინტერფეისს, რომელსაც მუდმივად იყენებთ - მაგალითად, როდესაც იღებთ მნიშვნელობას ელემენტის ნომრის მიხედვით, ან ამობეჭდავთ რაიმეს. ახლა მე გაჩვენებთ როგორ გამოიყენოთ ეს მეთოდები თქვენს პროგრამებშიც.

პროგრამული უზრუნველყოფის დაწერისას, რომელიც ურთიერთქმედებს სხვა აპლიკაციებთან, ზოგჯერ საჭირო ხდება მესამე მხარის პროცესების შესრულების შეწყვეტა. არსებობს რამდენიმე მეთოდი, რომელიც შეიძლება დაგეხმაროთ ამ საკითხში: ზოგი კარგად არის დოკუმენტირებული, ზოგი ცდილობს დაასრულოს საჭირო პროცესები უფრო მკაცრი გზებით, პროვოცირება მოახდინოს ოპერაციულ სისტემაზე მათ ძალის გამოყენებით. მე გაჩვენებთ Windows-ში პროცესების შეწყვეტისა და განადგურების რამდენიმე გზას.

ენა, რომელიც შემუშავებულია აშშ-ს თავდაცვის დეპარტამენტის დაკვეთით და მსოფლიოში პირველი პროგრამისტის ადა ლავლეისის სახელს ატარებს, აქტიურად გამოიყენება თვითმფრინავების, მატარებლების, კოსმოსური ხომალდების და სხვა საინტერესო ნივთების სამართავად. მოდით შევხედოთ ენას მითების პრიზმის გარეშე და ვნახოთ, როგორ ვისარგებლოთ მისგან, თუნდაც ჯერ კოსმოსში არ გავდივართ.

თქვენ ალბათ შეგხვედრიათ სათამაშო კონსოლების ემულატორები და, შესაძლოა, ერთ საათზე მეტ ხანსაც იჯდეთ მათთან. მაგრამ ოდესმე გიფიქრიათ როგორ მუშაობს? NES-ის მაგალითის გამოყენებით, რომელიც რუსეთში ცნობილია როგორც Dendy, მე გაჩვენებთ როგორ შექმნათ თქვენი საკუთარი ემულატორი. და ამავდროულად, ჩვენ შევეხებით ამ კონსოლის მზაკვრულ არქიტექტურას, რომელმაც თავისი დროისა და მისი მოკრძალებული ფასისთვის საოცრად კარგი სურათი შექმნა.

თქვენ ალბათ გსმენიათ მავნე აპლიკაციების ისეთი კლასის შესახებ, როგორიცაა stealers. მათი ამოცანაა მსხვერპლის სისტემიდან ღირებული მონაცემების, პირველ რიგში, პაროლების ამოღება. ამ სტატიაში მე აგიხსნით ზუსტად როგორ აკეთებენ ამას, Chrome და Firefox ბრაუზერებიდან პაროლების ამოღების მაგალითის გამოყენებით და ვაჩვენებ C ++ კოდის მაგალითებს.

ინტერვიუს კითხვები, როგორიცაა "რატომ არის ხვრელის საფარი მრგვალი?" - ეს უცნაურია. C კოდის ფურცლები, რომლებიც უნდა შეადგინოთ თქვენს თავში, მოსაწყენია. ყველაზე საინტერესო ამოცანები ზოგადი ტექნიკური და ლოგიკური აზროვნებისთვისაა. დღეს კი Abbyy კომპანიის ამხანაგებმა დაგვყარეს სწორედ ასეთი!

პროგრამირების უნარი თანამედროვე მსოფლიოში ერთ-ერთი ყველაზე ღირებული უნარ-ჩვევაა. და პრაქტიკულად არ აქვს მნიშვნელობა, კონკრეტულად რა აიძულებს ადამიანს შექმნას კოდი: გულწრფელი ინტერესი, ფინანსური თუ კარიერული მოსაზრებები - ვინც დაპროგრამება იცის, უსაქმოდ არ დარჩება. კოდირება ძალიან ჰგავს უცხო ენაზე კომუნიკაციას, ამიტომ პროგრამირების სწავლის ადრეულ ეტაპზე დამწყებთათვის ხშირად უჭირთ. ამავდროულად, ბევრი განიცდის მძიმე დისკომფორტს, მაგრამ დროთა განმავლობაში ყველაფერი უკეთესდება და ადამიანი იწყებს კოდირებას მარტივად, ძლიერი გონებრივი ხარჯების გარეშე. დღეს შეგიძლიათ იპოვოთ მრავალი წიგნი და ონლაინ რესურსი, რომლითაც შეგიძლიათ ისწავლოთ კოდირება, მაგრამ ნებისმიერი თვითშესწავლა ასოცირდება სტრესთან და უარყოფით ემოციებთან - ეს ყოველთვის უნდა გახსოვდეთ პროგრამირების ენის დაუფლების დაწყებისას. დამწყები კოდირებისთვის ყველაზე მნიშვნელოვანი ის არის, რომ არ დატოვოს ენის სწავლა ნახევრად და დაკარგოს ინტერესი ამ პროფესიის მიმართ. რა უნდა იცოდეს მომავალმა პროგრამისტმა? რა სირთულეები ელის მას სასარგებლო უნარების დაუფლების გზაზე?

Პროგრამირების ენები

ჯერ უნდა გადაწყვიტოთ პროგრამირების ენა, რომლის სწავლა სურს დამწყებს. ეს არც ისე ადვილია - ბევრი ენაა და თითოეული მათგანი თავისებურად კარგია. ძალიან მნიშვნელოვანია ენის შეგნებულად არჩევა - ბოლოს და ბოლოს, მის განვითარებაში დიდი დრო და ძალისხმევა დაიხარჯება. როგორც არ უნდა იყოს, ახალბედა კოდირმა უნდა იცოდეს, რომ არ არსებობს კარგი ან ცუდი პროგრამირების ენები, მაგრამ არის ენები, რომლებიც მეგობრულია ნეოფიტებისთვის. ამიტომ, რაც უფრო მარტივი და გასაგებია პროგრამირების ენა, მით უკეთესი - გზის დასაწყისში უკეთესია წარმატებებიდან წარმატებამდე გადასვლა, მარტივი ამოცანებიდან უფრო რთულზე. უფრო ადვილი იქნება, მას შემდეგ რაც დამწყები ისწავლის კოდირებას თავის პირველ პროგრამირების ენაზე, სხვა ენები მას ბევრად უფრო ადვილი იქნება.

ასევე ძალიან მნიშვნელოვანია დაუყოვნებლივ განსაზღვროთ, რისთვის გჭირდებათ ენის ცოდნა. იმიტომ რომ კოდირება ძალიან განსხვავებულია. თუ ვინმეს სურს გახდეს პროგრამული უზრუნველყოფის დეველოპერი, მაშინ შეგიძლიათ იყუროთ ჯავისკენ, ხოლო iOS-ისთვის აპლიკაციების შექმნის შემთხვევაში უკეთესია Swift ენა.

სწავლების შესაფერისი მეთოდი

სწავლის მრავალი გზა არსებობს, ამიტომ პროგრამირების ენების შემთხვევაში, თქვენ უნდა იპოვოთ შესაფერისი მეთოდოლოგია. ამასთან, გონივრული იქნება ძირითადი მეთოდის არჩევა და მისი შევსება მეორადი სწავლების მეთოდებით. აქ ყველაფერი ძალიან ინდივიდუალურია: თუ დამწყები ვიზუალურია ან კარგად ესმის ინფორმაციას ყურით, მაშინ მას შეუძლია ისწავლოს კოდირება YouTube-ზე ვიდეოების ყურებით და სხვა ცოდნა მიიღოს წიგნებიდან. აქ არის რამდენიმე მარტივი, მაგრამ ეფექტური გაკვეთილი:

ონლაინ კოდირების კურსები.ზოგიერთი ადამიანი უფრო ეფექტურად მუშაობს, როდესაც მათ ეუბნებიან, რა უნდა გააკეთონ და რეგულარულად ამოწმებენ მათ შესრულებას. და ასეთი ხალხი ბევრია. ამიტომ, თუ დამწყები გრძნობს, რომ აქვს პრობლემები თვითდისციპლინასთან, მაშინ უნდა აირჩიოს კურსი, სადაც მუდმივად იქნება მოტივირებული ჩეკებით. კარგი იდეაა - ამდენი ადამიანი წყვეტს პროგრამირების სწავლას, ეყრდნობოდა ნებისყოფას და ენთუზიაზმს. კოდირების დამოუკიდებლად სწავლა ყველასთვის არ არის, ეს ყოველთვის უნდა გვახსოვდეს.

YouTube ვიდეო.დღეს თქვენ შეგიძლიათ გაიგოთ ყველაფერი ყველაფრის შესახებ მხოლოდ YouTube-ზე ვიდეოების ყურებით. უფრო გამოცდილი კოდირებები გაჩვენებთ ზუსტად რა უნდა გააკეთოთ, ამიტომ ეს მასალები ძალიან სასარგებლოა. ეს არის მარტივი, ეფექტური და რაც მთავარია უფასო გზა კოდირების სწავლისთვის. თუ თქვენ გაქვთ ინტერნეტი, შეგიძლიათ დაჯდეთ, უყუროთ, გაიმეოროთ მინიმუმ მთელი დღე, სანამ არ გახდება ნათელი.

წიგნები... ეს არის პროგრამირების ენების სწავლის ცოტა მოძველებული გზა ამ დღეებში, მაგრამ ფაქტი ფაქტად რჩება, რომ წლების განმავლობაში კოდირება დიდად არ შეცვლილა და ის, რაც იუთუბზეა ნათქვამი, დიდად არ განსხვავდება ნაშრომში ნათქვამისგან. წიგნი. მაგრამ წიგნებს უდაო დამსახურება აქვთ - ისინი აადვილებენ ენის ლოგიკის გაგებას და ეს წარმოუდგენლად მნიშვნელოვანია. უპირველეს ყოვლისა, იმიტომ, რომ როდესაც საქმე ეხება პრაქტიკულ სწავლებას, არავის სურს გააკეთოს ის, რაც გაუგებარი ან შეუძლებელია. იმისათვის, რომ ყველაფერი ნახევრად არ დავთმოთ, აუცილებელია პროგრამირების წიგნების წაკითხვა.

ივარჯიშე.ბევრი საუკეთესო პროგრამისტი თვითნასწავლია. ძალიან ხშირად ისინი იწყებდნენ კოდირებას შეუმჩნევლად, რადგან მათი ვარჯიში შემთხვევითი იყო. მათ შეექმნათ პრობლემა, მოაგვარეს იგი, შეექმნათ მეორე - და ისიც მოაგვარეს. თანდათან ასეთი თვითნასწავლები ერთი პრობლემიდან მეორეზე გადადიან, უფრო რთულ და ამავდროულად დაუფლებიან კოდირებას. არ ღირს ასეთი ადამიანების მიბაძვა, მაგრამ პრაქტიკა არ უნდა იყოს მიტოვებული - ეს არის წარმატების გასაღები სწავლაში.

წარმატების დაფიქსირება

დამწყებმა, რომელიც ახლა იწყებს პროგრამირების ენის შესწავლას, უნდა იცოდეს და მოემზადოს იმისთვის, რომ ეს დიდი ხნის განმავლობაშია. კოდირების სწავლა ხანგრძლივი პროცესია, სადაც წარუმატებლობა გაცილებით მეტად იგრძნობა, ვიდრე წარმატება. იმისათვის, რომ არ მიატოვოთ სკოლა, აუცილებელია ჩაწეროთ ყველა თქვენი მოქმედება. ადამიანები ძალიან ხშირად კარგავენ მოტივაციას მხოლოდ იმიტომ, რომ ვერ გრძნობენ პროგრესს. და ის აუცილებლად იქნება, თუ დამწყები გულმოდგინედ იქნება დაკავებული. უბრალოდ, უნარები შეუმჩნევლად იზრდება, ახალბედა კოდირმა შეიძლება ვერც შეამჩნიოს, ასეთი პატარა ნაბიჯებით მიიწევს დასახული მიზნისკენ.

სწორედ ამიტომ, დროდადრო უნდა შეახსენოთ საკუთარ თავს, რამდენად შორს წახვედით და უფრო ხშირად გაიხედოთ უკან. ეს ბევრს ეხმარება - ბოლოს და ბოლოს, მათი კოდის პირველი სტრიქონების დათვალიერებისას, ყველას შეუძლია გაიგოს, რომ ისინი პროგრესირებენ. ყველა ეს პირადი საუკეთესო შეიძლება სახალისო ჩანდეს. არა, ფაქტობრივად, წარმატების დაფიქსირება ძალიან მნიშვნელოვანია - ეს არის უაღრესად მოტივაციური მთელი სასწავლო პროცესის განმავლობაში. ამიტომ, იმისთვის, რომ დაიწყოთ და არ დატოვოთ, აუცილებელია თითოეული გავლილი ეტაპის აღნიშვნა.

ტრენინგის ნათელი პირობები

რაც შეეხება კოდირებას, ბევრი დამწყები უშვებს ჩვეულებრივ შეცდომას - ისინი ცდილობენ ერთდროულად შეასრულონ რამდენიმე დავალება და, როგორც წესი, ყველა მათგანს უარს ამბობენ დასრულებამდე. ისინი ინტერესდებიან რაღაცით, ყველაზე ხშირად სხვა ამოცანებით, ამიტომ გადახტებიან ერთი პროექტიდან მეორეზე. ნუ გააკეთებ ამას. უმჯობესია იმოძრაოთ სისტემატური გზით - გადაჭრათ ერთი პრობლემა ან გაიგოთ მაგალითი, სანამ ყველაფერი ნათელი არ გახდება. ეს ძალიან მარტივი პრინციპია: ერთი რამ ერთდროულად.

მაგრამ ამავე დროს, თქვენ უნდა გესმოდეთ, რომ წინსვლა აუცილებელია, ასე რომ თქვენ უნდა დააწესოთ მკაცრი ვადები ენის ამა თუ იმ ასპექტის შესასწავლად. შეგიძლიათ სცადოთ წარმოიდგინოთ, რომ გამოცდა მალე მოვა და მოგიწევთ იმის ჩვენება, რისი მიღწევაც შეგიძლიათ. ეს არის მოტივაცია. დიახ, ყველა ეს პირადი საქმე შეიძლება არ იყოს ძალიან კომფორტული, მაგრამ თავად კოდირება არ არის სახალისო. მკაცრი დისციპლინა საშუალებას მოგცემთ შეიძინოთ საჭირო უნარები, ხოლო ვადის დაცვა არის თითქმის ყველაზე მნიშვნელოვანი უნარი თავისუფალი პროგრამისტისთვის.

მაშინ, როცა ჩვეულებრივ მომხმარებლებს ეშინიათ შეცდომის დაშვების და სძულთ ის, როცა რაღაც არასწორედ ხდება, პროგრამისტი სრულიად განსხვავებულ მდგომარეობაშია. შეცდომები მისი საქმის ნაწილია და ძალიან დიდი ნაწილი. ამიტომ, დამწყებმა კოდირმა უნდა ასწავლოს საკუთარ თავს შეცდომის შეტყობინებების წაკითხვა, რაც არ უნდა იმედგაცრუებული იყოს ეს. ეს შეტყობინებები შეიცავს უამრავ ღირებულ ინფორმაციას, რადგან გეტყვით, რა გამოტოვეთ კოდის შექმნის პროცესში. მზად უნდა იყოთ, რომ ასეთი შეტყობინებები ძალიან ხშირად გამოჩნდება და არსად წავა პროგრამირების ენის შესწავლის დასრულების შემდეგაც კი. თქვენ არ შეგიძლიათ დაზოგოთ დრო შეცდომებზე მუშაობისთვის - ეს არის სწავლის ყველაზე მნიშვნელოვანი ნაწილი. გარდა ამისა, ეს კარგი პრაქტიკაა - როგორც კი გაიგებთ პრობლემას, მოგვიანებით უფრო ადვილი იქნება მრავალი შეცდომის თავიდან აცილება. შეცდომების შესახებ შეტყობინება არ არის სასჯელი; სინამდვილეში, ისინი არიან კოდირების საუკეთესო მეგობრები, რომლებსაც სურთ ასწავლონ მას, როგორ გააკეთოს ყველაფერი სწორად.

კომუნიკაცია სხვა პროგრამისტებთან

ასეთი კომუნიკაცია ასევე დაგეხმარებათ იმის გაგებაში, რომ სხვა ადამიანებს ისევე ხშირად ექმნებათ კოდირების პრობლემები და ეს არ არის უჩვეულო. და თუ გარდა ამისა, დამწყებს შეუძლია დაეხმაროს თავის მეგობარს, პროგრამისტს, მაშინ მას მეორე ქარი ექნება და ის შურისძიებით გააგრძელებს სწავლას. და არ უნდა შეგეშინდეთ კომუნიკაციის - პროგრამისტები რეალურად მეგობრული ადამიანები არიან, ისინი უბრალოდ ხშირად არიან საკუთარ ტალღის სიგრძეზე და დამწყებთათვის მხოლოდ რეზონანსში უნდა მოხვდეს.

სწორი და არასწორი მიდგომა

დამწყები კოდირებები ხშირად ცდილობენ დააკოპირონ კოდის ნაწილები სხვა პროექტებიდან, აგვარებენ მათ ნებისმიერ პრობლემას. მათ მიაჩნიათ, რომ ეს გონივრულია, რადგან მთავარია, ყველაფერი იმუშაოს. ეს არის არასწორი, უფრო მეტიც, ძალიან მავნე მიდგომა. და არა იმიტომ, რომ კოპირება ცუდია, არამედ იმიტომ, რომ კოპირება, დამწყები ვერ გაიგებს რას აკეთებს ეს კოდი. რა თქმა უნდა, კოპირება ბევრად უფრო ადვილია, ვიდრე ყველაფრის თავად დაწერა.

მაგრამ სასწავლო პროცესში ასეთი მიდგომა გამოიწვევს იმ ფაქტს, რომ ცოდნის დიდი ხარვეზები ყალიბდება და დამწყები კოდირებელი ერთ დღეს დანებდება, ვერ გადაჭრის მის წინაშე არსებულ პრობლემას. და ის ყველაფერს მიატოვებს. პროგრამირების ენის შესწავლისას თქვენ უნდა დახარჯოთ დრო სინანულის გარეშე ნებისმიერი, თუნდაც ერთი შეხედვით, პრობლემის ანალიზზე. და თუ თქვენ ვერ იპოვით გამოსავალს დაუყოვნებლივ, თქვენ არ შეგიძლიათ დანებდეთ. თქვენ უნდა წაიკითხოთ, უყუროთ ვიდეოს, ჰკითხოთ სხვებს - დამწყებთათვის საჭიროა საფუძვლიანად გაუმკლავდეს წარმოქმნილ სირთულეებს. მიუხედავად იმისა, რომ ის ენას სწავლობს, ეს არ არის ზუსტად იგივე, რაც ჩვეულებრივი, ადამიანური ენის სწავლა. კოდირს აქვს საქმე მანქანასთან, ამიტომ მისთვის მნიშვნელოვანია იმის გაგება, თუ რას აკეთებს. ენის ასეთი ცოდნა უბრალოდ ფასდაუდებელია, როდესაც სასწავლო პროცესი პრაქტიკაში მოდის.

პროგრამირების ენების სწავლა არ არის ყველაზე საინტერესო რამ. მაგრამ ყველაფერი შეიძლება გამოსწორდეს, თუ საქმეს მხატვრული ლიტერატურით მიუდგები. არ არსებობს რაიმეს სწავლის უკეთესი გზა, ვიდრე თამაშების თამაში. ეს ასევე ეხება კოდირებას, რადგან თქვენ შეგიძლიათ სწრაფად ისწავლოთ ენა მხოლოდ თამაშით და ამავე დროს თქვენი უნარების გაუმჯობესებით. აქ არის რამდენიმე თამაში, რომელსაც ახალმა კოდირმა უნდა გადახედოს.

  • CheckiO არის თამაში, რომელიც შეგიძლიათ ითამაშოთ თქვენს ბრაუზერში და მოითხოვს JavaScript-ის ან Python-ის პრობლემის გადაჭრას, რათა წინსვლა შეძლოთ თამაშში.
  • CodeMonkey - ძირითადად ბავშვებისთვის, მაგრამ თუ დამწყები ხართ, შეგიძლიათ ისწავლოთ კოდი ამ თამაშის თამაშით.
  • Codewars არ არის რეალური თამაში, არამედ პროგრამისტებისთვის პრობლემის გადაჭრის ერთობლივი გადაწყვეტა. ეს შესანიშნავი გზაა კოდირების დასაუფლებლად, რადგან თამაში მხარს უჭერს ბევრ ენას.
  • Code Combat არის ონლაინ პლატფორმა, სადაც შეგიძლიათ ისწავლოთ კოდირება რეალური თამაშის თამაშით.

არსებობს მრავალი სხვა თამაში, რომლის გამოყენებაც შეგიძლიათ, იმისდა მიხედვით, თუ რომელია თქვენთვის საუკეთესოდ და იმ ენაზე, რომელსაც სწავლობთ. თამაში დამწყებთათვის დაეხმარება პროგრამისტივით აზროვნებას, რაც ძალიან მნიშვნელოვანია სწავლის დასაწყისშივე.

დასკვნა

ზოგი სწრაფად სწავლობს კოდირებას, ზოგი უფრო ნელა, მაგრამ ყველას შეუძლია ისწავლოს კოდირება. და ნუ ჩავარდებით უფრო სწრაფად, თუ რამე არ გამოდგება. თქვენ შეგიძლიათ მიაღწიოთ თქვენს მიზანს ნელი მოძრაობით და მართლაც, ნებისმიერი სწავლა ნელი პროცესია. თუ დამწყებს არ სურს უარი თქვას კოდირების შესწავლაზე, მხოლოდ საფუძვლების ათვისებით, მან უნდა შეიმუშაოს ქცევის საკუთარი სტრატეგია. თქვენ უნდა გესმოდეთ, რომ დრო, ძალისხმევა და ზოგჯერ ფული იდება ტრენინგში, ასე რომ თქვენ უბრალოდ უნდა გადახვიდეთ ერთი ეტაპიდან მეორეზე. და ნუ დანებდებით სირთულეებს. დიახ, პროგრამირება ყველასთვის არ არის. მაგრამ ყველას შეუძლია ისწავლოს ენა, ისწავლოს კოდირება. ასე რომ თქვენ უბრალოდ უნდა გადაწყვიტოთ და გაიაროთ საკუთარი გზა.

1. დამოუკიდებლად

თუ თქვენ გაქვთ რკინის ნებისყოფა და გსურთ გახდეთ პროგრამისტი, მაშინ შეგიძლიათ მიაღწიოთ თქვენს მიზანს თვითგანათლებით. ეს არ არის უმარტივესი და უმოკლესი გზა: თქვენ თავად უნდა გაიგოთ საინფორმაციო ქაოსი და ებრძოლოთ გაჭიანურებას. მაგრამ შეგიძლიათ ისწავლოთ მოსახერხებელ დროს შედარებით მცირე თანხით ან სრულიად უფასოდ.

ყველაზე მარტივი დასაწყებად არის ინტერაქტიული ონლაინ კურსები. ინტერნეტში არის ბევრი მასალა, რომელიც ხსნის პროგრამირების საფუძვლებს და ადგენს მიმართულებას შემდგომი განვითარებისთვის. განსაკუთრებული ყურადღება მიაქციეთ იმ კურსებს, რომლებიც ასწავლიან რეალური პროექტების მაგალითებს, ანუ ისინი გეტყვიან ეტაპობრივად, თუ როგორ უნდა შექმნათ კონკრეტული პროგრამა ან ვებსაიტი.

FreeCodeCamp ვებ განვითარების პლატფორმა

გახსოვდეთ, რომ ვარჯიშის გარეშე ვერაფერს გააკეთებთ. შეისწავლეთ პროექტზე ორიენტირებული კურსები და შეეცადეთ დაწეროთ მათში დაშლილი პროგრამები და საიტები. მოძებნეთ YouTube ლექციები პროექტებზე, რომელთა განვითარებაც გსურთ. პირველ რიგში, დააკოპირეთ სხვა ადამიანების ნამუშევრები და გააანალიზეთ იგი. შემდეგ შეეცადეთ თავიდან აიცილოთ ორიგინალი, ექსპერიმენტი, შეცვალეთ ცალკეული ელემენტები, სანამ არ შექმნით რაიმე უნიკალურს.

გარდა კურსებისა და ვიდეო ლექციებისა, თქვენ იხილავთ ოფიციალურ დოკუმენტაციას, რომელიც ხელმისაწვდომია ენის ვებსაიტებზე და. როდესაც საფუძვლებს მიიღებთ, მოძებნეთ უახლესი საუკეთესო პრაქტიკის სათაურები თქვენი პროგრამირების ენისთვის. ეს წიგნები შეიცავს საუკეთესო დიზაინის ტექნიკას.

აუცილებლად დაისახეთ მიზანი, რომ შექმნათ თქვენი პროექტი და მუდმივად იმუშაოთ მასზე.

ეს დაგეხმარებათ მიღებული ცოდნის კონსოლიდაციაში და იმის გაგებაში, თუ რა ინფორმაცია გაკლიათ ჯერ კიდევ. თქვენი უნარები განვითარდება პროექტთან ერთად. როდესაც დაასრულებთ, იმუშავეთ ახალზე, უფრო რთულზე.

თუ რაიმე სირთულე გაქვთ სწავლის ან განვითარების პროცესში, ყოველთვის შეგიძლიათ მიმართოთ პროგრამირების თემებს, როგორიცაა Toaster და Stack Overflow ნებისმიერი კითხვისთვის. მაგალითად, ისინი დაგეხმარებიან პრობლემის გადაჭრაში, კარგი კურსის არჩევაში ან კოდში შეცდომებზე მიუთითებენ.


კითხვა-პასუხის სერვისი ტექნოლოგიურ თემებზე "ტოსტერი"

მოსახერხებელია უნარების დახვეწა სპეციალურ საიტებზე, სადაც შეგიძლიათ კონკურენცია გაუწიოთ სხვა პროგრამისტებს სხვადასხვა პრაქტიკული პრობლემების გადაჭრით კოდის დახმარებით. ამ სერვისებში შედის Codewars, TopCoder და HackerRank.

თუ ფიქრობთ, რომ თქვენი განვითარება შეჩერებულია, ან გსურთ დააჩქაროთ სწავლა, სცადეთ შემდეგი ვარიანტები.

2.მენტორის დახმარებით

მენტორი არის პირადი მენტორი, რომელიც მიუთითებს შეცდომებზე, აფრთხილებს ხარვეზებს, ეხმარება კურსის მართვაში. საჭირო დროს მიღებულ სასარგებლო რეკომენდაციას შეუძლია დაგიზოგოთ ბევრი პრობლემა და დაზოგოთ ბევრი დრო. ამიტომ მენტორი არავის შეაწუხებს.

გაარკვიეთ, არის თუ არა რაიმე დეველოპერი, რომელსაც იცნობთ. შესაძლოა, ერთ-ერთმა მათგანმა მოინდომოს დაგეხმაროთ. თუ არ იცნობთ ასეთ ადამიანებს, შეგიძლიათ მოძებნოთ ისინი პროგრამირების თემებში. მაგალითად, იგივე „ტოსტერზე“. მხოლოდ მენტორული სერვისები არ არის იაფი და არავის სურს, რომ ბევრი დრო გაატაროს უცნობებთან.

3. „ცოცხალ“ კურსების მასწავლებლებთან

დისტანციური და პირისპირ კურსები ინსტრუქტორებთან, რომლებიც ამზადებენ პროგრამისტებს ნულიდან, წარმოუდგენლად პოპულარული გახდა ბოლო წლებში. ამ ფორმატის ფარგლებში თქვენ ასევე მოგიწევთ ბევრი იმუშაოთ საკუთარ თავზე. მაგრამ თქვენ ისწავლით პროფესიონალურად მომზადებული პროგრამით და რეალური ადამიანი შეამოწმებს პრობლემების გადაჭრას. კურსების უარყოფითი მხარე მოიცავს ტრენინგის მაღალ ღირებულებას.

პოპულარული რუსულენოვანი ონლაინ პლატფორმები, რომლებიც დაკავებულნი არიან პროგრამისტების სისტემური ტრენინგებით: Netology, GeekBrains და Loftschool.

თუ თქვენ გირჩევნიათ შიდა სწავლა, შეგიძლიათ მოძებნოთ საგანმანათლებლო ცენტრები, რომლებიც ასწავლიან პროგრამირებას თქვენს მხარეში. სამწუხაროდ, ასეთი დაწესებულებები ყველაზე ხშირად მხოლოდ დიდ ქალაქებშია. ამის მაგალითია კომპიუტერული აკადემია „STEP“, რომელსაც ფილიალები აქვს რამდენიმე ქვეყანაში.

4. უნივერსიტეტში

თუ ბევრი დრო დაგრჩათ და დარწმუნებული ხართ, რომ გსურთ თქვენი ცხოვრება პროგრამირებასთან დააკავშიროთ, შეგიძლიათ ისწავლოთ კომპიუტერული მეცნიერება უნივერსიტეტში. მაგრამ გაითვალისწინეთ, რომ ტრადიციული საგანმანათლებლო დაწესებულებები ჩამორჩებიან წინსვლას, ამიტომ თქვენ მოგიწევთ დამოუკიდებლად დაეუფლოთ თანამედროვე პროგრამირების ენებს და სხვა ტექნოლოგიებს.

მეორეს მხრივ, უნივერსიტეტი მოგცემთ მათემატიკის, ალგორითმების და სხვა სფეროების ფუნდამენტურ ცოდნას, რაც დაგეხმარებათ გახდეთ მაღალი ხარისხის პროგრამისტი. გულმოდგინე სწავლის წლების განმავლობაში გამოგიმუშავებთ სწორ აზროვნებას, რისი წყალობითაც პროფესიულ სფეროში ყველაფერს გათავისუფლდებით.

როგორ ავირჩიოთ მიმართულება და ენა

IT ინდუსტრიაში რამდენიმე მიმართულებაა, რომელთაგან თითოეული იყენებს ენების საკუთარ კომპლექტს. მოდით ჩამოვთვალოთ ძირითადი მიმართულებები სირთულის გაზრდის მიზნით:

  1. ვებ დეველოპმენტი... პოპულარული ენები: JavaScript, PHP, Python, Ruby.
  2. მობილურის განვითარება... პოპულარული ენები: Java, Swift.
  3. თამაშებისა და პროგრამების შემუშავება დესკტოპ კომპიუტერებისთვის... პოპულარული ენები: C ++, C #, C.
  4. დიდი მონაცემები, მანქანათმცოდნეობა... პოპულარული ენები: Python, R, Scala.

რა უნდა ვეძებოთ არჩევისას

მიმართულების და, კერძოდ, ენის სწორი არჩევანის გასაკეთებლად, გაითვალისწინეთ შემდეგი ფაქტორები: დაუფლების სირთულე და ტრენინგის მასალების რაოდენობა ინტერნეტში, თქვენი პირადი პრეფერენციები (ზუსტად რისი განვითარება გსურთ) და მოთხოვნა. ენისთვის შრომის ბაზარზე.


ენებზე მოთხოვნის გრაფიკი შრომის საერთაშორისო ბაზარზე / research.hackerrank.com

თქვენს რეგიონში ენის მოთხოვნის შემოწმება ადვილია სამუშაოს საძიებო საიტებზე. უბრალოდ გახსენით განყოფილება პროგრამული უზრუნველყოფის შემქმნელებისთვის და ნახეთ არსებული ვაკანსიების რაოდენობა.

თუ ვერ გადაწყვიტე

თუ დაბნეული ხართ, ყურადღებით დააკვირდით JavaScript-ს - ენას, რომელზეც თითქმის მთელი ვება დაწერილი. ბევრი ორგანიზაცია და პროგრამისტი დამწყებთათვის ურჩევს აირჩიონ ეს ენა პირველ ენად.

მაგალითად, კვინსი ლარსონი, freeCodeCamp საგანმანათლებლო რესურსის დამფუძნებელი, არის JavaScript ყველა დამწყებთათვის. ლარსონი ძალიან მარტივ არგუმენტებს აკეთებს:

  1. JavaScript-ის სწავლა შედარებით მარტივია. და ამ ენაზე რაღაცის დასაწერად და გასაშვებად, უბრალოდ უნდა გქონდეთ კოდის რედაქტორი და ბრაუზერი.
  2. JavaScript არის ყველაზე მოთხოვნადი ენა შრომის საერთაშორისო ბაზარზე და აქვს დიდი პერსპექტივები. მსხვილი კომპანიები, როგორიცაა Google, Microsoft და Facebook ინვესტიციას ახორციელებენ JavaScript ეკოსისტემაში.
  3. JavaScript-ს აქვს აპლიკაციების ძალიან ფართო სპექტრი: ვებსაიტებიდან და ბრაუზერის თამაშებიდან მობილურ აპლიკაციებამდე.

გარდა ამისა, ამ ენის გარშემო ჩამოყალიბდა დეველოპერების დიდი საზოგადოება. JavaScript-ისადმი დიდი ინტერესი უზრუნველყოფს უამრავ კურსს, წიგნს და სხვა საგანმანათლებლო შინაარსს.

კიდევ რა უნდა იცოდეს პროგრამისტმა: მათემატიკა და ინგლისური?

ნებისმიერი პროგრამისტი ისარგებლებს ღრმა გაგებით. ისეთი ნივთებისთვის, როგორიცაა თამაშის გრაფიკა ან დიდი მონაცემები, მათემატიკური გონება აუცილებელია. მაგრამ რაც შეეხება ვებ განვითარებას და მარტივი პროგრამების შექმნას, უმეტეს შემთხვევაში შეგიძლიათ მათემატიკის გარეშე. მიუხედავად იმისა, რომ არ არსებობს კონსენსუსი პროფესიონალებს შორის ამ საკითხზე.

მაგრამ ინგლისური ენის ცოდნა, ყოველ შემთხვევაში, დოკუმენტაციის თავისუფლად წაკითხვის დონეზე, აუცილებელია ყველა პროგრამისტისთვის. ოფიციალური დოკუმენტები და საგანმანათლებლო მასალების უმეტესობა ძირითადად ინგლისურ ენაზეა. ხშირად მოძველებულია თარგმანის გამოცემამდეც კი. გარდა ამისა, ინგლისური ენის ცოდნა ხსნის მთელ მსოფლიოში მუშაობის პერსპექტივებს.

როგორ მიიღოთ თქვენი პირველი გამოცდილება და თქვენი პირველი სამუშაო

იმისათვის, რომ იპოვოთ თქვენი პირველი სამუშაო, როგორც პროგრამისტი, თქვენ უნდა გქონდეთ პორტფოლიო. ეს არის თქვენ მიერ შექმნილი პროექტი, უფრო სწორად, რამდენიმე, რომელიც აჩვენებს თქვენი დეველოპერის ყველა უნარს. კურსების უმეტესობა მოიცავს პროექტების შემუშავებას, რომლებიც შეიძლება მოერგოს თქვენს პორტფოლიოში.

სამუშაო გამოცდილება, განსაკუთრებით გუნდური განვითარება, ძალიან ღირებული იქნება რეზიუმეში. მაგრამ სად შეგიძლიათ მიიღოთ ის, თუ ეძებთ თქვენს პირველ სამუშაოს?

  1. შეასრულეთ მრავალი შეკვეთა. ეს შეიძლება იყოს Freelance ან Upwork. შესთავაზეთ თქვენი სერვისები უფასოდ, შემდეგ მოვლენ თქვენთან პირველი მომხმარებლები.
  2. იპოვეთ თანამოაზრეები და შექმენით მათთან საერთო პროექტი. ასეთი მიზნებისთვის ხალხი გაერთიანებულია თითქმის ყველა საგანმანათლებლო საიტზე, სადაც არის პროგრამირების კურსები.
  3. აირჩიეთ კურსები, რომლებსაც ორგანიზატორი ეხმარება დასაქმებაში. მაგალითად, GeekBrains-ში, ტრენინგის შემდეგ, იხსნება სტაჟირებაზე წვდომა სხვადასხვა კომპანიისგან, მათ შორის ფასიანიც. GeekUniversity და STEP გარანტიას უწევს დასაქმებას მათი კურსდამთავრებულებისთვის.

მანამდე არ დაგავიწყდეთ ინტერნეტში მოძებნოთ ამოცანები და კითხვები, რომლებსაც ხშირად სვამენ სამუშაოს მაძიებლებს.