Benvingut al primer pas del teu camí com a desenvolupador en C#. Abans d'escriure una sola línia de codi convé entendre què és aquest llenguatge, per què l'fan servir milions de desenvolupadors a tot el món i què el fa especial enfront d'altres opcions. Aquesta lliçó et dona el mapa general: característiques clau, una mica d'història, l'ecosistema .NET on viu el C#, i una primera ullada (ja comentada) a un programa "Hola Món" perquè vegis, des del primer minut, quin aspecte té el codi real. Al llarg de tot el curs anirem construint un projecte conductor anomenat BiblioTech, un sistema de gestió de biblioteca, així que aquí també et presentem aquesta idea perquè sàpigues cap a on ens dirigim.
Contingut
- Què és el C#
- Característiques clau del llenguatge
- Breu història i versions rellevants
- L'ecosistema .NET
- Per què aprendre C#
- Presentació del projecte conductor: BiblioTech
- Primera ullada a un programa "Hola Món"
Què és el C#
El C# (es pronuncia "C Sharp") és un llenguatge de programació modern, de propòsit general, creat per Microsoft i desenvolupat actualment com a projecte de codi obert sota la fundació .NET. S'utilitza per construir pràcticament qualsevol tipus d'aplicació: programes de consola, aplicacions d'escriptori, llocs web i APIs, videojocs, aplicacions mòbils, serveis al núvol i molt més.
El C# va ser dissenyat des del principi per ser:
- Senzill de llegir i escriure, amb una sintaxi clara inspirada en llenguatges com C++ i Java.
- Segur, evitant categories senceres d'errors habituals en llenguatges de més baix nivell.
- Potent, incorporant de forma contínua característiques modernes (programació funcional, asincronia, pattern matching...) sense perdre la seva essència orientada a objectes.
Quan escrius codi en C#, aquest codi es compila a un llenguatge intermedi anomenat IL (Intermediate Language) que després el CLR (Common Language Runtime, el motor d'execució de .NET) tradueix a codi màquina en el moment d'executar el programa. Aquest procés s'anomena compilació JIT (Just-In-Time) i és el que permet que el mateix programa en C# es pugui executar a Windows, Linux o macOS sense canviar el codi font.
Característiques clau del llenguatge
A continuació tens les característiques que defineixen el C# i que anirem explorant en profunditat al llarg del curs:
| Característica | Què significa | Per què importa |
|---|---|---|
| Orientat a objectes | Els programes s'organitzen en classes i objectes (ho veurem en detall al Mòdul 3) | Facilita organitzar codi complex en peces reutilitzables |
| Tipat estàtic | El tipus de cada variable es coneix en temps de compilació | El compilador detecta molts errors abans d'executar el programa |
| Seguretat de tipus | No es permet barrejar tipus de forma incorrecta sense conversió explícita | Redueix errors en temps d'execució |
| Gestió automàtica de memòria | Un recol·lector d'escombraries (Garbage Collector) allibera memòria no utilitzada | El programador no ha d'alliberar memòria manualment |
| Interoperabilitat | Pot conviure amb codi d'altres llenguatges .NET (F#, Visual Basic) i fins i tot natiu | Permet reutilitzar biblioteques i components existents |
| Multiplataforma | S'executa a Windows, Linux i macOS gràcies al .NET modern | El mateix codi serveix per a diferents sistemes operatius |
| Ecosistema .NET | Enormes biblioteques estàndard i de tercers | No cal "reinventar la roda" per a tasques habituals |
Ens aturarem una mica més en tres d'aquestes idees, perquè són pilars del llenguatge.
Tipat estàtic i seguretat de tipus
En C#, cada variable té un tipus definit (nombre enter, text, booleà, etc.) que no canvia durant la vida del programa. Per exemple, si declares que una variable és un nombre enter, el compilador no et deixarà assignar-hi després un text per error. Això es comprova abans d'executar el programa, durant la compilació, la qual cosa permet detectar moltíssims errors de forma primerenca, abans que arribin a producció.
Això contrasta amb llenguatges de tipat dinàmic (com Python o JavaScript "clàssic"), on el tipus d'una variable es determina en temps d'execució i pot canviar lliurement. El tipat estàtic del C# té un cost (cal ser més explícit) però a canvi ofereix més seguretat i millors eines d'autocompletat i refactorització a l'editor.
Gestió automàtica de memòria
Quan crees dades en C#, el llenguatge s'encarrega de reservar memòria per a elles. Quan aquestes dades deixen d'utilitzar-se, un component del CLR anomenat recol·lector d'escombraries (Garbage Collector o GC) s'encarrega d'alliberar automàticament aquesta memòria. Això elimina una font enorme d'errors presents en llenguatges com C o C++, on el mateix programador ha d'alliberar la memòria manualment (i oblidar-ho provoca fuites de memòria, mentre que alliberar-la dues vegades provoca fallades greus). Aprofundirem en com funciona el recol·lector d'escombraries al Mòdul 6.
Interoperabilitat i ecosistema .NET
El C# no viu aïllat: forma part de la plataforma .NET, que inclou:
- Una enorme biblioteca de classes base (BCL) amb funcionalitat ja construïda per treballar amb fitxers, text, col·leccions, xarxes, dates, i molt més.
- Eines de línia d'ordres (
dotnet) per crear, compilar i executar projectes. - Un gestor de paquets, NuGet, amb centenars de milers de biblioteques de tercers llestes per instal·lar i utilitzar.
- Altres llenguatges que comparteixen el mateix runtime, com F# o Visual Basic, amb els quals el C# pot interoperar sense problemes.
Breu història i versions rellevants
El C# va aparèixer l'any 2000, de la mà de Microsoft, com a part de la primera versió de la plataforma .NET. Des de llavors ha evolucionat de forma constant, afegint noves característiques a cada versió major. Aquesta taula resumeix les fites més rellevants per a un desenvolupador que comença avui:
| Versió | Any aproximat | Novetat destacada |
|---|---|---|
| C# 1.0 | 2002 | Primera versió: orientació a objectes, tipus bàsics |
| C# 2.0 | 2005 | Genèrics (ho veurem al Mòdul 4) |
| C# 3.0 | 2007 | LINQ, tipus anònims, var |
| C# 5.0 | 2012 | async/await per a programació asíncrona |
| C# 6.0 / 7.0 | 2015-2017 | Interpolació de cadenes, pattern matching inicial |
| C# 8.0 | 2019 | Tipus de referència nullable, switch expressions |
| C# 9.0 | 2020 | Records, top-level statements |
| C# 10-12 (actual) | 2021-2024 | Millores contínues: pattern matching avançat, rendiment, simplificació de sintaxi |
No cal que memoritzis aquesta taula: el important és entendre que el C# és un llenguatge viu, que segueix millorant, i que en aquest curs aprendràs la forma moderna d'escriure'l, incloent-hi característiques recents com els top-level statements que veuràs a la propera lliçó.
Avui dia, el C# s'executa sobre .NET (abans anomenat ".NET Core" per diferenciar-lo del antic ".NET Framework", exclusiu de Windows). El .NET modern és de codi obert, multiplataforma i és la versió que farem servir durant tot el curs.
Per què aprendre C#
Aquestes són algunes raons per les quals el C# continua sent una de les opcions més sòlides per iniciar-se en la programació professional:
- Demanda laboral alta: s'usa en empreses de totes les mides, des de startups fins a grans corporacions, per construir aplicacions web, d'escriptori, mòbils i de videojocs (amb Unity).
- Corba d'aprenentatge raonable: la seva sintaxi és clara i coherent, i el mateix compilador t'ajuda a detectar errors abans d'executar el programa.
- Versatilitat: amb un mateix llenguatge pots construir des d'un script senzill fins a un sistema empresarial complet amb base de dades, o fins i tot un videojoc.
- Comunitat i documentació: Microsoft manté documentació oficial extensa i hi ha una comunitat global enorme generant tutorials, fòrums i biblioteques.
- Evolució constant: el llenguatge incorpora idees modernes d'altres paradigmes (funcional, immutabilitat, etc.) sense deixar de ser accessible per a principiants.
Presentació del projecte conductor: BiblioTech
Al llarg d'aquest curs no ens limitarem a veure exemples solts i desconnectats entre si. En el seu lloc, anirem construint, mòdul a mòdul, un projecte real: BiblioTech, un sistema de gestió d'una biblioteca.
La idea de BiblioTech és senzilla d'entendre però prou rica per il·lustrar tots els conceptes del curs:
- Una biblioteca té llibres (amb títol, ISBN, nombre de pàgines, si estan disponibles o no).
- Té socis o membres que poden agafar llibres en préstec.
- Es generen préstecs, amb la seva data d'inici i de devolució.
En aquest primer mòdul treballarem encara amb programes de consola senzills —variables,
arrays, text— fent servir dades de BiblioTech com a exemple (per exemple, el títol d'un
llibre o un array amb diversos títols). Més endavant, al Mòdul 3, aprendrem a modelar
aquests conceptes com a classes (Llibre, Soci, Prestec); al Mòdul 4 aprendrem a
consultar col·leccions de llibres amb LINQ; al Mòdul 5 aprendrem a desar aquestes dades en
fitxers, JSON o una base de dades real; i als mòduls finals donarem a BiblioTech una
interfície gràfica o web. El projecte final del curs (Mòdul 9) serà la versió completa i
polida de BiblioTech, amb tot el que hàgim après integrat.
No cal que entenguis encara com es construeix res d'això: queda't només amb la idea que cada exemple del curs anirà sumant una peça a aquest mateix projecte.
Primera ullada a un programa "Hola Món"
Perquè vegis com és el codi C# abans d'instal·lar res, aquí tens el programa més senzill possible, en la seva forma moderna (la que farem servir en aquest curs):
// Aquest és el programa més simple possible en C# modern
Console.WriteLine("Hola, mon des de BiblioTech!");Comentarem, a alt nivell, què fa cada part (a la propera lliçó, "Programa Hola Món", entrarem en el detall complet línia a línia):
//inicia un comentari: tot el que segueix en aquesta línia és només per a humans, el compilador l'ignora.Consoleés una classe de la biblioteca estàndard de .NET que representa la consola (la finestra de text on s'executa el programa).WriteLineés un mètode d'aquesta classe: una acció que se li pot demanar aConsole, en aquest cas "escriu una línia de text i salta a la línia següent".- El text entre cometes
"Hola, mon des de BiblioTech!"és una cadena de text (string), la dada que passem al mètode perquè l'escrigui. - El punt i coma
;marca el final de la instrucció. En C#, gairebé totes les instruccions acaben en punt i coma (ho veurem amb detall a la lliçó de sintaxi bàsica).
Si executes aquest programa, veuràs en pantalla:
Cal notar que aquest exemple fa servir la forma moderna del C# coneguda com top-level statements (instruccions de nivell superior), que elimina codi repetitiu (boilerplate) que en versions anteriors del llenguatge calia escriure sempre. Veuràs la versió completa, amb aquesta estructura clàssica i la seva explicació detallada, a la lliçó 3.
Errors Comuns i Consells
- Confondre el C# amb C o C++: malgrat el nom semblant, el C# és un llenguatge molt
diferent, molt més modern i segur, tot i que comparteix part de la sintaxi de claus
{ }i punt i coma;. - Pensar que cal saber POO abans de començar: no és així. En aquest mòdul aprendràs la base del llenguatge sense usar encara classes pròpies; la programació orientada a objectes arriba al Mòdul 3, amb una base ja sòlida.
- Voler aprendre "tota la teoria" abans d'escriure codi: el C# s'aprèn millor practicant. Aprofita els exercicis de cada lliçó per escriure i executar codi com més aviat millor.
- Consell: no et preocupis si algun terme tècnic (CLR, JIT, recol·lector d'escombraries) no queda del tot clar encara. Anirem tornant sobre aquests conceptes amb més detall quan correspongui (per exemple, la gestió de memòria es tracta a fons al Mòdul 6).
Exercicis
-
Sense executar res encara, explica amb les teves pròpies paraules què significa que el C# sigui un llenguatge de tipat estàtic, i posa un exemple d'un error que el compilador podria detectar gràcies a això.
-
Observa la taula de característiques clau del llenguatge. Escull dues característiques (per exemple, "gestió automàtica de memòria" i "interoperabilitat") i explica, en un parell de frases cadascuna, per què creus que són útils per a un projecte com BiblioTech.
-
Torna a llegir l'exemple de "Hola Món" d'aquesta lliçó i modifica'l mentalment (en paper o en un editor de text senzill, sense executar-lo encara) perquè, en lloc de saludar el món, doni la benvinguda a un soci de la biblioteca, per exemple:
"Benvinguda a BiblioTech, Maria!". Escriu com quedaria la línia completa.
Solucions
-
El tipat estàtic significa que el tipus de cada variable (per exemple, si és un nombre enter o un text) es fixa i es comprova abans d'executar el programa, durant la compilació. Exemple d'error detectat pel compilador: si tenim una variable declarada com a nombre enter i intentem assignar-hi un text com
"hola", el compilador donarà un error de tipus i no deixarà compilar el programa, en lloc de fallar més tard, durant l'execució. -
Resposta orientativa (pot variar):
- Gestió automàtica de memòria: a BiblioTech es crearan constantment dades temporals (per exemple, llistes de llibres trobats en una cerca). No haver de preocupar-se d'alliberar aquesta memòria manualment simplifica molt el codi i evita errors greus.
- Interoperabilitat: si en el futur volguéssim aprofitar una biblioteca ja existent escrita en un altre llenguatge .NET, o integrar BiblioTech amb altres sistemes, la interoperabilitat del C# ho fa possible sense reescriure-ho tot des de zero.
-
La línia quedaria així:
Console.WriteLine("Benvinguda a BiblioTech, Maria!");Simplement se substitueix el text entre cometes pel nou missatge; l'estructura de la resta de la instrucció (
Console.WriteLine(...)i el punt i coma final) no canvia.
Conclusió
En aquesta lliçó has conegut el C# a vista d'ocell: què és, què el fa especial (tipat estàtic, seguretat de tipus, gestió automàtica de memòria, interoperabilitat), una mica de la seva història i evolució, i per què continua sent una opció sòlida per aprendre a programar professionalment. També has conegut el projecte que ens acompanyarà durant tot el curs, BiblioTech, i has vist el teu primer fragment de codi C# real.
Encara no tens res instal·lat al teu ordinador per escriure i executar els teus propis programes. Això és exactament el que resoldrem a la propera lliçó, Configuració de l'Entorn de Desenvolupament, on instal·laràs el SDK de .NET, triaràs un editor de codi i comprovaràs que tot funciona correctament abans de crear el teu primer projecte real.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hola Món
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Arrays i Cadenes de Text
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
- Classes i Objectes
- Mètodes
- Constructors i Destructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
- Structs i Records: Tipus per Valor i per Referència
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Pattern Matching i Característiques Modernes de C#
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada en el Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
- Entrada/Sortida de Fitxers
- Serialització
- Connectivitat amb Bases de Dades
- Entity Framework
- Treball amb JSON i Consum d'APIs REST
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Bones Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Bones Pràctiques
- Patrons de Disseny
- Injecció de Dependències i Inversió de Control
- Proves Unitàries
- Revisió i Refactorització de Codi
