Nauka programowania

Od czego zacząć naukę? W jakim programie? Ogólnie potrzebuje pomocy, nie mam pojęcia w jakim języku zacząć czy który język jest przyszłościowy.

Jeśli, wiesz, że nic nie wiesz i szukasz odpowiedzi na forum, to wiedz, że nic z tego nie będzie. Daj sobie spokój z tym.

Przy podstawach programowania nie ma znaczenia czy język jest przyszłościowy. Ja bym jednak szukał czegoś ze składnią C. Uczyć się można np w Java lub C#. Osobiście raczej bym C# polecił, ale to większego znaczenia nie ma, raczej jakość danego kursu tutaj ma większe znaczenie. Tutaj w sensie na początku drogi.

Od czego zacząć?
Nie od nauki języka, a od nauki/kursu programowania.
Następnie trzeba liznąć algorytmów i struktur danych.
Potem można zacząć rozumieć jak działają poszczególne aplikacje (webowe, desktopowe, mobilne) i zdecydować się w którą stronę chce się iść. Jak już ten wybór masz za sobą to wybierasz dopiero język którego się uczysz. A jak uczysz się języka którego zazwyczaj można nauczyć się w kilka dni to uczysz się środowiska (bibliotek, standardów i frameworków) które są wokół tego języka zbudowane i które używa się do pisania aplikacji. Dla C# to np będzie .net jako zbiór biblitek oraz WPF jako framework (celowo nie wspominam o asp, gdyby ktoś chciał mi to zaraz wytknąć)

Z takimi radami na forum to daj sobie spokój sam lepiej. Bo bardzo dobrze, do tego zadał bardzo mądre pytanie. Większość osób uczy się bezmyślnie jakiegoś języka, a nie programowania co jest bez sensu na samym początku.

1 polubienie

Mógłbyś pomóc ze znalezieniem takiego kursu? Nie mam pojęcia co oznacza kurs programowania, zawsze myślałem, że to nauka któregoś z języków np. C++.

Algorytmy i struktura danych np.
https://zasoby1.open.agh.edu.pl/dydaktyka/informatyka/c_algorytmy_i_str_danych/index630b.html?go=zapis

W jakim sensie zapoznanie się z poszczególnymi aplikacjami (webowe, desktopowe, mobilne)? Jak się piszę podane aplikacje, czy po prostu wady i zalety?

Kurs programowania łączy się z nauką języka, ale szukałbym takiego który szeroko porusza kwestie programowania, a nie wnika w kwestie danego języka.
Kursów nie znam bo nie korzystałem z takowych.

Link z algorytmami wygląda całkiem, całkiem. Pytanie tylko czy dobrze jest to wytłumaczone.

Różne aplikacje (w sensie danego typu) tworzy się w nieco inny sposób przy użyciu innych technologi oraz projektuje się je w zupełnie inny sposób.

Od rodzaju aplikacji zależy literalnie wszystko;)
W językach, w uproszczeniu, masz podobną logikę, ale różne języki są w innym celu wykorzystywane.
Tzn. na początek powinieneś dowiedzieć się, ze do web programowania potrzebujesz php+html+cms+sql+ wiedzy jak działają serwery, hostingi etc. Nie musisz wkwuać na start html/php, le powinieneś np. umieć zmodyfikować wtyczki Wordpressa. Oczywiście tym nie napiszesz nawet marnego klonu DOS na PC:)

@Oazuk

Nie słuchaj rad użytkownika @Fizyda. W realnym świecie nie są warte funta kłaków. Choć może to zabrzmieć podobnie do cytatu z pewnego filmu, to musisz zadać sobie pytanie co chcesz robić i wtedy rozpocząć swoją przygodę z programowaniem. Nie ma programistów działających bezbłędnie we wszystkich obszarach programowania, a już na pewno nie nauczysz się języka w kilka dni. Jedni ludzie zajmują się tym, inni tym. Tylko @Fizyda na dobrychprogramach zna się na wszystkich kodach i uczy się ich w kilka dni. To już niezmiennie od długiego czasu :wink:

Wybierając kurs programowania, zdecyduj się na coś, co Cię interesuje. Chcesz robić strony internetowe? Idź w tym kierunku. Chcesz pisać aplikacje mobilne? Idź w tym kierunku. Programowanie jest trochę jak prawo jazdy - uczysz się tego, co potrzebujesz. Nie jest prawdą, że we wszystkich językach logika jest taka sama, tak samo jest i na drodze. Porusza się po niej wiele pojazdów, ale nie wszystkie obowiązują te same przepisy.

