Един език, който да управлява всички тях

Скрит под слой код, един език линее, копнеещ да бъде научен.

Един език, който да управлява всички тях

Към момента на писане, заявката „програмиране кой език да научите първо“ връща 517 милиона резултата от търсенето. Всеки от тези сайтове ще похвали един конкретен език и 90% от тях в крайна сметка ще препоръчат Python или JavaScript.

Без повече приказки, бих искал официално да кажа, че всички тези 517 милиона уебсайта са грешни и че езикът, който трябва да научите първо, е фундаментална логика.

Само да знаете как да кодирате не е достатъчно. Пазарът е толкова наситен с възпитаници на институти и курсове, че младшата позиция на практика е престанала да съществува*. За да успеете в днешния свят, трябва както да кодирате, така и да имате развито фундаментално логическо мислене.

*по-нататък, моля, не забравяйте, че това е превод и ситуацията на пазара на труда за автора и във вашата страна може да е различна (както и други нюанси), което обаче само по себе си не прави оригиналната статия по-лоша - прибл. превод

Първият ми урок по информатика

Първият ми контакт с компютърните науки беше избираем предмет, който взех в 10 клас. Още първия ден, влизайки в класната стая, с радост видях пред себе си голям брой кофички със сладолед и различни топинги. След като всички седнаха, учителят каза:

„Днес ще опитаме сладоледи, приготвени сами. Но с едно условие: трябва да направите списък с конкретни инструкции как да приготвите десерта и аз ще ги следвам.

„Няма проблем“, помислих си, „този урок няма да е дълъг.“ В рамките на около минута бях записал перфектната рецепта за сладоледа на мечтите си:

  1. Загребете и поставете три топки малинов сладолед в купа
  2. Отворете шоколадовия сос и добавете две супени лъжици в същата купа
  3. Добавете разбитата сметана в купата
  4. Поръсете всичко със захарни пръчици и сложете череша отгоре

Моят учител — „компютърът“ в тази симпатична метафора – показа по-саркастично, буквално представяне, отколкото съм виждал досега. Тя започна ревностно да бърка в кофичката за сладолед с лъжичка, без дори да докосва капака.

„Добре, добре, но първо трябва да го отворите!“ - възкликнах, опитвайки се да получа лакомството възможно най-бързо.

„Не си написал това в инструкциите и не можах да ти направя сладолед. СЛЕДВАЩИЯ!"

Нека превъртаме бързо напред към опит №2

  1. Отворете малиновия сладолед, като махнете капака
  2. Загребете и поставете три топки малинов сладолед в купа
  3. Отворете шоколадовия сос и добавете две супени лъжици в същата купа
  4. Добавете разбитата сметана в купата
  5. Поръсете всичко със захарни пръчици и отгоре поставете череша

Е, сега определено не би трябвало да има проблеми. За всеки случай се уверих, че всички съставки за направата на моя кулинарен шедьовър са отворени.

Учителят махна капака, загреба и постави три топки сладолед в купа. „Най-накрая моят красив сладолед започна да се сбъдва!“ След това тя отвори шоколадовия сос и добави две супени лъжици в купата. Тя не е „добавила шоколадов сос от две супени лъжици“ - не мислете така - тя, разбира се, сложи самите лъжици в купата. Без сос в тях. Отново не си направих труда да напиша всичко точно. След като останалото беше направено в същия дух, получих купичка сладолед и две супени лъжици, едва забележими под морето от бита сметана. Отгоре имаше чифт захарни пръчици.

Изглежда, че в този момент най-накрая ми просветна: компютърът е логика във вакуум. Той не е наясно със заобикалящите го обстоятелства и не прави предположения. Той изпълнява само ясно формулирани инструкции и ги следва дума по дума.

Крайният ми резултат беше резултат от дълга, но необходима поредица от проби и грешки:

  1. Ако още не сте го направили, отворете всяка от следните опаковки: малинов сладолед, шоколадов сос, бита сметана, захарни пръчици.
  2. Извадете купа и я поставете пред себе си
  3. Вземете лъжица за сладолед и поставете три топки малинов сладолед една по една в купа. Върнете лъжицата за сладолед на място.
  4. Вземете буркан с шоколадов сос, загребете от соса и изсипете съдържанието на една супена лъжица в купа. Повторете процеса на загребване и изливане още веднъж. Поставете лъжицата и буркана обратно на мястото им.
  5. Вземете опаковката разбита сметана обърната и като я държите над купата, я изсипете върху сладоледа за 3 секунди, след което върнете опаковката на мястото й.
  6. Вземете буркан със захарни пръчици, изсипете около четиридесет пръчици в купа и поставете буркана обратно.
  7. Вземете една череша от купата с череши и я поставете върху сладоледа.
  8. Дайте на ученика купа с готовия сладолед и лъжица.

