Podsumowanie 2018, plany 2019

Po takim czasie to człowiek się zastanawia, jak to właściwie te posty pisało 🙂 W wordpressie się pozmieniało, zalogowałem się, zrobiłem aktualizacje, ponaprawiałem błędy które się pojawiły, a tu jakiś nowy edytor… No ale nic, pora podsumować 2018 i napisać co nieco o planach na rok nadchodzący. Do dzieła!

Czas

Jak każdego roku tak i tego w tle ciągle był włączony Toggl monitorujący czym aktualnie się zajmuję. Zwraca takie wyniki ogólne:

Toggl – wykres ogólny

A takie bardziej szczegółowe:

Toggl – wyniki szczegółowe
Toggl – without client

Warto zwrócić uwagę, że without client zawiera zadania takie jak treningi (16h30m przez cały rok, masakra, ale to i tak lepiej jak 0h tamtego roku), sen, codzienność czyli dojazdy, (często wtedy czytam), bezproduktywne siedzenie, posiłki, i wszystko co zajmuje czas każdego dnia. Company, czyli zadania związane z prowadzeniem firmy (podatki, faktury, obsługa, etc…), oraz DEV, czyli zadania związane z rozwojem. Ale spojrzenie na czas tak naprawdę mówi bardzo mało, zajrzyjmy zatem do projektów.

Projekty

Od początku roku (końcówka stycznia) udało mi się wypuścić drugi kurs na platformie Udemy, czyli Java od podstaw. To był zdecydowanie strzał w dziesiątkę, bardzo dobry i bardzo popularny kurs, przez cały rok zdobył 977 klientów. W międzyczasie zająłem się też Pawłem Klimczykiem i Bartoszem Bonisławskim projektem devPanel. Projekt niestety nie przetrwał próby czasu, to była fajna, ale krótka przygoda, nie mniej, można obejrzeć odcinki które powstały. Do tego Miroburn namówił na start z własnym vlogiem i tak też powstało 30 odcinków, do obejrzenia tutaj. To była fajna przygoda, próbowałem wrócić do tego pod koniec roku, ale po zastanowieniu, nie wiem, czy forma vloga to na 100% to co chcę robić. Ale z video nie rezygnuję, szczegóły poniżej w akapicie plany. Dalej mieliśmy już marzec, tutaj rozpoczynam współpracę z firmą Datarino, nieco wcześniej kończąc współpracę z Aequitas Polska. Następnie kwiecień, kupiłem mieszkanie i przeprowadzałem się, a co za tym idzie było kupowanie i składanie mebli, dużo przewożenia i walka z dostawcą o podłączenie internetu, co ciekawe ta sprawa finalnie rozwiązała się dopiero w grudniu zwrotem pieniędzy za faktury z Orange.

Tutaj się przeprowadziłem

Kolejne miesiące maj i czerwiec, to prace nad kursem zaawansowany Android, oraz wypuszczenie go w nieco innej formie, tzn zamiast kompletnego kursu zobowiązałem się do regularnego dodawania kolejnych części. Niestety, dosyć słabo wywiązuję się z tego zobowiązania, dlatego priorytetem na styczeń jest nagranie tam kolejnego rozdziału. Dalej mamy lipiec i sierpień, w podobnym formacie jak ten powyżej wypuściłem kurs ze Springa, tutaj aktualizacji jest więcej, ale wciąż niestety nie jest idealnie. W tym czasie też udało mi się medytować przez jakiś czas, ale nie czując zmiany – odpuściłem. W sierpniu też zacząłem pomagać Kindze rozwijać projekt http://asystentka.it/ ale póki co nic z niego nie wyszło i przez najbliższe pół roku też nic pewnie nie wyjdzie. We wrześniu: wakacje (oczywiście, że w górach: Kudowa Zdrój, Szczeliniec, Karpacz). Październik upłynął pod hasłem konferencje, odbył się DevFest 2018 który odrobinę pomagałem organizować, byłem w Warszawie i Białymstoku ze swoimi tematami. Do tego zaczęliśmy przygotowania do devAdventKalendarza, oraz do czarnego piątku na Udemy. Listopad to bardzo ciężka praca właśnie nad tymi dwoma tematami, czyli organizacja devAdventCalendar, oraz Udemy.

