Gdy się chce programować ale nie wie się jak się do tego zabrać

1

Witam Was wszystkich. Obecnie stuknęło już mi 26 wiosenek i jakimś trafem trafiłem tutaj do Was na forum. Przyczyną pewnie była chęć poznania sztuki programowania. Skończyłem studia ale można by tak rzec nie kierunkowe jeśli chodzi o programowanie. Informatka jako dziedzina mnie pociąga. Tylko jest te jedne "ale" Ni ciorta nie potrafię programować. Chciałem się Was zapytać w jakim kierunku warto doskonalić swój kunszt programowania i nie chodzi tylko o języki programowania ale także jak zacząć uczyć się programować tak aby szybko rozumieć sens pisania aplikacji a nie tylko bezsensowne klepanie kodów. Interesuje się pisanie aplikacji tzw. biznesowych a także tworzeniem bazy danych pod względem eksploatacji dany takie jak hurtownia baz danych, data mining. Ile czasu uczyliście się aby stwierdzić "Tak, chcę teraz sprzedać swoje umiejętności jakiemuś pracodawcy by ten mi płacił za jakiś projekt" itp. Ile godzin dziennie trzeba posiedzieć przy nauce?

4

jak zaczynałem programować byłem w podstawówce. internet wtedy nie był zbyt popularny, a w moim mieście nikt nie miał na ten temat żadnego pojęcia. jak w czasach kiedy internet jest na porządku dziennym możesz mieć problem z takimi rzeczami?

jeśli programowanie nie jest Twoim hobby, a tylko chcesz na tym dobrze zarabiać to sobie odpuść.

0

Ile czasu uczyliście się aby stwierdzić "Tak, chcę teraz sprzedać swoje umiejętności jakiemuś pracodawcy by ten mi płacił za jakiś projekt" itp. Ile godzin dziennie trzeba posiedzieć przy nauce?

Jestem pasjonatem i na informatykę oraz programowanie poświęciłem niezliczoną ilość czasu, tysiące godzin, podczas których uczyłem się wszystkiego co mnie w danej chwili zainteresowało. Były to zarówno rzeczy przydatne z perspektywy przyszłej kariery, jak i nieprzydatne, których nigdy nie wykorzystałem. Ciężko powiedzieć, ile tego było. Z pewnością mogę zliczyć ilość książek, które przeczytałem - było ich około 50. Książki dotyczyły programowania, algorytmiki, grafiki komputerowej, budowy komputerów, sieci komputerowych, a nawet pisania wirusów. Gdy potrzebowałem pracy, to złożyłem CV i ją dostałem, nie doszkalałem się jakoś specjalnie przed jej podjęciem. Z tego też powodu ciężko mi jest określić ile czasu potrzebuje laik na nauczenie się programowania na poziomie, który pozwoli mu zarabiać. Podejrzewam, że wystarczy jakieś 40 godzin nauki na opanowanie PHP, HTML, CSS oraz MySQL na poziomie, który pozwoli napisać pierwszego pokracznego CMS'a i zarobienie na tym kilkudziesięciu-kilkuset złotych.

0

@asot nie żebym gasił entuzjazm, ale skoro nie potrafisz programować, to wiesz w ogóle na czym polega "pisanie aplikacji biznesowych" albo o co chodzi w "hurtowniach danych"? Czy wyczytałeś gdzieś ze ludzie którzy sie tym zajmują mają pięciocyfrowe wyplaty i ty też byś chciał? Ale wracając do tematu: jeśli pierwsze co zrobiłeś to napisałeś na forum zamiast poszukać odpowiedzi na własna rękę, to programowanie nie jest dla ciebie.

0

Czemu chłopaka demotywujecie, chyba nie boicie się konkurencji? Czy absolwenci kulturoznastwa są jacyś gorsi, że nie mogą programować?

0

To inaczej zapytam, co Was inspiruje w pracy jako programista, że wybraliście ten zawód a nie inny ;) Na początek kupiłem książki o algorytmach aby zbudować solidne fundamenty.

0

Ale też mi nie chodziło o dostęp do źródeł, bo z tym nie jest problem. Chodzi mi o to JAK się uczyć aby się nauczyć. Wiem, że każdy przypadek jest indywidualny i jeden szybko się nauczy a drugi wolniej. Ale czy mieliście w swej przygodzie z programowanie własne autorskie sposoby nauki :) Bo mój problem polega na braku organizacji dnia a raczej jego braku jak wracam zmęczony z pracy (pracuje w bankowości) i jedyne co marzę to albo walnąć się dowyra lub trochę rozruszać kości na siłowni by nie "zasiedzieć się"

