Menu
×
Menu
Możliwość komentowania Jak uczyć się C#? (a może również innych języków programowania) została wyłączona

Jak uczyć się C#? (a może również innych języków programowania)

Opublikowane przez | 17 września 2012 | felieton, wydarzenia

Ten artykuł zainspirowany został pytaniami, jakie od czasu do czasu dostaję poprzez email, np.:

  • „(…) przymierzam się do rozpoczęcia przygody z C# i technologiami .NET. Obecnie znam w stopniu średnio-zaawansowanym język XXX (…) Czy mógłbyś mi polecić jakieś książki lub artykuły, które pomogłyby mi na starcie?”
  • „ (…) Niektórzy mówią, że dość dobrą książką, jeżeli znam C, jest książka XXXX. Może ją miałeś w ręce, co o niej sądzisz?”
  • „ (…) Czy znasz jakiś dobry kurs w sieci i lub książkę do nauki C# w języku polskim?”
  • „ (…) Czy język C# jest dobry na początek nauki programowania? (…) Od czego zacząć naukę C#?”
  • „Jak Pan zaczynał naukę C# i .NET? (…) Jakie książki lub dobre materiały do nauki w internecie (najlepiej po polsku) ?”
  • „Czy jeśli to mój pierwszy język (znam minimalne podstawy XXX i YYY) to warto się brać właśnie za C#?”

Niestety od razu zaznaczę, żadna sugestia typu: „Przeczytaj TO i wystarczy” nie padnie tutaj, więc jeśli ktoś szuka panaceum na tego typu problem (niemal, że egzystencjalny) niech zakończy czytanie już tutaj!

Minister Zdrowia ostrzega: Nauka jest procesem ciągłym i żadnego panaceum nie ma!


Ostrzegałem, więc mam nadzieję, że zostali już tylko Ci, co chcą przeczytać moje dalsze wynurzenia na ten temat.

Przyznam, że trudno mi jednoznacznie polecić jakiś konkretny utwór, który ułatwi naukę jakiegoś konkretnego języka programowania, dlaczego? Zwykle jest to sprawa bardzo indywidualna, stan wiedzy i doświadczenia niemal każdego jest odmienny, więc każdy ma trochę inne potrzeby. Fakt, że ktoś wcześniej uczył się np. Pascal’a (Delphi), PHP, C++ wydaje mi się mało znaczący. Oczywiście, jeśli ktoś jeszcze nie zna żadnego języka programowania, musi wybrać lekturę, która będzie wskazywała „po co to (programowanie) w ogóle jest i jak to ugryźć”, niestety takiej książki do C# nie znam. Niezależnie jednak od wcześniej znanego języka, znaczenie ma fakt, jakie zagadnienia dana osoba rozwiązywała w danym języku programowania. Prosty przykład: osoba, która do tej pory koncentrowała się na pisaniu aplikacji konsolowych, będzie musiała włożyć sporo pracy, by zająć się programowaniem serwisów internetowych (nieważne w jakim języku), bo jest potrzebna inna wiedza, o innych technologiach. Należy więc sobie odpowiedzieć na podstawowe pytanie: „Co mi jest potrzebne?”. Dopiero na podstawie udzielonej odpowiedzi można szukać lektury, która nie tylko nauczy języka (narzędzia) ale i udzieli odpowiedzi na inne pytania związane z technologiami. Kolejnym istotnym aspektem jest fakt, czy dana osoba ma umiejętność programowania i myślenia obiektowego, gdyż jest to element, który może okazać się trudny do zrozumienia przy nauce C#, nie mając wcześniej tego typu podstaw.

Jak ja zaczynałem?