Lista rzeczy które przygotowałem przed czarnym piątkiem na Udemy.

No i opłaciło się. Listopad to mój najlepszy miesiąc na Udemy kiedykolwiek, ale o tym w osobnym podsumowaniu (mam już na liście zadań, że muszę je napisać), z kolei devAdventCalendar, ponad 1300 zarejestrowanych uczestników, celowałem w 1000 osób, więc jest naprawdę dobrze. Grudzień to przeprowadzenie kalendarza, a także planowanie następnych miesięcy i 1 stycznia, piszę to podsumowanie 🙂

Postanowienia

W tamtym roku miałem 3 główne postanowienia:

  • zmiana firmy z którą współpracuję
  • kupno mieszkania
  • nauczenie się pływać

Cóż, gdybym tylko umiał pływać, byłby to rok idealny 🙂 Niestety, zrezygnowałem w trakcie, dalej chcę się nauczyć pływać, ale jakoś w tamtym roku straciłem motywację do tego zadania. W tym roku póki co tego nie planuję.

Książki

Cóż, zmiana klienta bardzo pozytywnie wpłynęła na moje czytelnictwo, z tego prostego powodu, że dojazd do firmy zajmuje mi teraz masę czasu. A więc, spróbuję sobie przypomnieć wszystkie książki które przeczytałem w tamtym roku:

  1. Tim Ferris – 4 godzinne ciało
  2. Tim Ferris – 4 godzinny tydzień pracy – fajnie otwiera oczy i pokazuje, że można pracować inaczej
  3. Tim Ferris – Narzędzia tytanów – zbiór fragmentów wywiadów, cytatów, prawdziwych ludzi sukcesu, pokazanie sposobu ich myślenia i działania, świetnie obrazuje, że do sukcesu nie ma jednej ścieżki
  4. Radek Kotarski – Włam się do mózgu – zbiór sposobów uczenia się
  5. Robert T. Kiyosaki – Bogaty ojciec, biedny ojciec
  6. Allan i Barbara Pease – Mowa ciała – manual jak interpretować zachowania innych, dosyć zabawny i przydatny
  7. Michał Szafrański – Zaufanie czyli waluta przyszłości – historia sukcesu bloga jakoszczedzacpieniadze.pl, można wyciągnąć coś ciekawego
  8. Michał Szafrański – Finansowy Ninja – klasyk, bardzo dobra książka o zarządzaniu finansami
  9. Michael E. Gerber – Mit przedsiębiorczości – jak dla mnie dosyć dziwna forma, ale bardzo dobra treść, o budowaniu procesów w firmie
  10. Ayn Rand – Atlas Zbuntowany – Andrzej Krzywda polecał, ja również polecam, to trzeba przeczytać (ponad 1000 stron maczkiem,ale warto)
  11. Pat Flynn – Gotowi na start – dostałem w pakiecie u M. Szafrańskiego i okazała się całkiem dobra, poradnik krok po kroku jak wprowadzać produkty na rynek
  12. Kamil Cebulski – Biznes w kraju dziadów – historie zniszczenia biznesów w Polsce przez idiotyczny aparat państwowy, dołująca, pokazująca ryzyko prowadzenia własnej działalności
  13. Mark Haddon – Dziwny przypadek psa nocną porą – ciekawa powieść o autyzmie, miło się czyta, polecam sprawdzić, króciutka
  14. Robert C. Martin – Czysta architektura – dobra książka o budowaniu architektury zależnej od biznesu
  15. Sandro Mancuso – Software Craftsman. Profesjonalizm, czysty kod i techniczna perfekcja – jak być profesjonalnym developerem, trochę tematy z tej książki poruszył Mateusz Budzar tutaj, polecam sprawdzić!
  16. Seth Godin – The Dip: A Little Book That Teaches You When to Quit (and When to Stick)
  17. Walter Isaacson – Innowatorzy, za tą książkę dziękuję Piotrowi Prądzyńskiemu, całkiem fajnie opowiada historię IT