Sam siedzę w tym biznesie od lat i powiem Ci, że nie ma lepszego przepisu na naukę, niż przykleić się na jakiś czas do osoby, która robi to, co Ty byś chciał. Poszukaj kogoś, kto poświęci Ci trochę czasu. Zapozna Cię ze środowiskiem, narzędziami. Popatrz na to co robi i sprawdź, czy Cię to interesuje.

Od kiedy web dev to php+html+cms+sql? Potem mówisz, że nie trzeba wkuwać htmla na starcie z web devem… ale jak chcesz bez znajomości htmla modyfikować najprostsze rzeczy w WP?
Wracając do php+html+cms+sql, php to chyba najgorszy język do rozpoczęcia nauki programowania. Jest dziadowski i nie jedyny jak chodzi o web dev bo zapominasz o C#, Node.js czy Ruby w których jest więcej ofert pracy i są więcej płatne niż te w PHP. Następnie mamy HTML - bez CSS to tak średnio się przydaje, a znów bez JS to też marny z tego pożytek. CMS? Cóż to takiego, że trzeba to umieć podczas nauki programowania? Jakiś język czy co? Bo ja myślałem, że uczysz się programowania po to by stworzyć aplikację np. typu właśnie CMS. SQL? Raczej trzeba się uczyć relacyjnych baz danych, normalizacji i innych zagadnień bo SQL to tylko narzędzie i jak nie rozumiesz baz to go nie wykorzystasz za bardzo, a samego języka można się nauczyć naprawdę szybko bo nie jest szczególnie rozbudowany jeśli chodzi o podstawowe operacje.

Nie mogę się zgodzić. Poświęci czas na coś co potem okaże się, że nie jest tak fajne jak się wydawało - już to nie raz widziałem, a przejście na inną dziedzinę będzie cofnięciem się do początku. Dlatego lepiej zacząć od ogólnych podstaw które są wykorzystywane w każdym aspekcie programowania i dopiero z tą wiedzą przejść w bardziej specjalistyczne rejony.

Pierwsza część zdania - zgadzam się, ale z jednym małym wyjątkiem. Trzeba mieć pogląd sytuacji w innych obszarach by nie wymyślać koła na nowo oraz by umieć dopiero narzędzie do potrzeb. Czasami łatwiej jest wychylić nos z bezpiecznej dziury i nauczyć się czegoś innego poświęcając na to czas, niż tracić go na to by zrealizować coś na siłę przy pomocy tego co znasz najlepiej.
Z drugą częścią zdania się nie zgadzam. Podstaw samego języka programowania, gdy umie się programować i zna się co najmniej jeden język, można nauczyć się bardzo szybko bo większość rzeczy się w poszczególnych językach powtarza. Czasami różnice są w składni, gdy odbiega ona mocno od składni C, a dodatkowych rzeczy specyficznych dla konkretnego języka jest czasami może i sporo, ale używa się znacznie rzadziej niż całej reszty, a mając dobre źródła również można się z nimi bardzo szybko zapoznać.
Kolejnych języków nie uczysz się po prostu od zera, a na zasadzie różnic - w tedy nauka idzie szybciej i mniej rzeczy trzeba się uczyć.

A specjalistą od każdego języka nie jestem, ba nawet nie uważam się za takiego w choćby jednym języku.

Widać, mamy odmienne zdanie na ten temat, przy czym ja obstaję przy swoim - wybrać jeden kierunek, który będzie się pielęgnować. Innymi rzeczami można się interesować i rozwijać w nich w razie potrzeby. Nigdy nie będzie się potrzebowało wszystkiego na raz, bo nawet nie będzie się człowiek w stanie tego wszystkiego nauczyć w tak krótkim czasie.

