Jak podobne są języki programowania?
Вставка
- Опубліковано 7 вер 2024
- Co to znaczy, że języki programowania są do siebie podobne? Na czym polega i jak duże jest to podobieństwo? Zobaczymy konkretny przykład - implementację algorytmu FizzBuzz w piętnastu różnych językach.
➡️ Roadmapa programisty - Czego, kiedy i dlaczego się uczyć, żeby zostać programistą: roadmapaprogra...
➡️ Pobierz darmowego ebooka "Jak zostać programistą - krok po kroku": www.jaknauczyc...
🔥 Subskrybuj kanał: www.youtube.co...
📸 Instagram: / jaknauczycsieprogramow...
📘 Grupa na Facebooku: / jaknauczycsieprogramow...
✉️ Mail: kamil.brzezinski@gmail.com
Bez C#? 😥
chcesz udowodnić wizualne podobieństwo to pętle i instrukcje sterujące są dobrym wyborem, jednak są różnice, które widać nawet w takich prostych przykładach, ale nie słychać Twojego komentarza do nich... np. kwestia wymuszania OOP w Java z "paskudnym" wołaniem println, czy obowiązkowy start programu od funkcji Main w C... itd. przydałby się pogłębiony materiał, bo to może być bardzo ciekawe dla osób zastanawiających się co dalej ;-) poza tym na przykładzie Pythona pozornie podobna pętla "for" kryje pod spodem zupełnie inną logikę, która jest bliższa pętlom "for each" w innych językach, nie wspominając już od kwestii iteratorów i protokołów... to wizualnie podobne ale zupełnie inne niż "for" w Java!
Jasne, im bardziej będziemy zagłębiać się w różne języki, tym więcej różnic między nimi będziemy dostrzegać. I dobrze, że te różnice są, bo dzięki temu mamy różne narzędzia do różnych zastosowań :)
Istotą tego odcinka było pokazanie, że podobieństwo jest na tym elementarnym poziomie - bo praktycznie jakiegokolwiek języka byśmy nie wzięli, to na pewnej płaszczyźnie logika będzie wyglądać tak samo, a klocki, z których budujemy nasze aplikacje, gdy spojrzymy na nie z bliska, skrywać będą te same konstrukcje - instrukcje warunkowe, pętle oraz instrukcje do wykonania. I z tego powodu nie ma co się bać próbować różnych języków, a także - gdy stawiamy pierwsze kroki w programowaniu - nie ma sensu zbyt mocno skupiać się na wyborze tego pierwszego języka, tylko po prostu trzeba nauczyć się, o co w tym programowaniu w ogóle chodzi.
A myślę też na pokazaniu różnic i podobieństw różnych języków (może nie piętnastu, ale wybiorę tak ze 3-5) na jakimś konkretnym, bardziej rozbudowanym przykładzie - myślałem o jakimś prostym REST API z komunikacją z bazą danych :)
@@JakNauczycSieProgramowania - dobry pomysł, czekam na efekty :-)
Wiem, że to, co napiszę jest naiwne, ale naprawdę szkoda, że pewne składnie, sposoby zapisu, wyświetlania itp. nie są ustandaryzowane. Ja wiem, że to nie problem ogarnąć że w jednym języku będzie print(), w innym echo(), a w innym system.out.println() (piszę z pamięci, może być błąd), ale już np. po przesiadce z javascript na naukę pythona pewne małe rzeczy irytują. Ile to razy miałem na czerwono, bo postawiłem średnik, dałem klamry, albo zamiast 'and' wpisałem &&. Nie wszystko się da, ale myślę, że silnik pythona mógły zinterpretować &&, jako 'and' i odwrotnie, a edytor dałby tylko żółty wykrzyknik z informacją "chłopie, mieszasz składnie", a nie zaraz na czerwono :)
Aż mi się przypomniało, jak się zrobiłem w konia. Dawno temu, jeszcze w szkole omawialiśmy javę. Kod z rzutnika przepisałem IDEALNIE linijkę po linijce i nie działa. W końcu znalazłem błąd.
zamiast
System.out.println()
miałem:
System.out.printIn()
A ty widzisz błąd?
Rozwiązanie niżej
.
.
.
.
.
.
.
.
Pisząc z dużych liter dla zobrazowania, ma być: System.out.PRINTLN(), a z racji że wyglądało to dokładnie tak samo, to ja miałem System.out.PRINTIN()
Bez wyjaśnienia sam nie zauważyłem hah. Masz w zupełności rację.
Clojure jest dziwny na pierwszy rzut oka, reszta bardzo podobna do siebie. Można się uczyć :D
Clojure jest na pewno interesujący ; ) Uncle Bob jest ogromnym fanem:
blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html
blog.cleancoder.com/uncle-bob/2020/04/09/ALittleMoreClojure.html
I niesamowite jest na ile sposobów można w nim napisać tak prostą rzecz jak FizzBuzz: eddmann.com/posts/fizzbuzz-in-clojure/
@@JakNauczycSieProgramowania Przeczytałem pierwszy artykuł - jestem pod wrażniem. Natomiast w Twoim kodzie chyba powinno być range 1 101 :D. Pytanie czym jesty doseq i zero?. a po :let to co tam jest wygląda jak lista składana :D
Mało było o Clojure (a tylko ten przykład znacząco się różni), gdyby nie zatwardziały fan wykładowca na uczelni, to małobym wiedział o sensie używania języków funkcyjnych. Zdaje się że Haskell byłby w tym aspekcie ciekawy :)
Clojure to jest przygoda :D Ja autentycznie ten kod pisałem 2h, bo nie chciałem przepisywać rozwiązania z internetu (a była cała masa różnych implementacji), tylko stwierdziłem, że zrobię to po swojemu. I pomimo tylu lat doświadczenia, pisania w różnych językach, czułem się jakbym pierwszy raz w życiu pisał kod ; )
Będę musiał coś nagrać o językach funkcyjnych :)
A co do Clojure, to Uncle Bob jest nim zachwycony:
blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html
blog.cleancoder.com/uncle-bob/2020/04/09/ALittleMoreClojure.html
I polecam też kod projektu, który stworzył właśnie przy użyciu Clojure: github.com/unclebob/spacewar
Czyli jak zacząłem od C++ to nie spieprzyłem nic?
Jeśli w c++ będziesz w stanie coś więcej napisać, to inny język nie będzie dla Ciebie najmniejszym problemem, bo wystarczy poznać jego ekosystem, a c++ w moim mniemaniu to jeden z cięższych języków głównie przez aspekt tego, ze jest typowym low level językiem i jest dosyć stary, ale po dziś dzień używany głównie z takich aspektów jak wydajność i low level.
W C++ mozesz sie zakopac i miec problemy z przeskoczeniem na inne jezyki, dodatkowo duzo rzeczy tam sie rozwiazuje samemu, dlugi czas sie trzaska "kalkulatory" w konsoli i jezyk nie determinuje do zaciagania jakichs paczek i innych tego typu rzeczy, jak to jest w przypadku jezykow wyzszego poziomu. Piszac w C++ latwo popasc w puapke pt "nauczylem sie zeby wszystko robic samemu.". Jest to niewydajne z punktu widzenia komercyjnego. Programowanie to przede wszystkim umiejetnosc znajdowania i laczenia komponentow, ktore ktos wykonal juz wczesniej. Podejscie ala poznam komputer od srodka (c++) bardzo dokladnie nie do konca sie u mnie sprawdzilo, polecam zaczac od wspomnianycb jezykow wyzszego poziomu. Moze byc ciezej na poczatku, ale to chyba wyrobi dobre nawyki i skroci droge do celu. Piszac w c++ latwo jest zakopac sie w dlugim dlubaniu od podstaw programow, ktore w innych jezykach sa bardziej uzytkowe i pisze sie wielokrotnie krocej. Chyba ze chcesz polaczyc c++ z elektronika, automatyka, czy urzadzeniami embedded, czyli takimi, ktore zawieraja cos w rodzaju minikomputery. Wtedy polecam C++, jesli choc troche interesuja Cie prad, napiecie itp. W przeciwnym wypadku raczej polecalbym jakies python, javascript, c#. Uwazam, ze C++ ma niski prog wejscia, ale w pozostalych jezykach zdobywa sie szybciej wiedze, podczas gdy w C++ nieraz rozwiazuje sie lamigowki. Z punktu widzenia komercyjnego, C++na start moze wcale nie byc najlepszym wyborem.
W przykładzie z JAVY, PHP i GO jest od zera wypisywane co może wprowadzić w błąd, że pętle w tych językach działają inaczej.
Faktycznie, mój błąd! Efekt przyzwyczajenia, bo jednak w 99% sytuacji pętlę for zaczynam od 0, także ten początek "for (int i = 0..." to w zasadzie pełen automatyzm, palce same to piszą ; ) Dzięki za zwrócenie na to uwagi!
@@JakNauczycSieProgramowania Tak, właśnie myślałem, że przez automatyzm. Chciałem tylko o tym wspomnieć, żeby nie było niejasności.
@@zuku05 To framework, do tego mam zainstalowany motyw Powerlevel10k, tutaj jest fajny artykuł na ten temat: medium.com/macoclock/how-to-make-your-terminal-pretty-using-ohmyzsh-and-powerlevel10k-19484f2a48b7
Jestem ciekaw jak wyglądałby ten kod w assemblerze :)
Tutaj jest kilka przykładów: rosettacode.org/wiki/FizzBuzz/Assembly :)
12.20 Dlaczego tłumacząc kod mówisz procent 15? To nie jest procent. To jest modulo lub mod i nie ma nic wspólnego z procentem. Można tez nadmienić ze mod wyrzuca 1 gdy jest reszta i 0 gdy jej nie ma. Nie wyrzuca natomiast ile wynosi reszta.
Mówię procent, ponieważ w JavaScript operator modulo zapisujemy przy użyciu znaku procenta. A czym jest operator modulo tłumaczę wcześniej, w 6:05.
I nie jest tak jak piszesz, że operator modulo zwraca 1 lub 0. Operator modulo zawsze zwraca resztę z dzielenia czyli 10 % 5 zwróci 0, 11 % 5 zwróci 1, a 13 % 5 zwróci 3.
@@JakNauczycSieProgramowania Co do reszty zwracam honor (miałem na myśli dzielenie przez 2, zawsze 0 lub 1), ale co do tego procenta to znak procent występuje w matematyce, lub jako znak ASCII 37,w zmiennej string. Tutaj nie powinno paść to słowo ponieważ od strony kodu i w tym miejscu to już nie jest znak, a jest to operator i oczywiście jest podobny do procenta w edytorze tekstu, ale jego znaczenie jest tu całkiem inne. Chodzi mi o pewny brak konsekwencji i mieszanie znaczeń. Dla ucznia moim zdaniem to bardzo ważne aby od razu nabierać dobrych manier programisty. Czy skorupka za młodu nasiąknie... itd
@@psychotechniczne straszne, jeszcze ktos nie zrozumie o co chodzi z tym procentem, sprawdzi w google co robi i poszerzy wiedze
Czy będzie jakiś odcinek o mockowaniu np. z wykorzystaniem Mockito i JUnit5 oraz zasadach związanych z BDD ?
Kiedyś raczej na pewno tak, ale ciężko mi dokładnie powiedzieć kiedy :)
Tak z ciekawości, czemu w Go nie sprawdzamy %15 tylko %3 && %5?
A to po prostu przeoczenie z mojej strony :) Możesz jak najbardziej zrobić %15.
Bez C++ na miniaturce? 🤔
Odcinek super
C++ nie ma, ale jest C :)
Siema, czy np. PL/SQL zaliczasz do programowania?
W PL/SQL nie miałem jeszcze okazji pisać, ale jak najbardziej tak :)
Hej może coś z innego tematu ale czy mógłbyś mi ocenić kanał i czy w dobrym kierunku idę, jest on też o programowaniu z góry dziękuje.
PS: Mam 14 lat i nie wszystko niestety wiem
Siema, bardzo fajne materiały! Dałem suba i będę obserwował jak się kanał rozwija :)
Jaki masz na niego plan? Jak często planujesz publikować nowe materiały?
Odezwij się do mnie na maila: kamil.brzezinski@gmail.com albo na instagramie: instagram.com/jaknauczycsieprogramowania/ to podzielę się z Tobą jeszcze kilkoma drobnymi uwagami :)
W każdym wieku człowiek jest w stanie się nauczyć programowania ? Czy to będzię trudne ?
Generalnie tak, ja się zaczynałem uczyć mając jakieś 12 lat, znam też osoby, które nauczyły się programowania mając >35 lat. To czy będzie trudne, zależy w dużym stopniu jak definiujemy trudność. Na pewno nauka programowania wymaga dużo nauki, wielu godzin spędzonych na pisaniu kodu i rozwiązywaniu problemów. Często ta nauka wiąże się jednak z dużą dawką satysfakcji wynikającej z tworzenia rzeczy od zera, także w takich momentach człowiek nie myśli za bardzo o tym, że jest trudno, tylko wkręca się w to coraz bardziej i chce uczyć się dalej. A Ty ile masz lat i w jaki sposób zainteresowałeś się programowaniem?
@@JakNauczycSieProgramowania Kończę niedługo 25 lat. Mam chęć aby zmienić pracę i otoczenie swoje. Lubię siedzieć przed komuterem i tworzyć coś nowego więc zacząłem myśleć o programowaniu. Zaczałęm uczyć się troche Java i Python z kursów online z Udemy.
@@QuQu545 pozdrawiam, 33 lata na karku kilka miesięcy temu zaczęłam się uczyć programowania z myślą o zmianie pracy :)
Ja mam 38 lat i 3 lata temu skusiłem się na naukę programowania. Teraz pracuję już w IT od pół roku i kończę studia. Co prawda pracuję jako tester automatyczny, a nie programista, ale dojdziemy i do tego:) Można się tego nauczyć w każdym wieku, ale trzeba wygospodarować sobie sporo czasu na naukę. Chyba, że tak jak ja nie śpieszysz się za bardzo :)
Ja studia zacząłem w wieku 29, teraz mam 30, dobrze pierwszego roku nie skończyłem a będę rozpoczynał staż jako DevOps także nigdy nie jest za późno:)
Nie zostal wymieniony język C#
No może jeśli F# i C# to to samo.
Jestem zielony jeśli chodzi o te rzeczy dopiero zaczynam
Nie, to różne języki. W C# kod będzie bardzo podobny do kodu w Javie. A od jakiego języka zaczynasz?
@@JakNauczycSieProgramowania osobiście zaczynałem w szkole, a później kontynuowałem dla siebie Pythona. Korzystałem także z Pańskich filmów na ten temat. Znając już pewne podstawy, chciałem pójść o krok dalej i zacząć się uczyć języka wykorzystywanych najczęściej do tworzenia gier (programuje jako hobby zaczynam tworzyć proste gierki, nie wiąże z tym przyszłości). Wyskoczyło mi C++ i C# do silników takich jak Unity czy Unreal Engine. Stąd to pytanie :D.
rust to najlepszy jezyk wedlug mnie
pisze w nim btw
Pisze w php oraz trochę w node. Ostatnio próbowałem w rust :P jednak różnica jest duża
czy bedzie odcinek o trudniejszych zagadnieniach niż fizzbuzz?
Myślę o tym, żeby zrobić odcinek, w którym postawimy REST API w kilku różnych językach, nie będzie to może jakieś wyjątkowo rozbudowane API, ale na pewno da to pewne spojrzenie na możliwości różnych języków w tym temacie.
Zajesmerfny kontent, dobre info, fajne poradniki... Ale mam jedno ale... Gadaj 2x wolniej :D