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

Към момента на написването на тази статия, търсенето "кой език за програмиране да изучавам първи" дава 517 милиона резултата. Всеки от тези сайтове ще хвали един определен език, като 90% от тях в крайна сметка ще препоръчат Python или JavaScript.
Без дълги прелюдии, бих искал официално да декларирам, че всички тези 517 милиона сайта грешат и да заявя, че езикът, който трябва да изучавате първи — фундаментална логика.
Просто да знаеш как да кодиш не е достатъчно. Пазарът е толкова наситен с дипломирани студенти и курсове, че позицията на джуниор практически е престанала да съществува*. За да преуспеете в съвременния свят, вие трябва да кодите и да имате напреднало фундаментално логическо мислене.
* тук и нататък, моля, помнете, че това е превод и ситуацията на пазара на труда за автора и във вашата страна може да бъде различна (както и други нюанси), което обаче само по себе си не прави оригиналната статия по-лоша — бел. прев.
Моят първи урок по информатика
Моето първо запознаване с информатиката беше факултатив, който взех в 10-ти клас. В първия ден, когато влязох в аудиторията, бях очарован да видя пред себе си голямо количество ведра с сладолед и разнообразни топинги. След като всички се настаниха, учителката обяви:
«Днес ще дегустираме домашно приготвени пломбира. Но с едно условие: трябва да съставите списък с конкретни инструкции как да приготвите десерта, а аз — ще ги следвам»
«Няма проблем, — помислих си, — този урок няма да бъде дълъг». Някъде след минута написах отлична рецепта за сладоледа на мечтите ми:
- Зачерпвам и слагам три топки малинов сладолед в купа
- Отварям шоколадов сос и добавям две супени лъжици в същата купа
- Добавям разбита сметана в купата
- Поръсвам всичко това с бонбони и слагам черешка отгоре
Моята учителка — "компютърът" в тази мила метафора — изигра по-саркастично-буквално представление, отколкото съм виждал някога. Тя започна да бута ведрото със сладолед с лъжичка, без дори да се докосва до капака.
«Добре-добре, но първо трябва да го отворим!» — извиках, опитвайки се да получа лакомството по-скоро.
«Не го написахте в инструкциите и не успях да ти направя сладолед. СЛЕДВАЩ!»
Да изчакаме времето до опит №2
- Да отворим малиновия сладолед, сваляйки капака
- Зачерпвам и слагам три топки малинов сладолед в купа
- Отварям шоколадов сос и добавям две супени лъжици в същата купа
- Добавям разбита сметана в купата
- Да поръсим всичко това със захарни пръчици и да сложим една черешка отгоре
Сега определено не би трябвало да има проблеми. Дори си проверих, че всички съставки за направата на моето кулинарно произведение са подготвени.
Учителката свали капака, взе лъжица и сложи три топки сладолед в купата. «Накрая моят чудесен пломбир започна да се реализира в реалността!» След това тя отвори шоколадовия сос и добави две супени лъжици в купата. Не «добави шоколадов сос от две лъжици» — да не си помислите — тя, разбира се, сложи в купата самите лъжици. Без сос в тях. Отново не се постарах да опиша всичко точно. След като всичко останало беше направено по същия начин, получих купа със сладолед и две супени лъжици, едва видими под морето от сметана. Отгоре имаше двойка захарни пръчици.
Изглежда, в този момент най-накрая ми стана ясно: компютърът е логика в вакуум. Той не знае за околните обстоятелства и не прави предположения. Той изпълнява само точно формулирани инструкции и следва тях дума по дума.
Моят крайъгълен резултат беше резултат от дълга, но необходима серия от опити и грешки:
- Отвори, ако не е направено още, всяка от следните опаковки: малинов сладолед, шоколадов сос, сметана, захарни пръчици.
- Вземи купа и я сложи пред себе си
- Вземи лъжица за сладолед и една по една сложи три топки малинов сладолед в купата. Сложи лъжицата за сладолед на мястото ѝ.
- Вземи буркан с шоколадов сос, зачерпи соса и изсипи съдържанието на супената лъжица в купата. Повтори действието с зачерпване и изсипване на соса още веднъж. Сложи лъжицата и буркана на мястото им.
- Вземи и обърни наопаки опаковката със сметана и, държейки я над купата, поливай сладоледа в продължение на 3 секунди, след което върни опаковката на мястото ѝ.
- Вземи буркана със захарни пръчици, изсипи около четиридесет пръчици в купата и сложи буркана на мястото му.
- Вземи една черешка от купата с череши и я сложи отгоре на сладоледа.
- Предай на ученика купата с готовия пломбир и лъжицата.
Последният пункт беше особено важен, тъй като без него, в предпоследния случай, учителката просто започна да яде моето сладолед.
Но това е именно програмирането. Напрегнато създаване на прецизен набор от инструкции за компютъра. По същество, това е до което води всеки език за програмиране — до съставянето на инструкции.
Кариера в програмирането
Програмирането достигна такава точка, когато е трудно да се обсъжда като единна индустрия, както е трудно да се използва единственото слово „програмист“ за описание на позиция. Двама разработчици могат да бъдат еднакво търсени от пазара, знаейки абсолютно различни езици, а значит, умението да се разработва е по-важно от познаването на конкретен език. Универсалната характеристика, която е присъща на всички успешни разработчици — фундаментална логика.
Най-добрият програмист е способен да погледне на кода от нов ъгъл. И това е принципно важно, защото повечето софтуерни продукти са набор от недокументирани парчета лош код. Те постоянно трябва да се събират заедно, запълвайки пропуските по необходимост. На хората, които не могат да свържат отделните точки с една линия, ще им се наложи вечно да бъдат на втори план.
Всичко това ме води до още една декларация, този път с удебелен шрифт: основните знания винаги са били и ще бъдат от първостепенно значение за програмиста.
Езиците идват и си отиват. Фреймворците остаряват, а компаниите реагират на търсенето, променяйки стека използвани технологии. Има ли нещо, което никога няма да се промени? Да — основните знания, които затова се наричат основни, защото лежат в основата на всичко!
Как да подобрим основните знания
Снимка на Кристофър на
Ако търсите отправна точка за подобряване на основното логическо мислене, опитайте да започнете оттук:
Знайте сложността на вашата програма
Също така наречена Big O Сложността на алгоритъма се нарича зависимостта на времето за изпълнение на програмата от размера на входните данни (n). Държането на ръка на пулса на използваните алгоритми е важна стъпка.
Знайте своите структури от данни
Структурите данни лежат в основата на всяка съвременна програма. Знанието за това коя структура да се използва в конкретен случай е самостоятелна дисциплина. Структурите данни са пряко свързани със сложността на времето за изпълнение, а неправилният избор на структура може да доведе до основни проблеми с производителността. Търсенето на елемент в масив е равно O(n), което говори за скъпостта на използването на масиви като входни данни. Търсенето в хеш таблица е O(1), значи, в този случай времето за търсене на стойността не зависи от количеството елементи.
На моето интервю за работа идваха хора, които твърдяха, че търсенето в масив е по-бързо от търсенето в хеш таблица. Това беше най-сигурният признак, че не трябва да ги набираш - знайте своите структури данни.
Чети / Гледай / Слушай
Такива сайтове, като , и — отличен избор за изучаване на нови програмни езици. Но за основите се обърнете към книги за общи принципи, практики и стилове на кодиране. Най-препоръчваните книги са „Дизайнерски Патерни“, „Рефакторинг. Подобряване на съществуващ код“, „Перфектният Код“, „Чист Код“ и „Програмист Прагматик“. Накрая, всеки разработчик трябва да има под ръка копие на „“.
Практикувай!
Не можеш да сготвиш яйца, без да ги счупиш. Такива сайтове, като , , , и предлагат хиляди интересни задачи за проверка на знанията за структури данни и алгоритми. Опитай късмета си в решаването на интересен проблем, публикувай своя вариант в Github, след което виж как други са се справили с него. Това ни води към последната точка:
Чети чужд код
Най-голямата грешка, която можеш да направиш, тръгвайки по пътя на развитието, е да вървиш сам. Разработването на софтуер е в значителна степен работа в екип. Заедно създаваме стандарти, заедно правим грешки и, въпреки неуспехите, заедно ставаме по-добри. Времето, прекарано в четене на чужд код, ще се изплати многократно. Само се увери, че това е добър код.
Най-добрият съвет, който мога да дам, е никога да не се срамувате, че не знаете нещо. Както вече беше споменато, нашата индустрия е огромна, а количеството технологии е непреодолимо. Изисква се много време и усилия, за да се изглежда общата картина, още повече, за да станете професионалист в конкретна област, и значително повече, за да усъвършенствате уменията си. Ще ви уведомя, когато постигна това сам.
Източник: habr.com