Ja pracuję przy sofcie, który zajmuje się optymalizacją pewnych czynności produkcyjnych. Od zawsze ukierunkowany byłem na jeden dział, jeden cel - jak najlepsza optymalizacja, gwarantująca jak najszybsze, a zarazem najoszczędniejsze zarządzanie materiałem. Pozostałe rzeczy, które potrafię zrobić, wyszły same od siebie. Nigdy nie poświęcałem im specjalnie czasu. Potrafię napisać w miarę zaawansowaną stronę WWW, mam nawet swoją prywatną aplikację mobilną do zarządzania zdarzeniami na serwerze. Ale to właśnie moi koledzy są geniuszami od front-endu, choć nie bardzo wiedzą jak to się dzieje, że obracając daną rzecz o jeden raz więcej, można zaoszczędzić X kwoty. Programują interfejs w taki sposób, że nawet osoby mające niechęć do komputerów, potrafią korzystać z naszych rozwiązań. Uczyli się po prostu innych rzeczy, bo w innym kierunku.

Myślę, że się nie do końca zrozumieliśmy, ale mogę się mylić. Ja również uważam, że trzeba się rozwijać w jednym kierunku. Tylko do każdego z nich potrzeba podstaw od których proponowałem zacząć naukę, a jako spróbowanie wszystkich 3 podstawowych typów aplikacji nie miałem na myśli zgłębianie szczegółów, a zwykły research w danym temacie. Poświęcenie jednego czy dwóch dni na zapoznanie się z tematem, napisanie hello wordl i zobaczenie co daje najwięcej frajdy.

…bo tak mniej-więcej tworzy się aplikacje webowe i szablony stron. Nie trzeba też “wkuwać” na dzień dobry całego języka, wystarczy żeby widząc kod strony wiedział co do czego służy. Co odpowiada za zmiany koloru tła , ilości obrazków w sldierze itp. Naprawdę nie potrzeba umieć napisać od 0 eby to zrobić, a im więcej będzie się “babrał”, tym więcej się nauczy i to nie z książki, a z praktyki :wink:

I jak trzeba zrobić cokolwiek poza zmianą tekstu na stronie to zaczyna rozwalać i robić dziwne hacki bo nie wie jak to poprawnie rozwiązać. Jeśli nikt mu nie wytknie błędu to się źle nauczy i powyżej poziomu “klepacza stronek” nie wyjdzie.

Można zacząć od tego, jasne - ale żeby rozumieć idee stojące za korzystaniem z Frameworka niestety ale trzeba mieć przygotowanie teoretyczne.

Dzięki wszystkim za tak obszerne odpowiedzi :wink:

Myślę, że najlepiej na początku będzie zacząć od np. C++ (prostszego języka) i dopiero kiedy będzie się miało jakąś wiedzę zacząć patrzeć na inne języki.

C++ jest jednym z trudniejszych języków, dla większości studentów to jest zmora nie do przeskoczenia bo mało kto rozumie wskaźniki które są jego podstawą. Ja natomiast nie rozumiem jak można tego nie rozumieć. Fakt proste nie jest, ale nie jest to znów coś nie do ogarnięcia.
Niskopoziomowa wiedza jaką trzeba mieć do C++ bardzo się przydaje na każdym poziomie i nie zgadzają się tylko z tym Ci którzy jej nie mają i nie rozumieją C/C++. Sam gdybym miał się uczyć od nowa programowania znów zacząłbym od C++, jednak przez lata nauki widzę, że to się sprawdza dla małej grupy osób. Dla większości najlepiej zacząć naukę od Java lub C#. I kierując się tym ostatnim proponuję jednak C# na początek.

1 polubienie

A gdybym chciał jakiś nowoczesny język programowania po 2010 roku, który pozbył się starych bolączek poprzednich języków programowania takich jak brak Nulla, brak wskaźników, odśmiecanie pamięci, czysta składnia. Do tego nie liczę na to, że zostanę zawodowym programistą i chciałbym coś działającego pod Linux z dobrym IDE. Czy może mi ktoś w skrócie napisać o wadach i zaletach tych nowszych języków programowania, które tu wymieniłem?

Crystal - powstał w 2014 roku, kompilowany, brak nulla, brak wskaźników, odśmiecanie pamięci, składnia jak w Ruby, ale jest bardzo szybki i prosty do nauki. Posiada frameworki do backendu takie jak amber i kemal.


https://amberframework.org
http://kemalcr.com

