Dlaczego Kotlin jeszcze nie wyparł Javy?

Dlaczego Kotlin jeszcze nie wyparł Javy?
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
2

A dlaczego mieliby? To nie jest jakiś obowiązek

No jasne. Ale jesli sie tego nie zrobilo to mowienie wszystkim naokolo, ze Java ma wszystko to co Kotlin jest troche glupie. Nie ma taka osoba zadnych podstaw do tego. Jesli ktos sobie pisze w Javie i nie czyta o Kotlinie to ja nic do takiej osoby nie mam. Ale jesli ktos wysuwa twierdzenia na temat jezyka o ktorym nie ma pojecia to slabo.

Wyciągasz ogólny wniosek z kilku przypadków.

Kilkudziesieciu. Bardzo czesto sie okazuje, ze osoba ktora tak mowi to tak na prawde jedynie zmapowala Jave na skladnie Kotlina i nic wiecej. Czasami nawet spotykam takich co nie sprobowali sami nic napisac ale opinie juz maja.


λλλ
edytowany 6x, ostatnio: stivens
jarekr000000
Dawno, dawno temu ostro krytykowałem i obśmiewałem JS jako typowy senior javy. A okazało się, że g**no wiedziałem o języku i moje argumenty były dokładnie w stylu JS nie jest Javą - więc jest zły. Ale był rok (2011?) gdzie poświęciłem czas na porządne ogarnięcie JS (z książkami ), a potem nawet HTML i frontendu. I zrozumiałem, że większość wad JS jakie widziałem wynikała z kompletnego nieogarnięcia idei. Część z tych wad dziś wręcz uznaje za zalety. Za to poznałem tony o wiele gorszych rzeczy...
stivens
No tak sie po prostu dzieje. Mozemy to uznawac za cos normalnego - bo kazdy ma jakas swoja strefe komfortu - ale nie musimy od razu przyjmowac, ze to cos "dobrego" i nie komentowac sprawy :)
stivens
Albo mowiac inaczej, to ze ktos tak robi to nie znaczy ze jest jakis zj***ny a znaczy jedynie, ze jego opinia niewiele wnosi do tematu. Ktos inny (kto tez pozostaje w swojej strefie komfortu) podchwytuje takie glupie gadanie i potem roznosi glupoty o syntax-sugar dalej w swiat :P.
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
4

@wiciu:

No nie wiem, czy jest lepszy. To tylko opinia. Widziałem raz kod backendu w Kotlinie zasłany operatorami !! Argumentem do tego było Hibernate, z którym trzeba było tak robić, bo coś tam. Czasem kod w Kotlinie jest trochę za bardzo implicit. Niby krótszy, ale więcej trzeba go analizować, żeby go zrozumieć. Dodatkowo, nie wszystkie biblioteki javowe są w pełni kompatybilne z Kotlinem, przez co nie zawsze da się ich używać zgodnie ze sztuką. No generalnie nie widzę żadnej znaczącej przewagi Kotlina względem Javy, która miałaby sprawić, że projekt będzie lepszy.

Ok, to opinia, ale uzasadniona. Kotlin oferuje dokładnie to wszystko co Java + jakąś wartość dodatkową, przy praktycznie zerowych kosztach.

Użycie operatora !! wskazuje na kompletne nie zrozumienie null safety. Jedynym miejscem kiedy wolno go użyć jest zwrotka z metody, która z jakiegoś powodu jest identyfikowana jako zwracająca nulla, a ty jesteś pewien, że absolutnie nie ma takiej możliwości. Jeżeli jakaś metoda z dowolnej biblioteki zwraca nulla, to masz ?, za pomocą którego robisz null check'a, lub oznaczasz zmienną jako nullable. Jak coś nie jest zgodne z twoim stylem pisania aplikacji to prawidłową metodą radzenia sobie z taką sytuacją jest zrobienia jakiegoś adaptera i odcięcie gangreny tak szybko jak się da, zanim zasyfi twój projekt, robi się tak zarówno w Javie jak i w Kotlinie, chyba, że akurat "śpieszy nam się" i wtedy z syfem z poziomu repozytorium trzeba sobie radzić na frontendzie "bo wyciekł".

Oczywiście, że można w Kotlinie napisać dziadowski kod, który się wywali. Tylko w przypadku null safety w Kotlinie trzeba się postarać, żeby to zrobić, a w Javie trzeba się postarać, żeby tego nie zrobić. Widziałem już w życiu "seniorów od 20 lat w projekcie", którzy zaczynai jak projekt był w (kiepskim) C++, teraz jest w Javie, a oni wciąż piszą jak kiedyś, tylko w innym języku. Tylko to nie świadczy o tym, ze Java jest do bani, tylko ktoś już dawno powinien przyśpieszyć karierę takiego gościa, poza strukturami firmy. I mam tu na myśli naprawdę grube jazdy w stylu przepisywanie wszystkiego co się da na static.

K1
Przy zmianie firmy trafiłem na kotlina i miałem "przyjemność" pracować z ludźmi piszącymi bardzo słaby kod w tym.(swoją drogą nie było przez to od kogo się uczyć, wraz z powstawaniem mojego zespołu po prostu poznawało się rzeczy). I poza tym, że wydaje mi się, że CI ludzie z pierwszego zespołu w Javie pisaliby jeszcze gorzej to jedna obserwacja: przy całym tym bagnie praktycznie nie spotkałem się z NPE. PS: w testach operator: !! się przydaje
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
2
scibi_92 napisał(a):