Ayn Rand – Atlas zbuntowany

Plany na 2019

A na deser, najlepsza część, czyli cele na nadchodzący rok. Każdego roku mam wrażenie, że nadchodzące plany są lepiej zorganizowane niż te w poprzednim roku. W tym roku przyczynia się do tego ukończony kurs 3 poziomy który bardzo polecam. W fajny sposób uporządkował całą poprzednią wiedzę o zarządzaniu czasem, zadania i plany, zwłaszcza te z długim terminem.

Odznaka absolwenta kursu 3 poziomy

A co do planów, to spodziewajcie kursu Kotlina. Za darmo 🙂 Planuję też start w „Daj się poznać 2019”. I coś jeszcze. Chcę też zrobić dochód na poziomie 100 000 pln z kursów online. I na razie taką ilością informacji mogę się podzielić. Zapraszam na http://kurskotlin.pl/ jeśli temat Was interesuje i to tyle, życzę zadowolenia z efektów prac w tym roku i.. do dzieła, czeka Nas mnóstwo roboty! 🙂

Kotlin tutorial #3 – loops

Pętle w programowaniu umożliwiają powtarzanie niektórych czynności. Ale nie tylko proste powtarzanie, bo to było bezsensu na dłuższą metę, ale zmianę parametrów, albo ich pobieranie, przetwarzanie według jakichś geometrycznych, lub logicznych zasad. Java posiada 3 główne (może 4, w zależności od tego jaką konwencję nazewnictwa przyjmiemy) rodzaje pętli. Kotlin jednak jak ma to w zwyczaju daje nam dużo więcej możliwości, oraz – elastyczności.

Na początek prosta pętla for, czyli iterująca liczby w zakresie od 0 do 10. W javie:

        for (int i = 0; i < 10; i++) {
            System.out.print("for1 = " + i + ", ");
        }

W Kotlinie:

    for (i in 0..10) {
        print(i)
    }

lub:

    repeat(10) {
        print("repeat10")
    }

No dobra, repeat nie jest pętlą, tylko dodaną do biblioteki standardowej metodą, ale czyż nie jest czytelniejszy? Java wymaga zdefiniowania wartości zmiennej początkowej, warunku, oraz sposobu iteracji. Część z tych elementów może oczywiście znajdować się po za pętlą for, ale nie zawsze potrzebujemy ich wszystkich. Czasem chcemy coś po prostu.. powtórzyć. 😉

Kolejnym typem pętli for jest tzw forEach, który pozwala na iterację bez użycia dodatkowej zmiennej iterującej. W javie przedstawia się tak:

        private static String[] t = {"abc", "cde", "efg"};
        for (String s : t) {
            System.out.print("for2 = " + s + ", ");
        }

Z kolei w Kotlinie:

    val list = listOf("A", "B", "C")
    for(str in list) {
        print(str)
    }

Użyłem przykładu z listą, ponieważ Kotlin nie obsługuje typów prostych, takich jak javowa tablica[].

A co jeżeli chcemy iterować po mapie? Potrzebujemy czegoś na kształt: „for (Map.Entry<String, Object> entry : map.entrySet())”. Z kolei w Kotlinie:

    val map = hashMapOf(1 to "one", 2 to "two", 3 to "three")
    for ((key, value) in map) {
        println("Map[$key] = $value")
    }

Prawda, że przyjemnie? Jest jeszcze coś fajnego, mianowicie pętle foreach możemy wywołać jak metodę, albo funkcję, bezpośrednio na obiekcie na którym operujemy. Tak to wygląda:

    map.forEach {
        print(it.key)
    }
    println()
    (1..5).forEach(::print)
    println()