Może jednak dosyć już powyższego „ble, ble”, spróbuję opowiedzieć jak ja zaczynałem. Ech co to były za czasy… Popularnymi komputerami były wtedy takie jak Commodore C64 oraz Atari (chyba 65), więc w zasadzie królował wtedy język BASIC (przynajmniej tak to wyglądało w przypadku rozwiązań nieprofesjonalnych). Rodzice kupili mi wtedy książkę pod krótkim tytułem: „Przygody z komputerem i bez komputera: programowanie w języku BASIC dla najmłodszych – od 5 lat, dla najstarszych do 105 lat, oraz wszystkich, którym wydaje się to trudne”, autor: Roman Poznański, wydawca: Wydawnictwa Komunikacji i Łączności, data: 1991). Ech co to była za książka! O zawartości mówi już sam tytuł, ale co ciekawe, nie trzeba było mieć komputera, żeby pewne zabawy w programowanie wykonać… Chyba żadna książka informatyczna, którą od tamtej pory przeczytałem, nie zrobiła na mnie takiego wrażenia. Później już się potoczyło: pisanie w języku AMOS (odmiana BASIC’a) na komputer Amiga, używanie QBASIC na PeCecie (blaszaku). Później nauka Pascala: High Speed Pascal (na Amidze) i Turbo Pascal (na blaszaku). Pascal okazał się dla mnie pewnym przeskokiem, odejściem od języka skryptowego (a w zasadzie do takich należy zaliczyć ówczesne języki typu BASIC) i przejściem na język proceduralny. Jedno trzeba przyznać, że Pascal dobrze uczy programować (pewnie dlatego nadal są wykładowcy, którzy od niego zaczynają), choć dzisiaj według mnie do nauki lepsza jest ADA. Oczywiście (dla mnie) kolejnym krokiem musiał być język C lub C++, niewątpliwe jest to kolejny odmienny sposób programowania, który nauczył jeszcze jednego spojrzenia… Później już się potoczyło, w krótkim czasie poznawałem kolejne języki: PHP, Perl, ADA, Java i oczywiście C#! W tym miejscu nie jestem pewien czy wymieniłem tutaj wszystkie, które poznałem, ale to nieistotne! W pewnym momencie okazuje się, że nauka każdego kolejnego to kwestia kilku godzin lub dni. Oczywiście w zależności od tego, co rozumiemy przez pojęcie: „znać język”.

Może jednak dość już tych wynurzeń i zastanówmy się, jakie są wnioski z przytoczonej opowieści:

  • Jaki powinien być pierwszy język, który należy poznać? Zacznij od dobrego poznania języka ojczystego i angielskiego, abyś mógł szukać informacji i czytać książki.
  • Jaki powinien być pierwszy język do tworzenia oprogramowania? Nie ważne jaki, ważne, żeby na jego podstawie zrozumieć, na czym polega to „programowanie”.
  • Jakie książki zapamiętałem z tego okresu? Niewiele, czytałem dużo. Oprócz tej wspomnianej pierwszej książki zapamiętałem książki w żółtych okładkach dla Turbo Pascala i Borland C++ (chociaż dziś nawet pełnych tytułów nie pamiętam, a tylko popularną kiedyś „żółtą okładkę”). Pamiętam, że z dużym zniesmaczeniem wspominam książkę do Visual Studio 6 (Poznaj Visual C++ 6, autorzy: Jon Bates, Tim Tompkins, ISBN: 83-7158-190-4, Wydawnictwo Mikom), którą mi polecili na uczelni. Za dużo w niej było informacji o narzędziu (czyli Visual Studio). Zawierała dużo „klikologii” i mało odpowiedzi na pytania typu „dlaczego” (przynajmniej tak ją zapamiętałem). Od tej chwili unikam tego typu książek. Pamiętam za to książkę „Thinking in Java”, której czytałem tylko fragmenty, wyróżniało ją pokazywanie bardzo ciekawych przykładów w kontekście programowania w języku Java.
  • Jeżeli nie pamiętam książek, to z czego się uczyłem? Przede wszystkim uczyłem się z jakichś kursów, samouczków (tutoriali) pobieranych z internetu lub z gotowych przykładów, które gdzieś znalazłem. Dużo czytałem gazet o tematyce informatycznej (w których wtedy można było znaleźć przykładowe programy itp…).

Jest język, który warto poznać przed językiem C#, jest to język angielski!

Przejdźmy jednak do meritum, czyli języka C# i platformy .NET. Ponieważ, w moim przypadku C# był już którymś z kolei językiem, dlatego ja zacząłem od przeczytania prostej książeczki, która wpadła mi w ręce: „C# Pocket Reference”. Były w niej omówione podstawy związane z tym językiem. Polskojęzycznej literatury na temat C# wtedy nie było, a ta w prostych żołnierskich słowach wyjaśniła mi jak „konstruować zdania w tym języku”. Książeczkę tą mogę polecić tym wszystkim, którzy wiedzą już co to jest to „programowanie”, jak obsługiwać narzędzia typu RAD i tylko potrzebują się nauczyć mówić w języku C#. Jeżeli podstawy już znamy, ciekawą pozycją jest: „C# księga przykładów” (Autor: Allen Jones, Wydawnictwo: A.P.N. Promise, 2006, ISBN: 83-88440-69-1), gdzie zaprezentowanych jest wiele różnych problemów, a następnie podane są przykładowe ich rozwiązania. W ten sposób można wyjść poza ramy samego języka i dowiedzieć się co to ten cały .NET. Kolejną pozycją godną przeczytania może być książka pod tytułem „C#. Wzorce projektowe”. Książka w ciekawy sposób wprowadza w świat wzorców projektowych. Z pewnością nie jest ona skierowana do początkujących programistów, ale dzięki niej można sobie ukształtować myślenie w taki sposób, by osiągnąć rozwiązanie problemu programistycznego właśnie poprzez użycie odpowiedniego wzorca. Można również sięgnąć do książki: „Microsoft Visual C# Księga Eksperta” (Autor: Kevin Hoffman, Wydawnictwa Helion), choć książka budzi u mnie mieszane uczucia (masa informacji, ale wszystko „na chybcika”, często bez odpowiadania poco? i dlaczego?).

