Lekce 3 - Visual Studio a Copilot
V minulé lekci, Využití umělé inteligence při studiu programování, jsme si ukázali, jak využívat umělou inteligenci při studiu programování.
V dnešním tutoriálu se zaměříme hlavně na IDE Visual Studio. Ukážeme si, jak se používá, a naprogramujeme si jednoduchou konzolovou aplikaci.
IDE je zkratka pro Integrated Development Environment (integrované vývojové prostředí) a jednoduše řečeno se jedná o aplikaci, ve které píšeme zdrojový kód a pomocí které potom naši aplikaci testujeme a ladíme.
Začít musíme samozřejmě tím, že si Visual Studio nainstalujeme. Pokud studujete IT školu, je velmi pravděpodobné, že máte přes MSDN přístup k ostré verzi Visual Studio Enterprise zdarma. Pokud ne, nezoufejte, protože Visual Studio (dále jen VS) má edici Community, která je zcela zdarma, a to dokonce i pro komerční účely. I ta vám bude dlouho stačit, protože její omezení nejsou nijak velká. Zde máte link ke stažení Visual Studio Community.
Co dělat, když se zasekneš
Naše kurzy pravidelně aktualizujeme, technologie se ale rychle mění a s ní i použité nástroje a příkazy v lekcích. Někdy ti něco nemusí fungovat i proto, že máš třeba jinou verzi nástroje nebo operačního systému. Pokud narazíš v jakékoli lekci na problém a studuješ u nás rekvalifikační kurz, můžeš využít široké možnosti podpory:
- často je řešení problému zmíněno v diskuzi pod lekcí, zejména, pokud se problém projeví více lidem
- v lekci o AI si ukážeme, že v případě problémů často stačí problém napsat ChatGPT a on ti poradí, stejně nám prosím ale o problému řekni
- pokud ani jedno z toho nepomohlo, jde o něco vážnějšího, zavolej svému studijnímu referentovi a domluv si konzultaci s lektorem, který ti pomůže
- nic si nedělej z toho, že ti úplně všechno nefunguje nebo úplně
všemu nerozumíš, běž vždy dál a nenech se odradit, máš
na to!

Instalace
Pokud máte alespoň elementární znalosti angličtiny, doporučujeme VS nainstalovat v tomto jazyce. Až budete pokročilí programátoři, ušetří vám to spoustu nepříjemností. Ideálně by se měl psát anglicky i kód, ale pro názornost budeme v celém kurzu i v některých ukázkových programech používat české identifikátory. Je na vás a vašich znalostech angličtiny, jak vaše programy budete psát. Výhodou anglického programu je samozřejmě to, že jako velmi pokročilí můžete diskutovat velmi složité problémy na mezinárodních fórech, kde se vyskytují experti na danou oblast. U pokročilých věcí, jako jsou databáze nebo web. aplikace, je třeba ve VS nastavit mnoho specifických věcí, manuály v češtině nemusíte najít a pak jen přemýšlíte, jaký je asi překlad daného checkboxu. Angličtina je v programování standardem. Čeština samozřejmě teď pro začátek není žádný problém a na vaše programy nemá žádný vliv, myslíme to spíše do budoucna.
Pojďme se tedy dát do samotné instalace. Instalace se nás zeptá na tzv. sady funkcí, které chceme mít součástí VS. Zaškrtneme sadu "Vývoj desktopových aplikací pomocí .NET". Tato sada umožňuje vyvíjet jak konzolové, tak klasické okenní aplikace:

Spolu s touto sadou se nám také nainstalují nejnovější verze .NET (Core) a .NET Framework. Konkrétní verze a komponenty si lze vybrat v záložce Jednotlivé komponenty. My si vystačíme s výchozím výběrem:

Jestliže se rozhodnete pro používání VS v angličtině, nezapomeňte si ji zaškrtnout v záložce Jazykové sady:

Potvrdíme tlačítkem Instalovat.
Je možné, že některé edice VS bude třeba zaregistrovat, registrace je zdarma a obdržíte poté sériové číslo, které vám umožňuje program zdarma a legálně používat.
Zálohování a verzování
Programátor kromě IDE potřebuje také nějaký nástroj, který bude zálohovat a verzovat jeho práci. Nemůžeme se spolehnout na to, že program prostě budeme ukládat, protože jsme lidé, a ne stroje. Lidé dělají chyby, a když přijdete o několikadenní, nebo dokonce několikatýdenní práci, může to zabolet. Je dobré naučit se na toto myslet hned od začátku. Velmi doporučuji program Dropbox, který je extrémně jednoduchý a sám vaše soubory verzuje (tedy zachovává změny v čase a je možné se vrátit ke starším verzím projektu) a zároveň synchronizuje s webovým úložištěm. I kdyby jste si projekt omylem smazali, přepsali, někdo vám ukradl notebook nebo vám zkolaboval pevný disk, vaše data zůstanou v bezpečí. Dropbox také umožňuje sdílet jeden projekt mezi více vývojáři. Více o Dropboxu viz tento článek, který obsahuje zároveň pozvánku do Dropboxu s 0,5 GB prostoru navíc.
Jako další verzovací nástroj se hojně používá Git, jeho nastavení ale vydalo na samostatný kurz a Dropbox pro naše účely bohatě postačuje.
Vytvoření projektu
Po spuštění VS se nám zobrazí následující okno, kde vybereme Create a new project pro vytvoření nového projektu:

