C (мова програмування): відмінності між версіями

[перевірена версія][перевірена версія]
Вилучено вміст Додано вміст
TeoBot (обговорення | внесок)
→‎Примітки: checkwiki за допомогою AWB
стиль
Рядок 44:
* вказівники на функції і дані підтримують динамічний [[Поліморфізм (програмування)|поліморфізм]]
* [[Масив (структура даних)|масив]] індексів як вторинне поняття, визначається у термінах арифметики вказівників
* стандартизований [[препроцесор]] C для макроозначення, включення файлу з джерельним кодом, умовної трансляції, і т. дтощо.
* комплексна функціональність, як то [[Введення-виведення|I/O]], маніпуляція [[Рядок (програмування)|рядками]], і делегування математичних функцій [[Бібліотека (програмування)|бібліотекам]]
* відносно невелика кількість зарезервованих слів (32 у С89, і 37 у C99)
Рядок 123:
У цьому прикладі, як SomeFunction, так і OtherFunction були оголошені перед своїм використанням. У K&R оголошенням OtherFunction можна було знехтувати.
 
Оскільки декларація функцій у K&R C не включає ніякої інформації про аргументи функції, перевірка типу параметрів не виконується, хоча деякі [[компілятор]]и видають попереджувальне повідомлення, якщо до локальної функції звертаються із неправильним числом аргументів, або якщо багаторазові виклики до зовнішньої функції використовуваютьвикористовують різну кількість аргументів.
 
Наступні декілька років після публікації K&R C, до мови було додано декілька неофіційних можливостей (у той час, як офіційного нового стандарту не було), котрі підтримувалися компіляторами від AT&T та деяких інших постачальників. Серед них:
* функції з типом результату void;
* функції, що повертають значннязначення типу struct або union (а не вказівник)
* присвоєння для типу struct
* Визначник [[const]], котрий робив об'єкт доступним лише для читання
Рядок 181:
* задіяння додаткових макросів для перевірки чисел з плаваючою комою.
 
Фінальний текст стандарту не доступний для вільного завантаження (тільки платне завантаження), але можна завантажити останню [http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf чорнову редакцію (PDF, 3.6 Мб, 701 стор.)], яка майже не відрізняється від затвердженої специфікації.
 
== Використання ==
Рядок 202:
Іншим загальним набором функцій стандартної [[стандартна бібліотека С|бібліотеки С]] є той, що використовується [[застосунок|застосунками]]. Проектувалися вони для [[UNIX]]-подібних систем, у першу чергу, для забезпечення інтерфейсу до ядра. Ці функції деталізуються у різноманітних стандартах, на кшталт [[POSIX]] та [[Single UNIX Specification]].
 
Відтоді, як С набула великої популярності, для неї було написано чимало інших бібліотек. Бібліотеки часто пишуться на С, оскільки [[компілятор]]и C ґенеруютьгенерують ефективний [[об'єктний код]]; пізніше [[програміст]]и створюють інтерфейси до бібліотек таким чином, що ті можуть використовуватися високорівневими мовами, на кшталт [[Java]], [[Perl]] та [[Python]].
 
== Критика ==
Рядок 209:
 
== Пов'язані мови ==
Коли об'єктно-орієнтовані мови стали популярними, [[C++]] і [[Objective-C]] були двома різними продовженнями C, які забезпечували об'єктно-орієнтовані можливості. Обидві мови спочатку функціонували, як препроцесори — написаний на них код спочатку переводився на C, а потім компілювасякомпілювався компілятором C.
 
=== С++ ===
Рядок 218:
 
=== С# ===
[[Мова програмування]] [[C Sharp|C#]] заснована на строгій компонентній архітектурі і реалізує передові механізми забезпечення безпеки коду. C # об'єднала кращінайкращі риси цілого ряду попередників. Крім згаданої раніше мови C++, необхідно указати ще кілька знакових для нашого часу мов програмування, а саме, [[Java]] і [[Visual Basic]].
 
==== Основні можливості C# ====
Подібна до мов [[Java]], [[C++]] і [[Visual Basic]], але є компонентно-орієнтованою і більш безпечною.
Додано ряд нових рис (делегати, індексатори, механізм (un)boxing і т.д.тощо)
 
{| class="wikitable"
Рядок 241:
* «перевантажені» оператори
* небезпечні арифметичні операції з плаваючою точкою
* деякі особливості синтакисусинтаксису
|}