A jak ktoś umie Jave to Kotlina nauczy się w tydzień maks dwa.

No właśnie ten wątek pokazuje, że chyba niekoniecznie. Znajomość Javy szkodzi.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
stivens
No właśnie ten wątek pokazuje, że chyba niekoniecznie - trzeba jeszcze chciec :P
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
5

Jest tylko jeden warunek, który przekona zatwardziałych javowców:
screenshot-20211103181348.png

Do Clojure, F#, albo C#. Chociaż, nawet Kotlin wychodzi lepiej od javy.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
Zobacz pozostałe 36 komentarzy
stivens
Przy czym nie chce kierowac Twoja kariera. Tak z ciekawosci tylko pytam ;)
pedegie
@stivens: ahh, mam gdzieś to w TODO na dole listy, pewnie spróbuję ale muszę się jeszcze dużo douczyć :P
jarekr000000
Ten wpis nie był na serio - dane są prawdziwe, ale to nie jest sensowna argumentacja do sporu. Poza tym akurat uważam, że jeśli chodzi o kasę to java może być za jakiś czas niezłym eldorado. Będzie trzeba utrzymać setki tysięcy korpo kobył, nowi programiści nie będą nawet chcieli na język patrzeć, a nawet jak by się douczyli to nic nie zrobią, bo koncepcje typu serwery aplikacji/kontenery IoC za 10 lat będą totalnie nie do zrozumienia dla typowego programisty. Obecnie podobnie jest z COBOLem. Więc starzy javowcy może będą mieli dobrze - chyba, że zje ich AI.
pedegie
myślę że Twoj scenariusz to raczej za lat 20 jest prawdopodobny, zobaczymy w która stronę to pójdzie, jak pokażą się te Loom'y, Valhalle. Nawet dzisiaj setupy nowych projektów w Javie dzieją się każdego dnia a ktoś je będzie utrzymywał, także NPE zostanie z nami jeszcze na długo niestety. Nie ma też co wróżyć apokalipsy Javowcom, po prostu, nauczą się nowego języka. Rynek jak zwykle zweryfikuje założenia obu stron
S9
  • Rejestracja:około 4 lata
  • Ostatnio:około 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
3

Ja myślę że jest tez tak że wiele developerów Javy zwłaszcza z tym stażem powiedzmy 4/5 lat wolałoby keczup, ale są blokowani przez górę. Niestety czasami jest tak że jak ktos zapropuje Kotlina to musi się spodziwać długiej walki o niego i nie koniecznie wygranej, więc też niektórym się nie chce próbować przekonać innych.


.andy
Ja myślę że jest tez tak że wiele developerów Javy zwłaszcza z tym stażem powiedzmy 4/5 lat wolałoby keczup, ale są blokowani przez górę. zawsze można zmienić firmę.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
1
scibi_92 napisał(a):

Ja myślę że jest tez tak że wiele developerów Javy zwłaszcza z tym stażem powiedzmy 4/5 lat wolałoby keczup, ale są blokowani przez górę. Niestety czasami jest tak że jak ktos zapropuje Kotlina to musi się spodziwać długiej walki o niego i nie koniecznie wygranej, więc też niektórym się nie chce próbować przekonać innych.

Wiem, znam, przerabiałem.
Rozwiązania jest takie:
**Nie pytać o pozwolenie. **

Stosunkowo łatwo jest przepchnąć kotlin w testach. IMO kotest jest fajniejszy od spocka, a to też inny język. A potem już pójdzie.

Rozwiązanie dla niec starszych stażem - to walczyć o Scalę, a potem w ramach kompromisu zgodzić się na kotlina. I programować Haskella w Kotlinie :-)


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
Zobacz pozostałe 3 komentarze
stivens
@jarekr000000: jakie konkretnie? Przypominam ze porownujemy to do walki o Kotlina w Javovym betonie
jarekr000000
@stivens: scalowcy to generalnie ludzi otwarci na technologię, więc przerabiam teraz jeden nowy język programowania, albo jakąś grubą technologię na tydzień - i to wszystko w ramach jednego projektu. Tak, naprawdę nie narzekam - ale nie wiem czy mój stary mózg to wytrzymie.
KamilAdam
@stivens: w sercu to ja jestem scalowcem od 10 lat :p
stivens
@KamilAdam: chodzilo mi o ten rynek :p
KamilAdam
Na rynku to byłem Scalowcem już w 2017 ale potem wybrałem pieniądze
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
1

@scibi_92: Generalizujesz. Sam proponowałem Kotlin'a w zespole do użycia w nowych komponentach, nie powalił mnie entuzjazm. Nikogo "wyżej" to nie interesuje.

