Myśleć jak programista..

0

Witam :) Wiem, może to trochę śmieszne pytanie, ale dręczy mnie od pewnego czasu.
Czy da się nauczyć myśleć jak programista? A jeśli tak, to jak to ćwiczyć?
Wiem, dziwne pytanie lecz.. jestem obecnie na 2 semestrze studiów informatyki, jestem też w policealnej na 4 semestrze. Czyli w policealnej miałam trochę Pascala, a studia to pierwszy semestr C/C++ tera c# i C++.
Zarówno w policealnej i na studiach za wiele nie tłumacza, a są jeszcze inne rzeczy do ogarnięcia.

Jeśli mam kod to potrafię go przeanalizować, ale sama nie jestem w stanie nic stworzyć. Brak mi takiego bakcyla, nie umiem myśleć logicznie i nie wiem jak to co chcę przemienić w kod.

Da się "nauczyć myślenia" czy może już za późno? A jeśli się da, to co polecacie robić, czytać?

Zależy mi :)

0

uczyć się, pisać proste programy... dopytywać się, jak czegoś nie wiesz... :]

4

Zacznij robić zadania ze SPOJ-a.

3

A moim zdaniem dodatkowo oprócz np. SPOJ-a, to pisać własne projekty, mniejsze, potem co raz większe i wyszukiwać jak można napisać to prościej i lepiej oraz wzorować się na kodzie bardziej doświadczonych. Czyli nauka na własnych błędach. Podstawa to imo pisać jak najwięcej co raz to nowszych i innych rzeczy i człowiek sam się wtedy edukuje co i jak, że tu może być inaczej, a tu lepiej i szybciej itd.

0

Spróbuj poczytać książkę (i porobić z niej zadania - to ważne, bo one są na myślenie) "Perełki oprogramowania" Bentley'a (naprawdę dobra i ciekawa). Popróbuj trochę algorytmiki - zadania oprócz SPOJ-a również main.edu.pl - zadania z różnych konkursów. Spróbuj pokminić zadania z olimpiady informatycznej, następnie możesz czytać rozwiązania (są w niebieskich książeczkach na oi.edu.pl) i sprawdzisz jak blisko wzorcówki byłaś, później jeszcze spróbuj zaklepać dane zadanie i przepchać na sprawdzarce maina.

0

Jako, że jakiś rok temu miałem ten sam problem i również tutaj pytałem to odpowiem co pomogło mi :).
Miałem problem identyczny, wiedziałem co się dzieje w programach, znałem składnie, tylko jak dochodziło co do czego to nie wiedziałem jak się zabrać po

#include <iostream>

oraz int main ()

 :).
Po prostu z kolegą zacząłem pisać "grę" w konsoli. Na początku nie wiedziałem jak się za to zabrać, więc znalazłem poradnik w Internecie. Przeanalizowałem kod i zobaczyłem jak działa, ale on nie był skończony - był napisany gdzieś tak w połowie, może nawet mniej. Więc nie zostało mi nic innego jak skończyć ten projekt.

Po drodze okazało się, że wiele rzeczy trzeba przerobić, pojawiło się naprawdę wiele różnych problemów, nad którymi myślałem godzinami. Ale nie ułatwiałem sobie szukając rozwiązań w Internecie - myślałem dopóki nie wymyśliłem (no prawie, bo musiałem zastosować inne odświeżanie tekstu w konsoli, żeby obraz nie migał, a tego nie umiałem zrobić). W końcu nie skończyłem, bo zatrzymałem się w momencie generowania sensownych map - ciężko było wygenerować mapę, na której woda nie przeplata się co literkę z terenem.

Ale w końcu takie doświadczenie nauczyło mnie od czego zacząć. Później czytając wątki dowiedziałem się o SPOJ-u (tak jak wyżej zaproponowali inni użytkownicy) i zacząłem robić właśnie tamte zadania. Teraz nie mam już takiego problemu z wykorzystaniem tego co potrafię. Oczywiście do sprawnego programowania czeka mnie jeszcze dużo pracy i kodu naklepanego, ale pisanie programów to chyba jedyny sposób, żeby faktycznie się tego nauczyć :).
0