Jak jeszcze się uczyć? Warto tutaj poruszyć jeszcze pewne kwestie.

Certyfikaty programistyczne

Pierwszą są certyfikaty. Teraz już nie mal, że słyszę pytanie: „ale co one mi dają?”, „czy ktoś na nie zwraca uwagę?”. Przyznam, że nie zamierzam się tutaj rozwodzić nad tymi zagadnieniami, robili to już inni (tutaj i tutaj). Ja chciałbym zwrócić uwagę na sam fakt przygotowania się do nich. Sam przygotowywałem się już do kilku i muszę przyznać, że dzięki moim przygotowaniom moja wiedza stała się bardziej uporządkowaną i poukładana. Pytanie jest, jak się do nich przygotować? Wydaje mi się, że najlepiej wykonując wiele ćwiczeń i wspierając się odpowiednimi źródłami. Najpopularniejszymi źródłami są chyba tzw. „Training Kit’y”, które krok po kroku omawiają cały zakres wiedzy, którą należy posiąść, by podejść do egzaminu. Niestety, każdy Training Kit, to książka z ok. 1000 stronami informacji, której nie da się przeczytać i zrozumieć w krótkim czasie. Ma to szczególne znaczenie zwłaszcza dla osoby, która już dysponuje pewną wiedzą i przede wszystkim doświadczeniem, ale potrzebuje jeszcze raz rzucić okiem na wszystkie zagadnienia. Tutaj doskonale sprawdzają się materiały opublikowane w Internecie i przygotowane przez aktywnych członków społeczności .NET. Warto tutaj polecić blog członków grupy .NET: eastgroup.pl działającej przy Wydziale Matematyki i Informatyki Uniwersytetu Warmińsko-Mazurskiego w Olsztynie. Zrobili oni na prawdę kupę dobrej roboty i przygotowali już opracowania kompletu zagadnień na następujące egzaminy:

Warto również zajrzeć do wpisu: „WPF – Podsumowanie wpisów dot. przygotowań do gzaminu 70-502” oraz zawartych w nim linków do artykułów przygotowanych przez Pawła Łukasika.

Wspomniane tutaj materiały polecam przeczytać nawet tym, którzy nie chcą zdawać egzaminu. Należy jednak pamiętać, że ich przeczytanie nie gwarantuje zdanego egzaminy! Do odpowiedniego przygotowania należy jeszcze włożyć sporo praktycznej pracy. Na pewno jednak te materiały, są doskonałym podsumowaniem.

Nauka nie przez czytanie

Drugą kwestią, którą chciałbym poruszyć, to nauka nie przez czytanie. Przypomnijmy sobie tutaj lekcje w szkole. Przychodził nauczyciel i po kolei omawiał wszystkie potrzebne zagadnienia, taka nauka jest łatwiejsza i chyba przyjemniejsza. W tym momencie ktoś mógłby mi zarzuć, że pewnie namawiam kogoś, na pójście na kosztowne szkolenie. Nic bardziej mylnego, chciałbym zwrócić uwagę na grupy pasjonatów, które organizują się, spotykają się i wymieniają między sobą wiedzą:

Gdzie jeszcze szukać informacji?

W ramach odpowiedzi na postawione pytanie, zachęcam do odwiedzenia portali branżowych (ukierunkowanych na C# i .NET):

W portalach ogólnych dotyczących programowania:

Jeszcze inne linki można znaleźć na blogu Polishwords w artykule: „Polskie strony o programowaniu w C#

Warto odwiedzać również zagraniczne strony:

które są składnicą artykułów i przykładów dotyczących C# i .NET.

Można również czytać mojego bloga ;) lub inne wyszczególnione np. w post’cie: http://maciej-progtech.blogspot.com/2009/07/blog-c-net-czyli-moj-mini-przewodnik-po.html – ale należy to traktować raczej jako rozszerzanie wiedzy niż dobre miejsce na naukę od zera. Można również sięgnąć po jakiś agregator blogów dotyczących C#, np. http://dotnetblogs.pl/.

Na koniec…

Nie wiem czy coś pomogłem (mam nadzieję, że nie zanudziłem), pozostaje mi życzyć wszystkim zainteresowanym powodzenia!

Autor: Maciej Zbrzezny (http://maciej-progtech.blogspot.com/)

Contact Us