Zobacz pozostałe 25 komentarzy
jarekr000000
@stivens: strasznie się gotujesz, pamiętam jak ja się gotowałem - w javie. Optional jest bez sensu - bo i tak funkcja może zwrócić null. Albo dasz w metodzie argument jako Optional, a ktoś Ci wyśle nulla - i szach mat nullowy ateisto.
piotrpo
@wiciu: To nie zabieg retoryczny - nie przytaczasz argumentów dlaczego warto zostać przy Javie, dlatego pytam. Nawet zakładając, że Kotlin wnosi niewiele, to zawsze coś więcej. To czy to jest lukier, czy nowa jakość - kwestia semantyczna. Pączek bez lukru i dźemu to zwykła niezjadliwa buła. Jeżeli masz konieczność korzystania z wujowej biblioteki, to będziesz miał identyczne problemy w obu językach. Zawiniesz w pozłotko, albo się rozlezie po całym projekcie. Problem z biblioteką rozwiążesz w identyczny sposób w obu językach.
piotrpo
...piszę na podstawie iluś tam projektów pisanych w Java i całkiem sporej liczby pisanej w Kotlinie, w tym średnio dużych projektów chmurowych. Jedyne problemy jakie naprawdę napotkałem to słabsze wsparcie na poziomie narzędzi - pisałem wyżej. Znalezienie programisty, który przejmie kod, to też nie jest problem większy niż w Java. I oczywiście w obu językach da się napisać to samo, tylko w Kotlinie to jest szybsze, przyjemniejsze i prostsze do czytania (dla mnie).
PA
@wiciu: a w javie te "third-party" to nie jest jakiś syf grzebiący przy refleksji? Przynajmniej czytając opinie o frameworkach javowych można dojść do wniosku, że przeniesiecie abstrakcji do statycznego świata przynosiłoby wiele benefitów.
wiciu
@piotrpo: No i da się na spokojnie napisać jakieś sensowne argumenty za kotlinem ; ). Third-party biblioteki/frameworki są różne - jedne używają refleksji, a inne nie. Ja nie jestem zwolennikiem refleksji (można to poznać po moich bezrefleksyjnych wypowiedziach, hehe) i uważam, że trzeba mieć dobry argument do jej zastosowania.
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:3 dni
  • Lokalizacja:Wrocław
7
scibi_92 napisał(a):

Ja myślę że jest tez tak że wiele developerów Javy zwłaszcza z tym stażem powiedzmy 4/5 lat wolałoby keczup, ale są blokowani przez górę. Niestety czasami jest tak że jak ktos zapropuje Kotlina to musi się spodziwać długiej walki o niego i nie koniecznie wygranej, więc też niektórym się nie chce próbować przekonać innych.

Góra blokuje, bo pyta seniorów o co chodzi, a oni odpowiadają "to nie ma sensu, bo to tylko cukier składniowy".

Fajnie mi się obserwuje z boku te zapasy, bo wygląda na to, że przez 15 lat mentalność przeciętnych programistów Javy się w ogóle nie zmieniła - jeśli w jakimś języku programowania istnieje lepszy mechanizm, to jest to tylko "cukier składniowy". Dopóki nie dotrze do Javy - bo wtedy mają radość z nowego wynalazku jak dzieci w Związku Radzieckim po dostawie pomarańczy na święta.
Dziwne tylko, że nie piszą w asemblerze, w końcu Java to też tylko cukier składniowy.


Po dopracowaniu rozwiązania każdy będzie mógł założyć własny drzewiasty wątek.
obscurity
Nie mają radości z nowego wynalazku bo muszą czekać 5-10 lat aż korpo przejdzie na nową wersję
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
0
cppx napisał(a):

Obecnie ten rosyjski Kotlin nie wszedł nawet do mainstreamu, ciekawe dlaczego? Może głupia nazwa przypominająca Ketchup Kotlina? Ludzie piszą że nowa Java 21 wprowadziła już tyle nowinek że nie warto. To podajcie tutorial do Javy 21?

o, kolega się reaktywował pod nowym wcieleniem, tym razem @cppx. zmarnuje czyiś czas na pozbawione logiki dyskusje o wyższości X nad Y, a potem znowu skasuje swoje konto razem z komentarzami.

tutoriale do świeżych wersji javy znajdziesz na https://dev.java/


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 3x, ostatnio: Wibowit
Zobacz pozostałe 5 komentarzy
piotrpo
Judeański Front Ludowy, oddział samobójców. https://youtu.be/Ihpii9Ogbx0?t=27
K5
Czyli usuwając konto, komentarze znikają, a posty zostają? Dziwne.
Wibowit
myślę, że chodzi raczej o to, że forum blokuje usuwanie starych postów, ale nie blokuje usuwania starych komentarzy, więc delikwent może swoje komentarze pousuwać.
K5
Czyli zanim zdecydował się usunąć konto stwierdził, że najpierw usunie swoje komentarze?
Wibowit
tak, robił to już wielokrotnie i dlatego jak mu odpowiadam to go cytuję, żeby potem nie wyszło na to, że gadam do siebie
aolo23
  • Rejestracja:ponad 7 lat
  • Ostatnio:25 dni
  • Postów:186
0

