- Правильна назва цієї сторінки — C#, але її не можна використовувати через технічні обмеження.
C# (вимовляється Сі-шарп) — об'єктно-орієнтована мова програмування з безпечною системою типізації для платформи .NET. Розроблена Андерсом Гейлсбергом, та під егідою Microsoft Research (належить Microsoft).
C# | |
---|---|
Парадигма | об'єктно орієнтована, структурна, імперативна |
Дата появи | 2001 |
Творці | Microsoft |
Розробник | Андерс Гейлсберг, та |
Останній реліз | 12 (14 листопада, 2023 ) |
Система типізації | статична, строга, безпечна, керована |
Під впливом від | Java, Objective-C, , Visual Basic, Delphi |
Вплинула на | Java |
Звичайні розширення файлів | .cs або .csx |
Репозиторій вихідного коду | github.com/dotnet/csharplang github.com/dotnet/roslyn |
Вебсайт | csharp.net |
|
Синтаксис C# близький до і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато від своїх попередників — мов , Object Pascal, Модула і Smalltalk — С#, спираючись на практику їхнього використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем, наприклад, мова С#, на відміну від C++, не передбачає множинне успадкування класів.
Станом на вересень 2023 року поточна стабільна версія мови C# 11.0, яка була випущена в 2022 році як частина платформи .NET 7.0.
Історія виникнення
C# є дуже близьким родичем мови програмування Java. Мова Java була створена компанією Sun Microsystems, коли глобальний розвиток інтернету поставив завдання розподілених обчислень. Взявши за основу популярну мову C++, Java виключила з неї потенційно небезпечні речі (на зразок вказівників без контролю виходу за межі). Для розподілених обчислень була створена концепція віртуальної машини та машинно-незалежного байт-коду, свого роду посередника між вихідним текстом програм і апаратними інструкціями комп'ютера чи іншого інтелектуального пристрою.
Java набула чималої популярності, і була ліцензована також і компанією Microsoft. Але, з часом, Sun почала звинувачувати Microsoft, що та при створенні свого клону Java робить її сумісною виключно з платформою Windows, чим суперечить самій концепції машинно-незалежного середовища виконання і порушує ліцензійну угоду. Microsoft відмовилася піти назустріч вимогам Sun, і тому з'ясування стосунків набуло статусу судового процесу. Суд визнав позицію Sun справедливою, і зобов'язав Microsoft відмовитися від позаліцензійного використання Java.
У цій ситуації в Microsoft вирішили, користуючись своїм панівним становищем на ринку, створити свій власний аналог Java — мову, для якої корпорація буде повноцінним власником. Ця новостворена мова отримала назву C#. Вона успадкувала від Java концепції віртуальної машини (середовище .NET), байт-коду (MSIL) і більшої безпечності вихідного коду програм, плюс врахувала досвід використання програм на Java.
Нововведенням C# стала можливість легшої взаємодії, порівняно з мовами-попередниками, з кодом програм, написаних на інших мовах, що є важливим при створенні великих проєктів. Якщо програми на різних мовах виконуються на платформі .NET, .NET бере на себе клопіт щодо сумісності програм (тобто типів даних, за кінцевим рахунком).
Станом на сьогодні[] C# визначено флагманською мовою корпорації Microsoft, бо вона найповніше використовує нові можливості .NET. Решта мов програмування, хоч і підтримуються, але визнані такими, що мають спадкові прогалини щодо використання .NET. Рядок в C# є посилальним типом.
Назва мови
Символ # у назві мови можна інтерпретувати і як дві пари плюсів ++, що натякають на новий крок у розвитку мови порівняно з C++ (подібно до кроку від C до C++), і як музичний символ дієз, разом з буквою C, що становить в англійській мові назву ноти . Останнє й дало назву мові. Попри те, що символ # (октоторп) насправді є символом для позначення номера на більшості клавіатур і відрізняється від символу дієз ♯ (Unicode U+266F), Microsoft, як автор мови, неодноразово зверталася до своїх клієнтів з проханням прийняти таку стилізацію.
Версії
Версія 1.0
Проєкт C# був початий в грудні 1998 і отримав кодову назву COOL (C-style Object Oriented Language). Версія 1.0 була анонсована разом з платформою .NET у червні 2000 року, тоді ж з'явилася і перша загальнодоступна бета-версія; C# 1.0 остаточно вийшов разом з Microsoft Visual Studio .NET у лютому 2002 року.
Перша версія C# нагадувала за своїми можливостями Java 1.4, дещо їх розширюючи: так, в C# були властивості (що виглядають у коді як поля об'єкта, але, при зверненні до них, можуть викликати пов'язані методи класу), індексатори (подібні до властивостей, але приймають параметр як індекс масиву), події, делегати, цикли foreach, структури, що передаються за значенням, автоматичне перетворення вбудованих типів в об'єкти при необхідності (boxing), атрибути, вбудовані засоби взаємодії з некерованим кодом (DLL, COM) тощо. Крім того, в C# вирішено було перенести деякі можливості C++, відсутні в Java: беззнакові типи, перевизначення операцій (з деякими обмеженнями, на відміну від C++), передача параметрів у метод за посиланням, методи зі змінним числом параметрів, оператор goto. Також у C# залишили обмежену можливість роботи з вказівниками — в місцях коду, спеціально позначених словом unsafe і при вказівці спеціальної опції компілятору.
Версія 2.0
Проєкт специфікації C# 2.0 вперше був викладений Microsoft в жовтні 2003 року; у 2004 році виходили бета-версії (проєкт з кодовою назвою Whidbey), C# 2.0 остаточно вийшов 7 листопада 2005 року разом з Visual Studio 2005 і .NET 2.0.
Нові можливості у версії 2.0:
- Часткові типи (розділення реалізації класу більш ніж на один файл).
- Узагальнені, або параметризовані типи (generics, «дженерики»). На відміну від шаблонів C++, вони підтримують деякі додаткові можливості і працюють на рівні віртуальної машини. Разом з тим, параметрами узагальненого типу не можуть бути вирази.
- Нова форма ітератора, що дозволяє створювати співпрограми за допомогою ключового слова yield, подібно Python і Рубі.
- Анонімні методи, що забезпечують функціональність замикання.
- Оператор ??: return obj1 ?? obj2; означає (у нотації C# 1.0) return obj1!=null ? obj1 : obj2;.
- Типи-значення, що обнуляються (nullable), (що позначаються знаком питання, наприклад, int? i = null;) є тими ж самими типами-значеннями, що можуть також приймати також значення null. Такі типи дозволяють поліпшити взаємодію з базами даних через мову SQL.
Версія 3.0
У червні 2004 року Андерс Гейлсберг вперше розповів на сайті Microsoft про плановані розширення мови в C#3.0.. У вересні 2005 року було випущено проєкт специфікації C# 3.0 і бета-версія C# 3.0, що встановлюється у вигляді доповнення до існуючих Visual Studio 2005 і .NET 2.0. Офіційно версія C# 3.0 побачила світ 19 листопада 2007 року у складі .
В C# 3.0 з'явилися такі радикальні доповнення та зміни:
- Ключові слова select, from, where, що дозволяють робити запити з SQL, XML, колекції тощо (запит, інтегрований в мову — LINQ, англ. Language Integrated Query)
- Ініціалізація об'єкта разом з його властивостями:
Customer з = new Customer(); з.Name = "James";
матиме вигляд:
Customer з = new Customer { Name = "James" };
- Лямбда-вирази (анонімні функції):
listOfFoo.Where(delegate(Foo x) { return x.size > 10; });
матиме вигляд:
listOfFoo.Where(x => x.size > 10);
- Автоматичне визначення типів локальних змінних:
string x = "hello";
матиме вигляд:
var x = "hello";
- Безіменні типи:
var x = new { Name = "James" };
- Методи-розширення — додавання методу в існуючий клас за допомогою ключового слова this при першому параметрі статичної функції.
C# 3.0 сумісний з C# 2.0 за генерованим -кодом; поліпшення в мові — чисто синтаксичні і реалізуються на етапі компіляції. Наприклад, багато з інтегрованих запитів LINQ можна реалізувати в поточних версіях використовуючи безіменні делегати в поєднанні з предикативними методами над контейнерами, на кшталт List.FindAll і List.RemoveAll.
Версія 4.0
Випуск четвертої версії мови програмування C# не випадково збігся з випуском нової версії .NET Framework. Він мав на меті створення інфраструктури для реалізації мов (динамічної типізації). Що суттєво поліпшило підтримку динамічних API в C# , було бажаним для початку робіт над мовою TypeScript та було використано наявними реалізаціями, наприклад PowerShell.
Нові можливості в версії 4.0:
- Коваріантність і контраваріантність
- Динамічна диспетчеризація — ключове слово dynamic вказує компілятору відкласти розв'язання посилань на метод до періоду виконання.
// Так робили виклик методів COM до C# 4.0 object o = GetObject(); Type t = o.GetType(); object result = t.InvokeMember("MyMethod", BindingFlags.InvokeMethod, null, o, new object[] { }); int i = Convert.ToInt32(result); // C# 4.0 dynamic o = GetObject(); int i = o.MyMethod();
- [en] — бібліотека проміжного рівня, що уніфікує взаємодію динамічних API та CLR
- Іменовані аргументи та параметри з усталеними значеннями — роблять код використання більш лаконічним. Мова C не підтримує перевантаження методів, тому більшість уніфікованих API має методи з величезним списком аргументів.
class Logger{ public void Log(int severity=0, string message){} void Info(string info){ Log(message:info); } }
- Властивості-індексатори
- Можливість пропуску ref у викликах COM
Document d = new Document(); // Так робили виклик методів COM до C# 4.0 object filename = "Foo.docx"; d.SaveAs(ref filename, // ... // C# 4.0 створить проміжну змінну замість літерала "Foo.docx" // і підставить з модифікатором ref d.SaveAs(FileName: "Foo.docx");
- Вбудовування типів "COM Interop" — позбавило розробників клопоту з поставкою PIA
Версія 5.0
- Асинхронні методи
- Відомості про об'єкт, що робить виклик [1] [ 7 серпня 2019 у Wayback Machine.]
Версія 6.0
Цей розділ потребує доповнення. (червень 2019) |
Версія 7.0
Цей розділ потребує доповнення. (червень 2019) |
Версія 8.0
C# 8.0 доступний на .NET Core 3.x та .NET Standard 2.1.
Тільки для читання
Ви можете застосувати модифікатор лише для читання до членів структури. Це вказує, що він не змінюватиме стан. Це більш детально, ніж застосування модифікатора readonly до декларації усієї структури. Наприклад:
public readonly override string ToString() => $"({X}, {Y}) це {Distance} від початку";
Версія 9.0
C# 9.0 доступний лише на .NET 5.
Записові типи (англ. Record types)
Посилальні типи що мають семантику значених типів для перевірки рівності [2] [ 5 вересня 2020 у Wayback Machine.]. Це досягається за допомогою реалізації методів порівняння та обчислення хешу аналогічно до значених типів. Записові типи за визначенням незмінні.
Приклад записового типу, що представляє точку на декартовій системі координат:
public record Point { public int X { get; } public int Y { get; } public Point(int x, int y) => (X, Y) = (x, y); }
Приклад, що демонструє результат порівняння двох об'єктів-точок:
var point1 = new Point(1, 1); var point2 = new Point(1, 1); Console.WriteLine(point1 == point2); // результат - true Console.WriteLine(object.ReferenceEquals(point1, point2)); // результат - false, оскільки об'єкти покликаються на різні області пам'яті
Також для зручності оголошення таких типів в C# 9 був доданий новий синтаксис, схожий до оголошення конструктора, який зветься позиційним записом (англ. positional record). З його використанням, раніше наведений приклад записового типу набуває вигляду:
public record Point(int X, int Y);
Використовуючи цей синтаксис можна застосувати (паралельне присвоєння), притаманне для кортежів.
var origin = new Point(0, 0); var (originX, originY) = origin;
Оскільки записові типи незмінні, щоб створити новий об'єкт з існуючого потрібно скопіювати значення його властивостей. Для зручності написання такого коду був доданий новий вираз with, що створює копію об'єкта та дозволяє змінити властивості результату у формі, подібній до виразу ініціалізації об'єктів.
var point = new Point(1, 1); // значення властивостей об'єкту: X = 1, Y = 1 point = point with { Y = 0 }; // значення властивостей об'єкту: X = 1, Y = 0
Препроцесор
C# має «препроцесорні директиви» (хоча насправді він не має препроцесора) на основі препроцесора C, це дає програмісту можливість визначити символи, але не макроси. Умовні директиви, такі як #if, #endif, чи #else також можливі. Директиви типу #region дають натяк редактору для згортання фрагментів коду.
Бібліотеки
Специфікація C# визначає мінімальний набір бібліотек типів і класів, на який має розраховувати компілятор. На практиці, C# найчастіше використовується з якоюсь реалізацією [en] (CLI), яка стандартизована як ECMA-335 Common Language Infrastructure (CLI).
Стандартизація
C# стандартизований в ECMA та ISO.
У серпні 2000 Microsoft Corporation, Hewlett-Packard та Intel Corporation виступили спонсорами стандартизації специфікації мови C#, а також (CLI) в організації зі стандартизації ECMA International. У грудні 2001 ECMA випустила ECMA-334 Специфікація мови C#. C# стала стандартом ISO у 2003 (ISO/IEC 23270:2006 — Information technology—Programming languages—C#). До того ECMA ще встигла адоптувати еквівалентну специфікацію як другу редакцію C# у грудні 2002.
У червні 2005 ECMA схвалила редакцію 3 специфікації C#, і відредагувала ECMA-334. Доповнення включали часткові класи, анонімні методи, тип null, і генерики (аналоги шаблонів C++).
У липні 2005 ECMA подала стандарти і відповідні технічні умови на ISO/IEC JTC 1 через пришвидшену процедуру (Fast-Track). Цей процес звичайно займає 6-9 місяців.
Критика
Хоча визначення мови C# і CLI стандартизовані ISO та Ecma, що забезпечує розумний і недискримінаційний ліцензійний захист (RAND) від патентних позовів, Microsoft використовує C# і CLI у своїй бібліотеці Base Class Library (BCL), яка є фундаментом їхньої власницької платформи .NET framework, і яка надає низку нестандартизованих класів (розширений I/O, GUI Windows Forms, вебслужби тощо).
У деяких випадках, де патенти Microsoft відносяться до стандартів, використаних у .NET framework, документовані Microsoft, і застосовані патенти доступні через інші RAND умови або через Обітницю Відкритої Специфікації Microsoft (Microsoft's Open Specification Promise, OSP), які випускають патентні права публічно. Але є деякі застереження і обговорення про те, що існують додаткові аспекти, патентовані Microsoft, що не покриті, які можуть утримувати незалежних реалізаторів повного фреймворку.
Microsoft також погодився не позиватися проти розробників відкритого програмного забезпечення щодо порушення прав у неприбуткових проєктах для частини свого фреймворку, покритого OSP. Microsoft погодився не порушувати патентних вимог щодо продуктів Novell проти платних клієнтів Novell за винятком переліку продуктів, що явно не згадують C#, .NET чи реалізацію .NET від Novell (проєкт Mono). Проте Novell дотримується точки зору, що Mono не порушує жодного патенту Microsoft.. Microsoft також уклав спеціальну угоду не позиватися проти браузерного плагіну Moonlight, який спирається на Mono, отриманного від Novell.
У зауваженні, опублікованому на сайті новин Free Software Foundation у червні 2009 Річард Столлман попереджає, що він вважає, що «Microsoft можливо планує одного дня оголосити всі вільні реалізації C# такими, що використовують програмні патенти» і рекомендував розробникам уникати того, що він називає «безвідплатним ризиком», пов'язаним із «залежністю вільних реалізацій C#». Free Software Foundation пізніше повторила свої попередження, стверджуючи, що розширення Microsoft Community Promise на специфікації ECMA C# і CLI можуть не вберігти від шкідництва Microsoft відкритим реалізаціям C#, оскільки багато специфічних для Windows бібліотек, включених у .NET та Mono, не покриті цими обіцянками. Тому більшість провідних дистрибутивів Лінукс, за винятком Novell SUSE Linux, не включають Mono в установку за умовчанням (хоча його і можна завантажити з репозиторіїв).
Реалізації
Титульним компілятором C# є .
Існують інші компілятори C#, часто вони включають реалізації Common Language Infrastructure і бібліотеки класів .NET:
- Проєкт Microsoft Rotor (який тепер зветься Shared Source Common Language Infrastructure, ліцензований тільки для навчального і дослідницького використання) забезпечує реалізації CLR runtime і компілятор C#, і підмножину бібліотек фреймворка Common Language Infrastructure, відповідно до специфікації ECMA (до C# 2.0, і з підтримкою тільки Windows XP).
- Проєкт SharpDevelop від компанії icsharpcode [ 12 жовтня 2019 у Wayback Machine.], який використовується як альтернатива Visual Studio. Забезпечує повну реалізацію Common Language Infrastructure. Остання[] стабільна версія IDE 4.4 (28 серпня 2013), тестова версія 5.0 (13 лютого 2014). Зовнішній вигляд IDE дуже нагадує Microsoft Visual C#, що робить комфортним перехід від одного середовища до іншого.
- Проєкт Mono, початий компанією Xamarin і продовжений її покупцем і наступником Novell, забезпечує відкритий компілятор C#, повну відкриту реалізацію Common Language Infrastructure, включаючи потрібні бібліотеки фреймворка відповідно до специфікації ECMA, і близьку до повної реалізацію власницьких бібліотек класів Microsoft .NET до .NET 2.0, але не специфічних бібліотек .NET 3.0 і .NET 3.5, як для Mono 2.0.
- Проєкт також надає відкритий компілятор C#, близьку до повної реалізацію Common Language Infrastructure, включаючи потрібні бібліотеки фреймворка відповідно до специфікації ECMA, і підмножину деяких залишених власницьких біліотек класів Microsoft .NET до .NET 2.0 (які не документовані або не включені у специфікації ECMA, але включені у стандартне визначення Microsoft .NET Framework).
- DotNetAnywhere [ 4 травня 2009 у Wayback Machine.] Micro Framework Common Language Runtime націлений на вбудовані системи, і підтримує майже всі специфікації C# 2.0.
Приклад «Hello, world!»
using System; class ExampleClass { static void Main() { Console.WriteLine("Hello, world!"); Console.ReadKey(); } }
У версії C# 9.0 з'явилась можливість написання програм з неявно визначеним методом Main:
using System; Console.WriteLine("Hello, world!"); Console.ReadKey();
Діалекти
Spec#
Spec# – формальна мова для API контрактів, яка розширює C# конструкціями для не нульових типів, передумов, постумов та інваріантів об'єктів. Впроваджена у 2003 році в рамках проекту Microsoft Research.
Sing#
Sing# — мова програмування, розроблена на основі Spec# у рамках проекту Singularity. Це розширення C#, яке забезпечує перевірювану, повноцінну підтримку примітивів ОС для комунікації та сильну підтримку для системного програмування та факторизації коду[].
Див. також
Примітки
- Welcome to C# 11. 8 листопада 2022. Процитовано 26 вересня 2023.
- . Архів оригіналу за 13 грудня 2019.
- . Архів оригіналу за 7 серпня 2005. Процитовано 31 жовтня 2007.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . Архів оригіналу за 17 травня 2008. Процитовано 31 жовтня 2007.
{{}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title () - . msdn.microsoft.com (ru-ru) . 1 жовтня 2010. Архів оригіналу за 7 серпня 2019. Процитовано 7 серпня 2019.
- . web.archive.org (en-us) . 28 квітня 2012. Архів оригіналу за 28 квітня 2012. Процитовано 7 серпня 2019.
- . docs.microsoft.com (en-us) . Архів оригіналу за 7 серпня 2019. Процитовано 7 серпня 2019.
- . Архів оригіналу за 4 липня 2008. Процитовано 27 лютого 2009.
- . Архів оригіналу за 31 жовтня 2010. Процитовано 31 жовтня 2007.
- . Архів оригіналу за 30 червня 2006. Процитовано 31 жовтня 2007.
- Interoperability Principles. Архів оригіналу за 22 червня 2013. Процитовано 4 травня 2010.
- Patent Pledge for Open Source Developers. Архів оригіналу за 22 червня 2013. Процитовано 4 травня 2010.
- Patent Cooperation Agreement - Microsoft & Novell Interoperability Collaboration. Microsoft. 2 листопада 2006. Архів оригіналу за 22 червня 2013. Процитовано 5 липня 2009.
Microsoft, on behalf of itself and its Subsidiaries (collectively “Microsoft”), hereby covenants not to sue Novell’s Customers and Novell’s Subsidiaries’ Customers for infringement under Covered Patents of Microsoft on account of such a Customer’s use of specific copies of a Covered Product as distributed by Novell or its Subsidiaries (collectively “Novell”) for which Novell has received Revenue (directly or indirectly) for such specific copies; provided the foregoing covenant is limited to use by such Customer (i) of such specific copies that are authorized by Novell in consideration for such Revenue, and (ii) within the scope authorized by Novell in consideration for such Revenue.
- Definitions. Microsoft. 2 листопада 2006. Архів оригіналу за 22 червня 2013. Процитовано 5 липня 2009.
- Steinman, Justin (7 листопада 2006). Novell Answers Questions from the Community. Архів оригіналу за 22 червня 2013. Процитовано 5 липня 2009.
We maintain that Mono does not infringe any Microsoft patents.
- Covenant to Downstream Recipients of Moonlight — Microsoft & Novell Interoperability Collaboration. Microsoft. 28 вересня 2007. Архів оригіналу за 2 березня 2012. Процитовано 8 березня 2008.
“Downstream Recipient” means an entity or individual that uses for its intended purpose a Moonlight Implementation obtained directly from Novell or through an Intermediate Recipient… Microsoft reserves the right to update (including discontinue) the foregoing covenant… “Moonlight Implementation” means only those specific portions of Moonlight 1.0 or Moonlight 1.1 that run only as a plug-in to a browser on a Personal Computer and are not licensed under GPLv3 or a Similar License.
- Stallman, Richard (26 червня 2009). Why free software shouldn't depend on Mono or C#. Free Software Foundation. Архів оригіналу за 22 червня 2013. Процитовано 2 липня 2009.
The danger is that Microsoft is probably planning to force all free C# implementations underground some day using software patents. … We should systematically arrange to depend on the free C# implementations as little as possible. In other words, we should discourage people from writing programs in C#. Therefore, we should not include C# implementations in the default installation of GNU/Linux distributions, and we should distribute and recommend non-C# applications rather than comparable C# applications whenever possible.
- Microsoft's Empty Promise. Free Software Foundation. 16 липня 2009. Архів оригіналу за 22 червня 2013. Процитовано 2009-078-03.
Until that happens, free software developers still should not write software that depends on Mono. C# implementations can still be attacked by Microsoft's patents: the Community Promise is designed to give the company several outs if it wants them. We don't want to see developers' hard work lost to the community if we lose the ability to use Mono, and until we eliminate software patents altogether, using another language is the best way to prevent that from happening.
- The ECMA C# and CLI Standards. 6 липня 2009. Архів оригіналу за 22 червня 2013. Процитовано 2009-078-03.
- Gubskiy, Andrew (4 квітня 2023). The C# Multiverse — the Singularity of Programming Languages. Medium (англ.). Процитовано 22 червня 2023.
Посилання
- C# Language (MSDN) [ 8 квітня 2007 у Wayback Machine.]
- C# Офіційний сайт(MSDN) [ 19 листопада 2008 у Wayback Machine.]
- C# Programming Guide (MSDN) [ 14 жовтня 2008 у Wayback Machine.]
- C# Specification (MSDN) [ 8 квітня 2007 у Wayback Machine.]
- ECMA-334 C# Language Specification [ 11 лютого 2010 у Wayback Machine.] — hyperlinked
- ECMA-334 C# Language Specification [ 11 лютого 2010 у Wayback Machine.] (5.59 MB)
- ISO C# Language Specification — Purchase version [ 10 березня 2007 у Wayback Machine.] or free version [ 17 лютого 2007 у Wayback Machine.].
- Microsoft Visual C# .NET [ 7 вересня 2008 у Wayback Machine.]
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina C Pravilna nazva ciyeyi storinki C ale yiyi ne mozhna vikoristovuvati cherez tehnichni obmezhennya C vimovlyayetsya Si sharp ob yektno oriyentovana mova programuvannya z bezpechnoyu sistemoyu tipizaciyi dlya platformi NET Rozroblena Andersom Gejlsbergom ta pid egidoyu Microsoft Research nalezhit Microsoft C Paradigmaob yektno oriyentovana strukturna imperativnaData poyavi2001TvorciMicrosoftRozrobnikAnders Gejlsberg taOstannij reliz12 14 listopada 2023 7 misyaciv tomu 2023 11 14 Sistema tipizaciyistatichna stroga bezpechna kerovanaPid vplivom vidJava Objective C C Visual Basic DelphiVplinula naJavaZvichajni rozshirennya fajliv cs abo csxRepozitorij vihidnogo kodugithub com dotnet csharplang github com dotnet roslynVebsajtcsharp net Instrukciyi u Vikipidruchniku Mediafajli u Vikishovishi Sintaksis C blizkij do S i Java Mova maye strogu statichnu tipizaciyu pidtrimuye polimorfizm perevantazhennya operatoriv vkazivniki na funkciyi chleni klasiv atributi podiyi vlastivosti vinyatki komentari u formati XML Perejnyavshi bagato vid svoyih poperednikiv mov S Object Pascal Modula i Smalltalk S spirayuchis na praktiku yihnogo vikoristannya viklyuchaye deyaki modeli sho zarekomenduvali sebe yak problematichni pri rozrobci programnih sistem napriklad mova S na vidminu vid C ne peredbachaye mnozhinne uspadkuvannya klasiv Stanom na veresen 2023 roku potochna stabilna versiya movi C 11 0 yaka bula vipushena v 2022 roci yak chastina platformi NET 7 0 Istoriya viniknennyaC ye duzhe blizkim rodichem movi programuvannya Java Mova Java bula stvorena kompaniyeyu Sun Microsystems koli globalnij rozvitok internetu postaviv zavdannya rozpodilenih obchislen Vzyavshi za osnovu populyarnu movu C Java viklyuchila z neyi potencijno nebezpechni rechi na zrazok vkazivnikiv bez kontrolyu vihodu za mezhi Dlya rozpodilenih obchislen bula stvorena koncepciya virtualnoyi mashini ta mashinno nezalezhnogo bajt kodu svogo rodu poserednika mizh vihidnim tekstom program i aparatnimi instrukciyami komp yutera chi inshogo intelektualnogo pristroyu Java nabula chimaloyi populyarnosti i bula licenzovana takozh i kompaniyeyu Microsoft Ale z chasom Sun pochala zvinuvachuvati Microsoft sho ta pri stvorenni svogo klonu Java robit yiyi sumisnoyu viklyuchno z platformoyu Windows chim superechit samij koncepciyi mashinno nezalezhnogo seredovisha vikonannya i porushuye licenzijnu ugodu Microsoft vidmovilasya piti nazustrich vimogam Sun i tomu z yasuvannya stosunkiv nabulo statusu sudovogo procesu Sud viznav poziciyu Sun spravedlivoyu i zobov yazav Microsoft vidmovitisya vid pozalicenzijnogo vikoristannya Java U cij situaciyi v Microsoft virishili koristuyuchis svoyim panivnim stanovishem na rinku stvoriti svij vlasnij analog Java movu dlya yakoyi korporaciya bude povnocinnim vlasnikom Cya novostvorena mova otrimala nazvu C Vona uspadkuvala vid Java koncepciyi virtualnoyi mashini seredovishe NET bajt kodu MSIL i bilshoyi bezpechnosti vihidnogo kodu program plyus vrahuvala dosvid vikoristannya program na Java Novovvedennyam C stala mozhlivist legshoyi vzayemodiyi porivnyano z movami poperednikami z kodom program napisanih na inshih movah sho ye vazhlivim pri stvorenni velikih proyektiv Yaksho programi na riznih movah vikonuyutsya na platformi NET NET bere na sebe klopit shodo sumisnosti program tobto tipiv danih za kincevim rahunkom Stanom na sogodni koli C viznacheno flagmanskoyu movoyu korporaciyi Microsoft bo vona najpovnishe vikoristovuye novi mozhlivosti NET Reshta mov programuvannya hoch i pidtrimuyutsya ale viznani takimi sho mayut spadkovi progalini shodo vikoristannya NET Ryadok v C ye posilalnim tipom Nazva moviSimvol u nazvi movi mozhna interpretuvati i yak dvi pari plyusiv sho natyakayut na novij krok u rozvitku movi porivnyano z C podibno do kroku vid C do C i yak muzichnij simvol diyez razom z bukvoyu C sho stanovit v anglijskij movi nazvu noti Ostannye j dalo nazvu movi Popri te sho simvol oktotorp naspravdi ye simvolom dlya poznachennya nomera na bilshosti klaviatur i vidriznyayetsya vid simvolu diyez Unicode U 266F Microsoft yak avtor movi neodnorazovo zvertalasya do svoyih kliyentiv z prohannyam prijnyati taku stilizaciyu VersiyiVersiya 1 0 Proyekt C buv pochatij v grudni 1998 i otrimav kodovu nazvu COOL C style Object Oriented Language Versiya 1 0 bula anonsovana razom z platformoyu NET u chervni 2000 roku todi zh z yavilasya i persha zagalnodostupna beta versiya C 1 0 ostatochno vijshov razom z Microsoft Visual Studio NET u lyutomu 2002 roku Persha versiya C nagaduvala za svoyimi mozhlivostyami Java 1 4 desho yih rozshiryuyuchi tak v C buli vlastivosti sho viglyadayut u kodi yak polya ob yekta ale pri zvernenni do nih mozhut viklikati pov yazani metodi klasu indeksatori podibni do vlastivostej ale prijmayut parametr yak indeks masivu podiyi delegati cikli foreach strukturi sho peredayutsya za znachennyam avtomatichne peretvorennya vbudovanih tipiv v ob yekti pri neobhidnosti boxing atributi vbudovani zasobi vzayemodiyi z nekerovanim kodom DLL COM tosho Krim togo v C virisheno bulo perenesti deyaki mozhlivosti C vidsutni v Java bezznakovi tipi pereviznachennya operacij z deyakimi obmezhennyami na vidminu vid C peredacha parametriv u metod za posilannyam metodi zi zminnim chislom parametriv operator goto Takozh u C zalishili obmezhenu mozhlivist roboti z vkazivnikami v miscyah kodu specialno poznachenih slovom unsafe i pri vkazivci specialnoyi opciyi kompilyatoru Versiya 2 0 Proyekt specifikaciyi C 2 0 vpershe buv vikladenij Microsoft v zhovtni 2003 roku u 2004 roci vihodili beta versiyi proyekt z kodovoyu nazvoyu Whidbey C 2 0 ostatochno vijshov 7 listopada 2005 roku razom z Visual Studio 2005 i NET 2 0 Novi mozhlivosti u versiyi 2 0 Chastkovi tipi rozdilennya realizaciyi klasu bilsh nizh na odin fajl Uzagalneni abo parametrizovani tipi generics dzheneriki Na vidminu vid shabloniv C voni pidtrimuyut deyaki dodatkovi mozhlivosti i pracyuyut na rivni virtualnoyi mashini Razom z tim parametrami uzagalnenogo tipu ne mozhut buti virazi Nova forma iteratora sho dozvolyaye stvoryuvati spivprogrami za dopomogoyu klyuchovogo slova yield podibno Python i Rubi Anonimni metodi sho zabezpechuyut funkcionalnist zamikannya Operator return obj1 obj2 oznachaye u notaciyi C 1 0 return obj1 null obj1 obj2 Tipi znachennya sho obnulyayutsya nullable sho poznachayutsya znakom pitannya napriklad int i null ye timi zh samimi tipami znachennyami sho mozhut takozh prijmati takozh znachennya null Taki tipi dozvolyayut polipshiti vzayemodiyu z bazami danih cherez movu SQL Versiya 3 0 U chervni 2004 roku Anders Gejlsberg vpershe rozpoviv na sajti Microsoft pro planovani rozshirennya movi v C 3 0 U veresni 2005 roku bulo vipusheno proyekt specifikaciyi C 3 0 i beta versiya C 3 0 sho vstanovlyuyetsya u viglyadi dopovnennya do isnuyuchih Visual Studio 2005 i NET 2 0 Oficijno versiya C 3 0 pobachila svit 19 listopada 2007 roku u skladi V C 3 0 z yavilisya taki radikalni dopovnennya ta zmini Klyuchovi slova select from where sho dozvolyayut robiti zapiti z SQL XML kolekciyi tosho zapit integrovanij v movu LINQ angl Language Integrated Query Inicializaciya ob yekta razom z jogo vlastivostyami Customer z new Customer z Name James matime viglyad Customer z new Customer Name James Lyambda virazi anonimni funkciyi listOfFoo Where delegate Foo x return x size gt 10 matime viglyad listOfFoo Where x gt x size gt 10 Avtomatichne viznachennya tipiv lokalnih zminnih string x hello matime viglyad var x hello Bezimenni tipi var x new Name James Metodi rozshirennya dodavannya metodu v isnuyuchij klas za dopomogoyu klyuchovogo slova this pri pershomu parametri statichnoyi funkciyi C 3 0 sumisnij z C 2 0 za generovanim kodom polipshennya v movi chisto sintaksichni i realizuyutsya na etapi kompilyaciyi Napriklad bagato z integrovanih zapitiv LINQ mozhna realizuvati v potochnih versiyah vikoristovuyuchi bezimenni delegati v poyednanni z predikativnimi metodami nad kontejnerami na kshtalt List FindAll i List RemoveAll Versiya 4 0 Vipusk chetvertoyi versiyi movi programuvannya C ne vipadkovo zbigsya z vipuskom novoyi versiyi NET Framework Vin mav na meti stvorennya infrastrukturi dlya realizaciyi mov dinamichnoyi tipizaciyi Sho suttyevo polipshilo pidtrimku dinamichnih API v C bulo bazhanim dlya pochatku robit nad movoyu TypeScript ta bulo vikoristano nayavnimi realizaciyami napriklad PowerShell Novi mozhlivosti v versiyi 4 0 Kovariantnist i kontravariantnist Dinamichna dispetcherizaciya klyuchove slovo dynamic vkazuye kompilyatoru vidklasti rozv yazannya posilan na metod do periodu vikonannya Tak robili viklik metodiv COM do C 4 0 object o GetObject Type t o GetType object result t InvokeMember MyMethod BindingFlags InvokeMethod null o new object int i Convert ToInt32 result C 4 0 dynamic o GetObject int i o MyMethod en biblioteka promizhnogo rivnya sho unifikuye vzayemodiyu dinamichnih API ta CLR Imenovani argumenti ta parametri z ustalenimi znachennyami roblyat kod vikoristannya bilsh lakonichnim Mova C ne pidtrimuye perevantazhennya metodiv tomu bilshist unifikovanih API maye metodi z velicheznim spiskom argumentiv class Logger public void Log int severity 0 string message void Info string info Log message info Vlastivosti indeksatori Mozhlivist propusku ref u viklikah COM Document d new Document Tak robili viklik metodiv COM do C 4 0 object filename Foo docx d SaveAs ref filename C 4 0 stvorit promizhnu zminnu zamist literala Foo docx i pidstavit z modifikatorom ref d SaveAs FileName Foo docx Vbudovuvannya tipiv COM Interop pozbavilo rozrobnikiv klopotu z postavkoyu PIA Versiya 5 0 Asinhronni metodi Vidomosti pro ob yekt sho robit viklik 1 7 serpnya 2019 u Wayback Machine Versiya 6 0 Cej rozdil potrebuye dopovnennya cherven 2019 Versiya 7 0 Cej rozdil potrebuye dopovnennya cherven 2019 Versiya 8 0 C 8 0 dostupnij na NET Core 3 x ta NET Standard 2 1 Tilki dlya chitannya Vi mozhete zastosuvati modifikator lishe dlya chitannya do chleniv strukturi Ce vkazuye sho vin ne zminyuvatime stan Ce bilsh detalno nizh zastosuvannya modifikatora readonly do deklaraciyi usiyeyi strukturi Napriklad public readonly override string ToString gt X Y ce Distance vid pochatku Versiya 9 0 C 9 0 dostupnij lishe na NET 5 Zapisovi tipi angl Record types Posilalni tipi sho mayut semantiku znachenih tipiv dlya perevirki rivnosti 2 5 veresnya 2020 u Wayback Machine Ce dosyagayetsya za dopomogoyu realizaciyi metodiv porivnyannya ta obchislennya heshu analogichno do znachenih tipiv Zapisovi tipi za viznachennyam nezminni Priklad zapisovogo tipu sho predstavlyaye tochku na dekartovij sistemi koordinat public record Point public int X get public int Y get public Point int x int y gt X Y x y Priklad sho demonstruye rezultat porivnyannya dvoh ob yektiv tochok var point1 new Point 1 1 var point2 new Point 1 1 Console WriteLine point1 point2 rezultat true Console WriteLine object ReferenceEquals point1 point2 rezultat false oskilki ob yekti poklikayutsya na rizni oblasti pam yati Takozh dlya zruchnosti ogoloshennya takih tipiv v C 9 buv dodanij novij sintaksis shozhij do ogoloshennya konstruktora yakij zvetsya pozicijnim zapisom angl positional record Z jogo vikoristannyam ranishe navedenij priklad zapisovogo tipu nabuvaye viglyadu public record Point int X int Y Vikoristovuyuchi cej sintaksis mozhna zastosuvati paralelne prisvoyennya pritamanne dlya kortezhiv var origin new Point 0 0 var originX originY origin Oskilki zapisovi tipi nezminni shob stvoriti novij ob yekt z isnuyuchogo potribno skopiyuvati znachennya jogo vlastivostej Dlya zruchnosti napisannya takogo kodu buv dodanij novij viraz with sho stvoryuye kopiyu ob yekta ta dozvolyaye zminiti vlastivosti rezultatu u formi podibnij do virazu inicializaciyi ob yektiv var point new Point 1 1 znachennya vlastivostej ob yektu X 1 Y 1 point point with Y 0 znachennya vlastivostej ob yektu X 1 Y 0PreprocesorC maye preprocesorni direktivi hocha naspravdi vin ne maye preprocesora na osnovi preprocesora C ce daye programistu mozhlivist viznachiti simvoli ale ne makrosi Umovni direktivi taki yak if endif chi else takozh mozhlivi Direktivi tipu region dayut natyak redaktoru dlya zgortannya fragmentiv kodu BibliotekiSpecifikaciya C viznachaye minimalnij nabir bibliotek tipiv i klasiv na yakij maye rozrahovuvati kompilyator Na praktici C najchastishe vikoristovuyetsya z yakoyus realizaciyeyu en CLI yaka standartizovana yak ECMA 335 Common Language Infrastructure CLI StandartizaciyaC standartizovanij v ECMA ta ISO U serpni 2000 Microsoft Corporation Hewlett Packard ta Intel Corporation vistupili sponsorami standartizaciyi specifikaciyi movi C a takozh CLI v organizaciyi zi standartizaciyi ECMA International U grudni 2001 ECMA vipustila ECMA 334 Specifikaciya movi C C stala standartom ISO u 2003 ISO IEC 23270 2006 Information technology Programming languages C Do togo ECMA she vstigla adoptuvati ekvivalentnu specifikaciyu yak drugu redakciyu C u grudni 2002 U chervni 2005 ECMA shvalila redakciyu 3 specifikaciyi C i vidredaguvala ECMA 334 Dopovnennya vklyuchali chastkovi klasi anonimni metodi tip null i generiki analogi shabloniv C U lipni 2005 ECMA podala standarti i vidpovidni tehnichni umovi na ISO IEC JTC 1 cherez prishvidshenu proceduru Fast Track Cej proces zvichajno zajmaye 6 9 misyaciv Kritika Hocha viznachennya movi C i CLI standartizovani ISO ta Ecma sho zabezpechuye rozumnij i nediskriminacijnij licenzijnij zahist RAND vid patentnih pozoviv Microsoft vikoristovuye C i CLI u svoyij biblioteci Base Class Library BCL yaka ye fundamentom yihnoyi vlasnickoyi platformi NET framework i yaka nadaye nizku nestandartizovanih klasiv rozshirenij I O GUI Windows Forms vebsluzhbi tosho U deyakih vipadkah de patenti Microsoft vidnosyatsya do standartiv vikoristanih u NET framework dokumentovani Microsoft i zastosovani patenti dostupni cherez inshi RAND umovi abo cherez Obitnicyu Vidkritoyi Specifikaciyi Microsoft Microsoft s Open Specification Promise OSP yaki vipuskayut patentni prava publichno Ale ye deyaki zasterezhennya i obgovorennya pro te sho isnuyut dodatkovi aspekti patentovani Microsoft sho ne pokriti yaki mozhut utrimuvati nezalezhnih realizatoriv povnogo frejmvorku Microsoft takozh pogodivsya ne pozivatisya proti rozrobnikiv vidkritogo programnogo zabezpechennya shodo porushennya prav u nepributkovih proyektah dlya chastini svogo frejmvorku pokritogo OSP Microsoft pogodivsya ne porushuvati patentnih vimog shodo produktiv Novell proti platnih kliyentiv Novell za vinyatkom pereliku produktiv sho yavno ne zgaduyut C NET chi realizaciyu NET vid Novell proyekt Mono Prote Novell dotrimuyetsya tochki zoru sho Mono ne porushuye zhodnogo patentu Microsoft Microsoft takozh uklav specialnu ugodu ne pozivatisya proti brauzernogo plaginu Moonlight yakij spirayetsya na Mono otrimannogo vid Novell U zauvazhenni opublikovanomu na sajti novin Free Software Foundation u chervni 2009 Richard Stollman poperedzhaye sho vin vvazhaye sho Microsoft mozhlivo planuye odnogo dnya ogolositi vsi vilni realizaciyi C takimi sho vikoristovuyut programni patenti i rekomenduvav rozrobnikam unikati togo sho vin nazivaye bezvidplatnim rizikom pov yazanim iz zalezhnistyu vilnih realizacij C Free Software Foundation piznishe povtorila svoyi poperedzhennya stverdzhuyuchi sho rozshirennya Microsoft Community Promise na specifikaciyi ECMA C i CLI mozhut ne vberigti vid shkidnictva Microsoft vidkritim realizaciyam C oskilki bagato specifichnih dlya Windows bibliotek vklyuchenih u NET ta Mono ne pokriti cimi obicyankami Tomu bilshist providnih distributiviv Linuks za vinyatkom Novell SUSE Linux ne vklyuchayut Mono v ustanovku za umovchannyam hocha jogo i mozhna zavantazhiti z repozitoriyiv RealizaciyiTitulnim kompilyatorom C ye Isnuyut inshi kompilyatori C chasto voni vklyuchayut realizaciyi Common Language Infrastructure i biblioteki klasiv NET Proyekt Microsoft Rotor yakij teper zvetsya Shared Source Common Language Infrastructure licenzovanij tilki dlya navchalnogo i doslidnickogo vikoristannya zabezpechuye realizaciyi CLR runtime i kompilyator C i pidmnozhinu bibliotek frejmvorka Common Language Infrastructure vidpovidno do specifikaciyi ECMA do C 2 0 i z pidtrimkoyu tilki Windows XP Proyekt SharpDevelop vid kompaniyi icsharpcode 12 zhovtnya 2019 u Wayback Machine yakij vikoristovuyetsya yak alternativa Visual Studio Zabezpechuye povnu realizaciyu Common Language Infrastructure Ostannya koli stabilna versiya IDE 4 4 28 serpnya 2013 testova versiya 5 0 13 lyutogo 2014 Zovnishnij viglyad IDE duzhe nagaduye Microsoft Visual C sho robit komfortnim perehid vid odnogo seredovisha do inshogo Proyekt Mono pochatij kompaniyeyu Xamarin i prodovzhenij yiyi pokupcem i nastupnikom Novell zabezpechuye vidkritij kompilyator C povnu vidkritu realizaciyu Common Language Infrastructure vklyuchayuchi potribni biblioteki frejmvorka vidpovidno do specifikaciyi ECMA i blizku do povnoyi realizaciyu vlasnickih bibliotek klasiv Microsoft NET do NET 2 0 ale ne specifichnih bibliotek NET 3 0 i NET 3 5 yak dlya Mono 2 0 Proyekt takozh nadaye vidkritij kompilyator C blizku do povnoyi realizaciyu Common Language Infrastructure vklyuchayuchi potribni biblioteki frejmvorka vidpovidno do specifikaciyi ECMA i pidmnozhinu deyakih zalishenih vlasnickih biliotek klasiv Microsoft NET do NET 2 0 yaki ne dokumentovani abo ne vklyucheni u specifikaciyi ECMA ale vklyucheni u standartne viznachennya Microsoft NET Framework DotNetAnywhere 4 travnya 2009 u Wayback Machine Micro Framework Common Language Runtime nacilenij na vbudovani sistemi i pidtrimuye majzhe vsi specifikaciyi C 2 0 Priklad Hello world using System class ExampleClass static void Main Console WriteLine Hello world Console ReadKey U versiyi C 9 0 z yavilas mozhlivist napisannya program z neyavno viznachenim metodom Main using System Console WriteLine Hello world Console ReadKey DialektiSpec Spec formalna mova dlya API kontraktiv yaka rozshiryuye C konstrukciyami dlya ne nulovih tipiv peredumov postumov ta invariantiv ob yektiv Vprovadzhena u 2003 roci v ramkah proektu Microsoft Research Sing Sing mova programuvannya rozroblena na osnovi Spec u ramkah proektu Singularity Ce rozshirennya C yake zabezpechuye pereviryuvanu povnocinnu pidtrimku primitiviv OS dlya komunikaciyi ta silnu pidtrimku dlya sistemnogo programuvannya ta faktorizaciyi kodu dzherelo Div takozhReSharper NET Framework F PrimitkiWelcome to C 11 8 listopada 2022 Procitovano 26 veresnya 2023 Arhiv originalu za 13 grudnya 2019 Arhiv originalu za 7 serpnya 2005 Procitovano 31 zhovtnya 2007 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya Arhiv originalu za 17 travnya 2008 Procitovano 31 zhovtnya 2007 a href wiki D0 A8 D0 B0 D0 B1 D0 BB D0 BE D0 BD Cite web title Shablon Cite web cite web a Obslugovuvannya CS1 Storinki z tekstom archived copy yak znachennya parametru title posilannya msdn microsoft com ru ru 1 zhovtnya 2010 Arhiv originalu za 7 serpnya 2019 Procitovano 7 serpnya 2019 web archive org en us 28 kvitnya 2012 Arhiv originalu za 28 kvitnya 2012 Procitovano 7 serpnya 2019 docs microsoft com en us Arhiv originalu za 7 serpnya 2019 Procitovano 7 serpnya 2019 Arhiv originalu za 4 lipnya 2008 Procitovano 27 lyutogo 2009 Arhiv originalu za 31 zhovtnya 2010 Procitovano 31 zhovtnya 2007 Arhiv originalu za 30 chervnya 2006 Procitovano 31 zhovtnya 2007 Interoperability Principles Arhiv originalu za 22 chervnya 2013 Procitovano 4 travnya 2010 Patent Pledge for Open Source Developers Arhiv originalu za 22 chervnya 2013 Procitovano 4 travnya 2010 Patent Cooperation Agreement Microsoft amp Novell Interoperability Collaboration Microsoft 2 listopada 2006 Arhiv originalu za 22 chervnya 2013 Procitovano 5 lipnya 2009 Microsoft on behalf of itself and its Subsidiaries collectively Microsoft hereby covenants not to sue Novell s Customers and Novell s Subsidiaries Customers for infringement under Covered Patents of Microsoft on account of such a Customer s use of specific copies of a Covered Product as distributed by Novell or its Subsidiaries collectively Novell for which Novell has received Revenue directly or indirectly for such specific copies provided the foregoing covenant is limited to use by such Customer i of such specific copies that are authorized by Novell in consideration for such Revenue and ii within the scope authorized by Novell in consideration for such Revenue Definitions Microsoft 2 listopada 2006 Arhiv originalu za 22 chervnya 2013 Procitovano 5 lipnya 2009 Steinman Justin 7 listopada 2006 Novell Answers Questions from the Community Arhiv originalu za 22 chervnya 2013 Procitovano 5 lipnya 2009 We maintain that Mono does not infringe any Microsoft patents Covenant to Downstream Recipients of Moonlight Microsoft amp Novell Interoperability Collaboration Microsoft 28 veresnya 2007 Arhiv originalu za 2 bereznya 2012 Procitovano 8 bereznya 2008 Downstream Recipient means an entity or individual that uses for its intended purpose a Moonlight Implementation obtained directly from Novell or through an Intermediate Recipient Microsoft reserves the right to update including discontinue the foregoing covenant Moonlight Implementation means only those specific portions of Moonlight 1 0 or Moonlight 1 1 that run only as a plug in to a browser on a Personal Computer and are not licensed under GPLv3 or a Similar License Stallman Richard 26 chervnya 2009 Why free software shouldn t depend on Mono or C Free Software Foundation Arhiv originalu za 22 chervnya 2013 Procitovano 2 lipnya 2009 The danger is that Microsoft is probably planning to force all free C implementations underground some day using software patents We should systematically arrange to depend on the free C implementations as little as possible In other words we should discourage people from writing programs in C Therefore we should not include C implementations in the default installation of GNU Linux distributions and we should distribute and recommend non C applications rather than comparable C applications whenever possible Microsoft s Empty Promise Free Software Foundation 16 lipnya 2009 Arhiv originalu za 22 chervnya 2013 Procitovano 2009 078 03 Until that happens free software developers still should not write software that depends on Mono C implementations can still be attacked by Microsoft s patents the Community Promise is designed to give the company several outs if it wants them We don t want to see developers hard work lost to the community if we lose the ability to use Mono and until we eliminate software patents altogether using another language is the best way to prevent that from happening The ECMA C and CLI Standards 6 lipnya 2009 Arhiv originalu za 22 chervnya 2013 Procitovano 2009 078 03 Gubskiy Andrew 4 kvitnya 2023 The C Multiverse the Singularity of Programming Languages Medium angl Procitovano 22 chervnya 2023 PosilannyaC Sharp u sestrinskih Vikiproyektah Portal Programuvannya Teksti u Vikipidruchniku Fajli u Vikishovishi C Language MSDN 8 kvitnya 2007 u Wayback Machine C Oficijnij sajt MSDN 19 listopada 2008 u Wayback Machine C Programming Guide MSDN 14 zhovtnya 2008 u Wayback Machine C Specification MSDN 8 kvitnya 2007 u Wayback Machine ECMA 334 C Language Specification 11 lyutogo 2010 u Wayback Machine hyperlinked ECMA 334 C Language Specification 11 lyutogo 2010 u Wayback Machine 5 59 MB ISO C Language Specification Purchase version 10 bereznya 2007 u Wayback Machine or free version 17 lyutogo 2007 u Wayback Machine Microsoft Visual C NET 7 veresnya 2008 u Wayback Machine Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi