Dlaczego Kotlin jeszcze nie wyparł Javy?

Dlaczego Kotlin jeszcze nie wyparł Javy?
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:18 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0

Jako dziadek grzebiący kiedyś w asemblerze na zx80 pod cpm, a od dawna w C/C++/Javie, rzuciłem okiem na tutorial Kotlina 2.0, co trwało jakieś pół godziny, więc moja opinia jest absolutnie powierzchowna.
Widzę, że ten kto projektował Kotlina bardzo lubił kiedyś koncepcję Niklausa Wirtha i jego Pascala bo składnia Kotlina, to najkrócej ujmując (i bez znajomości bibliotek) koncepcja Javy ze składnią Pascala plus składnia lambd. Wygląda to dla mnie ciekawie. Dziwną rzeczą jest dla mnie przywrócenie liczbowych typów unsigned w języku z którego wyrzucono typy proste. Może mi ktoś wyjaśnić sens tego podejścia? Oszczędność jednego bita w języku, w którym wszystko przydzielane jest przez stertę, a najmniejszy przydział, to 8 lub 16 bajtów dla każdego obiektu?


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
99xmarcin
Nie wydaje mi się żeby tablica byte[] w Javie miała rozmiar x8 lub x16. To że w bytecode slot na stosie ma min. rozmiar 4B nie znaczy że JIT nie przerobi tego na bardziej optymalny kod.
SL
koncepcja Javy ze składnią Pascala plus składnia lambd. mógłbyś rozwinąć. IMO jest zupełnie na odwrót, np kotlin jest expression based zamiast statement based, co jest krokiem w tył w porównaniu do tego co reprezentuje sobą Pascal
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
3
Olamagato napisał(a):

Jako dziadek grzebiący kiedyś w asemblerze na zx80 pod cpm, a od dawna w C/C++/Javie, rzuciłem okiem na tutorial Kotlina 2.0, co trwało jakieś pół godziny, więc moja opinia jest absolutnie powierzchowna.
Widzę, że ten kto projektował Kotlina bardzo lubił kiedyś koncepcję Niklausa Wirtha i jego Pascala bo składnia Kotlina, to najkrócej ujmując (i bez znajomości bibliotek) koncepcja Javy ze składnią Pascala plus składnia lambd. Wygląda to dla mnie ciekawie. Dziwną rzeczą jest dla mnie przywrócenie liczbowych typów unsigned w języku z którego wyrzucono typy proste. Może mi ktoś wyjaśnić sens tego podejścia? Oszczędność jednego bita w języku, w którym wszystko przydzielane jest przez stertę, a najmniejszy przydział, to 8 lub 16 bajtów dla każdego obiektu?

Typy unsigned nie są wprowadzone z powodu oszczędności miejsca, ale z powodu poprawności. (MYLIŁEM się -> patrz dyskusja poniżej)
Gdybyś np. chciał zrobić, tak że nie można mieć ujemnego wzrostu.

Kotlin się mocno różni od javy - nie jest to java ze składnią pascala. Ma choćby takie rzeczy jak natywny typ funkcyjny (X->Y), lambda receivers i inaczej działają generyki (declaration site variance) - nie da się tego prosto przełożyć (mimo, że niby IntelliJ ma taką opcję -ale to dekompresja stratna). To zupełnie inny język - wiecej ma wspólnego ze Scalą, a jedynie jest tak zaimplementowany, żeby współpraca z javą była w miarę prosta i efektywna (przy czym jak kompilujesz kotlina do native albo do JS to i tak się nie uda).

Nawet w javie nie wszystko jest faktycznie alokowane na stercie z punktu widzenia programisty to sterta, z punktu widzenie faktyczniej implementacji to kwestia "optymalizatora". W kotilnie może i w języku nie masz typów prostych, ale normalnie już na poziomie bytecode masz. JIT robi kolejne optymalizacje, choć akurat w typach prostych to niewiele może. Potrafi natomiast obiekty prostych klas umieścić w całości w rejestrach i na stosie - zamiast faktycznie coś alokować na stercie - normalka.

Świat poszedł mocno do przosu od czasów z80 i nawet x86 - myślenie asemblerem się nie sprawdza, często prowadzi do niepotrzebnie skomplikowanego kodu, a czasem nawet do mniej wydajnego.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 7x, ostatnio: jarekr000000
Olamagato
Dość dobrze wiem jak świat poszedł do przodu bo np. kombinuję jak wykorzystać wątki wirtualne w swoich gryzmołach w Javie. No, ale muszę sobie zrobić upgrade z Javy 17... :)
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10059
0
jarekr000000 napisał(a):

Typy unsigned nie są wprowadzone z powodu oszczędności miejsca, ale z powodu poprawności.
Gdybyś np. chciał zrobić, tak że nie można mieć ujemnego wzrostu.

Mógłbyś podać źródło tej informacji?

99xmarcin
  • Rejestracja:około 5 lat
  • Ostatnio:5 miesięcy
  • Postów:2420
1

And, Or, Xor, Not i shift left działa tak samo na int co unsigned int.
Shift right - jedyna różnica w Java nie ma znaczenia bo są 2 operatory >>> i >>.

O poprawności tutaj nie może być mowy bo int to 4B, czyli wzorzec bitowy. Nie jest walidowany w żaden sposób. Wzrost 0 cm też nie ma sensu.

Jako że podział na signed/unsigned występował już w starym C, należy się spodziewać że chodziło po prostu o oszczędność pamięci. Jeżeli liczba była z przedziału 0 - 64k to miejściła się w unsigned short a więc można było zaoszczędzić 2B (vs 4B gdy użyjemy int'a).

Z pewnością dla pewnych wartości jak rozmiar (size_t) typy unsigned mają większy sens. Niemniej znów - jakby nikomu nie zależało na pamięci można by użyć po prostu long long i dodatkowo mieć wartość -1 na błędy typu ERR_INVALID_SIZE.

Na koniec pewnie są też architektury komputerów gdzie obliczenia na singed/unsigned trwały inne ilości cykli (czy raczej były takie w latach 70s).

Cały podział pochodzi więc z ery gdzie każdy bit miał znaczenie, a różnych architektur CPU było od groma. Zapewne miało to wtedy głęboki sens.


Holy sh*t, with every month serenityos.org gets better & better...
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
1

Może mi ktoś wyjaśnić sens tego podejścia?

https://kotlinlang.org/docs/unsigned-integer-types.html#use-cases

bo składnia Kotlina, to najkrócej ujmując (i bez znajomości bibliotek) koncepcja Javy ze składnią Pascala

Serio? No to faktycznie jedynie, co mozna o tej opinii powiedziec, to "powierzchowna". Chociaz jak dla mnie, nawet powierzchownie, to z Pascalem nie ma nic wspolnego. Musisz chyba bardziej sie zaglebic


λλλ
edytowany 5x, ostatnio: stivens
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
2
Riddle napisał(a):

Mógłbyś podać źródło tej informacji?

Ewidentnie się myliłem.

Wyciągnąłem wnioski z innych języków - a faktycznie jak wskazuje link od @stevens
https://kotlinlang.org/docs/unsigned-integer-types.html#use-cases
jednak poprawność nie była celem :-(


jeden i pół terabajta powinno wystarczyć każdemu
Escanor16
  • Rejestracja:prawie 5 lat
  • Ostatnio:10 dni
  • Postów:366
4

Odpowiadając na główne pytanie - bo Java to hegemon działający na 8kkkk urządzeń a Kotlin to ciekawostka i zabawka dla ex programistów JS


Nie chciałem być programistą jednak tego zechciał świat.
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
0

image


λλλ
ZI
  • Rejestracja:ponad 8 lat
  • Ostatnio:dzień
  • Postów:228
2

Niewygodna prawda jest taka ze po prostu java jest lepsza. Łatwiej w niej znalezc pracownika do tego jest uniwersalna więc nie ma problemu z przechodzeniem miedzy zespołami jeśli jest taka potrzeba. Jest dostatecznie czytelna, pozwala na duża elastyczność itd.

UN
  • Rejestracja:ponad 8 lat
  • Ostatnio:8 miesięcy
  • Postów:24
4

Mam doczynienia z java od wersji chyba 1.0 ale ostatnio bawiłem się kotlin multiplaform i powiem że tylko z powodu tego powodu że po bożemu potraktowano problem nulla mógłbym się przesiąść. Nie cierpię tej protezy w postaci Optional. Ale ofert pracy jak na lekarstwo i robi się zamknięte koło

edytowany 1x, ostatnio: undsame
obscurity
  • Rejestracja:około 6 lat
  • Ostatnio:około 13 godzin
1

Bo java jest dużo prostsza.
W projekcie mieliśmy jeden mikroserwis napisany w kotlinie, okazało się że kotlina znała tylko jedna osoba z javowców i po jej odejściu drapali się po głowach i nie potrafili nic tam zmodyfikować. Ostatecznie przepisali na javę.


"A car won't take your job, another horse driving a car will." - Horse influencer, 1910
Zobacz pozostałe 9 komentarzy
stivens
Ja bym jeszcze dodal, ze pozniej te osoby, ktorym sie nie chce uczyc nowych rzeczy, to one przeciez ucza i ksztaltuja kolejne pokolenia programistow. Jak ktos zielony sie zapyta "czego sie uczyc" to ludzie beda odpowiadac w oczywisty sposob, ze taka osoba powinna sie uczyc ich ulubionego jezyka. Ulubionego i pewnie jedynego, ktory znaja. Jak ktos bedzie juniorowal, to pewnie bedzie programista Javy czy innego Javascriptu. A potem to juz mu sie nie bedzie chcialo. I tak to sie kreci. To nie tak, ze Kotlin jest trudniejszy dla poczatkujacych...
stivens
... zwyczajnie popularne jezyki sa popularne, bo sa popularne (sic!) i przekroczyly mase krytyczna - kreca sie jak kula sniezna i nabieraja kolejna mase
obscurity
racja, choć nowe pokolenie to już nie java ani kotlin tylko python i javascript
AS
@obscurity: skill issue czy jakiś dziwny paradygmat/DSL? Javowiec niełapiący Kotlina, Groovy czy Scali w tydzień, to kiepski programista.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
6
undsame napisał(a):

Mam doczynienia z java od wersji chyba 1.0

Moim zdaniem wycierpiałeś już wystarczająco.


jeden i pół terabajta powinno wystarczyć każdemu
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:18 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
2
stivens napisał(a):

Serio? No to faktycznie jedynie, co mozna o tej opinii powiedziec, to "powierzchowna". Chociaz jak dla mnie, nawet powierzchownie, to z Pascalem nie ma nic wspolnego. Musisz chyba bardziej sie zaglebic

Zagłębiłem się. Składnia dla mnie ewidentnie jest inspirowana Pascalem. Turbo Pascala używałem trochę przez wiele lat bo miał fajniejsze IDE niż C, który miał wtedy właściwie tylko kompilator i notepada (dużo później dostał IDE Borlanda i lepszy kompilator). Odwrotna notacja typów po dwukropku, to i downto, val zamiast const (chociaż znacznie szersze możliwości), słowa kluczowe in oraz when, zakresy - czyli literały typu 1..4 lub 4 downto 1. Wiele rzeczy mi wskazuje, że inspiracja Pascalem w Kotlinie była. I wcale by mnie to nie dziwiło bo w czasach gdy Sergey Dmitriev, Oleg Stepanov i Maxim Shafirov byli dzieciakami i gdy się uczyli dopiero coś odpalać, to królował TurboPascal jako jedyny IDE i język pozwalający z palca odpalić działający program w jednym kroku. Oczywiście są nowsze elementy, które na pewno inspirowane były nowszymi językami. Niewiele innych języków widziałem z podobną składnią. Obecnie większość ma składnię inspirowaną C tak jak Java, C# i wiele innych.
Nie mam nic przeciwko językowi i jak napisałem sama składnia jest dla mnie wręcz nostalgiczna. Przypuszczam, że gdybym dzisiaj chciał w Idei odpalać na szybko jakieś programiki pisząc w kotlinie, to czułbym się chyba podobnie jak kiedyś w Turbo.

Wtrącając tylko swoje 3gr do tej dyskusji i na temat, to sytuacja z Kotlinem i Javą na Adroidzie od Google przypomina mi dawną sytuację z Javą i J++ Microsofta na Windowsie. Wtedy też na siłę promowano nowszy język (z założenia lepszy) przez utrudnianie działania starszego w systemie, którego twórca miał monopol. Takie coś nigdy nie ma dobrego PR i siłą rzeczy nawet jeżeli Kotlin, to świetny język i środowisko, to jest to na pewno pewien zgrzyt i sytuacja w której niektórzy (ludzie, a ludzie mają też emocje) mogą czuć opór przed używaniem czegoś co monopolista w swoim środowisku promuje niezbyt czystymi zagraniami. A pamiętamy jak się skończyło z J++. Czy ktoś jeszcze używa tego języka, albo środowiska Microsofta?
No właśnie.
Niektórzy nawet nie wiedzą, że istniał.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
edytowany 1x, ostatnio: Olamagato
stivens
Niewiele innych języków widziałem z podobną składnią. Obecnie większość ma składnię inspirowaną C tak jak Java, C# i wiele innych. - a wiekszosc nowoczesnych jezykow ma "odwrocona" notacje. Scala, Kotlin, Rust, TypeScript, Swift, Go, Nim, Odin, F#
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
2

mogą czuć opór przed używaniem czegoś co monopolista w swoim środowisku promuje niezbyt czystymi zagraniami

Ej, ej ale zarzucasz cos, co nie ma absolutnie pokrycia w rzeczywistoci. Taki stan rzeczy w Androidzie jest spowodowany sprawa sadowa Google LLC v. Oracle America, Inc.

To nie Google zaczelo promowac Kotlina nieczysto, tylko Oracle strzelilo sobie w stope w tym ekosystemie i wytoczylo batalie sadowa o API Javy. I Google nie jest tworca Kotlina

screenshot-20240708185204.png


λλλ
edytowany 5x, ostatnio: stivens
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
2

Wiele rzeczy mi wskazuje, że inspiracja Pascalem w Kotlinie była. I wcale by mnie to nie dziwiło bo w czasach gdy Sergey Dmitriev, Oleg Stepanov i Maxim Shafirov byli dzieciakami i gdy się uczyli dopiero coś odpalać, to królował TurboPascal jako jedyny IDE i język pozwalający z palca odpalić działający program w jednym kroku.

No to sprawdzmy...

https://kotlinlang.org/docs/faq.html#is-kotlin-hard

Kotlin is inspired by existing languages such as Java, C#, JavaScript, Scala and Groovy.

Nigdzie tutaj Pascala nie wymienieja ;) Skladnia Kotlina jest raczej bezposrednio inspirowana Scalą! I odwrocona notacja, to jest wlasnie - wspolczesnie - taka prawie, ze domyslna notacja i wiekszosc jezykow, ktore powstaja to adaptuja taka skladnie. Czyli te wszystkie Rusty, Swifty, Nim-y itd.
Nawet ten potworek Go stosuje taka notacje typow.


λλλ
edytowany 3x, ostatnio: stivens
Zobacz pozostałe 4 komentarze
obscurity
C# był inspirowany między innymi pascalem, zresztą za pascalem, delphi, C# i typescriptem stoi ten sam człowiek - Anders Hejlsberg więc pośrednio można powiedzieć że kotlin też pośrednio jest inspirowany pascalem i da się znaleźć pewne podobieństwa. Zresztą obecnie wszystkie języki zaczynają się w pewnym stopniu upodabniać do siebie; na szczęście żaden nowy język chyba nie ma tego nieszczęsnego "begin" i "end"
jarekr000000
@obscurity: zaczynają się w pewnym stopniu upodabniać do siebie pan raczy żartować....
somekind
na szczęście żaden nowy język chyba nie ma tego nieszczęsnego "begin" i "end" - no, zamiast tego stosują jakieś okropne klamerki.
obscurity
@somekind: już lepsze klamerki niż wcięcia
KamilAdam
Scala 3 może nie ma begin, ale ma opcjonalny end
M3
  • Rejestracja:9 miesięcy
  • Ostatnio:9 miesięcy
  • Postów:3
0

Jak myślicie czy jest jeszcze miejsce na zupełnie nowy język programowania napisany pod wirtualną maszynę JVM/GraalVM?

https://en.wikipedia.org/wiki/List_of_JVM_languages

edytowany 1x, ostatnio: Maciek322
Zobacz pozostałe 19 komentarzy
GO
@Maciek322: a ty co masz, mi się wydaje, że taki neovim jest najlepszy, mega wygodne, odpalasz konsole skrótem klawiszowym i jest miło przyjemnie, zdajesz się na swoje umiejętności, zawsze można googlować czy LLM modelu się zapytać, bo nikt nie jest nieomylny i człowiek całe życie się uczy, ale pamięć mięśniowa się szybciej uczy od pamięci wzrokowej.
M3
0.0.0.0 ma kilka różnych znaczeń, ale w tym kontekście, gdy serwer ma nasłuchiwać 0.0.0.0 oznacza to „słuchaj na każdym dostępnym interfejsie sieciowym”. Adapter pętli zwrotnej z adresem IP 127.0.0.1 z punktu widzenia procesu serwera wygląda jak każda inna karta sieciowa na komputerze, więc serwer ma nasłuchiwać 0.0.0.0 zaakceptuje również połączenia na tym interfejsie. To jest powiązane z ukrytą siecią Smart cicha telemetria nasłuchująca jak echelon. Dobry edytor nie ma tego adresu. Tylko te korporacyjne grubasy.
GO
127.0.0.1 też słucha na ipv4, a np. localhost słucha najpierw na ipv6 i potem jak się nie uda to na ipv4, też to dobrze wiedzieć bo program marnuje zasoby nadsłuchując niepotrzebnie ipv6 mimo, że z niego nie korzystasz.
M3
Jeśli Twój serwer WWW Nginx nasłuchuje 127.0.0.1:80, to nikt poza Tobą zalogowanym na tym serwerze nie będzie mógł uzyskać do niego dostępu. W przypadku, gdy serwer WWW nasłuchuje 0.0.0.0:80, każdy w Internecie może połączyć się z Twoim serwerem wpisując w przeglądarce adres IP Twojego serwera. To jest wszystko celowo robione bo mają ludzi za idiotów którzy potrafią włączyć tylko laptopa i telewizor Smart. Najlepiej wyciąć to ipv6 przy kompilacji kernela. Nie chce mi się czekać żeby wysłać wiadomość co 10 minut
GO
Też te ipv6 kiedyś miało wejść bo straszyli tym, że adresów brakuje już od 10 lat, a dalej nie weszło.
AS
  • Rejestracja:prawie 4 lata
  • Ostatnio:około godziny
  • Postów:346
1

Ludzie często mylą programowanie funkcyjne z programowaniem funkcjonalnym.

Możesz rozwinąć, o co chodzi?

czy jest jeszcze miejsce na zupełnie nowy język programowania napisany pod wirtualną maszynę JVM

To chyba rynek decyduje, a nie my programiści. W czym miałby pomóc nowy język, a w szczególności na JVM, która jest z założenia mocno ograniczona?

Tak więc czy potrzebny jest nowy język w pełni obiektowy poprawiający Javę […] wszystko jest obiektem?

Tego akurat na pewno nie potrzebujemy. Ja nie jestem obiektem.

Zobacz pozostałe 4 komentarze
GO
Kernel linuxa ma Obiekty, są to explicit pointery funkcji, czyli wyłuskujesz strukturę i element jest funkcją, przy implicit masz klasę i kompilator za ciebie wywołuje funkcję, ale w assemblerze czyli na najniższym poziomie jest to identyczne zachowanie czyli wrzucasz adres struktury i call funkcji, czy metody w klasie, a call funkcji w struturze. Jest to identyczne i mogę to udowodnić bo sprawdzałem to setki razy analizując assemblera wygenerowanego z C++ i C
stivens
Dobra, dobra. Panowie wiecie co mialem na mysli.
GO
Że są obiekty wszędzie mimo, że prymitywne w C na strukturach z poineterami na funkcje tak kernel linuxa działa.
stivens
Nie to bylo clue tej wypowiedzi
Miang
czy ten rynek jest teraz tu z nami w tym pokoju?
GO
  • Rejestracja:12 miesięcy
  • Ostatnio:4 miesiące
  • Postów:358
0
ArchitektSpaghetti napisał(a):

Ludzie często mylą programowanie funkcyjne z programowaniem funkcjonalnym.

Możesz rozwinąć, o co chodzi?

czy jest jeszcze miejsce na zupełnie nowy język programowania napisany pod wirtualną maszynę JVM

To chyba rynek decyduje, a nie my programiści. W czym miałby pomóc nowy język, a w szczególności na JVM, która jest z założenia mocno ograniczona?

Tak więc czy potrzebny jest nowy język w pełni obiektowy poprawiający Javę […] wszystko jest obiektem?

Tego akurat na pewno nie potrzebujemy. Ja nie jestem obiektem.

Ja mam podobnie, ciągle mi się myli te programowanie funkcyjne czy funkcjonalne.
Niby wiem, że trzeba nie mutować zmiennych, bo jak wiele wątków zmutuje ten sam stan to można różnych błędów dostać, trzeba mutexy i inne mechanizmy blokujące zrobić, żeby do tego nie doszło jak ciągle tworzysz nowe to nie musisz o takie coś się martwić, ale nie o tym mówię.

Nigdy nie miałem okazji z kimś lepszym programować to nigdy się niczego nie nauczyłem.

jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4
ArchitektSpaghetti napisał(a):

Ludzie często mylą programowanie funkcyjne z programowaniem funkcjonalnym.

Możesz rozwinąć, o co chodzi?

Myślę, że zwyczajnie bredzi.
Fakt, że do lat 90tych nie było ustalone polskie nazewnictwo i nazywano to często "programowaniem funkcjonalnym", co brzmiało dwuznacznie. Dlatego zmieniono polską nazwę na "funkcyjne". Tymniemiej, to dokładnie jedno i to samo "functional programming".


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
M3
Wypowiadasz się w bardzo chamski sposób i jesteś niemiły. Żegnam!
GO
Nie no miły jest, ja się z nim dużo razy kłóciłem i to tylko w celu wymiany zdań, to nie są kłótnie czy kogoś znieważyć, tylko żeby ktoś podjął walkę i powiedział co sam myśli o danym zjawisku, tu wszyscy są anonimowi to i tak na nic to nie wpływa, po prostu musisz wyjść jakoś czy powiedzieć, że akurat tego nie znałeś, czy podważyć i go zrzucić z piedestału :> Jak masz rację, bo w programowaniu i matmie tylko prawda i logiczne myślenie się liczy i ludzie to widzą. Wszyscy czekają, na to żebyś był był lepszy i powiedział coś czego sami nie wiedzą, bo wszyscy gadają bzdety.
GO
  • Rejestracja:12 miesięcy
  • Ostatnio:4 miesiące
  • Postów:358
0

Java się wydaje łatwiejsza, a tak nie wiem kotlin też fajny jest, ale to programista wybiera w czym chce pisać.
Z zewnątrz to może być głupia decyzja, ale wewnątrz to mogło być najlepsze rozwiązanie, np. nikt nie umiał kotlina.

Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:18 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0
stivens napisał(a):

Ej, ej ale zarzucasz cos, co nie ma absolutnie pokrycia w rzeczywistoci. Taki stan rzeczy w Androidzie jest spowodowany sprawa sadowa Google LLC v. Oracle America, Inc.

Ok, nie znałem szczegółów.

To nie Google zaczelo promowac Kotlina nieczysto, tylko Oracle strzelilo sobie w stope w tym ekosystemie i wytoczylo batalie sadowa o API Javy. I Google nie jest tworca Kotlina

Cóż, ok rozumiem jedną i drugą stronę. Faktycznie Oracle strzeliło sobie w stopę, ale z drugiej strony trzeba pamiętać, że Oracle tak jak wcześniej Sun ma alergię na robienie brancha Javy niekompatybilnej z dotychczasową. Zapewne chodzi o kontrolę i pieniądze. Duże pieniądze. Myślę, że Oracle już wycofuje się z tego błędu ponieważ jak się doczytałem najnowsze wersje JDK od Oracle znowu są na darmowej licencji. Widocznie odcinanie Javy od Androida trochę zabolało Oracle'a.

Co do samego tematu, to Java ma wciąż wiele naleciałości z wcześniejszych lat wynikające z założeń, które jak się okazało w trakcie ostatnich lat były błędne. Na przykład dziedziczenie powinno się stać raczej wyjątkiem niż regułą. Co prawda Java wywaliła dziedziczenie wielobazowe z C++ skracając do jednobazowego, ale i to okazało się zbyt błędotwórcze, więc trzeba to jeszcze ograniczyć - być może w przyszłości każda klasa konkretna w Javie będzie domyślnie typu final. Mogę sobie wyobrazić takie zmiany w przyszłych wersjach. A i są kolejne kolejne zmiany wraz trendami wynikającymi z odkryć jak najlepiej unikać błędów.
Sam przez ostatnie lata nie miałem większej motywacji do nauczenia się innych języków opartych na JVM takich jak np. Scala właśnie dlatego, że nie widziałem większego powodu. Wystarczyło mi na swój prywatny użytek napisanie swojego własnego drzewa kontenerów pozbawionego wszystkich naleciałości poprzednich wersji Javy - czegoś podobnego właśnie do standardowych kontenerów Kotlina. Tym bardziej nie mam więc zbyt dobrego powodu do zastąpienia Javy przez Kotlina. Pewnie w Kotlinie też prędzej czy później pojawią się problemy wynikłe z potrzeby korekty języka bo i tu może się okazać, że jakieś założenia przy jego tworzeniu okazały się niewygodne lub sprawiające problemy. Myślę, że nie bez powodu Jetbrains oznaczył aktualnego Kotlina numerkiem 2.0. Pewnie za jakiś czas będzie też 3.0 bo nie ma języka wiecznego jeżeli jest on żywy, a to wynika przecież z potrzeb.


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
Zobacz pozostałe 3 komentarze
Olamagato
Patrzyłem przez lata na ewolucję C, a później na C++ i z każdym rokiem wkompilowywany do kodu maszynowego runtime był coraz większy i większy. Ostatecznie okazało się, że JVM, to taki kolejny krok w ewolucji runtime, czyli tego co jest dostępne z palca dla każdej aplikacji. A schodząc w dół, to nie napiszę kodu interaktywnego MBR (wybór partycji do odpalenia), gdzie do dyspozycji mam 346 bajtów w Javie, ale również nie napiszę go w nawet najbardziej odchudzonym C bo kod zajmował ~1KB. Musiałem napisać sobie w asemblerze używając wywołań biosa. Ale sprawdzę dla Rusta.
stivens
Myślę, że nie bez powodu Jetbrains oznaczył aktualnego Kotlina numerkiem 2.0. Pewnie za jakiś czas będzie też 3.0 bo nie ma języka wiecznego jeżeli jest on żywy, a to wynika przecież z potrzeb. - pisalem to juz nizej, ale "2.0" to wylacznie kwestia kompilatora. Sam jezyk jakos szczegolnie sie nie zmienil. A chyba nawet sie w ogole nie zmienil, moze dostal kilka nowych feature'ow
stivens
Strafa komfortu? Być może. I tak poznałem już dawniej kilkanaście różnych języków, więc może to rzeczywiście jakieś lenistwo, ale obecnie języków i różnych odgałęzień jest tyle, że uczenie się wszystkich po łebkach (bo inaczej się nie da) tylko z takiego powodu, że jeden z nich być może kiedyś stanie się nowym C. Ale ja już wtedy będę starym dziadem i nic mi z tego nie przyjdzie poza ćwiczeniem umysłu zamiast krzyżówek - a o tym to pisalem tutaj :P (...)
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 4 godziny
2
Olamagato napisał(a):

Oracle tak jak wcześniej Sun ma alergię na robienie brancha Javy niekompatybilnej z dotychczasową.

a czy którekolwiek korpo rozwijające swój język akceptuje niekompatybilne zmiany w tym języku wprowadzane przez inne korpo, na tyle duże i poważne, żeby zagrozić jednorodności rynku i potencjalnie zrobić rozłam? dawny microsoftowy klon javy był niekopatybilny z javą, bo chociażby wprowadzał alternatywne sposoby integracji z bibliotekami natywnymi i to już sprawiało, że wiele programów javowych zaczynało być windows-only. to jest oczywiste zagrożenie dla twórców oryginalnej javy, w przypadku gdy windows jest monopolistą na rynku pecetów.

oracle dzisiaj ma graalvma, który umożliwia odpalanie kodu w różnych językach i ogólnie ułatwia implementację różnych języków. oracle mogłoby spokojnie pokusić się o zrobienie częściowej i nie do końca kompatybilnej implementacji .neta latającej na graalvmie, ale nie ma zamiaru tego robić. można się domyślać czemu, ale ja jestem pewien, że jednym z głównych powodów jest nieuchronna batalia sądowa, którą wytoczyłby microsoft.

poza tym implementacji javy jest wiele https://en.wikipedia.org/wiki/List_of_Java_virtual_machines i jestem pewien, że większość z tych darmowych ma duże problemy z kompatybilnością, ale oracle ich nie ściga, bo nie powodują rozłamu na rynku.


"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 1x, ostatnio: Wibowit
RO
  • Rejestracja:9 miesięcy
  • Ostatnio:9 miesięcy
  • Postów:4
0

Java i C++ będą do końca przestarzałymi językami programowania i nikt tego nie zmieni taka ich filozofia i naleciałość lat. Chcesz nowych języków wybierz Kotlin lub Swift. JVM jest dalej tworzone w starym i niebezpiecznym dla pamięci języku C++ dlatego zaraz po C, PHP to Java ma najwięcej wycieków pamięci. Nikt nie będzie przepisywał JVM z C++ na inny bezpieczny język.
W 2024 nikt by nie tworzył maszyny wirtualnej tylko zwykły kompilator jak w Rust.
Dlang mógł być dobrym zamiennikiem ale szybko się zestarzał patrząc na Zig czy Rust.

edytowany 2x, ostatnio: rodeo
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 4 godziny
1

@rodeo to prawdopodobnie stały bywalec 4p, który tworzy sobie nowe konta, narzeka na języki programowania, a potem szybko swoje konto usuwa. mimo wszystko odpowiem.

rodeo napisał(a):

Java i C++ będą do końca przestarzałe języki i nikt tego nie zmieni taka ich filozofia i naleciałość lat. Chcesz nowych języków wybierz Kotlin lub Swift.

każdy język, który stawia na silną kompatybilność wsteczną, będzie kiedyś przestarzały (albo chociażby mocno trącił myszką).

JVM jest dalej tworzone w starym i niebezpiecznym dla pamięci języku C++ dlatego zaraz po C, PHP to Java ma najwięcej wycieków pamięci.

  1. podaj źródło. czy ktoś zrobił analizę tych wycieków pamięci?
  2. wycieki pamięci nie naruszają bezpieczeństwa pamięci. rzadko kiedy wycieki są problemem (czyli, inaczej mówiąc, czasem są problemem, ale ogólnie rzadko :) ), bo zwykle są szybko naprawiane albo są bardzo powolne i niewiele psują. tymczasem używanie (zarówno modyfikowanie jak i odczyt) pamięci, do której nie powinno się mieć dostępu jest dużo większym problemem (także problemem bezpieczeństwa) i ogólnie dużo trudniejszym do namierzenia i naprawienia.

Nikt nie będzie przepisywał JVM z C++ na inny bezpieczny język.

java jest już od dawna przepisywana na javę. patrz: graalvm. nie wiadomo kiedy (i czy w ogóle) całkowicie zastąpi pisanego w c++ hotspota, ale tak czy siak oraclowi raczej się z przesiadką nie spieszy. w końcu java ma już jakieś 30 lat i nie zapowiada się by w przewidywalnej przyszłości straciła na znaczeniu.


"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 5x, ostatnio: Wibowit
Zobacz pozostałe 11 komentarzy
MarekR22
W obecnej firmie próbujemy rekrutować na C++, ale nie na juniora i idzie ciężko (czasami biorę udział w rekrutacji jak ktoś jest nieobecny/zajęty). Co 5-7 kandydat dostaję ofertę, a z tego co 3 ją przyjmuje, więc idzie ciężko i powoli. Z ostatniego czasu jak szukałem pracy ot ewidentnie ofert pracy na C++ jest mniej niż wcześniej, ale posuchy nie ma.
Miang
@MarekR22: dzięki, patrzyłam w te ogłoszenia ale w jednym przypadku nie ma zdalnej, w drugim nie ma B2B
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:18 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
0
rodeo napisał(a):

Java i C++ będą do końca przestarzałymi językami programowania i nikt tego nie zmieni taka ich filozofia i naleciałość lat. Chcesz nowych języków wybierz Kotlin lub Swift.