Skoro temat odkopany to pozwolę sobie dorzucić kilka groszy ode mnie :P
Nie jestem kotlinowcem, ale skoro Kotlin jedzie na JVM to zastanawiam się jak szybko mogą być adaptowane zmiany z poziomu JVM, które oracle dorzuca, do Kotlina zważywszy na fakt, że pewnie cisną pod Javę wszystko (choć wiem że sam JVM ma jakiś tam standard). Czy jest jakaś taka granica, że poprzez te flagi które kotlin ma włączone/wyłączone/zmodyfikowane pod siebie zmiany z nowych wersji JVM mogą nigdy nie zostać użyte przez kotlina ? Albo jak się to odbija na performance. Oglądając różne konferencje z Javy i Kotlina pamiętam, że na poziomie bytecodu w wersji 11 Javy to Kotlin już miał wolniejszą metodę toString() bo w javie i jvm jakaś "magia doszła" - pewnie to już "zrównali". Ale wciąż poprzednie pytanie pozostaje aktualne - czy wszystkie benefity z używania nowej jvmki są zawsze 1:1 miedzy javą i kotlinem.


Exception oznacza więcej niż tysiąc słów.
Wibowit
które oracle dorzuca, do Kotlina - oracle coś robi z kotlinem? chyba jetbrains.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:4 minuty
0
aolo23 napisał(a):

(...) Czy jest jakaś taka granica, że poprzez te flagi które kotlin ma włączone/wyłączone/zmodyfikowane pod siebie zmiany z nowych wersji JVM mogą nigdy nie zostać użyte przez kotlina ? (...)

jakie flagi?


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
0

@aolo23: .
.java --(javac)->bytecode --(jvm/JIT/AoT) -> działający program
.kt --(kotlinc)->bytecode --(jvm/JIT/AoT) -> działający program

Na moje, jakąkolwiek różnicę możesz mieć jedynie w przypadku zmian w kompilatorze Javy, za którymi kompilator kotlina nie nadąża (co jest prawdą). Tylko to rozważania trochę z czapy w 99% zastosowań Javy. Nie oszukujmy się, tego języka nie używa się dlatego, że jest niesamowicie szybki, real time itp. W typowym zastosowaniu, gdzie dostajemy requesta, uderzamy po sieci do bazy danych, przetwarzamy te otrzymane dane i zwracamy odpowiedź różnice są niemierzalne.

99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
0

Dlaczego Kotlin jeszcze nie wyparł Javy?

Dlatego że Java powoli, ale jednak wchłania z Kotlina i Scali to co w tych językach najlepsze. Mamy już rekordy w Java 17, co prawda brakuje do nich builder'ów i with'erów ale mam nadzieje że do Java 21 dodadzą. Wczoraj pojawiły się doniesienia o JEP który ma wprowadzać interpolacje string'ów w Java (https://openjdk.org/jeps/430). Mamy też zalążek FP: switch jako wyrażenie (zwraca wartość) oraz sealed interfaces.

Biblioteka standardowa też się powoli zmienia List.of(...) Map.of(...) czy "foo %s".formatted(...) małe a jakże cieszy; stream.toList() to prawdziwy hit.

Resztę rzeczy można ogarnąć Lombok'iem lub bibliotekami opartymi o Annotation Processing (np. Google'owskie AutoValue). Także język jest ubogi ale w praktyce społeczność sobie radzi, nawet jak Oracle drzemie i nie pozwala Javie umrzeć.

PS. Dodam że ja wróciłem do Scali :P


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
jarekr000000
Dodam że ja wróciłem do Scali :P doskonale
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
1

@0xmarcin: Dlaczego inne języki, "lepsze" od Javy nie wyparły jej do tej pory? Ani Kotlin, ani Scala nie są językami głównego nurtu. Nie ma też jakiegoś spektakularnego wysypu ofert dla Go Lang, a nawet .NET nie wypiera Java.

Podstawowy problem, to fakt, że nie ma mierzalnego wskaźnika tej lepszości, natomiast ktoś musi w projekcie podjąć taką decyzję i tutaj będzie problem, bo:

  • Za wybranie Java nikt ci głowy nie urwie. Nie jest to język doskonały, ale sprawdzony, jest duża dostępność ludzi, narzędzi. Dla decydenta, wybór Javy jest bezpieczny.
  • Kotlina, czy Scali trzeba się nauczyć. W przypadku Kotlina, tej nauki nie ma za dużo, ale nawet te kilka godzin, to przeszkoda nie do przejścia dla zwykłych ludzi.
  • Zalety Kotlina, są dla części ludzi wadami. Bo jak tu sobie poradzić ze sprawdzanym na etapie kompilacji null-safety, jak to tak, że jakaś funkcja może istnieć poza klasą, albo kto to widział, że nie trzeba obsługiwać wyjątków ręcznym zapisem do logu (i niczym więcej)?

Kiedyś krążył taki bzdurny artykuł napisany przez kogoś z Allegro, który właściwie w każdym punkcie był szukaniem na siłę problemów typu "co z tego jak jest null-safety, skoro mogę skorzystać z biblioteki w Javie i null safety idzie w cholerę, albo trzeba pisać wrapper do niej".

wiciu
był artykuł na oficjalnym blogu allegro, że zmigrowali chyba aplikację z javy do kotlina i potem z powrotem do javy - i robota się kręci xD
wiciu
  • Rejestracja:ponad 11 lat
  • Ostatnio:12 dni
  • Postów:1205
0

