Język Go - czy warto?

Język Go - czy warto?
doskanoness
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:81
0

Siema,

Mój kolega, który siedzi w linuksach poleca mi język go, chciałbym spytać w tym wątku Was o opinię na temat tego języka czy warto się go uczyć

Czy ten Go jest w stanie mi coś więcej zaoferować niż np. taki C++?

KamilAdam
Obiecuje sobie że się nie wypowiem :p
PI
PI
  • Rejestracja:ponad 3 lata
  • Ostatnio:prawie 3 lata
  • Postów:256
5

Coraz więcej projektów używa Go. Nawet w Polsce. Moim zdaniem będzie coraz bardziej popularne. Niemniej C nie wymrze. O C++ mogę mówić tylko najgorsze rzeczy i życzę mu śmierci.

Zobacz pozostały 1 komentarz
PI
Składnia nie ma znaczenia. C++ to wysokopoziomowy język ze wsparciem podejścia niskopoziomowego, które zabija to wysokopoziomowe. W C++ jest sporo UB, ręczny model zarządzenia pamięcią notorycznie powoduje naruszanie pamięci(co jednoznacznie wysypuje proces, a może nastąpić w znacznym oddaleniu od samego naruszenia) oraz wycieki (to jednak powszechne w każdym języku). Mechanizmy obiektowe sprzyjają patologii(np. dziedzicznie wielobazowe).Prymitywne mechanizm dołączania plików przez preprocesor powoduje wolny proces kompilacji.
PI
W ogóle przez charakterystykę języka długo się kompiluje. Brak mechanizmów jak refleksja czy RTTI ogranicza mocno. Zanim stworzono jakikolwiek standard powstało kupę kodu, który jest gówniany, bo też pisało się pod kompilatory i różne implementacje biblioteki "standardowej". Pisze serwerowe systemy i systemy C++ są najdroższe w rozwoju, najbardziej zawodne, najwolniej się rozwijają i najczęściej wywracają się z rowerka.
SL
W C++ musisz płacić za rzeczy za które nie chcesz płacić. Wolna kompilacja, bo model headerów jest odziedziczony z C. Nielogiczne rozwiązania, bo to wielogeneracyjny ulep. Mała reformowalność biblioteki standardowej, bo ABI compatibility/komitet/wiele kompilatorów.
PI
@slsy: W pełnie się zgadzam.
CZ
Niestety up to racja. Dodatkowo na c++ musisz poświęcić kilkakrotnie więcej czasu, aby umieć tworzyć jakikolwiek sensowny kod, niż np np ucząc się innych języków itd Tego języka w sumie nie da się umieć. Nie kroczy po świecie taka osoba xD
LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:mniej niż minuta
  • Postów:8398
1
doskanoness napisał(a):

Mój kolega, który siedzi w linuksach poleca mi język go, chciałbym spytać w tym wątku Was o opinię na temat tego języka czy warto się go uczyć

Ja się w nim tylko bawiłem, więc mogę stwierdzić jedynie, że opłaca się pobawić (dla własnej frajdy). Język jest prosty, a ma fajny model asynchroniczności (oparty o "goroutines"), co samo w sobie jest ciekawe.

Czy ten Go jest w stanie mi coś więcej zaoferować niż np. taki C++?

  • garbage collector (co może być zaletą i wadą).
  • goroutines

DR
  • Rejestracja:prawie 12 lat
  • Ostatnio:około 7 godzin
  • Postów:1129
2

@doskanoness: Go jest IMO do innych zastosowań niż C++. Go najczęściej spotka się w webowce i infrastrukturze (docker, kubernetes). Jest o wiele bezpieczniejszy niż np. C++. Ma jednak swoje problemy, jednym z nich jest to, że wydaje się prostym językiem. Niestety ma masę pułapek, o których możesz szybko się przekonać googlujac np. gotchas, a to nie wszystkie niespodzianki. Brak generyków "wymusza" generowanie kodu, więc trzeba się zapoznać ze Swaggerem/OpenAPI, a masa tooli do tego jest dyskusyjnej jakości. Nie ma tutaj "obiektowości", a ludzie i tak na siłę starają się pisać tak kod. Masa przydatnych narzędzi jak np. go mod wyszła stosunkowo niedawno, więc można dość łatwo natrafić na taki projekt w swojej pracy. Go rozwija się też bardzo wolno. Po bodaj 12 latach od pierwszej wzmianki doczekał się generyków.