Scala - niby następca Javy na JVM, (nie wymieniłem tu Kotlin, bo Kotlin to jakby taka nakładka na Jave, korzysta z Javowych bibliotek i można je mieszać pomiędzy sobą, a ja nie chcę się uczyć dwóch języków naraz - czyli Javy i Kotlina dlatego ten odpada) odśmiecanie pamięci, brak wskaźników, brak nulla, prosta składnia, trochę wolniejszy od Javy, ale za to dużo funkcji i ficzerów. Zastosowanie przeważnie korporacyjny backend. Powstała w 2003 roku, najstarszy język z tych co wymieniłem, ale nie było nic lepszego na JVM.
https://www.scala-lang.org
https://www.playframework.com

Rust - bardzo szybki, bezpieczniejsza konkurencja dla C/C++ o czytelniejszej składni, brak nulla, kompilowany coś pomiędzy wskaźnikami, chyba też jest w nim odśmiecanie pamięci, powstają w nim systemy takie jak RedoxOS, oraz wydajne gry i GUI. Pisana jest w nim przeglądarka Firefox i silniki wydajnych gier, wydaje się być trudny dla początkującego. Rok powstania 2010.
https://www.rust-lang.org/pl-PL/
https://azul.rs


http://arewegameyet.com/#eco
http://arewegameyet.com/#games

Swift - kompilowany język programowania od Apple, jest kompilator na Ubuntu, niestety brak dostepnych IDE APPCode i Xcode pod Linux. Brak nulla składnia identyczna co Kotlin, są podobno wskaźniki, odśmiecanie pamięci chyba też jest. Powstał w 2014.

Być może mi doradzicie jeszcze coś innego. Tak jak napisałem szukam nowoczesnego języka dla siebie, który dodaje pewne ułatwienia w programowaniu i jest odporny na wady starości poprzedników.

W skrócie jeśli web / backend /api -> php (teraz 7.3 ma nieporównywalnie większy próg wejścia) -> frameworki laravel /symfony, javascript (typescript) / node

jeśli frontend html / css / javascript (typescript) -> frameworki vue / react

jeśli mobilne aplikacje kotlin / swift

Jeśli mobilne i chcesz jednym kodem pisać na androida i ios -> react native (javascript (typescript)) / dart / flutter (sam pisałem aplikacje mobilne w react native jednak teraz przerzuciłem się całkowicie na flutter od googla)

jeśli nie wiesz tak naprawdę w co iść to javascript daje Ci największe możliwości, dzięki jednemu językowi możesz pisać backend, frontend, aplikacje mobilne i aplikacje desktopowe

Za to polecanie ruby i ruby on rails to jest jakieś nieporozumienie, ruby jest praktycznie martwy i jedynie jedzie jeszcze na respiratorze w postaci ruby on rails gdzie ludzie uciekają od niego najcześciej w elixira i phoenix lub w go

Moim zdaniem javascript to totalne przeciwieństwo potrzeb autora :slight_smile:

Taka sama zasada jak z PHP,:

  • php zły, okropny przestarzały
  • a która wersje ostatnio widziałeś ?
  • coś koło 5 ?

Nikt nie mówi o wersjach języków sprzed 2 lat, tylko o aktualnych

Pewne problemy z tym językiem są i będą w nim na zawsze, ze względu na wsteczną kompatybilność. Problemy w PHP również, choćby totalny misz-masz jeśli chodzi o obiektowy i proceduralny styl programowania. Czy PHP jest szybsze niż parę lat temu? Tak. Czy ma wiele potrzebnych konstrukcji pomagających pisać obiektowo? Jak najbardziej. Czy wciąż sprawdzenie długości tablicy realizujemy przez wywołanie count(tablica) co powoduje proceduralno-obiektowe potworki jak $var = count($obj->arr); zamiast $var = $obj->arr->length? Niestety tak…

[hindus] PHP ma takie złą opinie, bo wypowiadają się ludzie tacy jak ty, którzy nie mają pojęcia za dobrze o tym języku. (oczywiście, mogę się mylić) To co piszesz, to jest wyłącznie winna programisty lub jego lenistwa, ewentualnie w niektórych przypadkach uzasadnione “ułatwienie”. To nie jest winna języka, że programiści nie używają w pełni możliwości PHP.
Większość sytuacji zamiast starej funkcjonalnej array lub [] i count() można podać obiekt tablicy ArrayObject, który ma zdefiniowaną metodę cout() i wtedy już wygląda $var = $obj->arr->count();

Wiec proszę, nie wypowiadajcie się, jeśli nie macie o czymś pojęcia.