Nie chce się mądrzyć jako laik ale czy robienie zadań ze SPOJa na prawdę pomoże autorce tematu?

Są na tym forum programiści, wg. których szeregowemu programiście w ogóle nie potrzebna jest znajomość algorytmiki. Być może nie jest to do końca prawda ale algorytmy na pewno nie są kluczowe na początek (no chyba, że ktoś ma aspiracje na OI/mistrzostwa świata itd.).

Moim zdaniem trzeba po prostu pisać i starannie obmyślać rozwiązania napotkanych problemów.

6

Trudno sprawić aby programistka zaczęła myśleć jak programista. Musiałabyś całkowicie zmienić swoje życie.

  1. Przestań spotykać się z ludźmi po zajęciach! Widywać się ze znajomymi możesz tylko na facebooku w przerwach od kodowania.
  2. Zostaw na kompie tylko IDE i Web Browsera. Wszystko inne wywal.
  3. Stawiaj sobie zadania do realizacji. Brakuje Ci jakiejś prostej funkcjonalności w Twoim środowisku pracy? Masowa zmiana nazw? Dopisywanie dat na zdjęciach? Spróbuj sobie to sama zaprogramować. Może chcesz napisać jakąś aplikację do portfolio? Zacznij ją robić, szukaj informacji na temat realizacji podstawowych zadań aplikacji. Czyli np. pisząc przeglądarkę obrazków nie piszesz w google "jak napisać przeglądarkę obrazków", tylko szukasz informacji "jak pokazać obrazek na ekranie", "jak pobrać listę plików z katalogu", "jak powiększać/zmniejszać obrazek" itd.

Zgadzam się z podejściem, że SPOJ to przesada. Wiadomo, ktoś musi jeszcze pisać "serce" współczesnych programów. Ale algorytmika jako tako często została już opakowana w odpowiednie biblioteki. Np. mechanizmy sortowania struktur danych, min, max. Oczywiście robienie prostych przykładów (prostszych niż te ze SPOJa) może być owocne na początek.

3

Zgadzam się z podejściem, że SPOJ to przesada. Wiadomo, ktoś musi jeszcze pisać "serce" współczesnych programów. Ale algorytmika jako tako często została już opakowana w odpowiednie biblioteki. Np. mechanizmy sortowania struktur danych, min, max. Oczywiście robienie prostych przykładów (prostszych niż te ze SPOJa) może być owocne na początek.

Bez przesady, autorka tematu jest na pierwszym roku studiów informatycznych - powinna bez problemu pisać proste zadania ze SPOJ-a. Należy pamiętać, że osoba, która kończy rok studiów nie jest kompletnie zielona (zakładam, że na każdej informatyce klepie się mniej lub więcej na I roku).

0

Dzięki za odpowiedzi ;)

Owszem, w pierwszym semestrze mieliśmy uczelnianego Spoja - ale jak to bywa.. mieliśmy robić średnio jeden zestaw na tydzień, i przychodziło co do czego to jeden gościu ratował cały rok ;) Z chyba 7 zestawów zatrzymałam się na 3.
Zakładałam konto na ogólnym spoju, zrobiłam parę zadań i zamierzam do tego wrócić ;)

Problem leży w tym, że czytam treść zadania i kompletnie nie wiem jak się za to zabrać. Kompletna pustka, o ile umiem po ludzku rozumieć w czym problem, tak na kod nie potrafię tego przerobić. Brak mi tej kreatywności. I nawet nie chodzi jedynie o zaliczenie na tych studiach, bo w sumie co mi po tym.. ale żeby naprawdę coś potrafić ;)

Dzięki za rady ;)

4

Skoro umiesz "zrozumieć po ludzku o co biega" to abstrahując od jakiegokolwiek kodu podziel sobie problem na jak najprostsze kroki do wykonania.Jak nie będzie wiadomo jak dany krok przerobić na kod,to dziel go na podkroki.I takim oto sposobem rozbijesz sobie problem na składowe łatwe do przeniesienia na kod.

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