Zaměstnavatelé a programovací jazyky

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #135 kdy: 28. 02. 2018, 20:22:13 »
Citace
Čím víc přehánění, tím víc cool?
Prelúskať tých necelých 5000 strán pre pokročilejšieho kódera z iného jazyka, stacku nie je oproti tomu podľa mňa až tak veľa.
No právě, dá se to poměrně rychle, pokud už člověk má přehled v oboru a zkušenosti z něčeho podobného. Nakonec se tu všichni shodneme :) (kromě "balíka", to je ztracený případ pro Chocholouška)

To je tak, na roote "bla bla", ale realita je uplne ina. Povedzme, ze by taky clovek nejakym zazrakom presiel cez pohovor na Java seniora.(Co by nepresiel)  Dostal by do ruky projekt "Na pracuj" + nejakych juniorov, ktorych by mal pod palcom a len by tapal.
jdi otravovat jinam, čobolotrollo ;)


balki

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #136 kdy: 28. 02. 2018, 23:19:05 »
Citace
Čím víc přehánění, tím víc cool?
Prelúskať tých necelých 5000 strán pre pokročilejšieho kódera z iného jazyka, stacku nie je oproti tomu podľa mňa až tak veľa.
No právě, dá se to poměrně rychle, pokud už člověk má přehled v oboru a zkušenosti z něčeho podobného. Nakonec se tu všichni shodneme :) (kromě "balíka", to je ztracený případ pro Chocholouška)

To je tak, na roote "bla bla", ale realita je uplne ina. Povedzme, ze by taky clovek nejakym zazrakom presiel cez pohovor na Java seniora.(Co by nepresiel)  Dostal by do ruky projekt "Na pracuj" + nejakych juniorov, ktorych by mal pod palcom a len by tapal.
jdi otravovat jinam, čobolotrollo ;)

Ospravedlnujem sa, ze vam kazim silacke reci realitou.

kotlin ??

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #137 kdy: 28. 02. 2018, 23:28:23 »
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #138 kdy: 28. 02. 2018, 23:43:48 »
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.
Na jazyce jako takovém není super nic, ale když ho prosazuje Google...

andy

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #139 kdy: 01. 03. 2018, 01:58:09 »
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.
- nějakou syntaktickou podporu "bind" pro Option typ
- sealed classes (což by se mělo snad dát použít jako sum type)
- je to schopné (nějak) kompilovat do JS
- typový systém s type inference a type erasure (do čehož možná dodělají ty typeclassy, takže pak už by to mohlo být použitelné)

Taky mi prozatím nepřijde, že by to přinášelo tolik, aby mělo smysl to použít místo Javy. Ale zatím jsem v tom taky nic nenapsal..


Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #140 kdy: 01. 03. 2018, 02:07:28 »
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.
- sealed classes (což by se mělo snad dát použít jako sum type)
Jak?

andy

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #141 kdy: 01. 03. 2018, 02:13:14 »
Citace
A to som nespomenul frontend (o ktorom musí mať senior minimálne prehľad, aby vedel zhodnotiť či použiť React, Vue, či Angular, alebo niečo iné), bezpečnosť, otázky continuous delivery, či messagingu a ďalších.
Heh, to by mě zajímalo, jak někdo zhodnotí, zda použít React, Vue, Angular nebo něco jiného... (teda kromě toho, že tohle jsou JS technologie, ne Java). Odhadci ceny prý používají 2 metody - okenní a palcovou. Tady to bude asi tak totéž...

Nedávno tady někdo psal do threadu, co má sakra použít, aby to za 3 roky nebylo v žumpě a když v tom je ten projekt napsaný, aby se to nemuselo za 5 let znova přepisovat. Nedostal odpověď (taky by mě zajímala). Byla už tahle iterace frameworků konečná, nebo to za 5 let bude úplně někde jinde? Taky mám svoji sbírku projektů.... 10 let staré - jQuery, 5 let staré - AngularJS... bojím se začít další. Je dost možné, že přijde WebAssembly a celý slavný JS s velkou slávou (a radostí) hodíme se všema těma frameworkama do koše.

