Jakbym chciał zostać programistą...

OP
Antoni Wiech

Antoni Wiech

paranacjonalista
Członek Załogi
3 667
5 031
No dobra. Powrót do oryginalnego tematu wątku.
Nie chcę zostać programistą (na razie, a w krótkim i średnim terminie na pewno). Ale doskwiera mi że nie tylko nie umiem programować, ale w ogóle nic nie wiem o programowaniu.
A coś chcę wiedzieć.
Zakładam że obecni tutaj programiści potrafią spojrzeć na wyżej wytłuszczone zadanie jak na program i coś mi poradzić na początek.

Może podam przykład metaforycznie obrazujący o co mi chodzi. Mój wuj, lat 66, dostał do łapy tablet. Nie był w ogóle zaznajomiony z ideą obsługi dotykowej ekranu, z jakąkolwiek interakcją z urządzeniem, no i bardzo słabo z internetem jako takim. Co wymyśliłem? Zainstalowałem szachy, w które wuj grać umie i kazałem mu grać, na poziomie ultra-super-easy. Grał parę dni, dopóki nie przeszedłem do etapu drugiego.

NIE zacząłem od obsługi przeglądarki internetowej, youtube czy pornhuba. Niczego nie tłumaczyłem, zacząłem od pierwszego kroku, to jest interakcji przy użyciu oczu i palców z ekranem, w znanym wujowi środowisku (szachownica).

Wracając do mojej sprawy: czy jacyś tutejsi programiści potrafią podejść do mojego zadania w analogiczny sposób?
Jeśli chciałbyś więcej wytłumaczenia teoretycznego plus pewną wizję zanim zaczniesz klepać w klawiatę to polecam to:

Mi ten styl nie podszedł, bo ja wolę szybszy styl narracji i powiedźmy jakieś podstawy złapałem. Ale jak ktoś startuje od zera i chciałby mieć jakieś intro wprowadzające bardziej ogólne to myślę, że ten kurs jest niezły.

Ze swojej strony dodam, a mam małe doświadczenie ale udało mi się napisać wiele linijek (głównie php), że jeśli ktoś jest logikiem to powinien ogarnąć programowanie. Według mnie główny problem polega nie na załapaniu abstrakcji, ale nauczeniu się składni. Ja np. potrafiłem spędzić godzinę bo mi coś nie pyknęło, bo nie wstawiłem gdzieś ";", albo kropki itp. Po prostu kod od strony logicznej był ok, ale brakowało właśnie odpowiedniego znaku. Dlatego początki bywają trudne i wymaga to zaparcia. Powodzenia!
 
OP
Antoni Wiech

Antoni Wiech

paranacjonalista
Członek Załogi
3 667
5 031
A słuchać co pan Kompilator o kodzie rzeknie nie łaska?
Słuchać, słuchać... problem w tym, że w dużej części to wiele nie daje, szczególnie na początku. Kod się potrafi wywalić kilka linijek później, bo np. odwołuje się do zmiennej zadeklarowanej kilka linijek wyżej i bez dużego doświadczenia nie jest łatwo to wyłapać. Lub też stwierdza, że nie jest w stanie przeprowadzić danej operacji. I teraz nie wiadomo, czy jest użyta zła komenda, a może po prostu brakuje tylko jakiegoś średnika.
 

NoahWatson

The Internet is serious business.
1 078
2 503
@tolep

Tylko po co? Jesteś wystarczająco inteligentny, żeby prowadzić rozpoznanie walką i wyciągać odpowiednie wnioski. Jak zaczniesz od C, a później C++ to żaden język, poza asemblerami, nie będzie Ci już straszny.
Inteligentny ale raczej leniwy, a w czystym rasowo C trzeba się dużo napisać, by coś zrobić. A dobrze pisany pod względem jakości C++ to już w ogóle sporo nauki, bo trzeba wiedzieć zarówno z punktu widzenia architektury minimum (projektowanie w programowaniu zorientowanym obiektowo, zasady, wzorce projektowe), jak również bardziej niskopoziomowe z rzeczy jak zarządzaniem pamięcią i połączenie jednego z drugim.
I nie zgodzę się, że C to aż tak uniwersalny język, bo to język imperatywny. Jak przejrzie do języka, których chociaż w części swoich założeń od początku miał elementy funkcyjne to wiele osób czuje się nieswojo. Dla mnie np brak zwykłego, imperatywnie sterowanego for-a (inicjalizacja, warunek, inkrementacja) i zamiast tego for na iteratorach (z prawdziwego zdarzenia, a nie tylko Java'owy Iterable<T>) to było już coś, co było dla mnie początkowo niekomfortowe.
Słabo się znam na Pythonie i sam inaczej zaczynałem, ale podążył bym za głosami ekspertów i go wybrał na początek.
 

bombardier

Well-Known Member
1 404
6 506
Inteligentny ale raczej leniwy [...]
Niespecjalnie, skoro chce nabyć nową umiejętność...

a w czystym rasowo C trzeba się dużo napisać, by coś zrobić. A dobrze pisany pod względem jakości C++ to już w ogóle sporo nauki, bo trzeba wiedzieć zarówno z punktu widzenia architektury minimum (projektowanie w programowaniu zorientowanym obiektowo, zasady, wzorce projektowe), jak również bardziej niskopoziomowe z rzeczy jak zarządzaniem pamięcią i połączenie jednego z drugim.
Właśnie ze względu na "niskopoziomowe rzeczy" polecam C i C++. Zdarza się, całkiem nierzadko, że później to procentuje. Nie twierdzę, że jest to jedyna słuszna droga; takowej nie ma.

Gdyby postawił sprawę sensownie ("Chcę robić to i to. Czego się uczyć - jakie kursy, materiały, tytuły i w jakiej kolejności?") to można by sensownie odpowiedzieć. A tak to wypada przede wszystkim polajkować GAZDĘ. :D
 

tolep

ChNiNK! ChP!
7 846
13 965
No dobra. Niech będzie python :)
Teraz pytanie uzupełniające.

