C sharp: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
22denny91 (discussione | contributi)
Nessun oggetto della modifica
m Annullata la modifica di ~2025-28382-52 (discussione), riportata alla versione precedente di Emayeah
Etichetta: Rollback
 
(4 versioni intermedie di 3 utenti non mostrate)
Riga 9:
|tipizzazione = [[Tipizzazione statica|Statica]], [[Tipizzazione dinamica|Dinamica]], [[Tipizzazione forte|Forte]], [[Sicurezza rispetto ai tipi|Sicura]]
|specifiche =
|estensione = .cs, .csprojcsx
|influenzato_da = [[Delphi]], [[C++]], [[Java (linguaggio di programmazione)|Java]], [[Eiffel (linguaggio)|Eiffel]], [[Haskell (linguaggio)|Haskell]], [[ML (linguaggio di programmazione)|ML]]
|ha_influenzato = [[D (linguaggio)|D]], [[F Sharp|F#]], [[Java (linguaggio di programmazione)|Java]], [[TypeScript]]
Riga 35:
Il progettista principale di C# è [[Anders Hejlsberg]], un informatico danese precedentemente coinvolto nello sviluppo dei linguaggi [[Turbo Pascal]] e Borland [[Embarcadero Delphi|Delphi]] (attualmente di proprietà di Embarcadero).
 
È opinione comune che l'ispirazione venne dal linguaggio [[Java (linguaggio di programmazione)|Java]], dato che perfino il suo ideatore [[James Gosling]], nonché [[Bill Joy]] di Sun Microsystem, lo definirono una sua imitazione, ma più limitata dal punto di vista della dell'affidabilità, della sicurezza e della produttività<ref>{{Cita web|url=https://www.cnet.com/news/why-microsofts-c-isnt/|titolo=Why Microsoft C# isn't|lingua=EN}}</ref>. Invece, secondo Anders Hejlsberg e Microsoft stessa, la struttura di C# è più vicina a quella del [[C++|linguaggio C++]] piuttostodi chequella adi [[Java (linguaggio di programmazione)|Java]]<ref>{{Cita web|url=https://msdn.microsoft.com/en-us/library/ms836794.aspx|titolo=C# and Java: Comparing Programming Languages|lingua=EN}}</ref>.
 
C# è strettamente legato allo sviluppo di [[.NET Framework]]. Infatti gli ingegneri di Microsoft utilizzarono nelle prime fasi della sua stesura un framework chiamato SMC, ovvero Simple Managed C, un sistema utilizzante il [[C (linguaggio)|linguaggio C]] in modo gestito o "managed". Nel gennaio 1999, [[Microsoft]] mise Anders Hejlsberg a capo di un gruppo di lavoro con il compito di produrre un nuovo linguaggio, chiamato provvisoriamente "Cool", acronimo di "C-like Object Oriented Language" (linguaggio orientato agli oggetti simile a C)<ref>{{Cita news |lingua=en |autore=Naomi Hamilton |url=http://www.computerworld.com.au/article/261958/-z_programming_languages_c |titolo=The A-Z of Programming Languages: C# |pubblicazione=[[Computerworld (blog)|Computerworld]] |data=1º ottobre 2008 |accesso=4 febbraio 2017}}</ref>. Il nome commerciale definitivo divenne C# alla presentazione ufficiale del progetto .NET da parte di Microsoft alla Professional Developers Conference tenutasi nel [[luglio]] [[2000]] a [[Orlando (Florida)|Orlando]], quando anche le [[Libreria (software)|librerie]] di classi e il runtime di [[ASP.NET]] vennero convertite in linguaggio C#.
Riga 139:
* Secondo le consuetudini dei linguaggi orientati agli oggetti, le specifiche sono di regola raggruppate in ''metodi'' (ovvero funzioni), i ''metodi'' sono raggruppati in ''classi'', e le ''classi'' sono raggruppate nei [[namespace]].
 
=== Differenze rispetto ada C e C++ ===
Rispetto a [[C (linguaggio)|C]] o a [[C++]] il linguaggio C# presenta varie modifiche, volte principalmente ad evitare errori tipici e ambiguità della programmazione in [[C (linguaggio)|linguaggio C]]:
 
Riga 146:
* Gli oggetti dinamici non vengono deallocati esplicitamente, ma viene gestita automaticamente e implicitamente dal [[garbage collection|garbage-collector]] quando non esistono più riferimenti a tali oggetti. Questo sistema evita i due problemi dei ''[[dangling pointer]]'' e del ''[[memory leak]]'', anche se con una riduzione delle prestazioni.
* Come in [[Java (linguaggio di programmazione)|Java]] è possibile ereditare da una sola classe, diversamente da quanto avviene in [[C++]], ma è possibile implementare un numero indefinito di ''interfacce''. A differenza del [[C++]], non è consentita l'ereditarietà di tipo ''private''.
* Le sole conversioni implicite consentite sono quelle ''safe'', ovvero che non espongono al rischio di perdita di dati causata dalladal diversadiverso tipologiatipo di dato. Per esempio non sono consentite conversioni implicite fra ''integer'' e ''boolean'' oppure tra enumeratori ed ''integer''.
* C# non dispone dei ''template'' tipici del [[C++]], ma nella versione 2.0 sono stati introdotti i ''generic''.
 
=== Differenze rispetto ada Java ===
Sebbene C# sia ritenuto simile a [[Java (linguaggio di programmazione)|Java]], esistono alcune importanti differenze fra i due linguaggi. Quella maggiormente visibile è certamente la presenza in C# di molti costrutti, alcuni dei quali chiaramente derivati dal [[C++]], che in [[Java (linguaggio di programmazione)|Java]] sono stati deliberatamente vietati. I sostenitori del C# affermano che tutto ciò rende il codice più chiaro, mentre i sostenitori di [[Java (linguaggio di programmazione)|Java]] affermano che proprio la presenza di un gran numero di parole-chiave e di regole da ricordare rende il linguaggio più difficile da imparare e utilizzare.