Jak napisać własny program?

0

Witam.

Moje pytanie jest może banalne , ale nie wiem jak zacząć. Czytam przeróżne kursy , książki ale w dalszym ciągu nie potrafię sam nic napisać. Znalazłem w internecie wypociny jakiegoś kogoś , kto stwierdził że siedzenie nad teorią to strata czasu. Ja sam wole praktyczne podejście , i tu proszę Was o pomoc. Powiedzmy ze chce napisać na początek zwykła grę tekstowa. Żadnej grafiki , tylko informacje. Od czego musze zacząć? Jak się do tego zabrać? Nie chodzi mi o gotowe rozwiązanie , a o tok myślenia. I jeszcze jedno pytanie. Skoro za dużo teorii jest be , to skąd mam wiedzieć co mi faktycznie jest potrzebne a co można pominąć i wrócić w razie potrzeby? Dzięki z góry

0

IMHO, kodowanie jest jedną z tych pięknych dziedzin, gdzie teoria jest równie ważna, jak praktyka. Cieżko Ci będzie robić cokolwiek "praktycznie", nie mając teoretycznych podstaw. Dlatego "za dużo" teorii wcale nie jest "be". Twój sposób myślenia będzie ewoluował nie tylko poprzez praktykę, ale także i czytanie tego, co ktoś mądry napisał. Także moja rada - nie rezygnuj z książek i zacznij od pisania najprostszych programów, by w miarę upływu czasu pisać coraz bardziej zaawansowane. I druga rada: koduj, koduj, koduj. To trochę jak z przejechanymi kilometrami u początkującego kierowcy :)

0

Zacznij pisać własne wersje programów, które są w ksią<ort>rz</ort>ce, połączysz teorie z praktyką.

0

Teoria jest ważna , wiem. Nie chodzi o to ze nie chce się tego uczyć. Chodzi o to ze chce to zobaczyć w praktycznym programie a braki w teorii nadrabiać na bieżąco. Nie wiem po prostu jak zacząć. Otwieram Eclipse , tworzę klasy i co? Jestem ciekawy czy ktokolwiek rozumie o co mi chodzi :)

0

nie prościej zobaczyć jak zbudowane są już gotowe proste programiki ? sam coś pozmieniaj, sam zobaczysz jak działają poszczególne funkcje, nikt raczej teraz nie siada i nie pisze od podstaw tylko opiera się na tym co już jest ;)

0

Ale w książce są jakieś przykłady z matematyki które w moim mniemaniu są bezużyteczne. W przykładowym programie który ma wyświetlać kilka przycisków i jakieś dane , totalnie niepotrzebna jest mi silnia czy PI. Jak wdrożyć tak zdobyta wiedzę w praktyczny program?

0

Czysteskarpety masz może jakiś konkretny programik na myśli? Może to jest pomysł , bo kiedyś ściągnąłem kod zrodlowy jakieś gry ale była zbyt rozbudowana i się zgubiłem... jeśli masz dostęp do czegoś na czym mogę to pojąć , będę wdzięczny.

3

Powiedzmy ze chce napisać na początek zwykła grę tekstowa. Żadnej grafiki , tylko informacje. Od czego musze zacząć? Jak się do tego zabrać?

możesz zacząć od HelloWorlda, a potem go rozbudowywać.

Gra tekstowa wymaga tego, żeby program coś pisał, więc musisz i tak przerobić tutorial z HelloWorlda.

Po tym jak zrobisz program, który pisze HelloWorld, to możesz go wzbogacić o dodatkowe opcje, np. o opcję interakcji (czyli interaktywny HelloWorld - komputer pisze "jak się nazywasz", ty piszesz "Jan Kowalski", komputer odpisuje "cześć, Jan Kowalski").

Potem dalej to komplikujesz, dodając kolejne opcje, np. dodając "bazę danych" w grze (w cudzysłowie, bo tą "bazą" może być zwykła tablica czy inna struktura danych). Wtedy użytkownik coś będzie pisał, a komputer będzie sprawdzał to w tablicy.

I tak dalej, żeby to coraz bardziej rozbudowane było. (chociaż już pewnie na tym etapie mógłbyś zrobić prostą paragrafówkę).

