Я не знаю С. І навіщо мені це вивчати? [зачинено]


58

Моєю першою мовою програмування був PHP ( ах ). Після цього я почав працювати з JavaScript. Я нещодавно робив роботу в C #.

Я жодного разу не дивився на мови низького чи середнього рівня, як C.

Загальний консенсус у програмі спільноти взагалі полягає в тому, що "програміст, який не навчився чогось типу C, відверто кажучи, просто не може обробляти такі програми програмування, як покажчики, типи даних, передавання значень за посиланням тощо".

Я не згоден. Я стверджую, що:

  1. Оскільки мови високого рівня легко доступні, все більше "непрограмістів" занурюються і заплутуються
  2. Для того, щоб дійсно зробити що-небудь зроблене мовою високого рівня, потрібно зрозуміти ті самі схожі поняття, про які євангелізує більшість прихильників "вчитися-низький рівень-перший".

Деяким людям потрібно знати C; ці люди мають завдання, які вимагають, щоб вони писали код низького та середнього рівня. Я впевнений, що C чудовий, і я впевнений, що є кілька поганих програмістів, які знають C.

Чому упередженість? Як хороший, чесний, голодний програміст, якби мені довелося вивчати С (з якоїсь непередбаченої причини), я б навчився С. Враховуючи безліч мов там, чи не повинні хороші програмісти зосереджуватись на вивченні того, що нас просуває? Чи не повинні ми дізнатися, що нас цікавить? Чи не повинні ми використовувати свій кінцевий час, рухаючись вперед ? Чому деякі програмісти не згодні з цим?

Я вважаю, що прагнення до досконалості у тому, що ви робите, - це фундаментальна детермінована риса між хорошими програмістами та поганими.

Хтось має приклади реального світу того, як щось написане мовою високого рівня - скажімо, Java, Pascal, PHP чи JavaScript - справді отримало користь від попереднього знання C? Приклади були б найбільш вдячні.


@Stephen О, вибачте ... я неправильно зрозумів. (але ви дійсно бачите, чому вам потрібно вчитися c / c ++ правильно?)
ApprenticeHacker

1
@burningprodigy Так, у випадку, якщо мені потрібно щось робити там, де потрібен C / C ++, або це має найбільше значення, я, звичайно, я б навчився C. Моя яловичина - це люди, які говорять, що потрібно навчатись C, щоб мати можливість ефективно розвиватися мовами високого рівня. І це абсурдно.
Стівен


чи можете ви дати нам якийсь контекст (URL), звідки "не вдається обробити такі програми програмування, як покажчик ..."?
k3b

Якби була одна мова, яку я хотів би вивчити, це був би Common Lisp, а не C. Як насамперед розробник C #, я певно впевнений, що від цього виграю більше. У нас уже є покажчики на C #. Здебільшого я б краще навчився більше способів підходу до проблеми, ніж намагатися реалізувати те саме рішення більш складним способом. (Як зауваження, я наполовину брешу. Я зробив деякий C, і я знаю, що він має свої переваги. Просто хотів віддати кредит неймовірно потужною та виразною мовою, що передувала С на десятиліття.)
Маг

Відповіді:


113

Перевагою знання C є те, що ви дуже добре уявляєте, як працює комп'ютер. Не тільки, як працює модель програмування, а як викладена пам'ять тощо.

Єдиний рівень нижче C - це збірка, якою виступає певний процесор.

