Sugestie dotyczące opracowania programów do nauki [zamknięte]

12

Zastanawiam się, poza tymi bardzo prostymi aplikacjami hello world, jakie inne programy powinienem opracować do nauki. wchodzę na uni w przyszłym roku i zastanawiam się, jakie programy będą rozwijane w tym środowisku.

tak naprawdę nie jest to rzecz specyficzna dla języka, ale jeśli chcesz wiedzieć, z czego obecnie korzystam

  • windows: C # / WPF - studiowałem java / vb itp. w poli, ale myślę, że C # to droga, może nawet F #
  • web: PHP / MySQL, Zend Framework / Doctrine, + HTML / CSS / JS (jQuery) oczywiście. próbuję wypróbować silnik aplikacji Google z Pythonem.

na razie myślę o tym

  • listy rzeczy do zrobienia
  • aplikacje integrujące się z interfejsem API, np. twitter / tumblr, którego używam
  • edytor tekstowy - obecnie próbuję opracować edytor tekstowy, który wykorzystuje markdown i generuje pliki HTML do przeglądania (link do wpisu na blogu). niezbyt praktyczne po tym, jak zacząłem go rozwijać. ponieważ podczas edycji nie ma formatowania, aw formacie HTML nie mogę edytować bezpośrednio

  • oprogramowanie blogów (dla Internetu)

Jiew Meng
źródło

Odpowiedzi:

18

Spójrz na Project Euler. Nie ma nic podobnego do doskonalenia podstawowych umiejętności programowania.

Robert Harvey
źródło
2
+1. Zaletą Project Euler jest to, że możesz implementować rozwiązania w dowolnym języku, a następnie je porównywać / kontrastować.
Thomas Owens
1
+1 - Świetna odpowiedź! Otworzyłeś siłownię dla naszych mózgów.
Karthik Sreenivasan
6

Obecnie piszę regex parsera / dopasowywania i jej nauczanie mi ogromną ilość o parsowania i automat skończony i samych wyrażeń regularnych, między innymi. Szczególnie uważam, że parser wyrażeń regularnych jest przydatny, ponieważ język wyrażeń regularnych jest mały i ma dość ograniczone możliwości.

Inną rzeczą, którą zrobiłem, było napisanie tłumacza dla Ooka! , co jest prostym zadaniem, ale jeszcze raz uczy cię tony.

Chinmay Kanchi
źródło
+1 SC Kleene nie była wynalazcą wyrażenia regularnego bez żadnego powodu.
ixtmixilix
2

CodePlex.com wymienia wiele projektów open source, które zostały wykonane przy użyciu C #. Możesz zajrzeć na stronę, aby uzyskać pomysły.

Mamta D.
źródło
2

Możesz także spojrzeć na TopCoder . Ta strona ma świetne algorytmy do nauki i od czasu do czasu prowadzą konkurencję. Ważną zaletą tej witryny jest to, że możesz zobaczyć kod źródłowy innych problemów i dowiedzieć się więcej.

I nawet na stronach SE musisz spojrzeć na CodeGolf .

Mrówki
źródło
1

(Jest to głównie odpowiedź mat, a nie lista projektów).

Zastanów się, dlaczego piszesz program: Czy będzie on przydatny sam w sobie, czy może będzie to wyłącznie nauka jednego z narzędzi / interfejsu API / języka?

W tym drugim przypadku korzyścią jest to, że wynikowy program jest tak krótki, jak to możliwe, a następnie przechowywany w celach informacyjnych.

W pierwszym przypadku dlaczego nie rozszerzyć nauki na dobre praktyki pod każdym względem: załóż, że będziesz musiał ją utrzymać i rozszerzyć. Dlatego używaj kontroli źródła, śledzenia problemów, refaktoryzacji, testowania jednostkowego ... ponieważ wszystkie te rzeczy są co najmniej tak samo ważne dla programisty, jak znajomość innego API.


A co z integratorem kanałów:

  • Źródła RSS / Atom
  • Obsługuj Twittera za pomocą jego interfejsu API (i usuwaj skróty linków)
  • Na podstawie źródła zezwala na wtykowe przetwarzanie końcowe (np. Pobieranie plików mp3 z kanału podcast)

(Chodzi o to, aby skupić się na integracji różnych implementacji tego samego paradygmatu: zaplanowane pobranie HTTP kanału RSS vs. Twitter API vs.… wszystkie z nich są pod strumieniem wpisów ze znacznikiem czasu, źródłem i treścią.

Richard
źródło
dzięki. myślę, że jest to zgodne z tym, co myślę, zintegrowanie z usługami internetowymi. myślę też abt aplikacje różne aplikacje, które używają różnych funkcji języka. na przykład. za pomocą edytora tekstu próbowałem zintegrować wstążkę wpf
Jiew Meng
1

Dużo się nauczyłem, pracując nad tego rodzaju moimi projektami hobby:

  • Proste gry (klon węża, klon kółko i krzyżyk itp.)
  • Wygaszacze ekranu

Nie wspominając - tego rodzaju projekty są niesamowicie przyjemne w pracy :-).

sabiland
źródło
1

Zaprogramuj małą grę: jest fajna i dużo się uczysz.

Jakieś pomysły:

  • Saper
  • Tetris
  • Gra karciana
  • Wąż

A kiedy już to zrobisz, dlaczego nie wdrożyć witryny z najlepszymi wynikami ...

Carra
źródło
0

Spyrograf. Określ wymiary zewnętrznego pierścienia, dysku wewnętrznego i pióra wzdłuż jego średnicy. Narysuj ścieżkę pióra, gdy wewnętrzny dysk toczy się po wewnętrznej stronie zewnętrznego pierścienia.

Zmień Maker. Koszt wejściowy i kwota przekazana kasjerowi. Oblicz optymalne dla bankomatu do wprowadzenia zmian. Istnieje wolny i szybki sposób na rozwiązanie tego problemu. Znajdź szybki sposób.

Symulacja OO-Life. Wyszukaj Algorytm życia. Stwórz losowy stan początkowy i wypisz kolejne kroki, używając projektu OO do oddzielenia logiki od prezentacji. Podaj dane wyjściowe tekstu i grafiki.

Missionary / Cannibals Solver, spójrz na tę słynną łamigłówkę. Napisz program, aby go rozwiązać za pomocą drzew wyszukiwania. Porównaj BFS z DFS.

Aaron Anodide
źródło