Słówko kluczowe it odnosi się do bieżącego obiektu. Potrzebowaliśmy np klucza – żaden problem.

Pozostałe dwa typy pętli, które są praktycznie takie same w obydwóch językach nazywają się while i do while. Stosujemy je najczęściej wtedy, kiedy nie znamy dokładnej ilości iteracji, ale istnieje jakiś warunek który zakończy nam działanie pętli. Poniższy przykład jest taki jak w pętli for, ale nie chciałem specjalnie utrudniać, tworząc dziwne warunki, chodzi mi o sam „kształt” pętli.

        //java
        int i = 0;
        while (i < 10) {
            System.out.print("while = " + i + ", ");
            i++;
        }
        System.out.println();
        do {
            System.out.println("do while");
        } while (1 > 10);

    //kotlin
    var i = 0
    while (i < 10) {
        print("while = $i, ")
        i++
    }
    println()
    do {
        println("do while")
    } while (1 > 10)

To by było na tyle, jeśli chodzi o informacje o pętlach. Temat jeszcze powróci, kiedy będziemy omawiali lambdy 😉 Kod w aktualnej wersji znajduje się na GitHubie. Wszystkie aktualne zmiany oczywiście w pakiecie loops. W następnej części opowiem o instrukcjach sterujących w obydwóch językach.

Pozdrawiam!

— status update —

Jak widać, minęło sporo czasu, a kontynuacja kursu Kotlina się nie pojawiła. Pojawi się tutaj: https://kurskotlin.pl/ tak więc tam zapraszam #kurskotlin

Kotlin tutorial #2 – variables

Podstawą chyba każdego języka programowania są zmienne, w których można przechować wartość, którą można modyfikować. Są też stałe, kiedy nie chcemy, żeby przypadkiem coś zostało zmienione (np liczba PI, to wartość stała, nadpisywanie jej zawartości np liczbą 5 i nazywanie PI nie ma logicznych podstaw i będzie prowadzić do błędów). Java i Kotlin mają do tego aspektu podobne podejścia. Są to języki silnie, statycznie typowane, tzn jeżeli nadamy jakiś typ zmiennej, to nie da się go wprost porównać z innym typem, jeżeli np napis ma wartość 1 i zmienna typu liczbowego ma wartość 1, to one nie są sobie równe (szczegóły poniżej). Słowo statycznie oznacza z kolei, że zmienne przyjmują swoje typy w czasie kompilacji programu, a nie w czasie jego działania, jak ma to miejsce np w JavaScripcie. Kotlin posiada tutaj jednak ułatwienie, które nazywa się typowaniem zmiennych.

W praktyce oznacza to tyle, że mamy kod w javie:

        byte b = 127;
        short s = 32767;
        int i = 2147483647;
        final byte fb = 127;
        final short fs = 32767;
        final int fi = 2147483647;

Słówko final oznacza stałą, czyli po przypisaniu wartości nie można już jej zmienić. Zaprezentowane wartości to maksimum, jakie może przyjąć dana zmienna, po przekroczeniu jej zacznie się odliczanie od wartości ujemnych, coś na kształt licznika w samochodzie, tylko że tam nie ma ujemnych, tylko zero 😉 A jak to wygląda w Kotlinie?

    var c = 120
    var d: Byte = 120
    val e = 120
    //val f: String = 120

Słówko var (variables) oznacza zmienną, z kolei val (values) stałą. Druga sprawa jest taka, że na podstawie przypisanej wartości zostaje nadany odpowiedni typ zmiennej. Innymi słowy w tym przypadku domyślny będzie Int, chyba, że po dwukropku wymusimy inny typ. Kod w komentarzu się nie skompiluje, ponieważ do wprowadzania napisów (zmienna typu String) używa się dwóch znaków cudzysłowu: „120”.