Wciąż jest to jednak moim zdaniem jedna z lepszych technologii do nauki i pracy. Kod jest szybki i bezpieczny w porównaniu do innych języków i czasu na naukę jaką trzeba włożyć by być "na tym samym" poziomie. Goroutines są naprawdę spoko, wraz z chanellami robią robotę, jak się wie jak tego używać :p. GC jest naprawdę spoko, przyjazne community.

Najlepiej sam ocenisz pisząc sam kilka aplikacji, albo pooglądasz kod na GH.

daniel1302
To ze NIE MA obiektowości to jest duży plus, obiektowe myślenie spacza człowieka... Potem wszędzie są klasy, 0 funkcji, bo ludzie ktorzy piszą w Javie czy takim PHP twierdzą, że kod musi podążać za wzorcami itp :( poza tym się zgadzam.
DR
@daniel1302: Tam jest przecinek. Chodziło mi, że właśnie Go nie jest obiektowy, a niestety ludzie na siłę starają się pisać obiektowo i wychodzi kupa
daniel1302
@Dregorio: aaa :) To przepraszam :) Bo z tym akurat się zgodzę :D Widzialem kod, gdzie kazda funkcja i struktura byla w osobnym pliku jak w Javie :D na dodatek odwolania do struktur przez func (this JSONClient) Get(path) {...} :D
IceHeart
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 22 godziny
  • Postów:312
0

Czy nauka tego języka do backend'a (jvm) który chce w przyszłości pobawić się w dev/ops ma sens?

vpiotr
nie, raczej weź Go lub Python pod lupę (plus SQL).
IceHeart
@vpiotr: Pytałem odnośnie języka Go ;)
vpiotr
Go jest na jvm?
IceHeart
Pisząc ten post miałem na myśli, czy jest sens uczyć się Go dla backendowca, który pisze w Kotlinie + Springu i w planach ma devopsowanie.
vpiotr
Podstawa to Bash, Python, Go, SQL, a potem inne - Ansible, Puppet, Terraform itd. Raczej jeden język nie wystarczy.
Haskell
  • Rejestracja:ponad 9 lat
  • Ostatnio:11 miesięcy
  • Postów:4700
2

Go ma dosyć wąską specjalizację i nie jest wykorzystywany tak szeroko jak Python czy JS. Jednakże w Go powstało wiele aplikacji używanych w DevOps czy CloudOps takich jak: Docker, Kubernetes, Terraform. Ten język ma tę zaletę, że łączy statyczne typowanie i wydajność C/C++ z czytelnością i używalnością Pythona i JS.

Z pewnością warto się zainteresować, choć niekoniecznie jako pierwszy język.


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
PI
Ostatnio dostaję i widzę więcej ofert Go niż Pythona. Chyba żeby pisać w Pythonie trzeba mieć inną specjalizacje niż tylko bycie programistą - jakiś DataScience, ML, bezpieczeństwo, statystyka, badania etc. Za to samych devów Go troszkę się szuka.
Haskell
Raczej wątpię, żeby było więcej ofert dla programistów Go niż Python. Python jest szeroko używany od web-developerki, data engineering: etl, pyspark po ai i ml. Jest duże ssanie na specjalistów od danych.
PI
No włąśnie - trzeba być kimś więcej niż tylko python devem. Co do Go - starczy znajomosć języka, nie ma dodatkowych wymagań raczej. No i ja osobicie dostaję więcej ofert dla Go niż do Pythona, mimo, że ani w jednym, ani w drugim nigdy komercyjnie nie pracowałem. Może kwestia, że bujam się w obłokach.. tzn. chmurach.
TerazOdpowiemNaKomcie
  • Rejestracja:ponad 9 lat
  • Ostatnio:12 minut
  • Postów:383
1

java 1.5 :P

DM
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 19 godzin
  • Postów:220
0

W 1.18 będą(so już w beta) typy generyczne, więc robi się ciekawie. Ja używam go-kit + np. Viper is fajnie się pisze.

SC
  • Rejestracja:około 3 lata
  • Ostatnio:około 3 lata
  • Postów:2
0

Czy istnieje taki język jak Go, czyli też kompilowany bez maszyny wirtualnej z dobrym typowaniem i GC, ale bez wskaźników? Który wspiera wielowątkowość, jest niby Nim, D, ale nie spełniają wszystkich moich wytycznych.