No Dobrze, załóżmy, że Java też się tak zestarzeje, że żadne nowe edycje języka nic nie zmienią. Ale to będzie dotyczyć również Kotlina czy innych języków. Na dzisiaj może jest super, chociaż pewnie nie bez ważnego powodu Kotlin jest już reklamowany jako 2.0. Ale mi jako kogoś kto "wychował" się na C (ale także Pascalu) składnia C/Java jest wystarczająco czytelna, a skomplikowane konstrukcje żonglujące danymi są raczej podobnie trudne na pierwszy rzut oka jak w Kotlinie czy innych językach.

JVM jest dalej tworzone w starym i niebezpiecznym dla pamięci języku C++ dlatego zaraz po C, PHP to Java ma najwięcej wycieków pamięci. Nikt nie będzie przepisywał JVM z C++ na inny bezpieczny język.

Przecież Kotlin też działa na JVM, ale i pewnie teraz na Dalviku - chcesz powiedzieć, że ten sam kod źródłowy będzie inaczej działał na jednej maszynie wirtualnej niż na drugiej?
Poza tym zdaje mi się, że niemała część kompilatora javac oraz maszyny wirtualnej Javy jeszcze od Suna (a potem Oracle'a) została przepisana do Javy.
Przyglądam się wielkości Oracle Java 17 dla Windozy i kod maszynowy w exe/dll zajmuje 45MB, a pozostałych modułów bez dokumentacji i śmieci (głównie modułów Javy), to 246MB. Podejrzewam więc, że te 45MB jest zależne bezpośrednio od systemu i CPU (np. źródła napisane w C/C++), a pozostałe raczej niezależne (czyli źródła napisane raczej w Javie bo w czym innym?).
Myślę, że część napisana w C/C++ jest tak mała jak to możliwe i specyficzna dla systemu. A pisanie niskopoziomowego kodu zazwyczaj opłaca się robić właśnie w tych językach bo wystarczy, żeby fizyczna maszyna miała kompilator C do kodu maszynowego, i już będzie można skompilować JVM na tę maszynę zapewne bez potrzeb żadnych lub większych zmian w kodzie wyższego poziomu w JDK.

W 2024 nikt by nie tworzył maszyny wirtualnej tylko zwykły kompilator jak w Rust.
Dlang mógł być dobrym zamiennikiem ale szybko się zestarzał patrząc na Zig czy Rust.

Dzięki. Rzucę okiem. Pierwsze co mi się rzuciło w oczy to to:
https://bulldogjob.pl/readme/programowanie-w-rust-the-good-the-bad-and-the-ugly


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
Zobacz pozostałe 6 komentarzy
Olamagato
@rodeo Jakby tak było, że Kotlina blokuje rosyjskojęzyczny twórca, to dlaczego dziwnie nie dotyczy to Intelij Idea? A przecież twórca ten sam.
stivens
Oni sie w ogole ~wszyscy wyprowadzili z Rosji, potepiajac inwazje pierwszego dnia
KE
Przecież jetbrainsy są z Pragi. Aczkolwiek mieli sporo ruskich deweloperów, jak kiedyś patrzyłem po ich bug trackerze. Jak widać poradzili sobie szybko z tym faktem.
Olamagato
W Pradze była tylko założona firma. Bo tam łatwo. Generalnie zarówno Idea jak i Kotlin to rosyjska myśl techniczna btw. Format mkv, którego też lubię to również rosyjska myśl.Nawet podejrzewam, że nazwa Kotlin mogła się wziąć stąd, że któryś z kolegów chciał upamiętnić jakieś namiętne chwile z ważną koleżanką na wycieczce właśnie na tej wysepce koło Petersburga. Inne nazwy to z kolei pomyłki. Tak jak na przykład pierwsza i druga żona. :)
Miang
  • Rejestracja:prawie 7 lat
  • Ostatnio:3 minuty
  • Postów:1661
