Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
диплом версія 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
361.22 Кб
Скачать

ВСТУП

Сі ( англ. C ) - стандартизований процедурний мова програмування, розроблений на початку 1970-х років співробітниками Bell Labs Кеном Томпсоном іДеннісом Рітчі як розвиток мови Бі. Сі був створений для використання в операційній системі UNIX. З тих пір він був імпортований на багато інших операційні системи і став одним з найбільш використовуваних мов програмування. Сі цінують за його ефективність. Він є самим популярним мовою для створення системного програмного забезпечення. Його також часто використовують для створення прикладних програм. Незважаючи на те, що Сі не розроблявся для новачків, він активно використовується для навчання програмування. В подальшому синтаксис мови Сі став основою для багатьох інших мов.

Для мови Сі характерні лаконічність, стандартний набір конструкцій управління потоком виконання, структур даних і великий набір операцій.

1 Особливості мови прогрмування сі

1.1 Історія мови

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

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

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

У відповідь на критику мови Cі, як сильно типізованої мови, Керніган та Рітчі, послались на основу філософії дизайну Cі: «Тим не менш, Cі зберігає основний принцип, який передбачає, що програмісти добре знають, що вони роблять, і вимагає лише, щоб вони чітко давали компіляторові знати про свої наміри».

1.2 Основні поняття мови

Мова програмування Сі відрізняється мінімалізмом. Автори мови хотіли, щоб програми на ньому легко компілювалися за допомогою однопрохідногокомпілятора, щоб кожної елементарної складовою програми після компіляції відповідало дуже невелике число машинних команд, а використання базових елементів мови не задіяло бібліотеку часу виконання. Однопрохідний компілятор компілює програму, не повертаючись назад, до вже обробленого тексту. Тому використання функції і змінних має передувати їх оголошення. Код на Сі можна легко писати на низькому рівні абстракції, майже як на асемблері. Іноді Сі називають "універсальним асемблером" або "асемблером високого рівня", що відображає різницю мов асемблера для різних платформ і єдність стандарту Сі, код якого може бути скомпільований без змін практично на будь-якої моделі комп'ютера. Сі часто називають мовою середнього рівня або навіть низького рівня,враховуючи те, як близько він працює до реальних пристроїв. Однак, в суворої класифікації, вона є мовою високого рівня.

Компілятори Сі розробляються порівняно легко завдяки простоті мови та малому розміру стандартної бібліотеки. Тому даний мова доступна на самих різних платформах (можливо, коло цих платформ ширше, ніж у будь-якого іншого існуючого мови). До того ж, незважаючи на свою низкорівневу природу, мова дозволяє створювати переносяться програми і підтримує в цьому програміста. Програми, що відповідають стандарту мови, можуть компілюватися на самих різних комп'ютерах.

Сі (як і ОС UNIX, з якою він довгий час був пов'язаний) створювався програмістами і для програмістів, коло яких був би набагато ширше кола розробників мови. Незважаючи на це, область використання мови значно ширше завдань системного програмування.

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

  • просту мовну базу, з якої винесені в бібліотеки багато істотні можливості, начебто математичних функцій або функцій управління файлами;

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

  • систему типів, що охороняє від безглуздих операцій;

  • використання препроцесора для, наприклад, визначення макросів і включення файлів з вихідним кодом;

  • безпосередній доступ до пам'яті комп'ютера через використання покажчиків;

  • мінімальне число ключових слів;

  • передачу параметрів у функцію за значенням, а не за посиланням (при цьому передача за посиланням емулюється за допомогою покажчиків);

  • покажчики на функції і статичні змінні

  • області дії імен;

  • структури та об'єднання - визначені користувачем збірні типи даних, якими можна маніпулювати як одним цілим;

Ось деякі особливості інших мов програмування, яких не має Сі:

  • автоматичне управління пам'яттю;

  • підтримка об'єктно-орієнтованого програмування (при цьому перші версії C + + генерували код програми на мові Сі);

  • замикання;

  • вкладені функції (існують компілятори мови Сі реалізують цю функцію, наприклад компілятор GNU);

  • поліморфізм функцій і операторів;

  • вбудована підтримка багатозадачності і мережі

  • функції вищого порядку

  • каррінг.

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

Одним із наслідків високої ефективності і переносимості Сі стало те, що багато компілятори, інтерпретатори і бібліотеки інших мов високого рівня часто виконані на мові Сі.