Jednak, ponieważ jeszcze masz mało doświadczenia, w pewnym momencie dojdziesz do momentu, kiedy twój kod zacznie być tak chaotyczny, że sam się nie możesz w nim połapać. I jest to czas na... wyrzucenie wszystkiego/większośći tego co napisałeś i zaczęcie od nowa (to normalne, że najpierw pisze się prototyp a potem dopiero pisze się naprawdę).

Wtedy już będziesz mógł wyciągnąć pewne wnioski na ile teoria zgadza się z praktyką, co było dobrym pomysłem co złem. Wtedy też będziesz mógł lepiej zaprojektować program, i zrobić go lepiej następnym razem. Będziesz mógł też przewidzieć więcej problemów, które się pojawią przy okazji implementacji.

Czyli: dobrze jest zacząć od czegoś małego, potem dodając małymi krokami kolejne funkcje. Dobrze jest również nie mieć sentymentu do swojego kodu i jak trzeba to przepisać coś od nowa, albo przerobić (na tym etapie jeszcze nie masz z tym do czynienia, ale robiąc cokolwiek większego zrozumiesz co mam na myśli).

2
TvCc napisał(a):

Moje pytanie jest może banalne, ale nie wiem jak zacząć. [...] Powiedzmy ze chce napisać na początek zwykła grę tekstowa. Żadnej grafiki, tylko informacje. Od czego musze zacząć? Jak się do tego zabrać? Nie chodzi mi o gotowe rozwiązanie, a o tok myślenia.

Tok myślenia jest dość prosty. Podobnie jak w innych twórczych dziedzinach zwykle idea najpierw rodzi się w głowie. W Twoim przypadku niech będzie to gra tekstowa. Idea "gra tekstowa" jest jednak niczym więcej, jak prostym, nietkniętym blokiem marmuru. Żeby przekształcić go w "grę tekstową" musisz:

  1. Zobaczyć i przemyśleć: (i) ogólny kształt; (ii) szczegółowy kształt. To jest, musisz sobie odpowiedzieć na pytania "co ta gra ma robić", "jak ma to robić", "jak ma wyglądać", "jak się zachowywać", "w jaką funkcjonalność ma być wyposażona", "jakie informacje udostępnia, a o jakie prosi użytkownika" itd. Tworzysz schemat swojej aplikacji. Opracowujesz jej strukturę i zachowanie.
  2. Dobierasz narzędzia. Wybierasz język, API i rozwiązania, które są dopasowane do Twoich potrzeb.
  3. Zaczynasz rzeźbić. Najpierw główne, duże funkcjonalności, a potem coraz bardziej szczegółowe i wyspecjalizowane, pamiętając jednak o całości zaplanowanego aktu stworzenia.
  4. Weryfikujesz swoją pracę iście psychotycznie - testujesz, debugujesz, myślisz (<- najważniejszy aspekt programowania; nie klep na pałę; wszystko ma być przemyślane).
  5. Kontynuujesz cykl dłubania i testowania, aż monotonny, poszarzały blok nieciekawego kamulca zmieni się w iście zjawiskową, skrzącą się niczym cyrkon z czeluści Wezuwiusza, grę tekstową. O! Nazwij ją "Klątwa Wezuwiusza" i opisz przygodę z alternatywnej linii czasu przed kataklizmem w Pompejach. Wiesz, młody, butny etrusk wścibia nos tam, gdzie nie trzeba i dowiaduje się, że za wzmożoną aktywnością sejsmiczną góry stoją bogowie, którzy ostatecznie okazują się być cofniętymi w czasie illuminati.

Rozumiem Twój problem. Jednak zrozum, że sam musisz sobie wypracować "procedurę tworzenia". Każdy robi to troszkę inaczej, bo każdy z nas ma inny mózg (serio). Dlatego chyba nie ma co się zbyt długo rozwodzić nad poradami z cyklu "jak mam kodzić?" tylko podrzucić listę pomysłów na apkę i krzyknąć "nie pie$#%@#!, tylko zabieraj się za kodzenie, jeżeli chcesz kodzić, bo samo się nie zakodzi".

W/w lista:
http://www.linuxtrainingacademy.com/projects/

0

Może to głupie, ale zbuduj najpierw program programowania :)
Tak czy siak musisz mieć jakieś podstawy, żeby programować, czyli najpierw zaprogramuj siebie.