To skoro vypadá, že ten senior by měl znát úplně všechno .... zpaměti... a ještě k tomu umět věštit budoucnost...
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.
- sealed classes (což by se mělo snad dát použít jako sum type)
Jak?
https://kotlinlang.org/docs/reference/sealed-classes.html

Labrat

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #142 kdy: 01. 03. 2018, 02:40:19 »
Citace
A to som nespomenul frontend (o ktorom musí mať senior minimálne prehľad, aby vedel zhodnotiť či použiť React, Vue, či Angular, alebo niečo iné), bezpečnosť, otázky continuous delivery, či messagingu a ďalších.
To skoro vypadá, že ten senior by měl znát úplně všechno .... zpaměti... a ještě k tomu umět věštit budoucnost...
A mít 30 let praxe.

Jano7

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #143 kdy: 01. 03. 2018, 09:17:23 »
Citace
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.

Nuž treba to začať študovať hlbšie a začať si v tom programovať príklady; nestačí sa len dívať na dokumentáciu. Skúsený Javista začne po chvíli vidieť výhody Kotlinu. Čím viac ho študujem, tým viac vidím tie desiatky a stovky drobných zlepšení, ktoré v konečnom synergickom efekte nesmierne zlepšujú tvorbu kódu.

Kód: [Vybrat]
package com.zetcode;

import java.util.ArrayList;
import java.util.List;

public class JavaEx {

    public static void main(String[] args) {

        List<String> words = new ArrayList<>();
        words.add("pen");
        words.add("dog");
        words.add("pencil");

        words.forEach(word -> System.out.println(word));
    }
}

Zoberme si jednoduchý príklad v Jave a obdobný v Kotline.

Kód: [Vybrat]
package com.zetcode

fun main(args: Array<String>) {

    val words = listOf("pen", "pencil", "dog")

    words.forEach { word -> println(word) }
}

Kotlin umožňuje používanie funkcií, v Jave máme len metódy, t.j. nemusíme pri definovaní funkcie vždy vytvoriť triedu.
V príklade vidíme, že nepoužívame bodkočiarku (ala Python) na ukončenie príkazu. Máme literálový zápis na tvorbu
menších zoznamov, čo bolo jedným z najväčších pain in the ass Javy pre mňa. Pre výpis na konzolu používame println oproti zdĺhavému System.out.println.

Typová inferencia pri premennej words. (Chystá sa pre Javu 10.) Kotlin nemá ten debilný statický kontext, ktorý len prinášal viac problémov ako osohu. Kotlin má citlivo zvolená názvoslovie, mne sa proste najviac páči kľúčové slovo fun, oproti function (príliš dlhé), fn, def a pod. To isté pri val, oveľa viac mi to sedí ako const (JavaScript).


Kód: [Vybrat]
package com.zetcode;

public class JavaEx {

    public static void main(String[] args) {

        System.out.println(max(4, 5));
    }

    public static int max(int x, int y) {

        if (x > y) {
            return  x;
        } else {
            return y;
        }
    }
}

Kód: [Vybrat]
package com.zetcode

fun main(args: Array<String>) {

    println(max(30, 40))
}

fun max(x: Int, y: Int) : Int = if (x > y) x else y

if je v Kotline výraz, čo nám umožňuje použiť ho ako priradenie na pravej strane. Je to jedným z tých bezpočet malých zlepšení. Kotlin ďalej odbremení programátora od rozdielu medzi primitívnymi a objektovými dátovými typmi.

Viacriadkové reťazce, napríklad pri veršoch.

Kód: [Vybrat]
package com.zetcode;

public class JavaEx {