(Я додам, що знання C також дозволяє оцінити, наскільки менше роботи вам доведеться виконати на мові вищого рівня. І, сподіваємось, оцінку витрат, пов'язаних з роботою на цій мові вищого рівня.)


12
Френк: Ти вдарив цвях по голові. Розуміння того, як працює комп’ютер, управління пам’яттю та розподілення пам’яті, а також ідея, що ви можете додатково оцінювати мови вищого рівня, є причиною для вивчення С. Мені пощастило, що нам довелося навчитися C для реалізації класових проектів, таких як реалізація базового рівня TCP над UDP .
Кріс

12
Я згоден з цим, хоча: C наближає вас лише кілька кроків ближче до коріння трави, а не аж до землі. Гаразд, є річ, яка називається макет пам'яті. Але що це означає фізично? Ви розумієте, як працює комп'ютер, якщо ви не розумієте електроніку? Квантова механіка? І так далі. Я не впевнений, чи є в світі єдиний розум, який глибоко розуміє весь харчовий ланцюг від мови високого рівня, через С, аж до квантової механіки.
Joonas Pulakaka

14
Моє запитання: як ви можете отримати користь від того, чи знаєте, як працює комп'ютер внутрішньо? Що ти набираєш? Вдячність за те, що у вас зараз, не дуже вагомий привід вивчити мову дуже низького рівня, наприклад C. Це як мовляв, я повинен навчитися Fortran, щоб оцінити те, що зараз маю
TheLQ

18
@TheLQ Я без мови. Як ви можете отримати користь від того, як знаєте, як працює комп'ютер внутрішньо? Ви отримуєте чіткіше розуміння того, що ви робите, це те, що ви отримуєте. Швидше: ви дізнаєтесь, що саме ви насправді робите з машиною.
Френк Ширар

15
Я відзначу це правильним, як це здається, улюбленою відповіддю. Це означає, що мені дуже не важливо "як працює комп'ютер" на фундаментальному рівні, оскільки це насправді не допомагає мені розробити наступну цікаву функцію моєї програми. Це як водіння автомобіля: я дуже добре в цьому, але можу менше дбати про те, як працює тиск рідини, що працює в розриві. Він просто зупиняється, коли натискаю на гальмо. Крім того, я впевнений, що хотів би більше керувати автомобілем, якби мені довелося спочатку кататися на конях-баггі протягом п'яти років. Не означає, що я нездатний постулювати, наскільки набагато кращі речі з машиною, а не баггі.
Стівен

72

Я не думаю, що жодна з відповідей тут насправді того, що шукала ОП, тому я збираюся кинути власну думку.

Подивіться, я ненапологовий С сноб. Моє ставлення , що якщо ви не знаєте C, а потім в якийсь - то мірою , ви не дійсно знаєте , що ви робите в якості програміста. Отже, я думаю, що я такий собі "упереджений" чоловік, про якого ти тут говориш.

Однак на практиці, незалежно від того, чи справді ви знаєте, чим займаєтесь як програміст, не обов'язково перешкоджає вам розробляти надзвичайно приємне, корисне програмне забезпечення за допомогою інструментів високого рівня. Я маю на увазі, творець Stack Overflow, Джефф Етвуд, мабуть, навіть не знає C, і все ж я б сказав, що Stack Overflow - це досить чортово хороший веб-додаток.

Незалежно від того, чи ви вирішили вивчити C (або C ++, або збірку), залежить від того, яким програмістом ви хочете бути. Якщо ви просто хочете розробляти круті веб-додатки або бізнес-додатки, це прекрасно - немає справжньої необхідності вчитися C. Але якщо ви хочете по-справжньому перевершити те, що ви робите, - якщо ви хочете працювати над дійсно крутими проектами, які підштовхують стан Мистецтво, то вам дійсно потрібно сприймати себе досить серйозно, як програміста, щоб дійсно зрозуміти, як працюють комп'ютери. Оскільки C - це по суті мова lingua franca, а також мова, яка використовує майже все інше (від ядра Linux до більшості Java VM, до інтерпретаторів Python і Ruby, баз даних SQL, веб-серверів і майже кожного драйвера пристрою) , інтимне розуміння мови проходить довгий шлях.

Не кажучи вже про те, що знання C (або C ++) відкриває величезну можливість для участі у великих проектах з відкритим кодом, які впливають на мільйони (або сотні мільйонів) людей. Хочете попрацювати над вдосконаленням інтерпретатора Python або веб-браузера Chromium? Ну, вам потрібно знати C для першого та C ++ для другого.

Ось чому порівнювати С із мертвими природними мовами, такими як латинська чи застарілі технології, такі як кінь та карета, є абсолютно неправильним. Значна частина нашої програмної інфраструктури 21 століття працює за допомогою коду С, тому C залишається актуальним сьогодні як ніколи.

Отож, чи слід вам вчитися на С, дійсно залежить від того, що ви хочете отримати від своєї кар'єри програміста.


5
Ви не чуєте цього снобізму. Гаразд, може, трохи. :)
Стівен

7
Відмінна відповідь. Я успішно програмував протягом десяти років, не вивчаючи C та C ++, і міг піти решту своєї кар’єри, не вивчаючи цього. Але оскільки я дізнався це минулого року, я написав кращу програму не тільки на C ++, але й на інших мовах.
Джон М Гант

3
Ось кілька речей, які інший творець SO повинен сказати про знання C: joelonsoftware.com/articles/ThePerilsofJavaSchools.html joelonsoftware.com/articles/CollegeAdvice.html joelonsoftware.com/articles/fog0000000319.html
Ісаак