Kotlin na razie wypiera Javę jedynie na Androidzie, ponieważ Google forsuje ten język na tej platformie z jakiegoś nieznanego mi powodu. Prawdopodobnie chodzi o to, że na systemie Android kolejne wersje Javy są wprowadzane powoli, a apka mobilna musi wspierać różne urządzenia i różne wersje systemu, co uniemożliwia korzystanie z najnowszych funkcjonalności języka od razu. Kiedyś były obejścia na to - np. Retrolambda itp. ale to są jedynie doraźne rozwiązania. Kotlin daje funkcjonalności dostępne w najnowszej Javie bez konieczności migracji do najnowszej wersji JVM. W świecie mobile dochodzą do tego jeszcze biblioteki od Google, syntactic sugar, rozwiązania typu Jetpack Compose i inne DSLe, które są skrojone pod Kotlina i nie mają za bardzo racji bytu w Javie. Natomiast, jak piszemy aplikację backendową, to nie widzę specjalnie benefitów korzystania z Kotlina. Główny benefit, to wg mnie odporność na nulle, gdzie od razu w kodzie widzimy potencjalne NPE, ale widziałem już projekty usiane operatorami !! bo jakaś tam biblioteka w javie, z której korzystał projekt w kotlinie była tak napisana, że nie dało się uniknąć tego operatora. Jakbym miał pisać projekt backendowy, to bym wybrał javę, a jak androidowy, to kotlina.

piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
1

@wiciu: NPE to taki najbardziej widoczny ficzer, bo siadasz i nagle dostajesz na twarz błędy kompilatora. Jest w tej chwili od groma ficzerów języka, które o lata wyprzedzają Javę. Null safety builders, delegacje, wnioskowanie typów, aliasy typów, wymuszanie sensownych konstruktorów, parametry nazwane, extension functions, czy nawet przeciążanie operatorów. Tylko jeżeli ktoś nie rozumie sensu ich stosowania (a przechodząc z Java nie rozumiesz, bo niby skąd), to pojawia się grymas na twarzy pod tytułem "a po co to komu? Bóg chciał inaczej.".

wiciu
Nie wiem, czy wnioskowanie typów, to taki fajny ficzer. Ja tam wolę mieć kontrolę nad swoimi typami ;). Zresztą w nowszych javach wprowadzili chyba var w scope funkcji, ale nie wiem, czy to specjalnie coś daje poza tym, że mamy mniej kodu i nie wiemy co to za typ patrząc na kod. Extension functions, to akurat fajny ficzer, ale generalnie też wszystkie ficzery kotlina nie są dla mnie osobiście aż takim plusem nad samą javą, bo w realnych projektach często nie wygląda to tak kolorowo jak w tutorialach.
jarekr000000
@wiciu: pisałem troche realnych projektów w Kotlinie, chyba nikt z programistów z zespołu nie wrócił już do javy (poza bugfixami), bo ludzie przestali wyobrażać sobie jak można to pisać jave.
wiciu
@jarekr000000: no to może Twoje projekty były dobrze zrobione, bo ja akurat trafiłem kiedyś na taki projekt backendowy, który korzystał z kotlina i hibernata, był usiany operatorami !! i jeszcze wymieszany z jakimś starym kodem z javy. Wg mnie było to wszystko po prostu niechlujnie napisane i pewnie dlatego mam taką opinię, ale może jakbym więcej w tym kotlinie posiedział i zobaczył lub współtworzył porządne projekty, to może bym zmienił zdanie :).
jarekr000000
@wiciu: nadmierne użycie !! często świadczy o niechlujstwie i nieprzerobieniu podstawowego doca o kotlinie. W praktyce to najczęściej przy korzystaniu z javy albo zostawia się nullable type T?, albo korzysta się elwisa ?:. !! ma czasem sens jeśli chcemy fail fastować, ale normalnie często go nie używaliśmy, nawet w projektach mieszanych java+kotlin.
G8
  • Rejestracja:około 3 lata
  • Ostatnio:około rok
  • Postów:2000
0

Ja się tam nie bardzo rozumiem na rozterkach javowców, ale wydawało mi się że to Scala miała zastąpić Javę, a Kotlin to takie coś na Androida co tylko namiastką Scali jest i to gorszą. A teraz co, Scala już niekoszerna jest? Javowcy wolą Kotlina zamiast Scali?

A na koniec i tak zostaje Java 6 w projekcie i luzik.

edytowany 1x, ostatnio: gajusz800
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
0

