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?

zhenka
źródło
3
Sklonuj tę stronę.

Odpowiedzi:

11

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.

Thorsten Müller
źródło
Możesz spróbować zaimplementować Game of Life na różnych platformach. Zrobiłem to na płótnie HTML5 / JavaScript. To było niesamowite!
mauris
5

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.

Michiel Overeem
źródło
Właśnie dostałem tę książkę, a moim postanowieniem na nowy rok jest jej przestrzeganie.
Tangurena
5

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 .

Fanatyk 23
źródło
3

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.
Pete
źródło
2
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).
Arkaaito
źródło
1

Dla początkujących

Manipulacja ciągiem:

  • Gra Wisielec.

Baza danych:

  • Lista rzeczy do zrobienia
  • jakiś trening lub osobisty dziennik

Manipulacja liczbami losowymi:

  • Zakręć kołem

Matryca i podstawowa grafika

  • Tetris
zhenka
źródło
1

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ą.

Steven Evers
źródło