3
Чому було б "абсолютно неправильно" порівнювати С з латиною? Я думаю, що це відмінна аналогія. Латинська є скрізь навколо нас. На 58% англійської лексики впливає латинська мова (безпосередньо або через інші романські мови). Латинська мова також є ключем до розуміння нашої культури. Право, демократія, релігія, інфраструктура, містобудування та ряд інших областей простежуються до Римської імперії. Ви можете ігнорувати C так само, як ви можете ігнорувати латинську мову, але ніколи не можете їх уникнути. "Латинська та грецька мови не мертві. Вони просто перестали бути смертними". (JW McKail)
Андерс Шьоквіст

2
@ AndersSjöqvist, це було б неправильно, оскільки ніхто більше не розмовляє латиною, хоча це глибоко вплинуло на розвиток сучасних мов. Тоді як C активно використовується і використовується скрізь - практично в усіх ОС, VM, базі даних або інтерпретаторі. Скажімо, латинська мова більше схожа на ... Симула - в основному мертва мова, яка глибоко вплинула на живі мови, але не використовується поза науковими колами.
Чарльз Сальвія

12

Практичне правило полягає в тому, що вам потрібно зрозуміти принаймні один рівень абстракції нижче того, на якому ви зазвичай працюєте. Подумайте, що ваш інтерпретатор PHP або JavaScript може бути реалізований на C або C ++. Врешті-решт, ви зіткнетеся з помилкою в інтерпретаторі або навіть помилкою виконання C. Якщо ви не розумієте C, ви будете обмежуватися надсиланням звіту про помилку до сервісного сервісу, сподіваючись, що вони зможуть його відтворити і потурбуватися про нього, а потім подвійне пальцем. Якщо ви знаєте C, ви можете їм точно сказати, де проблема і в чому полягає.

Це також означає, що якщо ви працюєте на C / C ++, ви повинні принаймні мати можливість читати збірку на своїй платформі.

Що стосується вивчення мови C, коли вам це потрібно: моє зауваження полягає в тому, що більшість програмістів можуть вивчати Perl / Python / Javascript на вимогу, але для асемблера / C / Lisp, як видається, потрібно набагато більше часу, тому варто вивчити хоча б деякі основи перед необхідністю виникає.


9
Гаразд, "C / C ++", з яким я можу жити (прокляті мовні адвокати). І "Perl / Python / Javascript" цілком розумний. Але для любові до Бога, чому «асемблер / С / Лісп»? Це як сказати "яблуко / апельсин / Барак Обама". Ці три мови не мають нічого спільного.
Джейсон Бейкер

@ Джейсон, єдина спільність, яку я припускав, - це те, що більшість людей вважають, що трійку мов важче підібрати на льоту, і тому, можливо, варто було б ОП провести з ними деякий час, перш ніж виникне негайна необхідність їх використання. Арифметичне та функціональне програмування вказівників не мають нічого спільного, за винятком того, що люди, здається, повинні дивитись на них довше, перш ніж вони мають сенс.
Чарльз Е. Грант

Я не міг більше погодитися. Якщо піти іншим шляхом, на більш високі рівні абстракції, "офіційний ІТ / хлопець", який може виконати хоч якесь програмування, як правило, буде кращий, ніж той, хто не може.
Еммет

7

Я не згоден , що вам потрібно дізнатися C першим , але я вірю , що ви повинні навчитися C в кінці кінців . Всі абстракції є герметичними, і розуміння C полегшує розуміння того, що насправді відбувається, коли ви використовуєте якісь химерні абстракції високого рівня. Зважаючи на це, я також думаю, що всі серйозні програмісти повинні врешті-решт навчитися читати асемблер з тієї ж причини.

Вивчення цих концепцій низького рівня дає дивовижну здатність міркувати про речі високого рівня. Наприклад, у C ++ та D аргументи за замовчуванням для віртуальних функцій визначаються статичним типом (час компіляції) об’єкта, а не типом динамічного (часу виконання). Це не має сенсу, якщо ви не розумієте, як працюють Vtables та конвенції про виклики, і чому було б надзвичайно важко реалізувати віртуальні функції навпаки.


2
Можливо, навчіться читати мову Асамблеї AN. Проблема полягає в тому, що в мене є 10 різних процесорних сімей, які я використовую і вивчаю всі дуже різні варіанти - це рецепт плутанини і хаосу. Спробуйте порівняти AMD SHARC з Atmel AVR32 і TI MSP430.
uɐɪ