W tym miejscu należy też wspomnieć o zmiennej Object w javie, po której dziedziczą wszystkie typy. Nie ma ona zbyt wielu metod, ale posiada equals – zawiera. Używamy jej do porównania zawartości obiektów.

        boolean bool = true;
        char c = 'A';
        final char e = 'E';
        String str = "Hello";
        Object ob = 1;
        int in = 1;

        for(int y = 0; y<10; y++) {
            System.out.print(c++ + " ");
            // System.out.print(e++ + " ");
            // System.out.print(ob++ + " ");
        }
        System.out.println();
        if(ob.equals(in)) {
            System.out.println(bool);
        }

Funkcja ta zwróci następujące wartości:

A B C D E F G H I J 
true

Dzieje się tak ponieważ zmienna typu char jest typem liczbowym, dzięki temu możemy zwiększając jej wartość wydrukować kolejną literę. Nie uda się to w przypadku e i ob, ponieważ jedna z nich jest stałą, druga z kolei jest typem Object, gdzie nie wiadomo jak obsługiwać iterację. Z kolei w Kotlinie:

    var c = 120
    var d: Byte = 120
    val e = 120
    //val f: String = 120
    for (i in 0..9) {
        //println(e++)
        println(c++)
    }
    println()
    for (i in 0..9) {
        println(d++)
    }
    var f = 'A'
    var g = "A"
    for (i in 0..9) {
        println(f++)
        //println(g++)
    }

Otrzymamy taką odpowiedź:

120
121
122
123
124
125
126
127
128
129

120
121
122
123
124
125
126
127
-128
-127
A
B
C
D
E
F
G
H
I
J

Co tu się stało? Po pierwsze iterujemy po c, który domyślnie został zapisany jako int, z racji wysokiego zakresu udaje nam się to bezbłędnie. Po e nie możemy iterować, ponieważ jest stała. Ale za to w zmiennej d wymuszamy typ byte, który może przyjąć wartość max 127, a następnie zaczyna iterację od najniższej wartości. Iterowanie typu char jest takie samo jak w Javie, z kolei Stringa nie można iterować, tutaj również bez niespodzianek. Słówko kluczowe equals występuje również w Kotlinie, działa tak samo jak w javie, innymi słowy porównuje wartości pomiędzy takimi samymi typami. Pojawił się też nowy operator === oznaczający, że oba obiekty mają taką samą referencję (czyli odnoszą się do tego samego obiektu). Wygląda to tak:

    var x = 1
    var y: String = "1"
    var z = x
//    if(x==y)
//        println(true)
    if(x.equals(y))
        println("x.equals(y)")
//    if(x===y)
//        println(true)
    if(x===z)
        println(true)
    if(x.equals(y.toInt()))
        println("x.equals(y.toInt())")

Co z kolei zwraca:

true
x.equals(y.toInt())

Czyli z i x mają tą samą referencję, oraz x ma taką samą wartość jak y, jeśli przekształcimy go na Int.

W podsumowaniu chciałem jeszcze zwrócić uwagę na wielkość liter. Typ zmiennej pisany z małej litery to prymityw, Kotlin już takich nie obsługuje i tam piszemy wszystko z dużej. Prymityw znaczy tyle, że nie jest obiektem, tylko typem prostym mogącym przechowywać jakąś wartość liczbową (char jest prymitywem, ponieważ przechowuje wartości liczbowe). Obiekty z kolei mają dodatkowe właściwości, mogą mieć np wartość null. Kotlin jednakże zabezpiecza nas przed taką ewentualnością.

W związku z powyższym Java posiada mechanizm automatycznego opakowywania prymitywów. Tzn, jeżeli porównujemy obiekt z prymitywem int, to automatycznie zostanie on skonwertowany do obiektu Integer o tej samej wartości. W Kotlinie z racji braku obsługi prymitywów takie operacje nie są potrzebne. To by było tyle na dzisiaj, jak widać mechanizm typowania zmiennych pozwala zaoszczędzić zbędnego kodu. Wszystkie użyte dzisiaj przykłady znajdują się też na GitHubie, zachęcam do samodzielnego pobawienia się 😉

Pozdrawiam!

— status update —