daniel1302
Twoich wytycznych nie spełnia nawet Go :P :) Go posiada wskazniki, jesli pominąć te wskaźniki to łapie D ;)
Wibowit
na chwilę obecną golang jest znacznie bardziej dojrzałą platformą niż kotlin native. kotlin native ma na razie upierdliwą wielowątkowość z Object transfer and freezing. blog posty o planie wywalenia takich akrobacji: https://blog.jetbrains.com/kotlin/2021/05/kotlin-native-memory-management-update/ https://blog.jetbrains.com/kotlin/2021/08/try-the-new-kotlin-native-memory-manager-development-preview/
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
1

Hmm, ale w golangu nie ma artytmetyki wskaźników https://go.dev/doc/faq#no_pointer_arithmetic więc raczej nie ma problemów z nimi związanych (oprócz tego, że GC w praktyce musi być non-compacting, bo to koliduje z pobieraniem adresu obiektu do późniejszego wykorzystania).


"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.
Zobacz pozostały 1 komentarz
Wibowit
golang ma https://en.wikipedia.org/wiki/Tracing_garbage_collection czyli gc, który zawsze działa, tzn. zawsze odśmieca niedostępne obiekty. tymczasem z bardzo pobieżnej lektury https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html wynika, że swift ma tylko wskaźniki ze zliczaniem, a te psują się, gdy tworzysz cykle referencji. cały artykuł jest o tym jak sobie z takimi cyklami radzić.
Wibowit
może napisz jaki masz problem ze wskaźnikami w golangu. to nie są takie same wskaźniki jak w c/c++, gdzie możesz z nimi robić co chcesz.
Wibowit
no właśnie te wskaźniki z golanga są generalnie bezpieczne. niebezpieczne są bloki kodu unsafe, ale tak samo jest w ruście, javie, c# i każdym innym języku. w golangu nie możesz stworzyć wskaźnika z kapelusza, tzn. golangowe wskaźniki zawsze wskazują na poprawny obiekt (przy założeniu, że nie pakujemy się w bloki kodu unsafe).
KamilAdam
swift ma tylko wskaźniki ze zliczaniem, a te psują się, gdy tworzysz cykle referencji Z tego co czytałem to W swifcie mocno promowany jest styl funkcyjne i używanie niemutowalnych struktur co znacząco zmniejsza szanse na zapętlenie wskaźników :p
Wibowit
a nie wiem jak tam w swifcie, to się nie wypowiem. wiem, że o ruście podobne rzeczy ludzie piszą, ale w rzeczywistości słówko mut pojawia się w kodzie często.
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około godziny
1
scaut napisał(a):

Czy istnieje taki język jak Go, czyli też kompilowany bez maszyny wirtualnej z dobrym typowaniem i GC, ale bez wskaźników? Który wspiera wielowątkowość, jest niby Nim, D, ale nie spełniają wszystkich moich wytycznych.

Możesz pisać w Javie, Scali, Kotlinie itp itd a potem skompilować javowy bajtkod w trybie AOT za pomocą https://www.graalvm.org/reference-manual/native-image/ (do samodzielnej natywnej binarki, bez żadnej VMki, JITa, etc przy odpalaniu) :] Jednak na razie nie jest to solidny wybór, bo masa kodu się nie kompiluje od razu pod native-image i trzeba kombinować.


"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
CZ
  • Rejestracja:ponad 8 lat
  • Ostatnio:około miesiąc
  • Postów:2284
2

Pamiętaj że C/C++ wybiera się po to żeby móc się wywyższać nad innymi, szczególnie nad klepaczami z webowki. GO jest stosowane w webowce, więc będzie trochę to twoja degradacja.

Poza tym atutem to wszystko jest lepsze niż c++.

