Czy Java rzeczywiście jest taka super?

Czy Java rzeczywiście jest taka super?
2

Jestem programistą Javy. W pracy i na różnych eventach programistycznych, w których uczestniczę, strasznie dużo osób spuszcza się nad cudownością Javy i jej wyższością nad innymi językami. Ja podchodzę do tego na chłodno i nie uważam zeby Java była lepsza lub gorsza od innych języków z któymi też miałem dość dużo do czynienia (np. C++, C#). Szczególną tendencje do zachwytów mają (przynajmniej w srodowisku w którym się obracam) programości z doświadczeniem poniżej 10 lat, ci starsi jakby się nie wypowaidają w tej kwesti.

Pytanie do ludzi z większym doświadczniem, nie tylko w Javie. Czy Jaca rzeczywiście jest lepsza i pod jakim względem od innych języków( ale pomijając kwestię wieloplatformowości, bo to często jedyny argument chwalących Jave) :)

Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
7


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
WeiXiao
  • Rejestracja:około 9 lat
  • Ostatnio:około 15 godzin
  • Postów:5126
0

0 expa w javie, ale to zawsze wygląda dziwnie:

Kopiuj
@Java
@Jest
@Super
@XmlElementWrapper(name="orders")
@XmlJavaTypeAdapter(OrderJaxbAdapter.class)
@XmlElements({
   @XmlElement(name="order_2",type=Order2.class),
   @XmlElement(name="old_order",type=OldOrder.class)
})
@JsonIgnore
@JsonProperty
@NotNull
@ManyToMany
@DevNull({
@SuppressWarnings
@Autowired, 
@Inject, 
@Override,  
@XmlElementWrapper,
@XmlJavaTypeAdapter,
@XmlElement,
@JsonIgnore,
@JsonProperty,
@ManyToMany,
@Fetch,
@JoinTable
})
edytowany 4x, ostatnio: WeiXiao
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
6

Java to nazwa zarówno platformy jak i języka programowania, więc trzeba to rozgraniczyć. Ściśle rzecz biorąc sam język programowania nie ma takiej cechy jak przenośność - jest to cecha platformy.

Język Java nie jest specjalnie imponujący, ale platforma Java to już kawał dobrej roboty. Zwłaszcza chodzi mi o VMkę - żadna inna nie zbliża się efektywnością w optymalizowaniu kodu OOP (tzn chodzi mi głównie o metody wirtualne). Zapowiada się natomiast jeszcze lepiej:


"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.
MA
@Wibowit: masz jakieś porównanie vmki javy z v8 do js'a jeśli chodzi o optymalizacje kodu oop?
Wibowit
Niestety nie. W ogóle ciężko spotkać testy sprawdzające możliwości VMek w optymalizowaniu złożonego kodu. Typowe benchmarki z OOPem nic wspólnego nie mają. Kiedyś zrobiłem prosty test JVMa na dewirtualizację/ inline'ing/ escape analysis/ etc i wyszło nieźle: Dlaczego foreach jest gorsze od for (beta) (to post z 2011 roku!)
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
0

Zaletą (jednocześnie i wadą ;) Javy jest jest stabilność, co jest bardzo dobre dla utrzymywania aplikacji. Kolejną zaleta (według mnie) jest "verbose" API, czytasz nazwe metody i juz wiesz co robi.
Ale nie ma czegoś takiego jak najlepszy język, po prostu Java jest dobra do celów "korporacyjnych", ale do tworzenia systemow operacyjnych to gorzej ;)


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0
scibi92 napisał(a):

Kolejną zaleta (według mnie) jest "verbose" API, czytasz nazwe metody i juz wiesz co robi.

To o takich nazwach metod i klas mówisz? http://grepcode.com/file/repository.springsource.com/org.aspectj/com.springsource.org.aspectj.weaver/1.6.3/org/aspectj/weaver/patterns/HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor.java

Tak, klasa nazywa się:

HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor

Java tego nie wymusza, rozumiem że to dobre praktyki programistów Springa, "verbose api".