Podajcie przykład pierwszego użytecznego, praktycznego zastosowania nauki programowania (np. w Pythonie) które będę mógł wykonać po opanowaniu kilku początkowych etapów.
 

Brehon

Well-Known Member
555
1 388
Napisałeś grę sudoku czy program do rozwiązywania sudoku? To drugie wcale nie jest takie trywialne, nie spodziewałbym się aby ktoś zupełnie nowy wykorzystywał backtracking czy dancing links w swoim pierwszym programie.
Do rozwiązywania sudoku. Tyle że nie zaimplementowałem metody siłowej, tylko kilka "inteligentnych" metod, jakie ja sam stosuję przy rozwiązywaniu sudoku. Dlatego nie rozwiązywało każdego sudoku, tylko te łatwiejsze. Zgadza się, użycie backtrackingu do rozwiązywania sudoku nie jest banalne, też miałem z tym wtedy problem.
 
Ostatnia edycja:

kompowiec

Open Source Boy
1 728
1 769
@tolep

@tolep - Poucz się Pythona. Ale tak naprawdę, dobre podstawy dał mi 3 dekady temu podręcznik Niklausa Wirtha "Algorytmy + struktury danych = programy" z 1976 roku.
fajnie że polecasz coś co znasz ale w informatycznym świecie to muzealna cegła ;] już różnice pomiędzy python 2 a 3 są kolosalne a tu takie coś? :(

Ja od siebie polece takie popularne repo:
https://github.com/EbookFoundation/free-programming-books
 
Ostatnia edycja:

kompowiec

Open Source Boy
1 728
1 769
Takie poradniki jak sam wyżej dałem świetnie się nadają jak ktoś już zna przynajmniej parę języków, bo tu po prostu ogarniasz składnię i jedziesz z tematem, a osoba która jeszcze nie wykształciła myślenia o programowaniu ogólnie, jako gramatyka wspólna dla prawie wszystkich języków to się nie nada i co więcej, zrobi mętlik w głowie.

A co do tego, zauważyłem że najbardziej przystępne kursy dotyczą przede wszystkim Javascriptu. Niee :(
 

tosiabunio

Grand Master Architect
Członek Załogi
6 797
14 064
fajnie że polecasz coś co znasz ale w informatycznym świecie to muzealna cegła

To, że jest to stara rzecz, nie zmienia faktu, że porusza podstawowe tematy, które ulegają przedawnieniu. Owszem, pewne algorytmy tam opisywane nie mają już zastosowania, ale podstawy pozostają. Owszem Wirth posługuje się Pascalem w przykładach, ale tym bardziej polecam to, aby poznać zasadę działania poszczególnych algorytmów i umieć je zaimplementować samodzielnie już w wybranym języku (tu Pythonie), a nie przeklepać je z książki.

Zapewne są nowsze dzieła o podobnej treści, ale nie zauważyłem, abyś polecił coś konkretnego, co mogłoby z tym konkurować, więc prosiłbym, abyś więcej nie zabierał się za ocenianie przydatności czegoś, czego nie znasz.
 

piezol

Jebać życie
1 092
3 718
No dobra. Niech będzie python :)
Teraz pytanie uzupełniające.

Podajcie przykład pierwszego użytecznego, praktycznego zastosowania nauki programowania (np. w Pythonie) które będę mógł wykonać po opanowaniu kilku początkowych etapów.
Pierwszy przykład z brzegu - założenie folderów w formacie /YYYY-MM-DD/ na rok wprzód, bo debile administratorzy nie byli tego w stanie ogarnąć, a nasza aplikacja wymagała istnienia takich folderów.
Dużo też możesz się nauczyć, jeśli na przykład znajdziesz jakieś dane w internecie, które chciałbyś sobie upakować w swoją bazę danych - chociaż tu z góry uprzedzam, że o wiele bardziej przyjazne będzie ruby, ze względu na więcej możliwości integracji z np. phantomjsem. Ogólnie jak stawiasz piwo a jestem w posen to można przysiąśc ;)

A na marginesie - jestem jednak zwolennikiem uczenia się podstaw programowania w C. Nie dlatego, że 'śmiertelnicy nie przetrwają', po prostu przechodząc warstwę abstrakcji wyżej (i znając struktury danych) człowiek bardziej ogarnia, jaki narzut powoduje jakie działanie.
 
Do góry Bottom