0

W takim razie proponuje założyć sobie zeszycik i posiedzieć nad jakąś książką, robić notatki w zeszyciku itd.
W końcu zrozumiesz.

0
White_Rabbit napisał(a)

W takim razie proponuje założyć sobie zeszycik i posiedzieć nad jakąś książką, robić notatki w zeszyciku itd.
W końcu zrozumiesz.

Zeszycik? IDE i kompilator...

5

Najlepszą metodą nauki programowania jest... programowanie.

5

Najlepszym sposobem na rozpoczęcie programowania jest rozpoczęcie programowania.

0

To inaczej zapytam, co Was inspiruje w pracy jako programista, że wybraliście ten zawód a nie inny

Rozwiązywanie problemów. Refaktoryzacja kodu. Budowanie wirtualnych zamków.
Dla mnie programowanie to sposób na dążenie do ładu i porządku.

Chodzi mi o to JAK się uczyć aby się nauczyć.

Na początek dobrze jest sobie ogarnąć jedną książkę, która uczy od podstaw. Jednocześnie polecam pl.spoj.pl. Jak ogarniesz wszystkie łatwe i połowę średnich, wróć po dalsze instrukcje ;)

1

nie wszyscy są stworzeni do myślenia algorytmami : ]

0

Na początek dobrze jest sobie ogarnąć jedną książkę, która uczy od podstaw. Jednocześnie polecam pl.spoj.pl. Jak ogarniesz wszystkie łatwe i połowę średnich, wróć po dalsze instrukcje

A ja polecam projecteuler.net . Jest bardziej zorientowany na rozwiązanie problemu niż na klepanie dla samego klepania przez co jest 100x bardziej praktyczny (chyba że ktoś zamierza być czystym algorytmikiem, wtedy spoj jest OK).
Jakoś mi się spodobał, w ramach nauki Haskella rozwiązałem ostatnio 45 zadań w tym pięknym języku :>. Tymczasem konto na spoj daawno temu założone siedzi nieruszane.

0

Kodowanie i taką książkę - "Pragmatyczny Programista".

0

(chyba że ktoś zamierza być czystym algorytmikiem, wtedy spoj jest OK)

Chyba odwrotnie. Dla mnie SPOJ to arena do walki z wczytywaniem danych i zbijaniem stałych w złożoności. Na projecteuler.net można zapomnieć o problemach z wczytywaniem oraz nie ścigać się desperacko ze stałymi w złożonościach.

0

@Wibowit, bo po prostu nie ma czegoś takiego jak "bardziej optymalny". Optymalny, to najlepszy w zakładanych warunkach. Warunki te obejmują również dane wejściowe - tutaj możemy zastosować różne kryteria, np. najszybszego wykonania dla danych optymistycznych, albo najszybszego wykonania dla danych pesymistycznych. Jeśli dla jakichś kryteriów mamy jakiś algorytm optymalny, to nie ma znaczenia, że inny algorytm jest szybszy dla innych danych, bo to są inne warunki.
Nawet jeśli uznasz, że kryterium ma być złożoność równa minimalnej możliwej, to algorytm będzie optymalny tylko i wyłącznie, jeśli będzie miał taką właśnie złożoność.
Jasnym jest, że w danej chwili nie możemy użyć algorytmu, który nie istnieje. Ten, który znamy i jest najlepszy teraz, jest właśnie optymalnym. Jeśli zaś w przyszłości zostanie wymyślony lepszy algorytm, to on stanie się optymalnym, zaś ten obecny po prostu przestanie takim być. Nigdy jednak żaden z nich nie będzie bardziej optymalny.

1

Ten, który znamy i jest najlepszy teraz, jest właśnie optymalnym. Jeśli zaś w przyszłości zostanie wymyślony lepszy algorytm, to on stanie się optymalnym, zaś ten obecny po prostu przestanie takim być. Nigdy jednak żaden z nich nie będzie bardziej optymalny.

Że tak pozwolę zapytać: źródło? :D
Algorytm wg ciebie może przestać być optymalny? To arcyciekawe. Sprytne wybiegi stosujesz.

Ponadto wybór "najlepszej" złożoności czasem jest nierozstrzygalny (?) - np jeśli mamy dla jakiegoś problemu dwa algorytmy, jeden o złożoności O(A * sqrt(B)), a drugi O(A lg A + B). Który jest lepszy?