@gajusz800: Kotlin nie jest "namiastką Scali". To język, który deklaruje pełną zgodność z Javą i właśnie to, że możesz sobie płynnie i bezpiecznie wstawić kawałek kodu w Kotlinie, do już istniejącego projektu w Java jest jego największą chyba zaletą. Zresztą jak się liczy "lepszość" języka? Np. fani cpp wciąż się zachwycają (2023), jak to bardzo szybko działa i jak "blisko sprzętu" się programuje, że można sobie skakać wskaźnikiem po pamięci. I ok, w niektórych zastosowaniach to jest fajne, ale nie każdy pisze sterowniki do hamulców w samochodzie, żeby się przejmować tą utratą wydajności.
@wiciu: Jeżeli widziałeś projekt z dużą liczbą !!, to prawdopodobnie autorzy nie wiedzieli po co ten operator jest. Szczególnie w przypadku hibernate'a, gdzie albo coś może być nullem i wypada się przygotować na taki przypadek, a nie wstawiać "kiedyś walnie, ale nie podczas kompilacji", albo nie ma potrzeby go wstawiać. Dobre ćwiczenie, na zrozumienie Kotlina, to wziąć sobie wzorce projektowe i zastanowić się, jak można je zrealizować w tym języku. I wtedy wychodzi, że by lazy ma więcej sensu, niż "klasycznie zalecana" realizacja Singleton w Java. Albo napisanie wrappera przez delegację, które powoduje, że ten wzorzec nagle zaczyna mieć sens. Całkowicie przebudowana koncepcja buildera (DSL) itd. Myślę, że właśnie patrząc na takie przypadki, naprawdę widać o ile jest lepiej. Owszem null-safety pomaga, jak już człowiek nabierze przekonania i zrozumienia, że:

Kopiuj
catch(Exception e){
  return null;
}

jest złem.

Ogólnie, patrząc na swoje doświadczenia, to poznanie Kotlina i pisanie w nim spowodowało, że piszę lepszy kod, bo "zauważyłem, że da się lepiej".

Oczywiście, da się pisać źle w każdym języku (@KamilAdam żalił się tu kiedyś na burdel w projektach Scala), ale w Kotlinie, da się pisać lepiej, bez nadmiernego wysiłku.

ZN
ZN
  • Rejestracja:około 2 lata
  • Ostatnio:prawie 2 lata
  • Postów:65
0

Opieram założenie, że zawodowo lepszym językiem jest ten w którym lepiej idzie ogarniać bubel. Innymi słowy co łatwiej znieść bubel w java czy w scali?

Na pierwszy rzut oka wydawać by się mogło, że w Scali byłoby lepiej, bo kompilator przynajmniej odrzuci sporą część nietrafionych pomysłów juniora i niekompetentnych ludzi - być może nawet nie pozwoli im pisać :-), ale w przypadku regulara czy seniora, to jednak trudniej. Szczególnie gdy się uczą i mają ambicje, wówczas wyłącznie sky is the limit. Jak ktoś się nudzi w robocie i chce wytwarzać ambitne rozwiązania wówczas ze Scalą może nieźle namącić. Java przynajmniej studzi to pragnienie.

Scala jest super, gdy ekipa jest doświadczona, zna umiar i dąży w rozwiązaniach do tego co niezbędne.

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
1
znowutosamo napisał(a):

Na pierwszy rzut oka wydawać by się mogło, że w Scali byłoby lepiej, bo kompilator przynajmniej odrzuci sporą część nietrafionych pomysłów juniora i niekompetentnych ludzi - być może nawet nie pozwoli im pisać :-), ale w przypadku regulara czy seniora, to jednak trudniej. Szczególnie gdy się uczą i mają ambicje, wówczas wyłącznie sky is the limit. Jak ktoś się nudzi w robocie i chce wytwarzać ambitne rozwiązania wówczas ze Scalą może nieźle namącić. Java przynajmniej studzi to pragnienie.

No nie wiem, jak zawodowy szambonurek musiałem wielokrotnie zagłębiać sie w kod Springa lub serwerów JavaEE, bo cała java jeździ na magii w runtimie i często nawet dobra znajomośc specyfikacji nie wystarcza, żeby odkryć czemu jakiś transactional nie działa. Widziałem projekty, które dosłownie "stały" przez takie problemy (zresztą dlatego do nich trafiałem).
Nawet najgorsze cuda składni scali nie potrafią tyle narypać co szczypta magii w javie w runtime, gdy nawet testy nie pokażą Ci problemu, bo działa w nich inny kod niż na produkcji.


jeden i pół terabajta powinno wystarczyć każdemu
Zobacz pozostały 1 komentarz
ZN
znowutosamo
Poza tym problem o jakim mówisz to w zasadzie kwestia frameworka. Być może pisząc bez springa żyłoby sie lżej, ale ktoś w końcu w firmie podjąłby się próby złożenia prowizorycznych, nieprzetestowanych w boju, powolnych i trudnych w utrzymaniu ram. Idąc w gotowy framework ostatnie 10% pracy, kosztuje jak dodatkowe 90%, chociaż wynik nie powala, tak jest łatwiej pracą nad projektem zarządzać.
jarekr000000
@znowutosamo: ale o tych magikach to tak samo działa w Scali, masz jednego magika, który ogarnia architekturę, a cała reszta małp nawet nie ma dużej szansy nic popsuć, bo po prostu im się nie skompiluje. Kwestia jest kiedy tego magika potrzebujesz - w scali na starcie projektu (architektura, CI) - potem może sobie iść (mam takie projekty), w javie im bardziej w maintenance tym bardziej potrzebujesz na etat. Co do drugiego punktu w javie są gotowe alternatywy do Springa, ale ponieważ większośc nie działa na magii to generalnie nie mają powodzenia.
ZN
znowutosamo
Architekt, który programuje, ma skill i czuje problemy domeny. Dzięki, szybciej znajdę jednorożca :)
NO
@jarekr000000: Opowiesz coś więcej o tych alternatywych? Jaki niemagiczny stack do typowej crudowej apki np?
jarekr000000
@Nofenak: endpointy : Javalin, Ratpack, baza SQL: JOOQ, JDBI
G8
  • Rejestracja:około 3 lata
  • Ostatnio:około rok
  • Postów:2000
