Z pogranicza

Od zera po Programmera

<center>Od zera po Programmera</center>




Witam w tym krotkim artykule. Przedstawie tutaj po krotce moja droge nauki Programowania. Jednak nie jest to jedyny cel tego arta. Chce tutaj zaproponowac najefektywaniejsza, najwydajnieszja i chyba najszybsza, oczywiscie moim skormnym zdaniem, droge nauki Programowania od zera, po prawidziwy, wysoki stopien tej sztuki, jaka programowanie jest samo w sobie. Od razu powien, ze kieruje ten art-poradnik do osob poczatkujacych, szczegolnie dopiero zaczynajacych zabawe z programowaniem, czy pragnacych zaczac. Nie wazny jest tutaj jezyk...


Poczatek


Na sam poczatek powiem, ze moze juz masz zadatki na Programiste? Tworzyles kiedys, chodzby proste stronki w HTML-u, Gry w jakis edytorach, czy cos podobnego? Jezeli tak, to juz polowa sukcesu :) Druga polowa sukcesu to myslenie "algorytmiczne" - ktore nabywa sie z wiekiem i doswiadczeniem. Dlaczego jest to takie wazne? Kiedys, kiedy bedziesz na takim jak ja, lub wyzszym, poziomie wtajemniczenia w dziedzine programowania, zobaczysz, ze programowanie nie polega na niczym innym, aniezeli algorytmach. Nie chodzi mi tu oczywiscie o nudne smecenie Nauczyciela "najpierw zrob algorytm, a potem dzialajacy program" - oczywiscie ma to na celu edukacje w zakresie programowania, ale niektorzy (np. ja, czy Nekro) maja po prostu tak, ze o wiele latwiej im przychodzi pisanie algorytmu "na zywo" w glowie. Ja juz jestem taki "szurniety" na tym poziomie, ze bardzo latwo jest mi zbudowac w glowie na szybko wielowymiarowa tablice rekordow i obiektow oraz operowac na niej :P Oczywiscie nikt niepowiedzial, ze masz byc geniuszem algorytmicznym, ale myslenie algorytmiczne to bardzo dobra sprawa. Kiedys smialem sie z Nekro, gdy Nauczyciel kazal nam napisac algorytm gotowania herbaty oraz jajka. Teraz widze, ze mialo to sens, dla tych mniej wtajemniczonych! Sam czasami wieszajac pranie, opracowuje sobie na to algorytm, optymalizujac go (zboczenie zawodowe to juz jest chyba... xD).

Od czego zaczac?


Na poczatku Nauczyciele wybieraja najczesciej Pascala... Osobiscie (nie tylko ja) uwazam to za zly pomysl. Uwazam, ze zabawe powinnismy zaczynac od Delphi. Tak - zabawe! Kiedy bylem bardzo maly chcialem programowac w C++, jednak nieudalo mi sie (na cale szczescie) zainstalowac wtedy srodowiska Borland C++ Buldier. Dlaczego na szczescie? A no poniewaz moglbym sie zrazic... C++ NIE JEST DLA POCZATKUJACYCH! Po dorwaniu Borland Delphi 7 Personal Edition (obecnie trudno go pobrac i zarejestrwoac, ale goraco polecam poswiecic te kilkadziesiat minut na instalacje tego "lekkiego", a gigantycznego w mozliwosci srodowiska (nie chodzi mi o porownanie z wyzszymy wersjami, ktore naturalnie sa bogatsze w mozliwosci :) )) zaczelem w nim prawdziwa zabawe. Polecam to i Tobie - pierwsze ukladanie komponentow - pierwsze programiki bez uzywania ani jednej wlasnorecznie napisanej linii kodu. Potem zauwazylem prosta sprawe: wlasciwosci komponentow, ktorymi sie bawilem w oknie "Object Inspector". Zaczelem je programywalnie zmieniac. Tak powstaly moje pierwsze "programiki": Super Lighten, czy SUPER Lighter 2.0 Build II. Oczywiscie nienazwe tego aplikacja... Dalej polecam pobieranie przykladow: sam pobieralem roznego rodzaju open sourcowe programiki z 4programmers.net (a wiec wieszkosc niezbyt skomplikowana, lecz uboga w funkcje), przerabialem je i wydawalem zmienione :) Tak na prawde, takie przegladanie i przerabianie czyis kodow wiele uczy. Na poczatek zaczniemy zmieniac liczby, nastepnie lancuchy tekstowe, dojdziemy do wielu wnioskow... Zaczniemy dodawac kod, zobaczymy, ze ShowMessage pokaze wiadomosc, wiec w znalezionym OnClose Formy1 dodamy ShowMessage('Do zobaczenia!'); itp, itd... Taka zabawa to przyjemne z pozytecznym!
Dlaczego na poczatku stwierdzilem, ze Pascal to zly pomysl? Bo uczac sie Delphi uczymy sie Pascala + wizualnego Delphi. Pascal jest bowiem jezykiem edukacyjnym, Delphi zas jezykiem uzytkowym, w ktorym normalnie tworzy sie aplikacja Win32. Wiedza wiec ktora nabedziemy bedzie takze wiedza praktyczna, a nie tylko "teoretyczna".

