Чому в університетах досі викладають C та C++

Андрій Губін

Розробник Джозеф Круз замислився над тим, чому в університетах досі вивчають мови C та C++. Пропонуємо вам переклад його його авторського блогу від нашої редакції. Далі — слово автору.

Такі мови, як Java, C#, Python та інші, насправді настільки «продезінфікували» розробку, встановивши обмеження (які найчастіше є безсоромною брехнею) та інструменти для «полегшення життя» розробника, що «будь-хто» може здаватися «суперкомпетентним» у цих мовах, ігноруючи навіть базові принципи, які вони використовують, і будучи абсолютно нездатним встановити зв’язок між дизайном (отриманим на основі аналізу потреб) та кодом.

Поговоріть з користувачем Java або C# про LSP, наприклад, або будь-який принцип SOLID, і він, ймовірно, подивиться на вас широко розплющеними очима.

Спробуйте пояснити йому, що ви не можете — згідно з LSP — зробити клас Square успадкованим від класу Rectangle, незважаючи на те, що всі вивчили в початковій школі, що «квадрат — це прямокутник», і він подумає, що ви збожеволіли.

Спробуйте пояснити йому, що дрібнозернисте управління пам’яттю все ще особливо важливе, а він відповість, що «на щастя, за мене це робить збирач сміття».

C і C++ — одні з небагатьох мов, які мають зовсім іншу філософію в цьому питанні.

Для них, якщо якась техніка вважається (ймовірно, справедливо) небезпечною, але, незважаючи ні на що, вона представляє «великий інтерес», навіть якщо тільки в «певних дуже специфічних обставинах», її варто запропонувати.

Звичайно, це означає, що розробник повинен знати, що він робить, коли вирішує використовувати цю техніку; що розробник повинен приймати рішення про використання цієї техніки «з повним знанням фактів», тому що це виявляється «найменш поганим можливим рішенням» (якщо не «найкращим»).

Справа в тому, що для того, щоб бути по-справжньому компетентним в C або C++, розробник повинен знати — краще, опанувати — принципи, які дозволять йому перейти від проектування до коду, що він повинен вміти приймати рішення «з повним знанням фактів», і що всі свої рішення він повинен вміти обґрунтовувати через повагу до принципів проектування.

Ще краще, компетентний розробник C або C++ буде знати, що принципами проектування будуть «GO / NO GO», які існують не для того, щоб виправдати рішення «постфактум», а для того, щоб дозволити нам прийняти правильне рішення: якщо принцип дотримується, ми «робимо крок далі» до позитивного рішення, якщо він не дотримується, ми остаточно відмовляємося від рішення, тому що ніщо в мові не дозволить нам перетворити погане рішення в хороше «як за помахом чарівної палички».

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

Хоча протилежне є абсолютно невірним: навіть найкомпетентніші розробники на Java, Python або C# регулярно виявляються «кричущо некомпетентними» в C або C++, «просто» тому, що вони не «звикли» приймати свої рішення на основі принципів проектування.

Тому я вважаю — оскільки я ніколи не вчився в університеті — що якщо С і С++ і викладають, то лише для того, щоб змусити студента набути «певного рівня компетентності», змусити його виробити звичку ставити «правильні питання» в потрібний час і правильно засвоїти принципи проектування.

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

Але це вже інша дискусія.

Останні статті

Zoom випустить фотореалістичних аватарів, які замінять людей на нарадах

Відеосервіс Zoom анонсує технологію цифрових двійників, які самостійно відвідуватимуть робочі зустрічі. Про це пише TechCrunch.…

10.03.2026

Meta купує Moltbook: соціальну мережу для агентів та ботів

IT-гігант Meta (материнська компанія Facebook) офіційно оголосив про придбання Moltbook — вірусної соціальної мережі, яка…

10.03.2026

Китайський агент штучного інтелекту почав таємно майнити криптовалюту

Експериментальний агент штучного інтелекту ROME, якого створили дослідники, пов'язані з китайською компанією Alibaba, продемонстрував неочікувану…

10.03.2026

Заробляли на DDoS-атаках: у Польщі викрито групу школярів-хакерів, наймолодшому 12 років

Центральне бюро боротьби з кіберзлочинністю Польщі (CBZC) провело масштабну операцію, результатом якої стало викриття групи…

10.03.2026

Microsoft випустила Copilot Cowork — мультимодальний інструмент для запуску агентів

Microsoft оголосила про початок інтеграції технологій Anthropic у свої сервіси, представивши новий інструмент Copilot Cowork,…

10.03.2026

Anthropic презентує новий інструмент перевірки пул-реквестів Code Review

Компанія Anthropic оголосила про доступність у Claude Code бета-версії нового інструменту Code Review. Він розробленій…

10.03.2026