0

czy mi się wydaje czy nikt tu o C# (błe) nie napisał ?
ao R, gdzie programiści R ? ;)


dzisiaj programiści uwielbiają przepisywać kod z jednego języka do drugiego, tylko po to by z projektem nadal stać w miejscu ale na nowej technologii
stivens
Julian where r u
KL
Kotlin to już chyba wymiera? Coś nie słychać ostatnio takiego hajpu jak swego czasu :(
Olamagato
  • Rejestracja:ponad 16 lat
  • Ostatnio:18 dni
  • Lokalizacja:Polska, Warszawa
  • Postów:1058
1

Nowa dla mnie ciekawostka:
https://www.geeksforgeeks.org/how-to-convert-kotlin-code-to-java-code-in-android-studio/?ref=oin_asr2
Szczególnie na końcu:
"Advantages of Java Over Kotlin:
Operator overloading is not possible.
Classes written in Java are not made final by default.
More readable syntax.
Use of static methods and variables."
Chyba Java się jednak jakoś broni przed zastąpieniem jej Kotlinem...
Może działa zasada Kopernika dla języków programowania? 😉


Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to właściwie po co...?
stivens
Papier wszystko przyjmie.
stivens
BTW. Pomijajac kwestie tego czy przeladowanie operatorow, final by default itd. to zady czy walety, to autor zwyczajnie ma 0 wiedze o Kotlinie jesli mysli, ze nie ma staticow w nim ;)
stivens
I czy zdanie Pana Hindusa na prawde ma dla Ciebie jakas wartosc? XD
jarekr000000
more readable syntax :-)
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 4 godziny
1

