Історія мови С
До відкриття C люди використовували ПО мову B, розроблену Кеном Томпсоном і Денисом Річі в Bell Labs у 1969 році. Мову C створив в 1972 році Денніс Річі. На ній було успішно реалізовано ядро операційної системи Unix у 1973 році. Вона стала дуже популярною після 1980 року. Її почали застосовувати для розробки ОС і різних додатків.
Основні елементи мови C
У мові C є лінійні і блокові коментарі. Коментарі блоку з'являються між послідовністю символів «/ *» і «* /». Рядковий або лінійний коментар починається з послідовності «//» і закінчується розривом рядка.
Базові типи: bool, char, usigned char, signed char і int.
У C байт не може бути менше 8 біт. Це найменший обсяг даних, який можна адресувати.
Характеристики мови C++
Це парадигмальна мова, яка означає, що одночасно можна використовувати кілька різних типів ПО. C++ створив в 1979 році Бьярн Страуструп як об'єктно-орієнтоване розширення мови C. Він використовується для створення програмного забезпечення та комп'ютерних ігор. На цій мові найчастіше пишуться програми для Windows і Linux. Можливість передавати вихідний код між платформами створює безліч можливостей для розробників.
Відповідно до даних дослідження IТ-співтовариства 2020 року, для 51% розробників вбудованих систем це основна мова програмування, а 25% професійних розробників починали з цієї мови. Він залишається неперевершеним, коли мова йде про високобюджетних комп'ютерних іграх, вбудованому ПЗ, системному програмуванні. Amazon був заснований на мові C ++, а також на операційних системах Windows.
Доступні типи програмного забезпечення C ++:
- процедурне,
- об'єктно-орієнтоване,
- універсальне.
Відмінності між С і С++
C++ спочатку розроблявся як «C із класами». Страуструп додав до нього більше елементів і поліпшень. Нові можливості мови C++ у порівнянні з мовою ANSI C 1989 року включені в стандарт мови C із 1999 року (так званий C99). У C ++ з'явилася об'єктивність, яка є теоретичною для C.
Об'єктно-орієнтоване програмування:
- класи як розширення структури з функціями компонентів, инкапсуляцією, спадкуванням та поліморфізмом;
- об'єкти, які є екземплярами класів;
- успадкування (включаючи множинне);
- віртуальні методи (функції компонентів);
- конструктори (додана можливість заборонити неявне перетворення конструктором із використанням явного);
- деструктори — функції, що викликаються неявно перед (строго визначеним) видаленням об'єкта;
- оператори new і delete;
- перевірка динамічного типу (RTTI) під час виконання — перетворення між пов'язаними типами класів і визначення типу під час виконання (оператори dynamic_cast і typeid);
- ключове слово this (доступ до об'єкта, для якого викликається метод);
- покажчики на компоненти (поля і методи);
- статичні методи й поля.
- функції-члени;
- приватні, захищені й публічні розділи;
- дружні функції і класи.
- шаблони класів і функцій;
- включення стандартної універсальної бібліотеки STL в стандартну бібліотеку.
- оголошення перехоплення виключення;
- оголошення для виклику виключення: throw;
- оголошення обмежують винятків: throw (...) (визначення того, які виключення можуть бути передані з даної функції/методу).
- оператор просторів імен і області дії;
- визначення змінних і об'єктів як звичайних операторів;
- динамічна ініціалізація глобальних змінних і локальних статичних змінних;
- можливість доступу до перевизначення глобальної змінної за допомогою оператора;
- ключові слова const, volatile (також C99) і змінювані (видалення модифікатора const із зазначеного поля, якщо такий було встановлено для всього об'єкта);
- вбудовані функції і оператори перезавантаження;
- новий логічний тип bool і константи true і false.
Важливі версії C++
- C++ 11— випуск через 8 років після попередньої версії. Він представив лямбда-вирази, поліпшення в реалізації розумних покажчиків, можливість автоматичного присвоєння типу або заміни NULLна nullptr. Було дійсно багато змін, у тому числі і в стандартній бібліотеці, де, серед іншого, були нові структури даних (наприклад, кортежі), клас std :: threadдля спрощення обробки потоків, шаблон функції std::async, що дозволяє асинхронні виклики.
- C++ 14— розширена можливість виведення типів за рахунок використання цієї мовної функції в лямбда-виразах або типах, що повертаються.
- C++ 17— подальше розширення виведення типів, що додає можливість використання if і lambd в конструкції constexpr (тобто тієї, значення якої вказується під час компіляції). У стандартній бібліотеці, наприклад std::optional, є шаблон класу, який містить необов'язкове значення, std::filesystem, тобто уніфікований спосіб роботи з файловою системою.
Вивчення С++: із чого почати
Навчання програмуванню найчастіше починається із вивчення C/C ++ з нуля, а потім переходить до Java і C #. Це не навчання по пам'яті. Важливе вміння шукати знання, вивчати документацію і намагатися вирішувати проблеми самостійно. Саме розуміти, а не повторювати заяложені фрази.
Поширена помилка — вчитися тільки по російськомовних сайтах і матеріалах. Обмежуватися тільки книгами точно не варто. Друковані матеріали швидко втрачають актуальність. Найсвіжіші знання дають курси С ++ онлайнвід викладачів практиків Main School, на форумах у колег і знайти в англомовному інтернеті. Чим раніше ви звикнете до цієї мови, тим краще. Без англійської неможливо рухатися далі.
Незважаючи на обмеження друкованих джерел, не слід повністю відмовлятися від них, оскільки вони є гарною опорою.
- C ++ Primer Plus— дуже добре написаний підручник Стівена Прата по C ++ 11);
- «Ефективний сучасний C ++» — хороша підтримка у вивченні новітніх стандартів мов програмування (C ++ 11 і C ++ 14);
- C ++ Primer— п'яте видання книги Стенлі Липпмана, яку також часто рекомендують розробники, щоб почати вивчати Сі плюс плюс онлайн;
- Алгоритмы без секретов— вивчаючи програмування, варто зануритися у світ алгоритмів;
- «Чистий код» Роберта С. Мартіна — книга, яка розповідає про те, як писати чистий код з хорошою структурою і які хороші звички варто засвоїти із самого початку вивчення програмування.
Гарний програміст ніколи не перестає вчитися. Якщо ви збираєтеся серйозно ставитися до програмування і пов'язати з цим заняттям своє життя, звикайте до постійного розвитку своїх навичок. Сподіваємося, що наведені вище матеріали та рекомендації стануть у нагоді вам у цьому.
Коментарі ()