C (linguaggio di programmazione): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Migliorato la pagina |
Annullata la modifica 145187668 di 62.97.36.6 (discussione) Etichetta: Annulla |
||
(10 versioni intermedie di 9 utenti non mostrate) | |||
Riga 17:
'''C''' ([[Alfabeto fonetico internazionale|AFI]]: {{IPA|/ˈsiː/|en}}{{cn}}) è un [[linguaggio di programmazione]] a uso generale di natura [[Programmazione imperativa|imperativa]] e [[Programmazione procedurale|procedurale]] creato da [[Dennis Ritchie]] negli anni 1970. Tutt'oggi influente, è largamente adoperato nei [[Sistema operativo|sistemi operativi]], nei ''[[driver]]'' e nelle [[Pila di protocolli|pile di protocolli]], mentre è in diminuzione il suo uso nelle [[Applicazione (informatica)|applicazioni]].<ref>{{cita web|data=9 agosto 2016 |titolo=C Language Drops to Lowest Popularity Rating |url=https://www.developer.com/news/c-language-drops-to-lowest-popularity-rating/ |urlmorto= |urlarchivio=https://web.archive.org/web/20220822225609/https://www.developer.com/news/c-language-drops-to-lowest-popularity-rating/|accesso=1º agosto 2022|lingua=en}}</ref> C è comunemente usato in architetture che vanno dai più grandi [[Supercomputer|supercalcolatori]] fino ai minuscoli [[Microcontrollore|microcontrollori]] e [[Sistema embedded|sistemi integrati]].
Successore del linguaggio [[B (linguaggio di programmazione)|B]], C fu in origine sviluppato ai [[Bell Labs]] da Ritchie tra il 1972 e il 1978 per costruire [[Utility (informatica)|utilità]] eseguibili su [[Unix]], e fu subito dopo applicato nella reimplementazione del [[kernel]] di quel sistema operativo.<ref name="sigplan2">{{Cita pubblicazione|autore=Dennis M. Ritchie|data=1º marzo 1993|titolo=The development of the C language|rivista=ACM SIGPLAN Notices|volume=28|numero=3|pp=
C è un linguaggio procedurale imperativo, che supporta la [[programmazione strutturata]], la [[Visibilità (programmazione)|visibilità lessicale]] e la [[ricorsione]], e possiede un [[Sistema dei tipi|sistema di tipi]] statico. Il linguaggio C permette l'utilizzo a basso livello alla [[Memoria (informatica)|memoria]] e fornisce costrutti che combaciano efficientemente con le istruzioni del [[linguaggio macchina]]. Nonostante le sue capacità a basso livello, il linguaggio è adatto per essere programmato su piattaforme diverse: un programma in C conforme scritto per essere portabile può essere compilato per una vasta gamma di piattaforme con poche variazioni al suo codice sorgente.<ref name="cppreference2">{{cita web|url=http://en.cppreference.com/w/c/language/history|titolo=History of C|accesso=28 maggio 2018|urlarchivio=https://web.archive.org/web/20180529130541/http://en.cppreference.com/w/c/language/history|urlmorto=}}</ref>
Riga 96:
Esistono inoltre i seguenti modificatori, che si possono anteporre ai nomi dei tipi interi per cambiarne delle caratteristiche: {{Codice|codice=signed|linguaggio=C}} specifica che l'intero può essere positivo o negativo; {{Codice|codice=unsigned|linguaggio=C}} specifica che l'intero può essere solo positivo; {{Codice|codice=short|linguaggio=C}} riduce la memoria assegnata al tipo di dato, restringendo di conseguenza l'intervallo numerico rappresentabile; {{Codice|codice=long|linguaggio=C}} funziona in maniera opposta, aumentando la memoria e ampliando l'intervallo.<ref name="ILC2-2-2"/>
C supporta
I tipi complessi presenti sono gli [[array]], le enumerazioni ({{Codice|codice=enum|linguaggio=C}}), le strutture ({{Codice|codice=struct|linguaggio=C}}) e le unioni ({{Codice|codice=union|linguaggio=C}}). Le [[Stringa (informatica)|stringhe]] sono implementate come semplici array di caratteri terminati da un [[Carattere null|carattere nullo]] ("null character", avente codice ASCII pari a 0) e non hanno un tipo apposito.
Riga 139:
{{Vedi anche|Hello world}}
Il seguente esempio stampa il testo <code>Hello world!</code> sullo [[standard output]] (che normalmente coincide con lo schermo del [[terminale (informatica)|terminale]] utilizzato da chi esegue il programma). Nella didattica informatica, l'uso di introdurre i fondamenti di un linguaggio di programmazione con un programma che stampa a video
<syntaxhighlight lang="c" line="1">
#include <stdio.h>
Riga 237:
=== C++ ===
{{vedi anche|C++}}
Il linguaggio di programmazione [[C++]]
[[Bjarne Stroustrup]], il creatore di C++, ha ripetutamente suggerito<ref>{{Cita web |url=http://www.research.att.com/~bs/sibling_rivalry.pdf|titolo=Sibling Rivalry: C and C++}}</ref> che le incompatibilità tra C e C++ dovrebbero essere ridotte il più possibile per massimizzare l'interoperatività tra i due linguaggi. Altri hanno sostenuto che poiché C e C++ sono linguaggi differenti, la compatibilità tra i due è utile ma non vitale. Secondo questa posizione, gli sforzi per ridurre l'incompatibilità non devono ostacolare i tentativi per migliorare in modo autonomo i linguaggi.
Riga 246:
* Singole costanti di caratteri (racchiuse tramite apici singoli) hanno la dimensione di un {{Codice|codice=int|linguaggio=C}} in C e di un {{Codice|codice=char|linguaggio=C++}} in C++.
<!-- Quindi in C <code>sizeof 'a' == sizeof(int)</code> mentre in C++ <code>sizeof 'a' == sizeof(char)</code>.--><!-- Nevertheless, even in C they will never exceed the values that a <code>char</code> can store, so <code>(char)'a'</code> is a safe conversion that will only change the type of the expression (here it is changed from int to char), but not its value (which on systems using ASCII-encoded characters is 97).-->
* Parole chiave addizionali sono introdotte in C++,
* In C++, il compilatore crea automaticamente un ''tag'' per ogni {{Codice|codice=struct|linguaggio=C++}}, {{Codice|codice=union|linguaggio=C++}} o {{Codice|codice=enum|linguaggio=C++}}, quindi {{Codice|codice=struct S {};|linguaggio=C++}} in C++, in C è equivalente a {{Codice|codice=typedef struct S {} S;|linguaggio=C}}.
Riga 253:
Il linguaggio Objective C deve la sua popolarità a [[Apple]] che lo ha scelto come base per i suoi sistemi operativi [[macOS]], [[iOS]], [[watchOS]] e [[tvOS]]. È un linguaggio orientato agli oggetti e, a differenza di [[C++]], mantiene la piena compatibilità con C.
Nel 2014
== Note ==
Riga 308:
{{Linguaggio C}}
{{Principali linguaggi di programmazione}}
{{Android}}
{{Controllo di autorità}}
{{portale|informatica}}
|