Najlepiej sporządzić sobie listę potrzebnych informacji do dobrego programowania.

  1. Podstawy jakiegoś języka,
  2. Umiejętność debbugowania tych programów, trzeba umieć sobie jakoś radzić z błędami.
  3. Znajomość programowania obiektowego, w tym języku, w którym się programuje, wiedze teoretyczną jak i praktyczną. Każdy większy projekt jest obiektowo pisany, więc do programowania gier jest to najlepsze rozwiązanie, wszystko ładne i schludne.
  4. Algorytmy można zrobić w innej kolejności, dużo jest funkcji gotowych do rozwiązywania tych zadań więc nie trzeba koła na nowo tworzyć, ale warto wiedzieć jak one działają bo są interesujące.
  5. Można dodatkowo douczyć się assemblera, wystarczą podstawy będziesz wiedział jak działa procesor no i każdy program można podejrzeć w memonikach assemblera i wywnioskować jak on działa, no i możesz kraść pomysły w analityczny sposób.
  6. Dobrze wiedzieć jak działają różne pliki, graficzne, dźwiękowe, wykonywalne, tekstowe.
  7. Dobrze też liznąć jakiegoś API systemowego na którym pracuje system.
  8. No i jak interesuje cię grafika 2d i 3d to dobrze jest się z takową biblioteką zapoznać, bo na nowo pisać tą bibliotekę w asemblerze to może być bardzo czasochłonna czynność, a chyba lepiej się skupić na zadaniu.
  9. Na koniec dobrze sobie rozpisać na kartce, albo narysować problem jak byś go wykonywał czynność po czynności, żeby spełnił swoje zadanie i potem tylko przepisujesz na kod danego języka :)
    np. a) Pobierz liczbę od użytkownika.
    b) dodaj do niej 5
    c) wypisz etc.
    d) wyjdz
    Takie powierzchowne czynności.
    Później takie powierzchowne czynności rozbijasz na mniejsze, aż do rozbicia problemu :P

Tyle wiedzy wystarczy żeby samemu sobie radzić z każdym napotkanym problemem.
Ewentualnie zawsze możesz wiedzy różnej szukać na stronach jakiś uczelni, zazwyczaj udostępniają wiedzę studentom i za pomocą google można się do tego dobrać, a zawsze ładne pdf'y mają i są w łopatologiczny sposób napisane.
Ewentualnie videotutki na youtube etc.

2
TvCc napisał(a):

Ale w książce są jakieś przykłady z matematyki które w moim mniemaniu są bezużyteczne. W przykładowym programie który ma wyświetlać kilka przycisków i jakieś dane , totalnie niepotrzebna jest mi silnia czy PI. Jak wdrożyć tak zdobyta wiedzę w praktyczny program?

Szczerze? Na przykładzie silni dowiadujesz się o rekurencji, która wbrew pozorom przydaje się w momencie kiedy nigdy byś nie pomyślał, że się przyda.

0

.

0
TvCc napisał(a):

Czysteskarpety masz może jakiś konkretny programik na myśli? Może to jest pomysł , bo kiedyś ściągnąłem kod zrodlowy jakieś gry ale była zbyt rozbudowana i się zgubiłem... jeśli masz dostęp do czegoś na czym mogę to pojąć , będę wdzięczny.

jakie konkretnie to możesz sam poszukać
ja może dodam na przykładzie javascriptu, że tutki nie były dla mnie zbyt pomocne, oglądałem, czytałem, nic to w sumie nie dawało, tylko suche dane do wpisywania
z czasem sam pościągałem proste skrypty, (typu tylko dołącz do head czy body) zainstalowałem wamp managera i zmieniałem wartości, sprawdzałem funkcje, zobaczyłem jak poprawnie pisać kod, dodawać komentarze, odnośniki itp. jak czegoś nie wiedziałem to doczytywałem
potem zabrałem się za "grubsze" czyli kilka plików, html+css+js, też poprawne dodawanie do wordpress za pomocą wp_enqueue_script() i wp_enqueue_style() i inne magiczne cuda :)
jakbym miał się rzucić na wejście na skrypty na kilkaset linijek to też bym się zniechęcił
;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1