Co potem?


Jezeli juz "czujemy Delphi" (inaczej tego nazwac nieumiem) to mozemy sprobowac przejsc dalej: tutaj klaniaja sie strony takie, jak 4programmers.net, ktore - moim zdaniem - sa najlepsze dla ludzi wlasnie w tym etapie - ludzi, ktorych Delphi interesuje, sa na poziomie produkcji "przerabianych", a nie swoich. Oni powinni szukac tutkow i artow dot. podstaw Delphi (o i mam pomysl na kolejnego arta :D). Prosze tylko o zapamietanie jednej zasady: zyjemy w dobie Internetu, a wiekszosc Programistow nietraci pamieci mozgu na zapamietywanie takich rzeczy, jak caly kod przyslowiowego "Foo zamykania systemu". Nie staraj sie wykuwac formulek skomplikowanych procedur, czy funkcji na pamiec! Sprobuj je analizowac linijka, po linijce. Jezeli sa zbyt skomplikowane - dodaj je do ulubionej listy procedur/funkcji w jakims pliku tekstowym, czy oznacz strone z tym kodem jako ulubiona :)ZAWSZE mozesz tam wrocic! Osobiscie polecam tez Piniol Delphi FAQ (lub podobna nazwa) - po analizie jego plikow, mozna dodawac tez wlasne procedury, czy funkcje. Wazne rzeczy do zapamietania to: elemnty jezyka, typy zmiennych, iteracje, bloki, instrukcje warunkowe itp itd... Szybko okaze sie dla osoby, ktora mysli algorytmicznie, ze Delphi swietnie prezentuje wlasne mysli :)

If Delphi.Skladnia AND Delphi.Programowanie AND (Delphi.Done=99) then...


Jezeli juz na prawde opanujesz Delphi, co zajmie z pewnoscia kilka lat, mozesz przejsc dalej. Dlaczego kilka lat? Wkrotce zobaczysz, zacznie interesowac Cie jakas konkretna dziedzina przede wszystkim. U mnie bylo to przede wszystkim: pliki, potem integerencja jak najbardziej w system, nastepnie siec i Internet, obecnie jest to jeszcze grafika, robotyka, AI oraz programowanie Gier. W tym miejscu polecam Tobie pisanie wlasnych wirusow, czy trojanow. Wiem, ze to moze brzmiec nielegalnie i dla niektorych moze to byc szok... Zdaje sobie z tego sprawe, jednak prosze mi uwierzyc, ze to dalo mi zdecydowanie najwiecej. Najwiecej algorytmow wtedy powstalo, wiele rewolucyjnych (bynajmniej dla mnie) mysli i skojarzen. I nie chodzi mi tutaj o kolejnego trojana z funkcjami Ctrl+C, Ctrl+V - prosze niewydawac kolejnego rewolucyjnego trojana z pokopiowanymi procedurami, ktory ma tylko inna nazwe i wyglad ;/ Osobiscie razi mnie takie cos... Piszac wirus, czy trojan, mam tu na mysli powazne podejscie do sprawy. W moim przypadku bylo to wiele, mozna by rzecz cala seria, superinteligentych wirusow. Oczywiscie niewydawalem ich (Delphi do pisania wirusow sie zbytnio nienadaje - wydajnosc i rozmiar; co nie znaczy ze nie nadaje sie do tego W OGOLE - w koncu zostal zaprojektowany pod Windowsa, co daje mu pewna przewage). Jednak zachecam do napisania czegos takiego - daje to wiele nauki i satysfakcji.

Delphi, Delphi, Delphi...