@Ian: Правильно. В ідеалі ви повинні вивчити мову складання тієї арки, яку ви найбільше розробляєте. Для більшості людей я думаю, це буде або x86, або ARM.
dimimcha

3
"усі серйозні програмісти повинні врешті-решт навчитися читати асемблер" Саме такі коментарі мене і почали з цього питання. Я думаю, ви просто упереджені, сер. Хоча мені подобається те, що ви сказали про непрохідні абстракції. Що має сенс. З іншого боку, ці речі не мають великої різниці в реальному світі на моїй арені. Я до сих пір використовую абстракцію високого рівня, нещільну чи ні.
Стівен

1
@Stephen, ви повинні спробувати написати якусь мову асемблера. 8-бітний процесор не є складним і намагається реалізувати те саме маленьке, що і в 6502 (як у C64), і в Z80 (як у бізнес-машинах CP / M) насправді дуже навчальний досвід через деякі дуже базові відмінності в дизайні (індексна сторінка проти регістрів).

+1, незважаючи на очевидно помилкове All abstractions are leakyтвердження.
Томас Едінг

7

Упередженість є однією з статус-кво. У старі часи (1980-ті роки і раніше) C / C ++ був значною мірою вимогою до ефективності програм. Це змінилося, але старші розробники, як правило, походять із цього старого рівня і переглядають речі в цьому контексті.

Для реального розвитку інших мов будуть використовуватися - C # є популярним, як Java, в той час як PHP і Python є популярними для внутрішніх проектів , і це завжди корисно мати кого - то на руках, по крайней мере , базові знання в цій галузі в разі , якщо ви вибираєте відкритий вихідний PHP-проект для, скажімо, вашої системи відстеження помилок. Однак, як видається, специфікації роботи походять із того стандартного шаблону, який був написаний 25 років тому.


6
"Спеціалізовані завдання як і раніше походять із стандартного шаблону, написаного 25 років тому." Ви не можете бути більш правильним.
Стівен

Вітаю, Джон!
Марк C

6

Оскільки я ненавиджу публікувати обов'язковий пост блогу Джоела, я згоден з ним тут . C - мова мов програмування. Я не можу придумати жодної мови високого рівня, яка не може якось взаємодіяти з нею. Через це C все ще є популярним вибором для систем програмного забезпечення типів матеріалів. Ви просто не можете взаємодіяти з деякими речами на рівні ОС без C.

Крім того, що ви плануєте робити, коли мова вашого високого рівня недостатньо швидка? Знання, як писати C, особливо важливо, коли ви використовуєте динамічно набрані мови високого рівня, такі як Ruby, Python або PHP. Але навіть програмістам Java та C # потрібно час від часу знижуватися до C.


Лол. Порада Джоельса у зв’язаному стовпчику: "Вам буде краще ігнорувати те, що я тут говорю, а натомість створити якусь річ із програмного забезпечення в Інтернеті, яке дозволяє іншим студентам знайти людей, щоб виходити на побачення".
Стівен

3
@Stephen: Якщо ви хочете, щоб люди вас по-справжньому помітили, отримайте їх або закладіть, або заплатите.
Фред Нурк

@Fred Чудова порада, lol.
Стівен

6

Який чудовий кулі-фест! (Як вони нібито кажуть: це приватна бійка, чи хтось може долучитися?)

Я був професором, і, що я виявив (після деяких спроб і помилок), це те, що було набагато простіше провести студентів через складні концепції програмування, якщо вони зрозуміли, на базовому рівні, просто те, що робить комп'ютер. Не у всіх тонких деталях, але основний принцип, як, наприклад, що таке пам’ять, які інструкції і т. Д. Що мені подобається в C, це близько до машини.

Це не означає, що інші вчителі прийшли на те саме місце. Вони почали мовою високого рівня (ОСНОВНА :-) і пішли вперед, звідти, без очевидних негативних наслідків.

Отже, підсумок, Стівен, ти можеш мати рацію. Я б не думав так, але я помилявся раніше.


4

Я думаю, це прогрес.

Двадцять років тому загальноприйнятою мудрістю було те, що вам потрібно було навчитися асемблеру, щоб зрозуміти, що ви здобули з таких мов вищого рівня, як C (саме тому мені довелося брати клас асемблера в коледжі за допомогою VAX Macro; здогадуйтесь, наскільки корисно це виявилося після закінчення навчання).