Using COBOL over Java can have several advantages, particularly in certain contexts:

Legacy System Integration: COBOL is deeply entrenched in legacy systems, especially in industries like banking, insurance, and government. It seamlessly integrates with these systems without the need for extensive rewrites.

Proven Reliability: COBOL has been used for decades in mission-critical applications. Its reliability and stability are well-documented, making it a trusted choice for systems where failure is not an option.

Performance in Batch Processing: COBOL is optimized for large-scale batch processing and high-volume transaction processing, which is common in financial and administrative systems. It can handle these tasks more efficiently than Java in some cases.

Maintenance of Existing Codebases: Given the vast amount of COBOL code already in use, maintaining and extending existing COBOL systems can be more straightforward and cost-effective than rewriting them in Java.

Specialized for Business Applications: COBOL was specifically designed for business data processing. Its syntax and structure are well-suited to tasks involving large-scale data processing, like payroll, billing, and financial record-keeping.

Less Complex Syntax for Business Logic: COBOL's syntax is designed to be readable and understandable by non-programmers, particularly those with a business background. This can make it easier for business analysts to work directly with the code.

Long-Term Stability: COBOL's design has changed little over the years, which can be an advantage for organizations looking for long-term stability and minimal disruption.

Minimal Runtime Overhead: COBOL programs often have minimal runtime overhead compared to Java, which requires a JVM (Java Virtual Machine). This can result in more predictable performance, particularly on older hardware.

Lower Risk for Certain Updates: For organizations already using COBOL, making small updates or changes in COBOL can carry less risk than migrating to a new language like Java, which might introduce compatibility or integration issues.

Experienced Workforce in Specific Sectors: In sectors like finance and government, there is a significant pool of experienced COBOL programmers, and many organizations have established processes and tools for COBOL development and maintenance.


λλλ
Olamagato
Wciąż można dostać pracę z programowaniem w czystym Cobolu. ;)
Olamagato
Natomiast nie znam nikogo kogo kto dostał pracę umiejąc biegle programować w np. brainfucku.
stivens
Ale co w zwiazku z tym?
jarekr000000
Nie uczcie się brainfucka - ciężko znaleźć w tym pracę.
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)