Na další stránce si najdeme konzolovou aplikaci, vybereme ji a pokračujeme stisknutím Next:

Nějakou dobu zůstaneme u konzolových aplikací (příkazová řádka), protože k jejich obsluze potřebujeme minimální znalosti z objektového světa, a jsou tedy ideální k naučení základů jazyka.
Jako jméno aplikace zvolíme PrvniAplikace. U lokace vybereme
složku C:\Users\vase_jmeno\Dropbox\Csharp:

Po opětovném kliknutí na Next se dostaneme na stránku s výběrem frameworku (implementace .NET). Výběr necháme na nejnovějším možném (v našem případě .NET 8.0):

Vytvoření projektu už jen potvrdíme kliknutím na tlačítko Create.
Ovládání Visual Studia
Okno nyní vypadá asi takto, my jsme jej zmenšili, aby se sem vešlo 

Zajímat nás bude zejména prostřední okno s otevřeným souborem
Program.cs, do kterého nám VS vygenerovalo jednoduchý zdrojový
kód:
Console.WriteLine("Hello, World!");
Vynechali jsme zde první řádek textu. Jedná se o tzv. komentář, který nám umožňuje do kódu psát různé poznámky. Tyto komentáře nemají vliv na funkčnost programu, protože se vůbec nekompilují do mezikódu. Tento konkrétní komentář nás odkazuje na oficiální dokumentaci funkcionality C#, kterou si vysvětlíme dále.
Kód bez příkazů nejvyšší úrovně
Od .NET 6.0 je možné používat tzv. příkazy nejvyšší úrovně, které zjednodušují kód. Bez nich by kód téže aplikace, s nímž se také budete setkávat, vypadal takto:
using System; namespace PrvniAplikace { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } } }
Na první pohled se může zdát, že se jedná o zcela jiný kód. Ve skutečnosti ale oba kódy dělají úplně totéž. Jediným rozdílem je, že VS generuje projekty od verze .NET 6.0 s využitím tzv. příkazů nejvyšší úrovně, které byly přidány v C# 9. Tato funkcionalita nám umožňuje vynechat všechen kód, který je ve druhé ukázce kódu navíc oproti tomu našemu. VS jej totiž vygeneruje automaticky za nás během kompilace do mezikódu. Pro nás je to vlastně výhoda, jelikož některé části jsou na pochopení poměrně složité. I tak si je však alespoň intuitivně vysvětlíme, kdybyste náhodou pracovali se starší verzí C# a .NET.
První řádek nám říká, které knihovny z .NET budeme využívat. Zde je
uvedena knihovna System, bez ní bychom asi těžko něco
naprogramovali, protože obsahuje např. základní metody pro práci s
konzolí. Klíčová slova namespace a class zatím
nebudeme řešit, spokojíme se s tím, že je to určitý způsob, jak se
aplikace v C# strukturují. Klíčová je pro nás metoda Main(),
mezi jejíž složené závorky pod ní (tedy do jejího těla) se píše kód.
Main je vyhrazené slovo a C# ví, že má po spuštění aplikace
vykonat právě tuto metodu (může jich tam totiž být více, ale o tom si
povíme později). Vlastně můžeme zatím ignorovat úplně vše vyjma těla
metody Main().
I v .NET 6.0 a novějších projektech je možné využívat
tuto strukturu s metodou Main(). Při založení projektu bychom
zaškrtli Do not use top-level statements. Pro zjednodušení se tomu
však vyhneme. Všechen kód, který zatím budeme psát, se nakonec při
kompilaci automaticky vloží do těla metody Main().
První spuštění aplikace
Druhým důležitým prvkem v okně pro nás bude zelené tlačítko
Play s názvem aplikace (PrvniAplikace) v horní liště,
které program zkompiluje a spustí. Můžeme si to zkusit. Otevře se nám
konzole, do které se vypíše text Hello, World!:
Konzolová aplikace
Hello, World!
Spuštění můžeme provést též klávesou F5. VS má velmi dobře řešené klávesové zkratky a ty pokročilejší připomínají systém akordů. Když je budete znát, práce vám půjde rychleji od ruky. Nalevo od tlačítka Play máme vybráno Debug. To znamená, že se program bude kompilovat v Debug módu a bude obsahovat určité rutiny k výpisu chyb. Tento mód se používá zejména pro testování programu (když ho vyvíjíme) a běh programu může být kvůli tomu o něco pomalejší. Jakmile si budeme jistí, že je program hotový, přepneme na Release a spustíme. Výsledkem bude vytvoření a spuštění programu tak, jak je ho možné šířit mezi lidi.
Adresářová struktura konzolové aplikace
Nyní se podíváme, jak vypadá naše aplikace na disku. Otevřeme si
složku s aplikací, tedy
C:\Users\vase_jmeno\Dropbox\Csharp\PrvniAplikace\. Nalezneme v ní
soubor PrvniAplikace.sln, který zastupuje tzv.
solution Visual Studia. Solution (řešení) je soubor
projektů a může tedy obsahovat více aplikací. V praxi se toho využívá
např. ve vícevrstvých aplikacích nebo při testování, pro nás je
zajímavé jen to, že právě přes tento soubor budeme naše aplikace
následně otevírat. Nalézá se zde také složka PrvniAplikace/,
ve které již sídlí náš projekt. Otevřeme si ji.
Soubor PrvniAplikace.csproj obsahuje soubor našeho projektu, i
přes něj lze naši aplikaci otevřít. Program.cs obsahuje
samotný zdrojový kód. Zajímat nás bude ještě složka
bin/, jejíž název napovídá, že obsahuje
binární (strojový) kód naší aplikace. Otevřeme ji.
Vidíme, že obsahuje podsložky Debug/ a Release/.
V nich jsou poté samotné .exe soubory naší
aplikace (pokud jsme ji samozřejmě alespoň jednou spustili v této
konfiguraci). Pokud se budete chtít se svými aplikacemi někomu pochlubit,
.exe soubor ve složce Release/ je právě to, co jim
pošlete. Dalších souborů si nemusíte všímat.
GitHub Copilot – Pomocník přímo ve tvém IDE
GitHub Copilot je AI asistent vyvinutý společnostmi GitHub a OpenAI. Ve Visual Studiu je k dispozici jako rozšíření, které je schopné navrhovat doplnění v našem kódu, generovat kód dle zadání či hledat a opravovat chyby.
Je ale důležité počítat s tím, že Copilot není neomylný. Navržený kód může obsahovat chyby, nemusí vždy odpovídat zadání a někdy doporučí i nevhodné řešení. Proto je potřeba jeho návrhy průběžně kontrolovat a přemýšlet nad nimi.
Některé funkce Copilotu závisí na typu účtu nebo zvoleném předplatném, a tak se jejich dostupnost může lišit. Základní verze nabízí omezené používání, placené tarify pak zpřístupňují více funkcí, modelů a vyšší limity.
V případě, že účet na GitHubu ještě nemáme, založíme si ho dle postupu v lekci Verzovací nástroj Git a Visual Studio.
Práce s GitHub Copilotem
Jakmile je Copilot aktivní, začne v reálném čase generovat návrhy k doplnění kódu. Pokud začneme psát metodu, Copilot se pokusí navrhnout její logiku. Při práci s třídami nebo cykly dokáže generovat celé bloky kódu. Umí se dokonce učit z našeho stylu kódování a přizpůsobit mu své návrhy. Navrhovaný kód potvrdíme zmáčknutím klávesy Tab:

