niedziela, 18 kwietnia 2010

Jak uczyć się C#? [PL]

Promuj

Dzisiejszy post będzie trochę inny niż zwykle, a 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 coś 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 w ogóle jest i jak to ugryźć”, niestety takiej książki do C# nie znam. Niezależnie 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.

Ale może dosyć już powyższego „ble, ble”, może opowiem 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 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#. Nie wiem czy wymieniłem tutaj wszystkie, które poznałem, ale to nie istotne, po prostu nauka każdego kolejnego to kwestia kilku godzin lub dni, 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? 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 o książce „Thinking in Java”, której czytałem tylko fragmenty, wyróżniało ją pokazywanie bardzo celnych przykładów.
  • 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...).

Przejdźmy jednak do meritum, czyli języka C# i platformy .NET (ups... coś mi się wymknęło, napisałem tutaj już nie tylko o języku, ale też platformie, przecież C# to nie tylko język). 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ękę: "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. Ostatnio czytam jeszcze książki typu „Training Kit” do egzaminów 70-cośtam, gdyż dobrze porządkują wiedzę. Przyznam, że innych książek nie czytałem lub czytałem tylko małe fragmenty, więc wypowiadać się nie powinienem i nie będę.

Gdzie jeszcze szukać informacji?

W portalach 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:

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/ lub http://dotnetnews.pl/.

To pewnie jeszcze nie wszystko, ale chyba wszystko w tym już i tak długim post'cie ;)

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

PS: Przypomniało mi się, że jest język którego warto poznać przed językiem C#, jest to język angielski! ;)

PS2: Przeczytajcie również pewnego rodzaju kontynuację tych rozważań: "Jak uczyć się C#, programować i innych takich?"

PS3: Spodobał Ci się tekst?, to promuj: Promuj

Historia:

7 komentarzy:

  1. a gdzie się podział link do develway.pl? :(

    OdpowiedzUsuń
  2. Dodałem link do develway.pl oraz do serwisów z pytaniami.

    Może ktoś jeszcze ma jakieś uwagi?? Zapraszam do dyskusji.

    OdpowiedzUsuń
  3. Cieszę się że zajrzałam na tą stronę. Z pewnością mój post nie wniesie niczego co by było pomocne w tym temacie, chcę jednak Ci podziękować. Dzięki twoim wpisom znalazłam parę stron które przydadzą się w mojej dalszej nauce i w obecnie realizowanym zadaniu. Dziękuję i pozdrawiam

    OdpowiedzUsuń
  4. Cieszę się, że coś pomogłem. Pozdrawiam!

    OdpowiedzUsuń
  5. Super tematy poruszasz ale strona nie jest czytelna, co rusz jakieś reklamy i jakiś taki chaos. Ale zaglądać naturalnie będę bo treści są konkretne

    OdpowiedzUsuń
  6. Pojawiła się nowość C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych. Cena przystępna a aktualnie w empiku rabat -20% z darmową dostawą do dowolnego salonu.

    OdpowiedzUsuń
  7. Niestety jeśli chodzi o proces nauczania nie ma drogi na skróty, trzeba przysiąść opanować podstawy i poczytać case study z tego tematu.

    OdpowiedzUsuń

Posty powiązane / Related posts