Jak widać, minęło sporo czasu, a kontynuacja kursu Kotlina się nie pojawiła. Pojawi się tutaj: https://kurskotlin.pl/ tak więc tam zapraszam #kurskotlin

Week review #17 – realizowanie planów jest fajne

To był bardzo pracowity tydzień 🙂 Wstawałem wcześnie, pracowałem dużo, czego efekty mam nadzieję było widać 🙂 Jednej rzeczy rozpocząć mi się nie udało – aplikacji o której wspominałem w zeszłym tygodniu. Ale za to mam już niemalże domknięty scenariusz następnego odcinka na YouTube 😉

Noo właśnie – YouTube 😉 Długo się zbierałem, żeby rozpocząć, ale aktualnie mam w notesiku kilka fajnych tematów 🙂 Grupą docelową są osoby zainteresowane programowaniem, albo wcale nie 😉 A także programiści. Reasumując, wychodzi mi, że wszyscy – co wróży dobrze, lub też nie 🙂 Czyli – nie wiem. Naprawdę, byłem zdziwiony jak dużo nie wiem jeszcze o YouTube 😉 Śledzę ponad setkę kanałów, oglądam filmy kilku rozpoznawalnych polskich, oraz kilku rozpoznawalnych światowych YouTuberów. Zwracam uwagę na takie rzeczy jak są wyprodukowane, jak zrobiona jest muzyka, co jest najważniejsze itd.. Oglądam filmy, jak montować filmy 🙂 Ale masy rzeczy jeszcze nie wiem, chociażby opis filmu.. Najlepiej, żeby był SEO friendly.. Ale – to właściwie jaki zrobić? 😉 Coś mi się wydaje, że to medium mnie wciągnie 🙂 A w tym tygodniu, następny film 🙂

To może jeszcze o założeniach 🙂 kanał programistaHumanista ma tłumaczyć w prosty sposób rzeczy, które dzieją się pod spodem, kiedy klikamy w internet 🙂 Pierwszy odcinek był o IFTTT, czyli automatyzacji naszej codzienności, przy okazji wspomniałem o tym, jak to serwery ze sobą gadają, kiedy my robimy inne rzeczy 😉 Następne też pewnie będą w takiej konwencji, czyli pokażę coś ciekawego i powiem o tym jak działa. W mam nadzieję zrozumiały, przystępny sposób 😉

Dodatkowo wystartował mój kurs o Kotlinie. Na razie tylko pierwsza część, ale w tym tygodniu również będzie druga 🙂 Tutaj o założeniach już pisałem, więc odsyłam do pierwszego posta, gdzie ładnie jest wszystko opowiedziane 🙂

Jest jeszcze jedna rzecz. Zostałem jednym z wykładowców w WOWSchool 😉 A to znaczy, że będę uczył dzieciaki programować i to już nie tylko raz w roku, ale teraz dwa razy w tygodniu 🙂 Wkrótce rusza kurs we Wrocławiu. Tajemnica poliszynela – od zawsze chciałem uczyć 🙂

To tyle jeśli chodzi o week review, ale wolę się skupić na faktycznej pracy, jak o pisaniu o niej 🙂 Zwłaszcza, że ostatnio przypływ energii i udaje się realizować założenia. Także zachęcam do dołączenia do subskrypcji, albo częstego odwiedzania, wkrótce nowe, świetne treści 🙂 Stay tuned!

Pozdrawiam!

Kotlin tutorial #1 – HelloWorld

Jak zapowiadałem, na blogu startuje mały kurs programowania w języku Kotlin 😉 Pomysł mam taki, żeby wrzucać tutaj kod w Javie, oraz „to samo robiący” w języku Kotlin. Co ciekawe, oba będzie można uruchomić w tym samym projekcie, ponieważ Kotlin jest językiem JVM, uruchamianym na maszynie wirtualnej Javy. Mogą nawet nawzajem korzystać ze swoich bibliotek, nawzajem się wywoływać, o czym dokładniej w następnych postach. Dodatkowo postaram się utrzymać taki poziom, żeby osoby które nie miały wcześniej styczności z programowaniem potrafiły się odnaleźć i przyswajać obydwa języki na raz. Programujących postaram się nie zanudzić i traktować Javę jako punkt odniesienia. 😉 A na początek, co to za język?