Последната точка беше особено важна, защото без нея предпоследния път учителят просто започна да ми яде сладолед.

Но това е програмиране. Стресът от създаването на внимателен набор от инструкции за компютър. По същество това е, до което се свежда всеки език за програмиране - писане на инструкции.

Кариера в програмирането

Програмирането достигна точката, в която е трудно да се обсъжда като отделна индустрия, точно както е трудно да се използва единствената дума „програмист“ като длъжностна характеристика. Двама разработчици могат да бъдат еднакво търсени от пазара, знаейки напълно различни езици, което означава, че способността за разработване е по-важна от владеенето на конкретен език. Универсален атрибут, споделян от всички успешни разработчици, е фундаментална логика.

Най-добрият програмист е този, който може да погледне на кода от нов ъгъл. И това е фундаментално важно, защото повечето софтуерни продукти са колекция от недокументирани фрагменти от лош код. Те непрекъснато трябва да се събират, запълвайки празнините, ако е необходимо. Хората, които не са в състояние да свържат различни точки с една линия, ще трябва завинаги да останат настрани.

Всичко това ме отвежда до друга декларация, този път с удебелен шрифт: фундаменталните знания винаги са били и ще бъдат от първостепенно значение за програмиста.

Езиците идват и си отиват. Рамките стават остарели и компаниите отговарят на търсенето, като променят технологичния стек, който използват. Има ли нещо, което никога няма да се промени? Да – фундаментално знание, което се нарича фундаментално, защото е в основата на всичко!

Как да подобрим фундаменталните знания

Един език, който да управлява всички тяхСнимка от Кристофър Йешке на Unsplash

Ако търсите отправна точка за подобряване на основното си логическо мислене, опитайте да започнете от тук:

Познайте сложността на вашата програма

Също наричан Голям О „сложността на алгоритъма“ се отнася до зависимостта на времето, необходимо за изпълнение на програма от размера на нейните входни данни (П). Да държите пръста си на пулса на използваните алгоритми е важна стъпка.

Познайте вашите структури от данни

Структурите от данни са в основата на всяка съвременна програма. Да знаете коя структура да използвате в кой случай е дисциплина сама по себе си. Структурите на данни са пряко свързани със сложността на времето за изпълнение и изборът на грешна структура може да доведе до основни проблеми с производителността. Намирането на елемент в масив е О (п), което показва високата цена на използването на масиви като входни данни. Търсене в хеш таблица − O (1), което означава, че в този случай времето за търсене на стойност не зависи от броя на елементите.

Хората идваха при мен за интервю и твърдяха, че търсенето в масив е по-бързо от търсенето в хеш таблица. Това беше най-сигурният знак, че не трябва да ги наемате – познавайте структурите си от данни.

Четете / гледайте / слушайте

Сайтове като UdemyPluralsight и CodeAcademy - Отличен избор за изучаване на нови езици за програмиране. Но за основите се консултирайте с книги за общи принципи, практики и стилове на кодиране. Най-препоръчваните книги са “Design Patterns”, “Refactoring. Подобряване на съществуващ код“, „Перфектен код“, „Чист код“ и „Прагматичен програмист“. И накрая, всеки разработчик трябва да запази копие на "Алгоритми" под ръка.

Практикувайте!

Не можете да готвите бъркани яйца без да счупите яйца. Сайтове като Hacker ПопулярностCodeWarsCoderByte, TopCoder и LeetCode предлагат хиляди интересни пъзели, за да тествате знанията си за структури от данни и алгоритми. Опитайте късмета си в решаването на проблем, който харесвате, публикувайте решението си в Github и след това вижте как другите са подходили към него. Което ни води до последната точка:

Прочетете кода на други хора

Най-голямата грешка, която можете да направите, когато вървите по пътя на развитие, е да го вървите сами. Разработката на софтуер до голяма степен е екипно усилие. Създаваме стандарти заедно, правим грешки заедно и въпреки всички неуспехи ставаме по-добри заедно. Времето, прекарано в четене на кода на други хора, ще се изплати щедро. Просто се уверете, че кодът е добър.

Е, най-добрият съвет, който мога да дам, е никога да не се срамувате, че все още не знаете нещо. Както вече беше казано, нашата индустрия е огромна и количеството технологии е безкрайно. Отнема много време и усилия, за да изградите цялостна картина, още повече, за да станете професионалист в нещо конкретно, и порядък повече, за да усъвършенствате уменията си в своята област. Ще ви уведомя, когато постигна това сам.

Източник: www.habr.com

Добавяне на нов коментар