To też jest niezłe: https://github.com/zxlooong/jdk16045/blob/master/com/sun/java/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState.java

Opisowa nazwa mówi wszystko;

Kopiuj
class InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState extends State {
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState() {
        super("WindowNotFocused");
edytowany 2x, ostatnio: kulson
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

Następnym razem spróbuj znaleźć klasę, którą w korpo-kodzie używa się więcej niż 0 razy.


"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.
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Czyli to co nie jest używane w korpo kodzie może być kupą? A nie, wróć, to te "verbose api", zaleta. Żeby łatwiej było czytać źródła

edytowany 2x, ostatnio: kulson
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
3

Czyli to co nie jest używane w korpo kodzie może być kupą?

No raczej. Kupy leżą wszędzie, w każdym języku i platformie, ale dopóki nie musisz ich dotykać to nie ma problemu. Długie nazwy klas można znaleźć też w .NET: http://codebetter.com/karlseguin/2007/08/02/longest-type-name-in-net/ Z drugiej strony nieraz widziałem kod w C++, gdzie były nazwy zmiennych typu a, b, c, d, i, x, w, z itd Z dwojga złego wolę zbyt długą nazwę niż taką nic nie mówiącą. Jak kto woli.


"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
0

Dochodzi jeszcze cały ekosystem dookoła.
Nie dość, że bibliotek/narzędni jest zatrzęsienie, to jeszcze są stabilne.

Dla porównania masz rubby, gdzie narzędzi zwyczajnie brakuje lub JS gdzie wszystko się zmienia jak w kalejdoskopie.

Z technologiamia MS dla mnie wygrywa otawrtością i darmowością, bo jednak łatwiej jest pobrać dockera z linuxem i javą, niż postawić dockera z windowsem i na tym C#

W technologiach MS nie orientuję się jednak za bardzo, więc ostatni akapit może wynikać z mojej niewiedzy.

W2
Zdecydowanie ostatni akapit wynika z niewiedzy :-) W tej chwili nie ma już problemu z uruchomieniem kodu .NETowego na linuxe i dockerze (kontener linuxowy). Nawet sam Microsoft dostarcza narzędziea w Visual Studio bardzo to ułatwiające i niejako stawiające całą platformę budowania na kontenerach dockera. Co do jednej rzeczy się natomiast zgodzę. W .NET czasemi jest problem żeby znaleźć sensowną bibliotekę.
Aventus
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
1

W każdej technologii znajdziesz fanatyków lub zwyczajnie osoby nie otwarte na coś innego. Zazwyczaj jest to oznaka strachu przed opuszczeniem strefy komfortu, albo słabe umiejętności logicznego i co za tym idzie obiektywnego myślenia. Takich ludzi najlepiej unikać, bo w większości to słabi programiści są. Choć mogą sprawiać wrażenie dobrych, ale to tylko dla tego ze maja wymasterowany wąski zakres rzeczy z którymi od dawna pracują.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

Zazwyczaj jest to oznaka strachu przed opuszczeniem strefy komfortu

No tak, bo nauczenie się nowego języka wymaga wielkiej odwagi poprzedzonej rozwojem osobistym. Brawo kołczu!

Jak ktoś lubi kodzenie to nie będzie miał problemu z nauką nowych języków. A jak ktoś koduje dla kasy, to nie będzie chciał z obawy przed wypadnięciem z rynku - jednak czy ktoś taki będzie mocno przekonywał innych na forach? Wątpię. Tacy ludzie zwykle w kółko pytają od czego zacząć albo co jest przyszłościowe.

Choć mogą sprawiać wrażenie dobrych, ale to tylko dla tego ze maja wymasterowany wąski zakres rzeczy z którymi od dawna pracują.

Potraktuję to jako okazję do pochwalenia się swoim szerokim zakresem: https://github.com/tarsa?tab=repositories


"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 4x, ostatnio: Wibowit
WhiteLightning
Odwagi, niekoniecznie. Ale robienie nowych rzeczy wymaga zdecydowanie wiecej wysilku umyslowego niz robienie tego co sie zna.
Aventus
Ale o co Ci chodzi skoro ja sie odnosilem do ludzi ktorzy widza jedyna sluszna technologie/jezyk i nie przyjmuja do zrozumienia ze sa tez inne ktore w pewnych rzeczach sprawdzaja sie lepiej a w innych gorzej (wspomniany wczesniej obiektywizm)? Jesli Ty zaliczasz sie do tej grupy to coz- znasz moje zdanie. Jesli nie jestes taki jak oni, to w czym problem?
13

Gdyby Java nie bylaby super to by nie miala slowka kluczowego super.

0

Piszę w Javie nie z miłości do niej, tylko się prostytuuje, a gdybym miał pisać aplety Javy popełnił bym harakiri.
https://www.wykop.pl/link/4222473/java-10-zostala-wydana/

edytowany 2x, ostatnio: aurel
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 2 godziny
0

Biorąc pod uwagę, że aplety Javy są blokowane częściej niż Adobe Flash to rzeczywiście byłaby to kiepska robota.


"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.
KU
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:369
0

Czat wp do dziś działa na aplecie javy

C6
ktoś jeszcze z chatów korzysta? :o
KU
Tylko mówię
Wibowit
co tam robisz na tym czacie? :P
KU
Nic, tylko wiem że dalej korzysta z apletów. Należy się medal, bo mimo wysiłków, nie znalazłem nikogo więcej, kto korzysta z tej technologii na swojej stronie
0

I nadal książki o Javie 11 będą uczyły apletów i Swinga, aby książka była gruba?

0

JavaSE jest spoko, ale JavaEE już niekonieczne ;D

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:2 dni
0

Słusznie wspomniał @Wibowit, że należy rozgraniczyć JVM od Javy. JVM ma swoje mocne strony, jak na maszynę wirtualną Już sam fakt, że gdy już się ta krowa rozhuśta to potrafi dorównać natywnemu kodowi, o czymś to świadczy. Jeśli chodzi o sam język, no cóż. Pracowałem z bardzo złym kodem w Javie jak i całkiem niezłym, ale jako takiej nie lubię. Wydaje mi się, że jeśli ktoś się podnieca nowymi rozwiązaniami np. z Javy8 (to było nowinką jak ostatnio używałem) to chyba po prostu nie ma oglądu w innych językach programowania. Dla kogoś kto programuje w Javie i tylko Javie zapewne fajną wiadomością są Streamy Future'y i tym podobne rzeczy, ale tak naprawdę te rzeczy nie koniecznie pasują do języka. Jak tu obsłużyć wyjątki w Streamie… hmmm… Nieeee, jeszcze może Scala (znów JVM), już prędzej, ale Java mnie nie przekonuje.
Tak właściwie w ogóle ten sort języków zupełnie mnie nie bawi, bo lubię mieć pojęcie co robię, dlatego lubię proste języki jak C (>=99, starsze standardy są dosyć nieprzyjemne), czasem spojrzeć w assemblera(lub dezassemblację). Niespecjalnie jara mnie jakakolwiek idea maszyny wirtualnej, bo działam praktycznie tylko na Linuksie i oprogramowaniu open source (wiadomo, to jest 99% najwyżej, bo w na poziomie firmwaru, czasem sterowników ciężko bez BLOBów; lubię też czasem pograć, ale umówmy się, mało mnie to dotyka) więc nie widzę raczej potrzeby stosować takie rozwiązania. Natomiast jestem entuzjastą łączenia programów za pomocą skryptów, Bash i AWK to są moje języki wysokiego poziomu. xD
Jestem świadom, że większość programistów chciałaby odsunąć jak najdalej od siebie platformę na której pracuje i takie osoby z pewnością mogą kochać Javę (choć wolałbym, żeby jeśli już kochały Scalę, Haskell, OCaml lub LISP), aczkolwiek obawiam się, że takie podejście nie ma dobrego wpływu na branżę (a przynajmniej więcej programistów powinno wiedzieć jak to wszystko działa).
Aaa, i poznasz drzewo po owocach -> Androidowi na pohybel. Nie to żeby był gorszy od Windowsa czy iOSa, bo to wszystko tak samo ograniczający shit.


edytowany 3x, ostatnio: elwis
Wibowit
Bash i AWK to są moje języki wysokiego poziomu - fuj! :P
elwis
@Wibowit: czemu? Rozumiem, że Bash ma bardzo niemiłą składnię, ale AWK jest bardzo fajnym narzędziem. Bardzo dobrze się nimi łączy programy w nowe funkcjonalności. Takie rozwiązania noszą znamiona prototypów, ale mi to nie przeszkadza. Działają całkiem nieźle. Na pewno jest to mniej upierdliwe niż wszystkie Javy i Pytony razem wzięte.
Wibowit
AWK nie znam, ale z bashem pracowałem i to jest jeden wielki WTF.
elwis
Jak rozumiem pracowałeś z czyimś kodem, to by wiele wyjaśniało.
Wibowit
Sam bym się w to nie pchał :P Skrypty bashowe, które robię w domu dla siebie mają zwykle po jednej linijce.
elwis
No nie wiem, ja pracuję głównie w konsoli więc dla mnie jest to naturalne, że koduję w Bashu. Wiadomo, nie więcej niż 100 linii, bo taka jest tego idea, żeby robić małe kawałki. W każdym razie język powłoki (lepszego niż bash nie znam) to super sprawa. Jednak wiadomo, jak nie pracujesz w konsoli, nie jest to naturalne.
Wibowit
Pracuję w konsoli, ale nie robię skomplikowanego kodu dla powłoki (przynajmniej nie z własnej woli). Do skryptów na 100 linijek wolałbym już użyć Pythona - mimo, że dalej kaczo typowany to jednak bardziej ludzki.
elwis
To przyznaję w bashu rzeczywiście może 100 linii to dużo. Tak do 20-30 jest ok. Logikę staram się zawrzeć raczej w AWK, bo jak wspominasz bash jest mało ludzki i do implementowania logiki zdecydowanie się nie nadaje. Możę się mylić ,ale python zdecydowanie bardziej celuje w bycie językiem ogólnego przeznaczenia i nie jest tak przystosowany do forkowania i pipe'owania jak bash. Również do obróbki tekstu/wyrażeń regularnych nie ma tak przyjemnej składni jak AWK.
TA
"JVM ma swoje mocne strony, jak na maszynę wirtualną Już sam fakt, że gdy już się ta krowa rozhuśta to potrafi dorównać natywnemu kodowi, o czymś to świadczy." - Potrafi dorównać przy zajściu szczęśliwego zbiegu okoliczności, który niestety zachodzi dość rzadko. Z marketingowego punktu widzenia jest prawdą, że potrafi dorównać, natomiast z praktycznego - nie potrafi.
Wibowit
W typowym korpo-projekcie to nawet Node.js by wydajnościowo wystarczył, ale sam język (JavaScript) nie nadaje się do tworzenia dużych aplikacji.
TA
Bash, forkowanie i pipowanie - też kiedyś wydawał mi się wygodny, ale trzeba się mocno natrudzić, by uzyskać niezawodność w przypadkach: brak miejsca na dysku, przekroczony limit liczby procesów, różne inne błędy. A jak się patrzy na skrypt, to często nie jest oczywiste, gdzie są najbardziej wrażliwe miejsca i bardzo łatwo to przegapić.
TA
Jeszcze uzupełnię, bo trochę błędnie to napisałem: może nie tyle niezawodność, ale aby skrypt nie uszkodził danych, bo nie zauważy, że któryś z wielu kroków nie wykonał się poprawnie. A każde forkowanie może dać błąd - w szczególnych okolicznościach, ale akurat takie okoliczności jak przekroczenie liczby dozwolonych procesów się trafiają - zazwyczaj w wyniku jakiegoś błędu.
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)