Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Poprawki sekcji o WSL #8

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 43 additions & 4 deletions docs/A-podstawy-programowania/A1-pierwszy-program.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,24 @@ Istnieje wiele środowisk programistycznych, a żeby ułatwić wybór, pokażemy
- Visual Studio Code - na tę chwilę najpopularniejsze środowisko programistyczne, które wspiera wiele języków programowania, w tym C++ oraz Python.
- Geany - bardzo lekki edytor tekstu z minimalnym interfejsem do skompilowania i uruchamiania kodu.

# Krok 1: Instalacja WSL oraz g++
# Krok 1: Instalacja WSL

Na tę chwilę, najłatwiej jest zainstalować kompilator C++ na systemach Windows poprzez *Windows Subsystem for Linux (WSL)*.
To tak naprawdę sposób uruchomienia *Linux*a, w którym łatwo się instaluje narzędzia dla programistów (z tego też powodu wiele zaawansowanych programistów korzysta z Linuxa zamiast Windowsa).
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spotkałem się wielokrotnie z komentarzami dotyczącymi "czy instalacja Linuxa nie popsuje mojego Windowsa" - jakaś wzmianka na ten temat jednak powinna się tu znaleźć

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Może wystarczy dodać "sposób uruchomienia Linuxa na Windowsie", albo coś w tym stylu.

Nie używałbym słów "maszyna wirtualna" i "system plików" – są zbyt straszne. Cały fragment "i dobrze zintegrowana z Windowsowym systemem plików i wyświetlaniem okienek" według mnie nie jest potrzebny. Zdanie "Dzięki temu..." też na razie wygląda mi niepotrzebnie, myślę że można się obejść bez niego i dodać tylko kilka słów przy definicji WSL.

Tutaj można wspomnieć że WSL jest oficjalnym oprogramowaniem od Microsoft.

Na moment powstawania kursu, najprostszym sposobem instalacji kompilatora C++ na systemach Windows jest skorzystanie z *Windows Subsystem for Linux (WSL)*.
Jest to tak naprawdę *maszyna wirtualna* z Linuxem, uruchomiona wewnątrz Windowsa, i dobrze zintegrowana z Windowsowym systemem plików i wyświetlaniem okienek. Dzięki temu rozwiązaniu mamy wygodny dostęp do pełnoprawnego Linuxa, jednocześnie nadal używając Windowsa jako głównego systemu operacyjnego. Wielu programistów korzysta w ten lub inny sposób z Linuxa, między innymi właśnie dlatego, że łatwo instaluje się w nim narzędzia programistyczne.

Alternatywnie, można zainstalować kompilator MinGW do C++, ale wymaga to więcej kroków instalacyjnych.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"kompilator mingw" (co jest trochę mylnym nadużyciem, ale faktycznie ciężko to lepiej opisać bez wchodzenia w detale techniczne) jest zaskakująco trudny do zainstalowania - to zdanie jest zupełnie nieprzydatne dla początkujących (zobacz komentarz poniżej).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Myślę że podobnej długości zdanie powinno się znaleźć w sekcji "alternatywy". W moim odczuciu targetuje ono osoby które są bardziej ogarnięte i z jakiegoś powodu nie chcą korzystać z WSL. Oni potrzebują jedynie jakiegoś punktu zaczepienia, żeby wiedzieć co googlować, a nie konkretnych instrukcji. Tych mniej ogarniętych według mnie należy przekonywać do WSL.

WSL jest oficjalnym oprogramowaniem od Microsoftu. Jego instalacja na nowszych komputerach jest bardzo prosta:
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instalacja WSL jednak ingeruje w system trochę bardziej niż zwykłego software'u - warto co najmniej wspomnieć, że nie instalujemy jakiegoś dziwnego czegoś od nie wiadomo kogo.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Myślę że osób które podążają za tym tutorialem raczej nie obchodzi to jak bardzo coś ingeruje w ich komputer. Patrz instalowanie sobie rootkita żeby pograć w LoLa.

Samo pierwsze zdanie jest na tyle krótkie że uważam że można zostawić, tylko może tam wyżej gdzie jest pierwsza wzmianka o WSL.