    public static void main(String[] args) {

        String sonnet = "Not marble, nor the gilded monuments\n" +
                "Of princes, shall outlive this powerful rhyme;\n" +
                "But you shall shine more bright in these contents\n" +
                "Than unswept stone, besmear'd with sluttish time.\n" +
                "When wasteful war shall statues overturn,\n" +
                "And broils root out the work of masonry,\n" +
                "Nor Mars his sword nor war's quick fire shall burn\n" +
                "The living record of your memory.\n" +
                "'Gainst death and all-oblivious enmity\n" +
                "Shall you pace forth; your praise shall still find room\n" +
                "Even in the eyes of all posterity\n" +
                "That wear this world out to the ending doom.\n" +
                "So, till the judgment that yourself arise,\n" +
                "You live in this, and dwell in lovers' eyes.\n";
        System.out.println(sonnet);
    }
}

V Jave musíme zdĺhavo sčítať reťazce, použiť znak nového riadku. Nevyzerá to bohvie ako.

Kód: [Vybrat]
package com.zetcode

fun main(args: Array<String>) {

    val sonnet = """
        Not marble, nor the gilded monuments
        Of princes, shall outlive this powerful rhyme;
        But you shall shine more bright in these contents
        Than unswept stone, besmear'd with sluttish time.
        When wasteful war shall statues overturn,
        And broils root out the work of masonry,
        Nor Mars his sword nor war's quick fire shall burn
        The living record of your memory.
        'Gainst death and all-oblivious enmity
        Shall you pace forth; your praise shall still find room
        Even in the eyes of all posterity
        That wear this world out to the ending doom.
        So, till the judgment that yourself arise,
        You live in this, and dwell in lovers' eyes.
        """

    println(sonnet.trimIndent())
}

Kotlin to zjednodušuje výrazne, navyše elegantne jednou metódou odstráni vytvorené odsadenie. Podobne to má Python, ale oproti Kotlinu v Pythone musíme použiť navyše importovať funkciu z modulu.

Takto by som mohol pokračovať dlho. Tie zlepšenie nemajú konca, neustále narážam na nové a nové skvelé veci. Ako hovorím, seasoned Java programátor si veľmi rýchlo uvedomí, ako ohromne zlepší Kotlin prácu Java programátora.

Samostatnou kapitolou sú Kotlin DSL, ktoré takéto zlepšenia umožnia pre knižnice a výrazne zlepšia prácu s SQL, UI, súbormi atď.

No a ak by sa podarilo nahradiť JavaScript Kotlinom...

v

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #144 kdy: 01. 03. 2018, 09:25:31 »
Citace
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.

Kód: [Vybrat]
package com.zetcode

fun main(args: Array<String>) {

    println(max(30, 40))
}

fun max(x: Int, y: Int) : Int = if (x > y) x else y
a kdyby to mělo fungovat pro jakýkoliv typ s definovanou operací "větší než"?

andy

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #145 kdy: 01. 03. 2018, 10:28:39 »
a kdyby to mělo fungovat pro jakýkoliv typ s definovanou operací "větší než"?
https://stackoverflow.com/questions/6452313/how-to-implement-a-generic-maxcomparable-a-comparable-b-function-in-java

Pokud v Kotlinu zavedou typeclassy, tak se to možná zjednoduší. Nebo taky ne. Otázka, jaký typ by vlastně mělo mít "max (A, B)", kde jedno je potomkem druhého, není zrovna triviální.

Citace
Nuž treba to začať študovať hlbšie a začať si v tom programovať príklady; nestačí sa len dívať na dokumentáciu. Skúsený Javista začne po chvíli vidieť výhody Kotlinu. Čím viac ho študujem, tým viac vidím tie desiatky a stovky drobných zlepšení, ktoré v konečnom synergickom efekte nesmierne zlepšujú tvorbu kódu.
Ano, implementují tam jakž takž věci, které jsou v FP světě běžné a zkušený Javista zjišťuje, že to má smysl.. bohužel narvat FP na Javu je někdy trochu problém (obávám se, že neschopnost tail-call optimalizace se začne s více FP dost projevovat), takže je to občas trochu přes ruku. Takže třeba výroba builderu sice vyžaduje tohle, ale aspoň nějak to jde...