0

Czyli Kotlin > Scala na dziś? Ja nie zastanawiam się czemu Kotlin nie wyparł Javy, tylko czemu Kotlin wypiera Scalę. Bo na początku Kotlin nie był brany pod uwagę poza Androidem jako alternatywa dla Javy, Scala była przymierzana do tego.

edytowany 1x, ostatnio: gajusz800
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
1

@gajusz800: Kotlin od początku swojego istnienia, był "alternatywą dla Java". Natomiast faktycznie zdobył większą popularność niż Scala, z tego powodu, że w którymś momencie Google przestawiło development z Eclipse na IntelliJ (Android Studio), przy okazji zaczynając pokazywać Kotlin jako alternatywę dla Java. W tle była jeszcze nawalanka sądowa z Oracle, które nagle odkryło, że być może da się zarobić na tym języku. Faktycznie development aplikacji mobilnych, w ich najlepszym momencie spowodował, że Kotlin zaczął być popularny. W przypadku Androida, to przejście było dla programistów dość oczywiste, bo albo Kotlin z takimi wynalazkami jak dajmy na to, streamy w kolekcjach, albo trzymanie się Java 6, bo stare urządzenia. W tym okresie, zwyczajnie Kotlin, był w przypadku Androida bez porównania lepszy.
Dla współczesnego backendu - różnica nie jest już tak kolosalna, jak wtedy dla Androida. Java faktycznie powoli, ale przejmuje część ficzerów z Kotlina, albo powstają wynalazki na trytytkach i silwer tejpie jak Lombok. No i o ile w Androidzie wszyscy byli "nowi", to w backendzie jest już od dawna armia seniorów, którym na ogół nie śpieszy się do nowinek.
Przy takim podziale rynku korpo-aplikacji, jaki jest w tej chwili, to ogólnie cud, że cokolwiek się do tego backendu przebija, bo patrząc ogólnie, to mamy Javę, C#, długo nic i dopiero cała menażeria w stylu Python, PHP, Scala, Kotlin, Go, NodeJS.
Co ważne, żaden z tych języków, nie jest jakoś mega wyraźnie lepszy, żeby w nim jakiegoś CRUD'a skrobnąć. Powiedzmy, że osobiście nie widzę powodów technicznych, żeby używać np. Pythona, czy PHP, ale jak masz do napisania jakąś mikrousługę, to pracochłonność jest stworzenia w każdym z tych języków będzie podobna. Moim zdaniem w Kotlinie pisze się przyjemniej niż w Javie, ale nie jestem w stanie powiedzieć, na ile to przekłada się na efektywność. Pewnie jakoś tam, bo mniej pisania, łatwiejsze refaktoryzacje, mniej błędów itd. ale czy czas spędzony na programowaniu spada o 0.01%, czy o 20% nie jestem w stanie powiedzieć.

Co do utrzymania jakości kodu, architektury - w każdym języku da się napisać spaghetti. Ale długo, w takiej Scali było go mniej, z prostego powodu. Za ten język brali się ludzie bardziej doświadczeni, bo zarówno Scala, jak i "serwerowy" Kotlin, to nie są języki pierwszego wyboru dla juniorów, którzy targetują się na technologie popularne na rynku pracy.

G8
  • Rejestracja:około 3 lata
  • Ostatnio:około rok
  • Postów:2000
0

@piotrpo: ale ty ciągle piszesz o Androidzie. Tu sprawa jest jasna. To co jest dziwniejsze, to czemu wygląda na to, że Scala się nie przyjęła jako ewentualny zamiennik Javy. Bo Kotlin miał w zamyśle zastąpić Javę na Androidzie i tylko tam. Scala była pomyślana jako lepszy język na JVM poza Androidem i jest zresztą znacznie bardziej zaawansowana niż Kotlin. I Kotlin był później o ile dobrze pamiętam.

edytowany 1x, ostatnio: gajusz800
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
4

@gajusz800: No przecież napisałem, Kotlin, jako język został stworzony jako "alternatywa dla Java". To nie był język dla Androida. Natomiast Android, nadał mu widoczności i masy krytycznej w postaci znających go programistów.
Porównując ze Scala - pewnym plusem jest łatwość przesiadki. Serio, przerabiasz tutorial, zajmuje ci to kilka godzin i możesz zacząć pisać (oczywiście, jeżeli znasz Javę).

AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około rok
  • Postów:3561
0

Dlaczego Kotlin nie (jeszcze) nie zwycieżył ...
Sam proces rozwoju języka jest w bardzo wąskim kręgu (nie znam szczegółów czy stricte zamknietym, czy pól-otwartym).
Skąd (dla inwestorów projektów, które mogły by być w Kotlinie) pewność, że jak w Scali nie będzie jakiejś breaking changes wersji ?
Firma stanęła w przymusowej pozycji tłumaczenia się z rosyjskich genów itd ...