1. Uruchamiamy wiersz poleceń (`cmd`) lub `PowerShell` jako administrator, klikając prawym przyciskiem myszy -> "Uruchom jako Administrator".

2. Wpisujemy polecenie `wsl --install` i zatwierdzamy enterem.

Po zainstalowaniu powinniśmy zostać zapytani o utworzenie nazwy użytkownika i hasła - należy je zapamiętać, bo będą potrzebne do instalowania dodatkowych programów wewnątrz Linuxa.

Z WSLa korzystamy najpierw uruchamiając go skrótem `WSL` lub `Ubuntu`. Zadziała także polecenie `wsl` w oknie `cmd` lub `PowerShell`. Powinien uruchomić się *terminal* Linuxa, którego poprawne działanie można potwierdzić poleceniem `uname` - powinno ono wypisać `Linux`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Na pewno nie używałbym słów "terminal" i nie wspominał o uname – są zbyt straszne. Wpisywanie wsl w prompt też brzmi jak coś co nie będzie przydatne piętnastolatkowi.

Co do wspomnieniu o samym odpaleniu terminala, my pokazujemy setup w którym nie jest to potrzebne. Dociekliwy czytelnik, który chce zrobić coś więcej niż w naszych filmikach, raczej ogarnie że to się tak robi i nie trzeba tym nieogarniętym dodawać dodatkowego tekstu do sparsowania.