Nie, nie tylko Delphi! Jak juz mowilem, po jego opanowaniu czas na kolejne kroki. Tutaj bedzie nam szlo o wiele szybciej! W moim przypadku nauka nowego jezyka to kwesta kilku tyg. (Java troche dluzej, ale ten jezyk mnie przeraza :P). Warto tutaj nauczyc sie wykorzystywac bazy danych pod Delphi, laczac to z ekspresowa nauka jezyka SQL, ktorego poznanie moze trwac kilka dni.
Nastepnym do nauki powinien byc C/C++/C#/PHP. To jest przynajmniej moje zdanie. Sa to juz jezyki szerszego zastosowania, ktore szczerze mowiac daja nam pewnego rodzaju furtke. Dlaczego? Poniewaz obecnie wiele jezykow jest tzw. jezykami C-podobnymi. Oznacza to, ze skladnia jest niemal (by nie powiedziec, ze w 99,99%) identyczna. Ja osobiscie wybralem PHP (planuje pozniej C++), ale to zasadniczo mala roznica. PHP wybralem, bo jest to zupelnie inny wymiar programowania - zadnych zdarzen, On... itd. Zachecila mnie ta odmiennosc - gdyz tym razem wszystko mamy po stronie serwera, a nie uzytkownika, wiec integracja bardzo ogranicza sie. Powoduje to na pewno mase wiekszej ilosci kodu. Jednak PHP ma jeden zasadniczy plus w porownaniu z C/C++/C# - i, co zaskakujace, nie dotyczy to samego jezyka, jak... pomocy! Otoz prawie KAZDA komenda jezyka PHP ma Polskie tlumaczenie, lacznie z parametrami. Pozwala to znacznie skrocic czas nauki. Jedyne co zajmuje troche czasu, to zmiana myslenia, o czym pisalem wyzej. W C++ tego nie ma - nadal piszemy aplikacje po stronie usera :) Fakt faktem, polecam nauke tych jezykow po sobie.

Juz znam kilka jezykow i co dalej?


Niegdy nieosiadaj na laurach - staraj sie przec do przodu i poznawac ciagle nowe. Jednak pamietajac o niezaniedbywaniu poprzednich jezykow! Ja np. osobiscie lubie pisac raz w Delphi, raz w PHP+SQL, czasami w Javie, czy ss itd... Bardzo fajne sa takze projekty laczone, gdzie trzeba np. polaczyc PHP z Delphi i C# - polecam cos takiego z calego serca.

DODATEK: Jaki edytor?


Jezeli chodzi o edytor tekstu, to (musze to napisac), zarowno do C++, PHP, SQL-a, INI, C#, Delphi, Pascala, C, Javy, czy nawet ASMa polecic musze Notepad++, ktory jest w tym momencie bezkonkurencyjny, jezeli chodzi o kolorowanie skladni. O ile przy C/C++/C# zauwazymy mala poprawe, o tyle dla np. Javy, czy Delphi wyglad skladni jest poprostu zupelnie inny - o wiele bardziej przystepny! A pamietajmy, ze takie szczegoly sa baaardzo wazne! Niektorzy to ignoruja, ale jako doswiadczony programista, zaczniesz doceniac nawet tak male udogonienia.

Zakonczenie


No coz... Troche sie rozpisalem, czasem odwodzac od tematu :) Mam nadzieje jednak, ze komus ten art sie przyda! :) Czekam na wszelkie opinie i komenty. Ja ze swojej strony przepraszam za literowki i brak Polskich znakow (ktorych nie mam na laptopie).



Pozdrawiam i powodzenia!



<right>oryginalny artykuł pochodzi ze strony: http://programowanie.66ghz.com :)</right>

6 komentarzy

jakubkrol 2009-09-09 07:41

@Torixon - jak najbardziej :)

Ale jednak i tak bardziej poolecam Cie Delphi 5, czy 7 :)

Są łatwiejsze - mają mniej takich "pr0" narzędzi :P

Torixon 2009-09-08 21:25

Jestem "świeży" xD w programowaniu i chciałem sie zapytac czy
Czy Delphi RTM 2009 v12 0 3170 16989
Jest dobry ? tzn w miare łatwy w  obsłudze , czy jest dobry do programowania (dla poczatkujacego )

jakubkrol 2009-09-02 15:17

