2009-09-14 9 views
8

Zawsze uważałem, że kiedy zaczyna się uczyć nowego programisty, musi stworzyć pewne projekty, aby lepiej zrozumieć język i/lub ramy. Osobiście dla mnie było to z php (księga gości, abstrakcja DB, silnik szablonowy), ruby ​​(na szynach, twitter jak strona internetowa, aktywna wtyczka rekordu, prosty klejnot) i cel-c (kakao, lista do zrobienia, klient twittera).Najpierw trzeba zaprogramować projekty jako hobby

Zastanawiam się, jakie są obowiązkowe projekty dla innych języków programowania, takich jak Java, C++, Python itp.? Może masz inne języki uczenia się ścieżki?

Odpowiedz

11

ProjectEuler

Pierwsze 20 lub tak są ładne małe problemy, które pozwalają eksperymentować z języków podstawowych rzeczy sterowania wykonaniem. Daje ci dobre wyczucie, jak język działa w "małym".

3

Dla Java Myślę, że coś jak system inwentaryzacji byłoby OK, ponieważ obejmuje większość rzeczy Podobnie jak obiektowych pojęć, GUI, programowanie baz danych itp jest wystarczająco inteligentny, aby rozpocząć z

w C++ I chyba coś związanego z wydajnością może być świetne. Sugerujemy stworzenie prostej aplikacji do przetwarzania obrazu w C++. Otrzymasz dobre zrozumienie wskaźników i zarządzania pamięcią.

2

Niestety, minęło trochę czasu odkąd nauczyłem się nowego języka.

Ale kiedy cały czas uczyłem się nowych języków, miałem prostą strategię: Mój pierwszy program był twoim podstawowym "cześć, świat", czymś, co po prostu wyświetla komunikat i wychodzi. Mój drugi program to Life. (Patrz np. http://www.math.com/students/wonders/life/life.html)

W ostatnich dniach mój kolejny wysiłek stał się prostym programem bazodanowym, chociaż nigdy nie wymyśliłem standardowego. Ale coś do czytania i pisania z bazy danych.

Myślę, że dobrym pomysłem jest napisanie tego samego programu w różnych językach. W ten sposób już znasz problem i zasady stojące za rozwiązaniem, więc jedyną nową rzeczą, z którą masz do czynienia jest język implementacji.

+1

Interesujący punkt. Ale czy podobne problemy z tymi samymi rozwiązaniami nie są sprzeczne z paradygmatem "tam jest więcej niż jeden sposób"? W końcu każdy język niesie własną filozofię. Nie umiesz? – Eimantas

+0

Pewnie. Ale kiedy uczę się nowego języka, pierwszą rzeczą, której chcę się nauczyć, są podstawy. Jak zrobić I/O? Jak czytać plik? Jak mogę wywołać podprogram? Itd. Mój pierwszy program C++/Windows wyglądał zupełnie inaczej niż mój pierwszy program Fortran, ponieważ tak, filozofia projektowania, która się za nimi kryje, jest bardzo różna, tj. Obiektowa i GUI kontra proceduralna i TTY. Nie chciałem, aby mój komentarz "już wiem o rozwiązaniu" był tak daleki. Chodzi mi o to, że kiedy piszę swój pierwszy program, chcę myśleć o tym, jak działa ten język, a nie zmagać się z wymaganiami funkcjonalnymi. – Jay

2

Zwykle lubię robić gry z kilku powodów.

  • Są bardziej przyjemne w implementacji, ponieważ w końcu są grami.
  • Posiadają jasno zdefiniowane reguły, więc nie spędzasz dużo czasu na wymyślaniu specyfikacji zamiast napisać program.
  • Zazwyczaj mają one ładny średni poziom złożoności. Wystarczająco trudne, aby nie być banalnym i na tyle prostym, aby można było je wykonać w kilka godzin lub dni.
  • Zwykle są niezależne. TO ZNACZY. nie potrzebujesz zaplecza bazy danych dla szachów, chyba że naprawdę chcesz - w przeciwieństwie do bardziej rzeczywistej aplikacji na świecie, jak blog, na którym baza danych jest zasadniczo obowiązkowa.
  • Z wielu grach można trzymać tylko z tekstu lub ASCII sztuki UI, który dąży do uproszczenia rzeczy, gdy nauka języka

zacząć od czegoś prostego, jak kata mistrza umysłu lub Wieże Hanoi. Następnie możesz przejść do bardziej pełnej gry, takiej jak poker/monopol.W takiej grze możesz dodać dowolne funkcje, takie jak zapisywanie gier w bazie danych, jeśli chcesz poeksperymentować z frameworkiem dostępu do danych w języku.

+0

Szubienica jest dokładnie tym, co zrobię - zobacz mój wcześniejszy wpis. Monopol wydaje się dość skomplikowaną grą do zaprogramowania problemu z praktyką wyrzucania. Może poświęcasz dużo więcej wysiłku na problem z praktyką niż ja. A może przeceniam, ile to kosztuje. No cóż. – Jay

+1

Monopol jest na najwyższym poziomie gier, które chciałbym zrobić dla treningu. Chociaż jeśli masz tylko interfejs tekstowy, to tylko próbuję stworzyć prawdziwy interfejs, jeśli chcę ćwiczyć strukturę interfejsu, nie jest zła z główną zasadą, o którą chcesz się martwić. Plus, jeśli naciskasz na czas, a co nie, zawsze możesz dowolnie odrzucić zasady. Główną rzeczą, która mi się podoba, jest to, że podejście OO działa z nim przyjemnie i upraszcza. Niemal jakikolwiek sposób, w jaki próbuję to napisać, kończy się przynajmniej na graczu i klasie własności. W czymś podobnym do kata mam tendencję do pisania proceduralnego, ponieważ jest tak prosty. – Joshua

+0

Hmm, przywodzi na myśl interesującą myśl: większość współczesnych języków to OOP, być może problem z dobrą praktyką to taki, który wykonuje wiele obiektów, które mają rzeczywiste metody i nie są tylko kontenerami danych, i które zawierają pewne podklasy. W ten sposób ćwiczycie trochę o tym, jak "rzeczy obiektów" działają w tym języku. – Jay

Powiązane problemy