Optymalny, to najlepszy w zakładanych warunkach.

Na SPOJu, w przeciwieństwie do projecteuler.net, nie znamy w ogóle danych wejściowych, wiemy tylko o jakichś tam ograniczeniach na te dane. A więc stwierdzenie "bardziej optymalny" może być, w przypadku braku wystarczającej informacji o warunkach, metaforą dla stwierdzenia: optymalny z większym prawdopodobieństwem.

0
Wibowit napisał(a)

Że tak pozwolę zapytać: źródło? :D
Algorytm wg ciebie może przestać być optymalny? To arcyciekawe. Sprytne wybiegi stosujesz.

Jeśli kryterium jest najszybsze rozwiązanie danego zadania, to nowo wymyślony szybszy algorytm będzie lepszy od starszego, więc to on będzie optymalny. Gdzie tu wybieg i po co źródło?

Ponadto wybór "najlepszej" złożoności czasem jest nierozstrzygalny (?) - np jeśli mamy dla jakiegoś problemu dwa algorytmy, jeden o złożoności O(A * sqrt(B)), a drugi O(A lg A + B). Który jest lepszy?

Ten, który jest rozwiązaniem zadania optymalizacyjnego doboru algorytmu dla danego problemu przy danych ograniczeniach. W szczególności rozwiązań może być wiele, jedno lub wcale.
Złożoność to jedynie cecha algorytmu, to nie jest to samo, co optymalność.
A Ty sprawiasz wrażenie, jakbyś próbował zdefiniować obiektywną optymalność algorytmu, czegoś takiego nie ma.

Tak czy siak, stwierdzenie "bardziej optymalny" nie ma sensu, bo nie ma sensu stwierdzenie "bardziej najlepszy". Albo jest najlepszy, albo nie jest, i to jest fakt, z którym trudno dyskutować, to chyba jedna z niewielu kwestii, w której zgadzają się humaniści i umysły ścisłe.

2

Hmm, pojęcia powszechnie używane to:

  • rozwiązanie optymalne - pojęcie w którym chodzi o wynik, a nie zasobożerność. Wynik ma być najlepszy pod jakimś tam względem.
  • algorytm asymptotycznie optymalny - http://en.wikipedia.org/wiki/Asymptotically_optimal_algorithm jak wynika z artykułu, algorytm asymptotycznie optymalny ma najniższą możliwą złożoność, a więc niekoniecznie jakikolwiek z poprawnych algorytmów, będzie asymptotycznie optymalny. Jeżeli dolna granica na złożoność jest poprawnie udowodniona, to algorytm nie może przestać być asymptotycznie optymalny; z drugiej strony, jeżeli dolna granica była źle obliczona, to wcześniejsze algorytmy nigdy nie były asymptotycznie optymalne,
  • jeżeli mamy iść tokiem rozumowania somekinda i stwierdzić, że algorytm optymalny to algorytm, który jest najmniej zasobożerny dla podanych danych wejściowych spośród wszystkich znanych algorytmów, to w zasadzie można olać poszukiwania algorytmu asymptotycznie optymalnego. Nie znalazłem jednak nigdzie takiej definicji optymalności, jaką proponuje somekind. Pewnie dlatego, że taka definicja jest niezbyt naukowa i w pracach naukowych zwykle określa się najszybsze algorytmy jako po prostu najszybsze, a nie jako optymalne,

Dla mnie stwierdzenie "bardziej optymalny" jest nadal tak samo bezsensowne jak możliwość "stracenia optymalności" proponowana przez somekinda. No chyba, że jednak ktoś znajdzie naukowy papier na poparcie takich, dość oryginalnych, tez.

1

Wyjaśnienie z drugiego myślnika brzmi rozsądnie, zatem algorytm nie przestaje być optymalny, jak ja to ująłem, tylko po prostu nigdy takim nie był. I tutaj się zgadzam, bo nie przeczy to najważniejszej kwestii, czyli braku "bardziej optymalnych" algorytmów.
Zresztą, to słowo chyba faktycznie bardziej pasuje do rozwiązań zadań niż do algorytmów, chociaż z drugiej strony, jeśli mamy do rozwiązania jakiś problem i chcemy wybrać najlepszy w danej sytuacji algorytm, to czyż nie będzie on w tym momencie optymalnym (w sensie rozwiązania problemu)?