Co ma za sobą zupełnie praktyczne a nie polityczne, równoległe problemy: tylko jedno jedyne IDE, owszem, uważane za najlepsze - ale jak porównać to do pewnego rodzaju demokracji / konkurencji w ekosystemie Javy ...


Bo C to najlepszy język, każdy uczeń ci to powie
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
0

@AnyKtokolwiek: Java też miała breaking changes. Kotlin jest, podobnie jak Java językiem Open Source. Pluginy obsługujące ten język są dostępne zarówno w Eclipse, jak i NetBeans. W VSC też są. No i jeżeli inwestor decyduje jakiego języka użyć w projekcie, to trochę nie wróżę sukcesu.

ZD
w/w plugin są prawdopodobnie martwe, dla NB nie ma śladów życia od lat
piotrpo
Nie mam pojęcia, nie używam
SZ
  • Rejestracja:około 14 lat
  • Ostatnio:około 6 godzin
  • Postów:178
0

Ale z drugiej strony (nie bronie javy :D) to jednak Java ostatnie lata dość fajnie się rozwija i zbiera z rynku sprawdzone pomysły z Kotlina czy z innych języków i implementuje, z opóźnieniem ale jednak zaczęli się bardziej starać. Wydaje mi się że przez to wiele firm backendowych nie zmigruje na Kotlina, będą dalej trzymać się Javy (programiści którzy znają itp)

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4706
3
szok napisał(a):

Ale z drugiej strony (nie bronie javy :D) to jednak Java ostatnie lata dość fajnie się rozwija i zbiera z rynku sprawdzone pomysły z Kotlina czy z innych języków i implementuje, z opóźnieniem ale jednak zaczęli się bardziej starać. Wydaje mi się że przez to wiele firm backendowych nie zmigruje na Kotlina, będą dalej trzymać się Javy (programiści którzy znają itp)

Tylko, że to doklejanie kolejnych elementów do starej składniowo javy powoduje, że już od dawna java to najbardziej skomplikowany (składniowo) język na jvm.
Może, dla starego programisty to jeszcze nie jest dramat, bo douczy (? hehe) się nowych elementów. Ale dla nowych programistów koszmar. A szczególnie jak ktoś spotkał się wcześniej z jakimś nowszym, ergonomicznym jezykiem - typu np. Rust.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 16 godzin
  • Postów:3277
0

Do tego sposób w jaki Java wrzuca nowe ficzery jest daleki od doskonałości. Czasami są to lekkie problemy estetyczne, jak np. wprowadzenie .stream() do kolekcji, czasami kompletne porażki, jak np. Optional<T>, czy moduły, które też zostały raczej chłodno przyjęte.

99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
2

@piotrpo Scala była bardzo blisko zdetronizowania Javy. Niestety społeczność Scalowców skopała zadanie, po pierwsze mieliśmy wysyp niskiej jakości bibliotek pisanych przez fanów Haskella. Swoje apogeum to szaleństwo osiągnęło w postaci ScalaZ (https://github.com/scalaz/scalaz). W efekcie kod "polecany" przez społeczność dorównywał skomplikowaniem dywagacjom o kowektorach w kontekście tesora metryki... Sam miałem okazję pracować z takim "czytelnym kodem", często było tak że musiałem przenieść daną linijkę do interpretera Scali żeby dowiedzieć się o co k... tam chodzi.

Drugi problem to sam ekosystem: brak kompatybilności wstecznej wraz z szybkim rozwojem języka powodował spory ból głowy zarówno u twórców jak i użytkowników bibliotek (każda Scalowa biblioteka ma wersję skali wbitą w nazwę np. json4s_2.10, json4s_2.12 - oczywiście wersji 2.10 nie użyjesz ze scalą 2.12). Sam kompilator jak również SBT były powolne. Biblioteka standardowa Scali pisana przez doktorantów Oderskiego również pozostawiała sporo do życzenia jeśli chodzi o jakość API i dokumentacji.

Język jechał na fali hype'u ale potem ludzie zaczeli się od niego odwracać. Społeczność zrobiła się toksyczna. Niektórych nie wpuszczano na konferencje :D

Pracowałem 2 amerykańskich startupach w okolic Red Wood City, oba miały znaczną część kodu w Scali, oba założone w okolicach 2010 roku. Także widać że potencjał był i to duży, toksyczne community i narcystyczny dyktator nie pozwoliły się jednak Scali rozwinąć.

Obecnie na zgliszczach dawnej sławy Scala się odradza, wersja 3.0 jest pod wieloma względami "normalna" w porównaniu do wcześniejszych wypaczeń. ZIO ma szansę stać się the killing feature. Zobaczymy co przyniesie przyszłość...


Holy sh*t, with every month serenityos.org gets better & better...
piotrpo
Nadaje się na kanwę scenariusza dla wenezuelskiego przemysłu filmowego...
jarekr000000
Zabawne, że to ZIO tak naprawde, i kulturowo, i technicznie pochodzi ze ScalaZ
Wibowit
narcystyczny dyktator - ocb z tym? trochę poczytałem o różnych dramach w świecie scali, ale nie pamiętam o co chodziło z oderskim. jedyne co to to, że odersky miał dość cancel culture i nie chciał brać w tym udziału, bo paraliżowało to ekosystem scali.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)