Sugestie dotyczące projektu Zrób to sam, aby poprawić umiejętności programowania lub nauczyć się nowego języka [zamknięte]
10
Ponieważ najlepszym sposobem na naukę jest praca nad projektami, jakie jest dobre oprogramowanie, które pozwala wyostrzyć pewne umiejętności programowania lub nauczyć się nowego języka?
Odkryłem, że następujące programy dają dobry początek w nowych językach:
Gra życia Conwaya
Łatwy do wdrożenia. Daje dobry początek dzięki prostemu użyciu klas kontenerów. Niekoniecznie potrzebuje grafiki do wyświetlania wyników.
Ponadto możesz napisać wersję 3D i użyć silnika gry do wyjścia (np. Coś prostego jak Panda3D)
Sudoku Solver
Nieco bardziej złożony. Złożoność można dostosować do własnych potrzeb. Po prostu anuluj liczby i zatrzymaj się, gdy nie jest to już możliwe, lub kontynuuj i zaimplementuj drzewo wyszukiwania, aby rozwiązać bardziej złożone problemy. Problemy i rozwiązania dla Sudokusa na każdym poziomie trudności w testowaniu twojego programu są dostępne w Internecie w obfitości. To samo dotyczy materiału na temat możliwych strategii.
Problemy na każdym poziomie trudności, jaki możesz chcieć. I porównaj swoje rozwiązania z doświadczonymi programistami w każdym większym języku programowania.
Powiedziałbym, że każdy projekt, który spełnia następujące trzy wymagania:
Coś, co uważasz za interesujące
Coś, w którym możesz bardzo szybko poczuć postęp (więc na przykład unikaj czegoś takiego jak tworzenie gry 3d)
Coś, co pasuje do paradygmatu programowania tego języka. Np. Jeśli jest to język funkcjonalny, to projekt, w którym można wykonać manipulację danymi, matematykę lub coś takiego.
Twój pierwszy punkt jest kluczem. Jeśli nie jesteś zainteresowany projektem, trudniej będzie utrzymać postęp i entuzjazm, którego musisz się nauczyć.
ChrisF
2
Przejdź do Sourceforge.net lub GitHub, szukaj projektów w tym języku i zobacz, które z nich Cię intrygują.
Pomyśl o bibliotekach, z którymi najczęściej pracujesz w „prawdziwym życiu”. Czy piszesz dużo serwisów internetowych? Spróbuj napisać strukturę usług internetowych dla nowego języka. Czy dużo programowania grafiki? Spróbuj napisać prosty silnik renderujący. Czy analiza danych? Wdrożenie podstawowego pakietu statystyk. Itd., Itp. Ma to tę zaletę, że zobaczysz już narzędzie (ponieważ używasz czegoś podobnego na co dzień) i będziesz już mieć wiedzę na temat domeny. Tego rodzaju projekty są również tymi, które możesz spędzić nieskończoną ilość czasu na ulepszaniu (tj. Uczeniu się więcej rzeczy), z których możesz chcieć w końcu otworzyć oprogramowanie, i które utrzymają cię w języku, jeśli staną się bieżące hobby; Minusem tego jest to, że może nigdy nie wydawać się „skończony”, a „
W zależności od domeny programistycznej mogą istnieć książki, które mają specjalnie poprowadzić Cię przez projekty. Dotyczy to zwłaszcza platform deweloperskich gier (iOS, XNA).
Wszystko, co lubisz, aby robić dalej. Najwięcej nauki uczy się w tym ostatnim 1%, który jest zwykle ignorowany w pobocznym projekcie, ale jest bardzo ważną częścią produktu roboczego.
W rezultacie jest to bardzo osobisty wybór, jaki może być projekt. Dlatego jest tak wiele świetnych projektów systemu operacyjnego i dlatego wszyscy mówią, że mają tak duże znaczenie, kiedy znajdują się w twoim CV / CV: ta osoba ciężko nad tym pracowała i wiele się nauczyła pracując nad tym ostatnim 1% jest użyteczny dla innych i cieszy się tym, co robią.
Odpowiedzi:
Odkryłem, że następujące programy dają dobry początek w nowych językach:
Gra życia Conwaya
Łatwy do wdrożenia. Daje dobry początek dzięki prostemu użyciu klas kontenerów. Niekoniecznie potrzebuje grafiki do wyświetlania wyników.
Ponadto możesz napisać wersję 3D i użyć silnika gry do wyjścia (np. Coś prostego jak Panda3D)
Sudoku Solver
Nieco bardziej złożony. Złożoność można dostosować do własnych potrzeb. Po prostu anuluj liczby i zatrzymaj się, gdy nie jest to już możliwe, lub kontynuuj i zaimplementuj drzewo wyszukiwania, aby rozwiązać bardziej złożone problemy. Problemy i rozwiązania dla Sudokusa na każdym poziomie trudności w testowaniu twojego programu są dostępne w Internecie w obfitości. To samo dotyczy materiału na temat możliwych strategii.
Projekt Euler
Problemy na każdym poziomie trudności, jaki możesz chcieć. I porównaj swoje rozwiązania z doświadczonymi programistami w każdym większym języku programowania.
źródło
Nie jestem pewien, co masz na myśli przez „jakie dobre oprogramowanie wypróbować ...”, ale mogę polecić książkę „siedem języków w siedem tygodni”
To dobry punkt wyjścia do wypróbowania nowych języków.
źródło
Zaloguj się do jednej z poniższych witryn i sprawdź, czy poradzisz sobie z wyzwaniami związanymi z kodowaniem: SPOJ , TOPCODER itp.
Większość z tych stron zapewniała możliwość kodowania w wielu językach programowania, dzięki czemu można korzystać z tego, który znasz.
A jeśli jesteś mistrzem w swojej grze, zawsze jest ICPC .
źródło
Powiedziałbym, że każdy projekt, który spełnia następujące trzy wymagania:
źródło
źródło
Dla początkujących
Manipulacja ciągiem:
Baza danych:
Manipulacja liczbami losowymi:
Matryca i podstawowa grafika
źródło
Wszystko, co lubisz, aby robić dalej. Najwięcej nauki uczy się w tym ostatnim 1%, który jest zwykle ignorowany w pobocznym projekcie, ale jest bardzo ważną częścią produktu roboczego.
W rezultacie jest to bardzo osobisty wybór, jaki może być projekt. Dlatego jest tak wiele świetnych projektów systemu operacyjnego i dlatego wszyscy mówią, że mają tak duże znaczenie, kiedy znajdują się w twoim CV / CV: ta osoba ciężko nad tym pracowała i wiele się nauczyła pracując nad tym ostatnim 1% jest użyteczny dla innych i cieszy się tym, co robią.
źródło