C ще ви накара да разберете как точно работят компютрите

Дмитрий Гузеев

4 януари 2018 г. · 5 минути четене

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

защо

C ще ви накара да се чувствате по-уверени в това, което пишете във файловете си на всеки език за програмиране, само защото ще знаете как работи на най-ниското ниво.

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

Сега, ако нещо не работи (мазнините ви не изчезват, не трупате мускули и т.н.), просто няма да знаете защо се случва. Няма да можете да го поправите сами, тъй като не знаете как работи.

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

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

Предимства на обучението C първо

Сега не казвам, че C е необходимо, първото нещо, което трябва да научите, когато станете програмист. Искам само да кажа, че изучаването на C е само по себе си много полезно за всеки програмист.

Мисля обаче, че има предимства първо да се изучава C пред по-високи езици за програмиране (като C ++ и Python). Когато работите с езици като Java, C # и дори Python, веднага започвате да се отдалечавате от изучаването на основите на програмен език и започвате да изучавате свързани библиотеки и рамки. Но с C получавате няколко библиотечни обаждания, оставате фокусирани върху семантиката на езика по-дълго и C често ви принуждава да мислите по-задълбочено и по-задълбочено за случващото се под капака.

C е PL от средно ниво (не PL от ниско ниво, както казват повечето неинформирани хора). Когато хората говорят за това, ще чуете фрази като „кодиране на метала“ или „кодиране близо до жицата“. C е езикът на компилаторите, интерпретаторите, редакторите, операционните системи и вграденото програмиране. Когато се научите да програмирате на C, почти трябва да разберете как се изпълняват програмите. Знаете какво означават неща като регистър, стек, купчина и вградена памет IO.

Бях истински изумен, когато за първи път научих как извикванията на функции работят на най-ниското ниво. И това не е единственото нещо, на което бях истински изумен, когато изучавах C, обаче.

Простота и бързина

C е просто. Сега казвам това само от гледна точка на езика за програмиране: Има много малко ключови думи и синтактични структури, които човек трябва да научи, за да пише професионално C. Не казвам, че бихте могли да научите C като 6-годишно дете, - Не говоря за общата простота: има неща, които са трудни, но тези неща не са свързани пряко с езика - те са основни, както вече споменах.

Програмите, написани на C, също са нечестиви бързо и ефективно. Така че, винаги знаете какво да правите, когато програмата ви не работи достатъчно бързо:)

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

Единственото нещо, което ще ви научи да пишете по-добре ефективен код, е езикът на ниско ниво, но въпреки това не ви препоръчвам да изучавате мнемониката на ASM в света на съвременния процесор.

Чист код

Изучаването на C също ще ви научи да пишете чист процедурен код в императивна парадигма.

C също не е OOP език, така че няма да се разсейвате от нещата като наследяване и полиморфизъм, когато пишете C код. Сега не искам да казвам, че тези неща са лоши или нещо подобно. Те наистина правят вашия код по-сложен и „тежък“, което не е добро нещо.

От моя личен опит писането на C код е много по-лесно от писането на C++.

Дисциплина по програмиране

C също се случва да бъде взискателен, придирчив, изискан и понякога направо загадъчен. Можете лесно да пишете трудно четим, труден за поддръжка код в C. Но не е нужно. Да се ​​научиш да пишеш поддържаем код на C ще изисква (и да се надява) да насаждаш дисциплина на кодиране.

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

Вградено програмиране

Да, ще спомена това.

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

C е много добър за вградено програмиране. Както вече казах, C е бърз и има достъп до компютърните неща на ниско ниво с много малко абстракция - това го прави добър за вградено програмиране.

Популярност

Както споменах по-рано, C е добър за вградено програмиране и е популярен в тази област.

Също така искам да кажа, че C е не по-малко популярен и в други области. Просто погледнете графиките на класирането на езика за програмиране за 2017 година.