[Ekspert] Mormegil Napisano Październik 1, 2009 Zgłoś Share Napisano Październik 1, 2009 Na początek garść linków: Ogólne: Programowanie Kod/język maszynowy Kod pośredni Asembler Język programowania Język wysokiego poziomu Microsoft Developer Network Narzędzia: Kompilacja Konsolidacja Kompilator IDE Debugger Paradygmaty: Programowanie strukturalne Programowanie proceduralne Programowanie obiektowe Programowanie generyczne/uogólnione Pytanie -1: Czy muszę umieć angielski ? Pytanie 0: Czy można pisać programy w kodzie maszynowym ? Pytanie 1: Co wybrać język programowania czy asembler ? Pytanie 2: Jaki język programowania wybrać ? Pytanie 3: Jaki kompilator C++ wybrać ? Pytanie 4: Jakie IDE wybrać ? Pytanie 5: Jak zacząć programować ? Pytanie 6: Nie kompiluje się, czemu ? Pytanie 7: Czym różni się deklaracja od definicji ? Pytanie 8: Co to jest linker ? Pytanie 9: Co to znaczy "Unresolved external symbol ..." ? Generalnie odpowiedź na te pytania jest zależna od konkretnej sytuacji. Ponieważ to faq kierowane jest do ludzi zielonych w temacie, zasugeruję tutaj moim zdaniem najlepsze rozwiązanie dla początkującego programisty. Jeżeli ktoś ma bardziej wysublimowane potrzeby, to znaczy, że już coś wie i niech poszuka sobie innego faq Pytanie -1: Czy muszę umieć angielski ? TAK! Pytanie 0: Czy można pisać programy w kodzie maszynowym ? Owszem można. Nie jest to wcale takie trudne. Pod windowsem programy w kodzie maszynowym mają rozszerzenie com. Jeżeli ktoś jest zainteresowany to tutaj: http://ref.x86asm.net/coder32.html można znaleźć kody instrukcji wraz z opisem. Pytanie 1: Co wybrać język programowania czy asembler ? W asemblerze w zasadzie się już nie programuje. Nie oznacza to, że nikt już z niego nie korzysta, asembler ma wiele zastosowań i warto go poznać. W językach wysokiego poziomu, takich jak C, pisze się zwyczajnie szybciej, łatwiej, trudniej o błędy oraz kod jest prostszy w konserwacji. Pytanie 2: Jaki język programowania wybrać ? Jakiś nowoczesny i rozwijany. Osobiście polecam C++, trochę mniej Javę. Moim zdaniem na pierwszy język, Java za dużo robi za programistę. C++ ma też bogatsze możliwości. Dyskusja na temat wyboru Pascala. Dyskusja nad różnymi językami Pytanie 3: Jaki kompilator C++ wybrać ? * Gcc - to grupa kompilatorów różnych popularnych języków, w tym C++ i Java. Dla Windows znajdują się one w Cygwin oraz MinGW. Z moich doświadczeń wynika, że lepszym wyborem jest MinGW. * MSVC kompilator C/C++ od Microsoft. Oba mają zbliżone możliwości. Początkującemu polecałbym jednak produkt MS. Przede wszystkim dlatego, że wchodzi w skład Visual Studio, co znacznie ułatwia życie. Pytanie 4: Jakie IDE wybrać ? Najprościej będzie zdecydować się na Visual Studio Microsoftu. Przede wszystkim dostajemy kompilator, edytor i debugger w jednej kompatybilnej paczce. Na początek najlepszym wyborem dla początkującego będzie wersja Express Edition, czyli okrojona, ale darmowa. Nie ma się co przejmować tym, że nie ma części funkcji. Możecie mi wierzyć, nic nie tracicie. http://www.microsoft.com/express/ Jeżeli jednak produkt MS nam nie odpowiada, to polecam Eclipse lub Code::Blocks. Pytanie 5: Jak zacząć programować ? Do nauki potrzebna będzie książka lub tutorial. Bardzo popularne propozycje to Megatutorial Xiona, Symfonia i Pasja C++ Jerzy Grębosz oraz Język C++ Bjarne Stroustrup. Dyskusja nad literaturą do C++ Pytanie 6: Nie kompiluje się, czemu ? Kompilator zawsze informuje o tym czemu kod jest niepoprawny. Komunikat o błędzie jest podstawą do ustalenia gdzie jest błąd, dlatego zawsze wyszukiwanie błędów należy rozpocząć od gruntownej analizy tego co w konsoli wypisał nam kompilator. Jeżeli komunikaty znikną, to Visual Studio domyślnie przechowuje zapis sesji budowania w pliku BuildLog.htm. Pytanie 7: Czym różni się deklaracja od definicji ? Deklaracja to zapowiedź symbolu. Definicja powiązanie symbolu z obiektem (obiekt to zmienna, funkcja, struktura). Deklaracje:int foo(int bar); extern int foobar; Definicje:int foo(int bar) { return foobar; } int foobar; Definicja może być jednocześnie deklaracją. Dzieje się tak w przypadku int foobar Pytanie 8: Co to jest linker ? Proces budowania aplikacji z kodu C++ jest podzielony na kilka etapów. Najogólniej można wydzielić dwa kompilację oraz konsolidację. Kompilacja zamienia kod C++ w pliki obiektowe (.o .obj), natomiast konsolidacja zamienia pliki obiektowe w program bądź bibliotekę. Kompilację wykonuje kompilator, konsolidację linker. Pytanie 9: Co to znaczy "Unresolved external symbol ..." ? To dość częsty błąd i co ważne, jest to błąd etapu konsolidacji. Linker niestety nie potrafi wskazać gdzie jest błąd. Przyczyną tego komunikatu jest niemożność odszukania rzeczonego symbolu przez linkera. Najczęściej oznacza to brak jakiejś biblioteki, lub brak definicji symbolu: class A; int main(int argc, char * argv[]) { A * a = new A(); return 0; }Klasa A została zadeklarowana, ale brakuje definicji. Link do komentarza Udostępnij na innych stronach More sharing options...