Generalnie nie rzucaj się na C. Proponuję zacząć od C# i WinForms. Jest tak:
C jest językiem niskopoziomowym. Baaaaardzo dużo musisz się nauczyć i ogarnąć, żeby zrozumieć jak działają pewne mechanizmy. Będziesz miał dzięki temu szeroką wiedzę, ale to ma się nijak do szybkiej nauki. No i w C też ciężko będzie znaleźć Ci pracę. Poza tym C nie ma ŻADNYCH wbudowanych mechanizmów do tworzenia aplikacji okienkowych, a z tego co rozumiem takie właśnie chcesz tworzyć. Tutaj musiałbyś tworzyć okienka bezpośrednio w WinAPI (dodatkowo spoooro nauki). Generalnie będziesz dużo zastanawiał się nad tym jak coś ogarnąć w tym języku (chociażby stringa) niż nad tym jak napisać program.
C# - język wysokiego poziomu. Tu masz mało zastanawiania się jak coś ogarnąć w języku, bo jest proste, intuicyjne, a w necie jest mnóstwo materiałów. Czyli skupiasz się głównie na tworzeniu programu, a nie na pierdołach. Poza tym w C# masz kilka możliwości tworzenia okienek. Ja zaproponowałem WinForms, bo na początek jest najprostsze do ogarnięcia. Po prostu masz edytor wizualny, na którym umieszczasz komponenty przez przeciąganie z listy. Prościej się nie da.
Co powinna robić aplikacja TODO?
- Dodanie elementu "do zrobienia" - taki element powinien mieć tytuł, opis, ewentualnie datę wykonania, a także jakąś flagę, która Ci powie, czy zadanie zostało wykonane, czy nie. Np:
Tytuł: "Kupić prezenty"
Opis: "Trzeba kupić prezenty na mikołajki dla siostry, brata, dziewczyny, żony"
Data wykonania: 5-06-2021
Wykonano: NIE
Aplikacja powinna być w stanie wyświetlić listę takich rekordów, np:
Tytuł | Data | Zrobione
---------------- | -------------------
Kupić prezenty | 5-06-2021 | X
Dentysta | 2-12-2021 | V
Teraz np. po kliknięciu na dany element dwukrotnie, powinno otworzyć się okienko do modyfikacji - to samo jak przy tworzeniu elementu. Tylko tym razem nie tworzy, a modyfikuje.
Możesz dodać guzik w stylu - "Oznacz jako zrobione", który będzie aktywny tylko wtedy, gdy zaznaczony element na liście nie jest zrobiony. Oczywiście kliknięcie tego guzika spowoduje modyfikację zaznaczonego elementu - status na zrobiony.
No i jeszcze możesz dorobić filtrowanie danych, a także ich usuwanie.
Tak w skrócie powinna wyglądać taka aplikacja.
Ale na Twoim miejscu zacząłbym od napisania Notatnika. W C# jest to naprawdę proste, ale zrozumiesz jak działa designer, jak pisać zły kod itd. Dopiero potem ruszyłbym ToDoList, bo tutaj w grę wchodzi jakaś baza danych (czy to tekstowy plik CSV, czy faktyczna baza).
Dlaczego napisałem, że nauczysz się pisać zły kod? Bo nie nauczysz się od razu pisać dobrego kodu. To wymaga czasu i doświadczenia. Tak jak z poezją. Musisz napisać mnóstwo kiepskich wierszy, żeby napisać w końcu dobry.
Więc zacznij od Notatnika (niech wygląda tak samo jak Windowsowy Notepad i robi przynajmniej to samo).
No i najważniejsze - pamiętaj o takich zasadach jak
- DRY (Don't repeat yourself) - nie powtarzaj fragmentów kodu; jeśli jakiś kod (więcej niż 2, 3 linijki) powtarza Ci się kilka razy w kodzie, to prawdopodobnie łamiesz zasadę DRY
- KISS - Keep it simple stupid - czyli pisz najprościej jak się da. Chociaż na tym etapie raczej nie będziesz kombinował
- YAGNI - You ain't gonna need it - nie pisz czegoś na wyrost - czegoś, czego nie potrzebujesz a wydaje Ci się: "być może użyję tego kiedyś"
- SRP - Single Responsibility Principle - jedna metoda ma być odpowiedzialna za wykonanie jednej operacji; to jest czasem trudne do ogarnięcia, ale przykład: metoda, która zapisuje plik na dysku ma TYLKO zapisać ten plik, a nie otwierać okienko do wyboru pliku i zapisywać. Rozumiesz?
No i jeszcze:
- nazywaj klasy, zmienne i metody po angielsku
- staraj się, żeby Twoje metody nie były dłuższe niż te mityczne 20 linijek, jeśli są dłuższe, prawdopodobnie łamiesz zasadę SRP
To być może wygląda skomplikowanie i być może na tym poziomie nie jest zbyt istotne, ale staraj się na to zwracać uwagę.
Przede wszystkim:
Notatnik
Lista ToDo
Odtwarzacz muzyki.