Kromě automatického doplňování kódu nabízí GitHub Copilot také chatovací rozhraní, které umožňuje pokládat dotazy, získávat vysvětlení ke kódu nebo generovat celé bloky kódu na základě zadání. Ve Visual Studiu je chat dostupný po kliknutí na ikonu GitHub Copilot v horním panelu. Do otevřeného okna můžeme zadat prompt, například pro vygenerování třídy s funkcí pro výpočet kvadratické rovnice:

Po odeslání promptu nám GitHub Copilot poskytne hotový kód, který lze pomocí tlačítek pod výstupem buď zkopírovat, nebo rovnou vložit do nově vytvořeného souboru:

Pomocí asistenta můžeme rovněž pracovat s aktuálně otevřeným souborem. Stačí ponechat zaškrtnutou položku Include active document a zadat prompt, například pro nalezení chyb v našem kódu:

Shrnutí lekce
Lekce ukazuje instalaci Visual Studia a vytvoření první konzolové
aplikace v C#. Projekt se zakládá jako konzolová aplikace, kód píšeme do
souboru Program.cs a spouštíme pomocí tlačítka Play
nebo klávesy F5. Visual Studio při vytvoření projektu vygeneruje
jednoduchý program, který vypíše text do konzole. Pro výpis se používá
metoda Console.WriteLine() a pomocí Console.ReadKey()
může program počkat na stisk klávesy. Ve Visual Studio lze navíc používat
GitHub Copilot, který v editoru pomáhá s doplňováním kódu a návrhy
oprav. Lekce také vysvětluje základní strukturu projektu a připomíná
důležitost zálohování práce.
V příští lekci, Proměnné, typový systém v C# .NET, si naprogramuje naši první konzolovou aplikaci, podíváme se na základní datové typy a vytvoříme si jednoduchý program vypisující proměnnou.

David se informační technologie naučil na