@Drajwer - co masz dokładnie na myśli pisząc
Masz w Delphi lambdy? Mapowanie? Slowniki? Tuple? Wielo dziedziczenie? Trigraphy? Moglbym tak wymieniac...
?
Tu trzeba troszke inaczej myśleć.. oto przykłady:
Wiki: "Delphi posiada dziedziczenie po jednej klasie i po wielu interfejsach, co sprawia, że programy pisane w Delphi są czytelniejsze niż programy pozwalające na wielodziedziczenie."
Polecam także np:
http://www.delphi.org.pl/zlot/2008/po/lecture.php?lecid=b3

I co z tego, że Qt4 się różni od VCLi? Przecież wszystko się od siebie różni.. To jest troszke dziwny argument, mówienie, że coś się różni od siebie - to jest jak najbardziej normalne.. Ja mógłbym powiedzieć np. na odwrót :)

"Piszesz że opanowanie nowego języka zakladajac ze znamy juz jakis moze trwać kilka tygodni. Nie jest to prawdą, bo każdy język jest taki sam. Różni się tylko skladnia." - no właśnie o to mi chodziło :) Poznanie tejże składni do perfekcji to kwestia tygodni dla niektórych :)

"Pamietajmy mimo wszystko ze najwazniejszy jest programista a nie jezyk w którym pisze." - o! I myślę, że to jest najważniejszy wniosek! Kazdy Programista ma jakiś ulubiony język - ja pisałem o swojej ścieżce i dla mnie jest to po prostu Delphi oraz PHP. Dla Ciebie pewnie Perl i Python. Ważne jest, aby robić to co się robi w swoim języku po prostu DOBRZE :)


Pozdrawiam Cię serdecznie

Drajwer 2009-09-02 14:26

Nie oszukujmy sie ale Delphi ogranicza nas chocby jezykowo. To mialem na mysli przez ograniczenie myslenia. Masz w Delphi lambdy? Mapowanie? Slowniki? Tuple? Wielo dziedziczenie? Trigraphy? Moglbym tak wymieniac...
Wlasnie o to mi chodzi. Po przesiadce na inny jezyk (np Delphi -> Python) ciezko nam jest sie przyzwyczaic do zalet nowych jezykow i probojemy pisac niewydajne programy w stylu Delphi w innym jezyku. Nie mowiac juz o GUI. Dla przykladu Qt4 rozni sie od VCL przynajmniej wszystkim. Do tego jest o wiele bardziej uniwersalne i prostrze po opanowaniu. Nie mam nic do Delphi ani Pascala bo to wspaniałe języki i sam od niego zaczynalem. Ale sam zaczynajac programować w Pythonie zaczalem dostrzegać wady tych języków.

Piszesz że opanowanie nowego języka zakladajac ze znamy juz jakis moze trwać kilka tygodni. Nie jest to prawdą, bo każdy język jest taki sam. Różni się tylko skladnia. Nie widze przeszkód zeby programiste C++ posadzić przed jakimś projektem PHP lub Delphi. Ewentualnie mozna takiemu programiście dac dostep do dokumentacji. Kilka tygodni, moim zdaniem, moze trwac opanowanie do perfekcji roznych trikow jezykowych znanych na przyklad z Perla lub z Pythona.

Pamietajmy mimo wszystko ze najwazniejszy jest programista a nie jezyk w którym pisze.

jakubkrol 2009-08-24 19:14

@Drajwer - Wcale nie, to nie prawda... Zależy co robisz w Delphi, jeżeli cigle jakieś banalne programiki - to racja. Ale nie zawsze tak jest. Jak pisałem:
1. "W moim przypadku bylo to wiele, mozna by rzecz cala seria, superinteligentych wirusow.", chodzi mi więc o coś co pozwala się rozwijać, a po drugie:
2. "Nie, nie tylko Delphi! Jak juz mowilem, po jego opanowaniu czas na kolejne kroki." oraz "Niegdy nieosiadaj na laurach - staraj sie przec do przodu i poznawac ciagle nowe. Jednak pamietajac o niezaniedbywaniu poprzednich jezykow!" - doczytałeś do tego ;>? Trzeba uważać żeby się nie "zasiąść" w jednym języku! Ciągle trzeba przeć do przodu i poznawać nowe :)

Pozdrawiam J.

Drajwer 2009-08-24 18:21

Delphi, Delphi, Delphi. Spróbuj przesiąść się z Delphi na Pythona/Perla po 6 latach programowania. Łatwo? Nie. Dlaczego? Bo Delphi zabija w nas myślenie.