Існує забобон, що через те, що C дещо важко вивчити і що він майже не дає абстракцій (покажчики та байтові потоки - це майже все), навчання це якось зробить вас кращим програмістом або дасть вам більше уявлення про те, як все працює на апараті рівень.

Це не обов'язково правда. Стандарт C не наближує вас до металу, ніж будь-який інший 3GL (Pascal, Fortran тощо). Деякі реалізації C можуть надавати гачки, що дають вам більший доступ до деяких областей, але, як правило, голі вказівники приблизно настільки ж близькі, як ви отримуєте, що зовсім не близько. Наприклад, ви не можете безпосередньо отримати доступ до регістрів або слів статусу.

Зрештою, все зводиться до опкодів та режимів адресації, тому, якщо ви дійсно зацікавлені в тому, як все працює на нижчому рівні, вам краще послужити навчальний асемблер над C.

Само по собі навчання C (не обов'язково) зробить вас кращим програмістом. Це, безумовно, оцінить фактичні типи рядків та стандартизовані бібліотеки контейнерів.


Я здогадуюсь, що «вдячність» - це один із способів її вирішення. У моєму класі програмування середньої школи це були переважно питання "мені потрібно використовувати цю функцію. Як перетворити LOLOMGCHAR * в WTFBBQCHAR *?"
Katana314

я думаю, що C було легко вивчити. принаймні, це було для мене з того, що я просто читав Kernighan & Ritchie.
Роберт Брістоу-Джонсон

2

Мова - це інструмент. Якщо вам потрібно писати тільки веб-сторінки тощо, я впевнений, що ви можете піти, не вивчаючи C, точно так само, як якщо ви коли-небудь виготовляєте набори з пластикової моделі, вам потрібен лише гострий ніж і клей, Ключовий ключ зазвичай не потрібен.

Я пишу код для вбудованих систем із сильно обмеженими ресурсами пам'яті (найбільший, що я робив останнім часом, - 16 кбайт, і це було ВЕЛИЧЕЗНО). На цьому ринку C або ассемблер - єдині варіанти, і будь-яка з пухнастих мов вищого рівня просто не працює.


1
Це чудово ... Але не всі так роблять. Здається, що люди, які не пишуть для вбудованих систем, просто грають і не роблять серйозних розробок - принаймні, приймаючи аналогію вашої моделі в контексті вашої вбудованої системи. Очевидно, це не так, і можна писати масштабні додатки для виробництва, не торкаючись жодної C.
JohnL

Звичайно, можна писати широкомасштабні додатки для виробництва, не проходячи близько C. Я писав код за 10 років до того, як почав використовувати C. Я використовував PL / M, Pascal, ADA, а також асемблер. Це було легко так добре, як C для вивчення основної механіки машини, і часто краще для створення коду без помилок.
uɐɪ

Чудово - хоча ваша відповідь вище не створила у мене враження, що ви так думали, звідси і моя відповідь ...
JohnL

Чи маєте ви досвід роботи з двигунами Java, орієнтованими на вбудоване використання?

2

З мого досвіду, деякий час C / C ++ був хорошим буфером, який відокремлював хороших програмістів від кодерів VB6. Зробивши п’ять років C / C ++, я влаштувався на роботу в VB6. Я був вражений якістю (або її відсутністю) кодерів. Вони мало цікавились кишкою мови, дизайном чи виконанням. На жаль, коли компанія перейшла на .Net, кодери C / C ++ та кодери .Net використовували однакові інструменти. Кодери VB були ще гіршими кодерами VB.Net. Ситуація погіршилася, коли вся розробка пішла на ASP.NET. Раптом кожен, хто міг перетягнути і кинути контроль, став програмістом.

На ринку праці, однак, важко розрізнити жорсткі кодери (колишній C / C ++) та туристів.

Таким чином, наявність C або C ++ у вашому резюме може допомогти відрізнити вас від riff-raff.


2

Прокоативно запитав: Ви просите підтвердження того, що вам не доведеться вивчати С? Якщо ви вивчите чистий C (не обов'язково C ++), ви отримаєте глибоке розуміння моделі виконання комп'ютера. Особливо щодо пам’яті та розподілу. Цей матеріал також має значення для людей, які програмують на мовах вищого рівня.

Для програміста PHP це менш менш прозорий спосіб виконання коду на даній машині. Це може не мати значення для програміста PHP, оскільки мережева передача - це шийка пляшки в додатку тощо.

Простий PHP / Python / C # має багато абстракційних шарів між мовою та процесором. ці шари настільки товсті, що не дозволяють вам переглядати їх. Коли ви вивчаєте C, між вами та процесором та операційною системою є тонкий аркуш. Це не спрощує програмування (а може бути і не краще). Але ви насправді можете дізнатися, як працює процесор. Після того, як ви знаєте "проміжний" C, ви можете фактично почати пов'язувати ці знання вгору з мовою вищого рівня. Це безпосередня вигода, яку ви отримаєте.

На мою думку, програміст завжди повинен витрачати певний час на вивчення різних програм програмування. Це, безумовно, варто переглянути C, але також подивитися на мови програмування ще більш високого рівня, такі як Clojure, Haskell, Prolog.

Вам не доведеться стати майстром у цьому, вони просто навчать вас уроку, що "рівні" мов програмування не є бінарними, але є багато рівнів. Знайомтесь з ними, зверху вниз (Асемблер). Це зробить вас кращим програмістом.


2

Вам потрібно знати достатню кількість C, щоб читати код, написаний на C, через велику кількість дуже важливого коду, написаного мовою. Це майже все, що ви не зможете пройти через ретельний посібник з цього питання (я використовував "програмування Кочана на С"), без того, щоб насправді кодувати мовою. Якщо ви коли-небудь стикаєтеся з ситуацією, яка вимагає від вас широко використовувати мову, у вас буде гарна база для розвитку. Ви, мабуть, хочете вивчити щось на кшталт книги Асамблеї Дантеманса, якщо машина - це чорна скринька для вас. Я також рекомендую «Код» Петцольда.

Крім цього - основна грамотність на З і базове ознайомлення з базовою машиною - вам найкраще буде витрачати час на навчання на реальні речі, наприклад, SICP, TCP / IP Illustrated або книги з конкретної математики, алгоритми чи структуру даних . Справжні речі.

Витрачати багато часу на вивчення C під час кодування в PHP просто не варто альтернативних витрат. Є більше корисних речей, які слід дізнатись. C насправді - це лише інша мова, яку ти можеш добре вивчити, хоч вивчаєш і використовуєш, але можеш вибирати, коли потрібно.

Потійте важкі речі.


1

C - мова, яка використовується для написання інших мов. Це дозволяє вам бути максимально інтимним із процесором та іншим обладнанням, як вам подобається.

Якщо ви не знаєте C, ви не знаєте, як інші мови досягають результатів, які вони роблять.

Звичайно, абстракція - це важлива концепція, і не всім потрібно знати, яким чином їхній вибір вибору досягає результатів, які він обіцяє. Вам не потрібно витрачати 20 років, пишучи C, або, дійсно, думати про те, що трапляється з вашими рейтингами, коли ви використовуєте багатократну спадщину, щоб написати хороший код.

Тепер ви можете керувати автомобілем, не розуміючи, як працює 4-х тактний двигун або, не маючи змоги користуватися перемиканням палиць (ручна коробка передач).

Однак якщо ви зрозумієте, що відбувається під кришкою, час від часу ви зможете досягти виняткових результатів, які хтось без цих знань буде намагатися повторити.


1

C (і, можливо, C ++) - це море, в якому ви купаєтесь. ОС, яка буде виконувати ваш код, ймовірно, закодована в C (і C ++). Тож ваш рідний API для доступу до служб ОС буде у C.

Якщо ви можете обійтися, не знаючи, що там нижче, то не потрібно знати C. Однак більшості програмістів потрібно зануритися на нижчі рівні десь у своєму житті.

Він також ґрунтується на вашій спеціалізації напрямів розвитку. Наприклад, веб-розробник, який пише HTML, Javascript та деякі сценарії на стороні сервера, може ніколи нічого не знати про C, але розповсюджена система чи розробник ігор будуть.

Ніколи не зашкодить витратити кілька тижнів, вивчаючи щось таке принципове для вашої професії.


1

C має багато переваг:

  1. C - мова низького рівня. Ви можете використовувати c для розробки ядра та драйвера.
  2. C - це найшвидша мова. Багато програмного забезпечення для енергетики було розроблено c. Наприклад: memcached, redis, nginx, apache, mysql і т.д.
  3. C - мова на платформі. Програма, розроблена c, може працювати на будь-якій платформі. Інші міжплатформні мови не можуть цього зробити. Java, python, php тощо не можуть працювати на платформі iOS.
  4. C ++ не може працювати в багатьох вбудованих системах.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.