0

Zajrzałem do słownika języka polskiego :D

http://sjp.pwn.pl/slownik/2569876/optymalny napisał(a)

optymalny «najlepszy z możliwych w jakichś warunkach»

A więc definicja definitywnie określa, że optymalny to najlepszy możliwy, a nie najlepszy aktualnie opracowany. Ponadto zakłada, że znamy warunki, a więc w przypadku SPOJu nie znamy dokładnie warunków - dane wejściowe są niewiadome, a opis nieprecyzyjny.

0

Jest Wielkanoc a Wam się zachciewa urządzać kłótnie :P

0

Witam wszystkich, studiuję informatykę i tak się zastanawiam nad moją przyszłością w branży...
Niestety nie znam nikogo kto programuję zawodowo, wiec pozostaje mi liczyć na odpowiedź tutaj.
Powiem wam że chcę programować, ale chyba nie umiem, za trudne to jest dla mnie?

Chciałbym się dowiedzieć jaki jest poziom trudności programowania w pracy.
Czy jest to zwykłe powielanie schematów, pisanie schematyczne programów bez stosowania górnolotnych algorytmów,
bez udziwnień typu programista AI. Za to co poniektórzy otrzymują kwoty 5 cyfrowe?

Może konkretniej: Napisz algorytm Calier - nie potrafię sobie poradzić z tym problem.
Podobnie algorytmy grafowe, napisanie gry kółka i krzyżyk 9x9 czy AI do szachów.
Nie ukrywam że język znam, to wystarczy w branży, wystarczy być przeciętniakiem?
Czy mam jakieś szanse w IT?

0

Studia Cię nie nauczą tyle co praca. W pracy wszystko zaczynasz od nowa :)

0
mat32 napisał(a)

Za to co poniektórzy otrzymują kwoty 5 cyfrowe?

Za zrobienie formularza, do którego użytkownik może wpisać jakieś dane, potem wcisnąć przycisk "zapisz" i dane znajdą się w bazie, czasami przy okazji trzeba coś policzyć. Oczywiście najpierw trzeba wszystko przemyśleć i jakoś zaprojektować.

Nie ukrywam że język znam

Jaki?

0

C/C++ j.angielski dość:) no i teraz zaczynamy MySQL

0

Może konkretniej: Napisz algorytm Calier - nie potrafię sobie poradzić z tym problem.
Podobnie algorytmy grafowe, napisanie gry kółka i krzyżyk 9x9 czy AI do szachów.
Nie ukrywam że język znam, to wystarczy w branży, wystarczy być przeciętniakiem?
Czy mam jakieś szanse w IT?

Algorytmy grafowe potrzebne są algorytmikom, AI do szachów dla tych którzy się sztuczną inteligencją zajmują, ok. Ale kółko i krzyżyk 9x9 (a raczej n x n), chociażby w konsoli, to coś co każdy powinien być w stanie napisać wybudzony o czwartej nad ranem, z pistoletem przystawionym do głowy - to po prostu jest... banalne?

Chciałbym się dowiedzieć jaki jest poziom trudności programowania w pracy.
Czy jest to zwykłe powielanie schematów, pisanie schematyczne programów bez stosowania górnolotnych algorytmów,
bez udziwnień typu programista AI. Za to co poniektórzy otrzymują kwoty 5 cyfrowe?

Zwykły programista? Wzorzec projektowy, SOLID, DRY, KISS, polimorfia, etc, etc.

1
mat32 napisał(a)

C/C++ j.angielski dość:) no i teraz zaczynamy MySQL

Pokaż mi swoje blizny wpierw.

0

Ale kółko i krzyżyk 9x9 (a raczej n x n), chociażby w konsoli, to coś co każdy powinien być w stanie napisać wybudzony o czwartej nad ranem, z pistoletem przystawionym do głowy - to po prostu jest... banalne?

Wydaje mi się, że koledze raczej chodziło o napisanie AI do kółka i krzyżyk.

Czy jest to zwykłe powielanie schematów, pisanie schematyczne programów bez stosowania górnolotnych algorytmów,

W 99% to jest powielanie schematów i klepanie podobnego kodu. 1% to praca, która wymaga myślenia, znajomości ezoterycznych dziedzin jak algorytmy czy statystyka.
Tak więc jeżeli nie masz ambicji należeć do tego 1% bycie przeciętniakiem w zupełności wystarcza, żeby zarobić na utrzymanie.

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