Jano7

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #146 kdy: 01. 03. 2018, 11:18:15 »
Citace
Ano, implementují tam jakž takž věci, které jsou v FP světě běžné a zkušený Javista zjišťuje, že to má smysl.. bohužel narvat FP na Javu je někdy trochu problém (obávám se, že neschopnost tail-call optimalizace se začne s více FP dost projevovat), takže je to občas trochu přes ruku.

Nie je všetko len o funkcionálnom programovaní, x vecí sa týka syntaxe, OOP a iných.
Ak niekomu nevyhovuje úroveň FP v Kotline, nech si zvolí Scalu alebo Clojure. Máme viacero programovacích paradigiem, ale žiadny z nich nie je ten najlepší. Ja by som teda nechcel teda vytvárať Swing aplikáciu v Clojure, hoci to ide.

Youda

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #147 kdy: 01. 03. 2018, 11:44:06 »
Diky Jano7 za shrnuti, je to jak jsem si myslel, Kotlin je par syntaktickych cukriku, jinak to k nicemu neni.

Tvuj prvni priklad bych v Jave napsal:

Kód: [Vybrat]
String[] str = {"pen","dog","pencil"};
List<String> strL = Arrays.asList(str);
strL.forEach(word -> System.out.println(word));

A hned to vypada lip, co? A ten prevod na List delam jenom proto, aby sla pozit lambda, jinak se da samozrejme pracovat primo se String[]

Druhy priklad, nevim co je tak spatneho na staticke metode, proste budu mit tridu Functions a v ni sadu statickych metod pouzivanych jako funkce.
V realu bych ja osobne zkratka nechal Springem via @Autowired injektovat bean v defaultnim singleton scope, kde bude bezna nestaticka metoda

Kód: [Vybrat]
public int max(int x, int y) {
return x > y ? x : y;
}

Posledni prikad je uz uplny nesmysl, basne nemaji v kodu co delat, ty se nacitaji z resources.
A pokud precejen neco takoveho potrebuju, pres CTRL C+V vlozim do Eclipse, ktery to automaticky zformatuje do potrebneho traru vcetne potrebnych escape sekvenci.


Youda

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #148 kdy: 01. 03. 2018, 11:59:48 »
Pravda, muj examplik s porovnavanim cisel neni genericky, nekdo vys na toto pouzkazal, oprava:

Kód: [Vybrat]
public <T extends Comparable<T>> T max(T x, T y) {
return x.compareTo(y)>0 ? x : y;
}

n

Re:Zaměstnavatelé a programovací jazyky
« Odpověď #149 kdy: 01. 03. 2018, 12:21:21 »
Citace
Co je na kotlinu tak super? Koukl jsem se jim na stránku a nevidím jediný důvod proč se to učit.

Nuž treba to začať študovať hlbšie a začať si v tom programovať príklady; nestačí sa len dívať na dokumentáciu. Skúsený Javista začne po chvíli vidieť výhody Kotlinu. Čím viac ho študujem, tým viac vidím tie desiatky a stovky drobných zlepšení, ktoré v konečnom synergickom efekte nesmierne zlepšujú tvorbu kódu.

Kód: [Vybrat]
package com.zetcode;

import java.util.ArrayList;
import java.util.List;

public class JavaEx {

    public static void main(String[] args) {

        List<String> words = new ArrayList<>();
        words.add("pen");
        words.add("dog");
        words.add("pencil");

        words.forEach(word -> System.out.println(word));
    }
}

Zoberme si jednoduchý príklad v Jave a obdobný v Kotline.

Kód: [Vybrat]
package com.zetcode

fun main(args: Array<String>) {

    val words = listOf("pen", "pencil", "dog")

    words.forEach { word -> println(word) }
}
.....

Hele, ja nejsem Java guru, ani ji moc zrovna v lasce nemam, ale tohle nejsou dobre priklady:
Kód: [Vybrat]
Arrays.asList("pen", "pencil", "dog").forEach(System.out::println);

Kód: [Vybrat]
BinaryOperator<Integer> max = (x, y) -> x > y ? x : y;
System.out.println(max.apply(4, 5));

Jinak ano, stringy jsou fakt pain v Jave, to fakt nechapu proc se s tim neco neudelalo zatim.