Bardziej szczegółową instrukcję instalacji można znaleźć na stronie [learn.microsoft.com/windows/wsl/install](https://learn.microsoft.com/windows/wsl/install).
Jeśli powyższa metoda nie powiedzie się, należy spróbować starszego sposobu instalacji krok po kroku opisanego na stronie [learn.microsoft.com/windows/wsl/install-manual](https://learn.microsoft.com/en-us/windows/wsl/install-manual).
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Myślę że jakieś odniesienie do oficjalnych instrukcji troubleshootingu jednak powinno się tu znaleźć. Zawsze znajdzie się ktoś komu nie zadziała, nawet jeśli nie będzie to przydatne dla potencjalnego uczestnika to może będzie jeśli poprosi kogoś o pomoc.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link do oficjalnej instrukcji brzmi git (ten pierwszy). Jednak nie jestem przekonany że osobie której nie uda się przejść przez pierwszy link uda się przejść przez drugi. Z tym linkiem do troubleshootingu mam podobne odczucie, ale może rzeczywiście jest w nim jakaś wartość.

Pomocna może być także sekcja o rozwiązywaniu błędów na stronie [learn.microsoft/com/windows/wsl/troubleshooting#installation-issues](https://learn.microsoft.com/en-us/windows/wsl/troubleshooting#installation-issues), lub samodzielne wyszukanie problemu w internecie.

<style>
iframe {
Expand All @@ -42,19 +54,46 @@ aspect-ratio: 16 / 9;
}
</style>

<!-- TODO: należy te materiały dostosować do oficjalnej metody instalacji

<iframe src="https://www.youtube.com/embed/euA_T1Ll6ZM?si=hUyOGDeo274rVrLi" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
-->

## Alternatywy

Jeśli instalacja WSL nie powiedzie się, alternatywnie można zainstalować kompilator GCC w wersji Windowsowej, na przykład dostarczony przez projekt [MinGW-w64](https://www.mingw-w64.org/). Nie istnieje jednak jedna poprawna, sugerowana metoda instalacji, zatem wymaga to wiedzy co dokładnie jest nam potrzebne. Można także skorzystać z darmowej wersji [kompilatora MSVC od Microsoftu](https://code.visualstudio.com/docs/cpp/config-msvc), dostępnego tylko na Windowsie.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tutaj jest widoczny problem z MinGW - raz że trzeba wiedzieć który projekt jest aktualny, dwa że trzeba wiedzieć co dokładnie zainstalować. Polecam spróbować przejść samodzielnie przez ten proces, żeby przekonać się jak bardzo nieoczywiste to jest. Można by oczywiście ustalić jakąś konkretną opcję do zasugerowania uczestnikom. Kiedyś instalowało się Code::Blocks który był zpaczkowany z MinGW i nie było takich problemów.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nie jestem przekonany, że osobie której nie uda się zainstalować WSL uda się przejść przez ten proces. Myślę że jeżeli "instalacja WSL się nie powiedzie" to należy spróbować ponownie/inaczej, a nie zaczynać od nowa czegoś jeszcze trudniejszego.


W ostateczności jeśli zawiodą wszystkie inne opcje, można skorzystać ze środowiska online, na przykład [ide.usaco.guide](https://ide.usaco.guide/). Zalecamy jednak unikanie tej opcji o ile jest to możliwe, ponieważ oczywiście nie jest ona dostępna na egzaminach ani olimpiadach, a także będzie później niewystarczająca - na przykład do testowania losowego rozwiązań.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To jest świetna opcja która powinna pojawić się w kursie, co najmniej pod kątem osób które nie mają możliwości instalacj software'u w swoim komputerze. Z doświadczenia powiem że bardzo dużo początkujących osób korzysta faktycznie ze środowisk online - często ze sporo gorszych niż usaco.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wspomnienie o kompilatorach online brzmi jak dobry pomysł. Chociaż nie używałbym w tym momencie kursu słów "testowanie losowego rozwiązania". Wywaliłbym drugie zdanie. Pierwsze zdanie i tak zaczyna się od "w ostateczności", więc widać że nie polecamy tej opcji.


# Krok 2: Instalacja kompilatora GCC w WSL

W uruchomionym terminalu WSL wpisujemy kolejno polecenia, potwierdzone enterem.

1. `sudo apt update`
2. `sudo apt install g++`

instalację trzeba dodatkowo zatwierdzić wpisując `yes` lub `y` i wciskając enter.

Program `g++` jest wersją kompilatora [GCC](https://gcc.gnu.org/) używającą C++ jako domyślny język.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zbyt techniczne

Programy skompilowane przez `g++` zainstalowane wewnątrz Linuxa będą możliwe do uruchomienia tylko w Linuxie, jednak skonfigurujemy nasze środowisko programistyczne żeby zarówno kompilowało, jak i uruchamiało je za pomocą WSL.

<!-- TODO: poprawić na uruchamianie przez skrót, lub polecenie `wsl`
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Poprawiony filmik wygląda super. Apeluję jednak żeby instrukcje zawrzeć także w formie tekstowej - jeśli przeszkadza wam "ściana tekstu" to można spróbować zrobić rozwijalną sekcję. Dzieci mają obecnie bardzo krótki attention span i filmiki w tutorialach potrafią bardzo odstraszać.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Myślę że same komendy to dobry pomysł, żeby nie musieć przepisywać.

<iframe src="https://www.youtube.com/embed/ArDf2yqbVaw?si=R2TzQUWXvhL2V4Hc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
-->

# Krok 2a: Instalacja Visual Studio Code

VSCode należy skonfigurować tak, żeby [połączył się z WSLem i używał go do kompilowania i uruchamiania programów w C++](https://code.visualstudio.com/docs/remote/wsl).
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Uważam że jednak warto powiedzieć po co instalowaliśmy WSL i dlaczego to działa ze środowiskiem na windowsie.

Moja wzmianka o tym że "zastanawiam się czy to jest faktycznie najlepsze podejście" dotyczyła konkretnie tego punktu - skoro i tak korzystamy z IDE na windowsie to może zamiast instalować WSL na siłę to lepiej faktycznie pokierować jak zainstalować MinGW.

WSL jest szalenie użyteczny, ale może jest to zbyt dużo za szybko.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Według mnie sekcje "Wstęp" i "Środowisko programistyczne C++" już wystarczająco dobrze wyjaśniają o co chodzi.


<iframe src="https://www.youtube.com/embed/maE3cigf1uA?si=Mva2LzQ4yROK3BlB" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# Krok 2b: Instalacja Geany

Instalator `geany-2.0_setup.exe` można pobrać ze strony [geany.org](https://www.geany.org/download/releases/).
Kroki instalacyjne są prostsze, niż te dla Visual Studio Code.

Geany należy skonfigurować tak, by kompilował i uruchamiał programy poprzez wywołanie polecenia `wsl`.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jak wyżej do VSCode - co ustawiamy i po co?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto


<iframe src="https://www.youtube.com/embed/SnsaP3msEBQ?si=EcmGdGHOrwR6CZm_" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

# Krok 3: Napisanie programu
Expand Down