Kotlin to język programowania który jest całkiem nowy (wersja 1.0 pojawiła się 15 lutego bieżącego (2016) roku). Nazwa jak na polskie standardy nie jest zbyt szczęśliwa 🙂

kotliny

Nas oczywiście interesuje ten po lewej 🙂 Autorem języka jest firma JetBrains, tworząca oprogramowanie dla programistów, w tym między innymi środowisko IntelliJ IDEA. Skoro mamy tego samego autora IDE, oraz języka, to wiemy już gdzie jest najlepsze wsparcie 😉 Tak, zgadza się, będziemy używać Intellij (a przynajmniej ja, z ciekawostek ostatnio wylądowała wersja beta wtyczki Kotlina do NetBeans, jak ktoś lubi).

Pominę tutaj kwestię instalacji środowiska i konfiguracji Javy, ponieważ została omówiona w wielu miejscach, omawiam ją też na tym filmie. 😉 Dodatkowo na oficjalnej stronie znajduje się też świetny poradnik jak utworzyć projekt w Kotlinie. Zatem do kodu!

Poniższe metody wyświetlają po prostu napis „Hello World” na dwa różne sposoby 😉 W obydwóch językach metoda main jest miejscem w którym startuje wykonanie programu. Wygląda ona jednak nieco inaczej:

// java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("helloworld");
    }
}
// kotlin
fun main(args: Array<String>) {
    println("hello, world!")
}

Pierwsza różnica jest taka, że język Java potrzebuje klasy, która jest taka sama jak nazwa pliku w którym znajduje się metoda. Kotlin nie jest pod tym względem restrykcyjny. Może być klasa, o jakiejś nazwie, zupełnie niezależnej od nazwy pliku, ale nie musi być 🙂 W samej metodzie wyświetlania widać już różnicę, w Javie jest ona znacznie dłuższa, mamy tam klasę System, z obiektem out (typu PrintStream), która zawiera metodę println. W Kotlinie, mamy po prostu metodę println 🙂 Ułatwienie może wydawać się błahe, ale zawsze jest to coś, to skraca kod 🙂 Skraca go jeszcze „public static void”, z kolei w Kotlinie mamy po prostu „fun” oznaczający funkcję. Czemu to tak, napiszę wkrótce 😉 Dodatkowo, Kotlin nie potrzebuje do szczęścia średników na końcu każdej linii. Trochę późno, współczesne IDE już bardzo ładnie wyłapują takie babole, ale zawsze jest to jakieś ułatwienie 🙂

fc800x800black-u6

Po za tym jest jeszcze różnica w przekazywaniu parametrów do metody: „args: Array<String>” vs „String[] args”, ale o tym napiszę już następnym razem, kiedy będę opowiadał o zmiennych 🙂 A póki co, utworzyłem sobie te dwa pliki, jeden ma rozszerzenie java, drugi kt, obydwa da się uruchomić w jednym projekcie, klikając na zielony przycisk play, lub logo K w Intellij.

To było na tyle, jeśli chodzi o wstęp. Wszystkie przykłady znajdują się na moim GitHubie. Mam nadzieję, że ten kurs programowania Kotlin, spełni nadzieje które w nim pokładam i jak pisałem we wstępie – profesjonalistów nie zanudzi, początkującym dobrze wytłumaczy podstawy obydwóch języków 🙂 Dajcie znać jak się podoba! Następna część będzie o zmiennych, stałych, typach.. Stay tuned! 🙂

Pozdrawiam!

— status update —

Jak widać, minęło sporo czasu, a kontynuacja kursu Kotlina się nie pojawiła. Pojawi się tutaj: https://kurskotlin.pl/ tak więc tam zapraszam #kurskotlin