edytowany 2x, ostatnio: Czitels
Zobacz pozostałe 4 komentarze
KR
Undefined behaviour nie jest brakiem standaryzacji a celowym zabiegiem umożliwiającym lepszą optymalizację kodu. A do mission critical masz Idris, Ada i Rust.
vpiotr
@Krolik: ja wiem ze za UB jest jakas głębsza logika, ale z punktu widzenia kogos z boku to wyglada to jak tłumaczenie wariata ktory twierdzi ze jest z kosmosu. Ciężko znaleźć w tym tłumaczeniu luki ale czujesz ze cos jest nie tak.
KR
Ja wiem. Jeden z najzabawniejszych przypadków jaki widziałem z UB, to że można wywołać funkcję, do której nie ma wywołania nigdzie w kodzie: https://kristerw.blogspot.com/2017/09/why-undefined-behavior-may-call-never.html
vpiotr
W Javie to by byl pewnie blad niezainicjowanej wartosci w czasie kompilacji. Moze w C++ jeszcze do tego nie dojrzeli. Ale kiedyś nie bylo override (co wydawało sie oczywiscie niezbędne). Moze kiedyś dorobią wymóg inicjowania, przynajmniej jakąś pragmą. Ciekawe czy ten trick zadziała tez w C.
KR
Nie, w Javie miałbyś NPE. Tutaj w tym kodzie C++ masz wszystkie zmienne zainicjowane akurat prawidłowo. Globalne zmienne są inicjowane w C / C++ na wartości domyślne, dla wskaźników jest to nullptr.
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:7 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
4
scaut napisał(a):

Czy istnieje taki język jak Go, czyli też kompilowany bez maszyny wirtualnej z dobrym typowaniem i GC, ale bez wskaźników? Który wspiera wielowątkowość, jest niby Nim, D, ale nie spełniają wszystkich moich wytycznych.

Haskell oczywiście :D

  • System typów jest niesamowity i nie wiem czy ktoś ogarnia go w całości, ale nie trzeba korzystać ze wszystkich bajerów
  • w wyniku kompilacji za pomocà GHC dostajemy prostą binarkę, chyba tam jest nawet LLVM wpięty
  • wielowątkowość w Haskellu jest niesamowita. W zasadzie to każda komunikacja ze światem zewnętrznym domyślnie jest asynchroniczna dzięki monadzie IO
  • oczywiście można poprosić system o niezarządzany blok pamięci i robić na nim dziwne rzeczy, ale tak jest chyba w każdym języku. Ktoś nawet zaimplementował mutowalne kolekcje javopodobne na takich niezarządzanych blokach pamięci XD

UPDATE: a jak nie Haskell to OCaml


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 2x, ostatnio: KamilAdam
Zobacz pozostałe 10 komentarzy
KamilAdam
Było ich tylu że organizowano w Warszawie przed pandemią Scalara
PI
Warszawa... pewnie w delegacji byli.
CZ
Miałeś się nie wypowiadac :D
KamilAdam
@Czitels: wypowiedziałem się na inne pytanie :p
KS
  • Rejestracja:prawie 4 lata
  • Ostatnio:7 dni
  • Postów:581
1

Jak bym miał wybierać między go i C++.
To bym wybrał go.

vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
1

Nie wiem czy już było ale między Go i C++ jest jeszcze Rust - czyli język wydajny, bez GC i bez barokowości C++.

DR
Niestety kompiluje się wieki :(
KR
Kompiluje się znacznie szybciej niż C++ i wolniej niż Go więc treść posta jest ok - jest pomiędzy.
KR
Inna sprawa że Rust ma kompilator przyrostowy i tylko pierwsza kompilacja trwa długo, a potem kompilacja w praktyce trwa szybciej niż w niejednym projekcie Java/Scala jaki mamy - tj. zwykle kilka sekund. No i nie musisz kompilowac za każdym razem bo jest znacznie szybszy cargo check.
KR
Rust jest za to nie jest pomiędzy C++ i Go pod względem bezpieczeństwa i stabilności działania. Jest lepszy od obydwu.
JA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad rok
  • Postów:13
3

Pisze w go od okolo roku i moim zdaniem warto. Jest całkiem sporo ofert pracy (ostatnio znacznie więcej) ale co najistotniejsze jest bardzo mało osób chętnych, więc firmy zatrudniają kogo popadnie.

Sam język jest wyjątkowo prosty, tzn. dąży do tego aby jedną rzecz dało się napisać w jeden konkretny sposób. Nie jest to Python, Java czy nieszczęśliwy C++ w którym co nowa wersja to nowy sposób inicjalizowania zmiennych, a na koniec już nikt nie wie który sposób jest tym właściwym... W golangu trzeb wiele rzeczy zaakceptować i dostosować się do tego co oferuje język. Największy błąd jaki się popełnia na początku to przenoszenie schematów z innych języków do golanga - to się po prostu nie udaje. To należy rozumieć przez słowo prosty - nie chodzi tu o to że szybko się tego języka nauczysz (choć nie jest to na pewno trudny język w nauce).

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)