Crystal vs Go

0

Który język z tych dwóch jest lepiej zaprojektowany? Crystal radzi sobie z nullem, a Go raczej nie bardzo?
https://crystal-lang.org/2013/07/13/null-pointer-exception.html
https://stackshare.io/stackups/crystal-vs-go

edytowany 1x, ostatnio: Patryk27
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1

Lepiej zaprojektowany do czego?
To dwa zupełnie różne języki o innym przeznaczeniu.
Go ewidentnie jest dość prosty i nawet ubogi. Za to już jest dojrzały do pracy na produkcji.
Crystal oficjalnie nie, za to jako język, oferuje wyższy poziom.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 2x, ostatnio: jarekr000000
hauleth
@vpiotr: nie za bardzo rozumiem po co ten link.
1

Go jest prosty? Dobry żart, on tylko wygląda zwięźle, Java łatwiejsza.

0

W sumie Crystal podobnie jak Go świetnie radzi sobie z backendem bez użycia frameworka.
pfertyk.me/2016/11/crystal-in-real-life/

TurkucPodjadek
TurkucPodjadek
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 lata
  • Postów:607
0
jarekr000000 napisał(a):

Lepiej zaprojektowany do czego?
To dwa zupełnie różne języki o innym przeznaczeniu.
Go ewidentnie jest dość prosty i nawet ubogi. Za to już jest dojrzały do pracy na produkcji.
Crystal oficjalnie nie, za to jako język, oferuje wyższy poziom.

Prosty, ubogi, dojrzały, wyższy poziom - mógłbyś te pojęcia rozszerzyć? Ciekawi mnie geneza.

Hispano-Suiza
Też chętnie zrobię review wypowiedzi ;-)
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
3
TurkucPodjadek napisał(a):

Prosty, ubogi, dojrzały, wyższy poziom - mógłbyś te pojęcia rozszerzyć? Ciekawi mnie geneza.

Na szybko - problemy go:

  • brak generyków,
  • słaby exception handling, (gdyby były dobre generyki to by nie bolało)
  • reszta mniej dla mnie istotna:
    (taki sobie OOP, nadal ma nil (nulla).
    Dla mnie GO wygląda jak jezyk, gdzie ktoś sparzył się na javie, wrócił do C i postanowił je poprawić - więc zrobił dużo lepsze C. (Prawdziwa historia podobno jest taka, że sparzył się na C++ i wrócił do C).

Przyznam ucziwie, że mnie ten język bardzo rozczarował - dużo było hype, a jak zobaczyłem z bliska jak wygląda, to myślałem, że ktoś mnie prankuje...
Co ciekawe inni tez tak myślą - stuck in 70: https://github.com/ksimka/go-is-not-good
(Dla mnie to przesada, nie 70ties - ale raczej wczesne 90ties, tym niemniej).

To nie jest też tak, że odrzucam i krytykuje GO zawsze. Jak ktoś potrzebuje coś zrobić w C i nie jest to moduł kernela to GO jest dobrą alternatywą. Działa, produkcyjnie, dobrze. Prostota jest też zaletą. (btw. jakis czas temu mieli też robić części bez GC, (jakieś unsafe) żeby własnie critical parts pisać, ale nie wiem jak sie ten projekt potoczył).

Dla odmiany:
Crystal jest składniowo wzorowany na Ruby. Bizanzjum.
Ma Genericsy.
Ma dość bezpiecznego nulla (znak rozpoznawczy XXI wieku).
Ma bogaty Exception handling (niekoniecznie trzeba tego nadużywać, imo Monady są do tego lepsze, sensowne monady w Crystal podobno sa).

Wiele nie wiem, bo Crystala, nie spórbowałem ani trochę, a na pierwszej stronie pisze help it become production ready. Czyli Crystal jest raczej w fazie kampanii wyborczej - tylko obiecuje.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 5x, ostatnio: jarekr000000
Aryman1983
Aryman1983
prawdopodobnie dwa pierwsze zarzuty odejdą do lamusa, bo core team nie sprostał naporom społeczności.
jarekr000000
no właśnie :-) -zobaczymy
Aryman1983
Aryman1983
a z tymi latami się zgadzam, bo gdzieś wyczytałem, że dużo brali z języka Oberon który de facto powstał 32 latka temu.
Hispano-Suiza
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 5 lat
0

Genericsy nadchodzo! Jest draft więc można zerknąć:
https://emilymaier.net/words/getting-specific-about-generics/

A moim zdaniem to miło, że nie jest to kolejny Javopodobny twór. Ma przyjemna, zwięzłą składnię, która programującym w czymś innym (zwłaszcza Java) podejdzie ale po dłuższym czasie mimo wszystko. Poza tym z tym zastępowaniem C przez Go to jasna sprawa, że da się.
Ale da się dużo więcej i sporo mechanizmów webowych często stoi na Go (chociaż był tutaj kiedyś ktoś, kto usilnie twierdził, że Go do web się kompletnie nie nadaje i jest kiepskim językiem :-) ).
Biblioteka standardowa pozwala już na trzaśnięcie wielu rzeczy, a jest bardzo dużo dodatkowych projektów open-source dających więcej. Moim zdaniem bardzo dobre narzędzie do pisania wszelkiej maści rzeczy mocno wydajnościowych gdzieś z tyłu na zapleczu. Wystarczy zerknąć na Chiny i stopień użycia przez nie tego języka. W końcu coś musi okiełznać 1.5 mld+ ludzi korzystających z internetów.


"Trolling is a art"
edytowany 1x, ostatnio: Hispano-Suiza
TurkucPodjadek
TurkucPodjadek
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 lata
  • Postów:607
0
jarekr000000 napisał(a):
TurkucPodjadek napisał(a):

Prosty, ubogi, dojrzały, wyższy poziom - mógłbyś te pojęcia rozszerzyć? Ciekawi mnie geneza.

Na szybko - problemy go:

  • brak generyków,
  • słaby exception handling, (gdyby były dobre generyki to by nie bolało)
  • reszta mniej dla mnie istotna:
    (taki sobie OOP, nadal ma nil (nulla).
    Dla mnie GO wygląda jak jezyk, gdzie ktoś sparzył się na javie, wrócił do C i postanowił je poprawić - więc zrobił dużo lepsze C. (Prawdziwa historia podobno jest taka, że sparzył się na C++ i wrócił do C).

Przyznam ucziwie, że mnie ten język bardzo rozczarował - dużo było hype, a jak zobaczyłem z bliska jak wygląda, to myślałem, że ktoś mnie prankuje...
Co ciekawe inni tez tak myślą - stuck in 70: https://github.com/ksimka/go-is-not-good
(Dla mnie to przesada, nie 70ties - ale raczej wczesne 90ties, tym niemniej).

To nie jest też tak, że odrzucam i krytykuje GO zawsze. Jak ktoś potrzebuje coś zrobić w C i nie jest to moduł kernela to GO jest dobrą alternatywą. Działa, produkcyjnie, dobrze. Prostota jest też zaletą. (btw. jakis czas temu mieli też robić części bez GC, (jakieś unsafe) żeby własnie critical parts pisać, ale nie wiem jak sie ten projekt potoczył).

Dobra, to spytam inaczej: skoro z bliska, to jakie problemy na produkcji z nim miałeś? Czyli: przy jakich scenariuszach, co się okazało, przy jakim wolumenie ruchu ewentualnie. Jakieś problemy ze skalowalnością, utrzymaniem, wydajnością wystąpiły?

0
Wielki Samiec napisał(a):

Go jest prosty? Dobry żart, on tylko wygląda zwięźle, Java łatwiejsza.

Tak. Go jest prosty. Przy ANSI C.

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

Dobra, to spytam inaczej: skoro z bliska, to jakie problemy na produkcji z nim miałeś? Czyli: przy jakich scenariuszach, co się okazało, przy jakim wolumenie ruchu ewentualnie. Jakieś problemy ze skalowalnością, utrzymaniem, wydajnością wystąpiły?

Żadnych problemów nie miałem. Nawet się bardzo dobrze sprawuje (chyba nadal) na produkcji. (nie ma ta produkcja wielkiego obciążenia, ale pewnie by uciągła - sprawdzaliśmy). Budowanie i wszystko było ok. Rozsądne działanie na produkcji to jest warunek konieczny do poważniejszego zastosowania, ale nie jest to warunek wystarczający.
Większośc jezykow w jakich pisze/pisałem bardzo dobrze sprawuje się pod obciążeniem i działają.

Ale nie we wszystkich z nich chce mi się pisać, bo pisanie w nich boli. Dlaczego go boli - napisałem powyżej. Boli mnie też pisanie w Javie, a nawet czasem w Kotlinie - więc przy tym GO to już zupełnie odpada.
Żeby nie było - nie boli mnie w Scali i w Haskellu, ale to tylko dlatego, że niczego przyjemniejszego jeszcze nie poznałem.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 3x, ostatnio: jarekr000000
TurkucPodjadek
TurkucPodjadek
  • Rejestracja:około 8 lat
  • Ostatnio:około 4 lata
  • Postów:607
1
jarekr000000 napisał(a):
TurkucPodjadek napisał(a):

Dobra, to spytam inaczej: skoro z bliska, to jakie problemy na produkcji z nim miałeś? Czyli: przy jakich scenariuszach, co się okazało, przy jakim wolumenie ruchu ewentualnie. Jakieś problemy ze skalowalnością, utrzymaniem, wydajnością wystąpiły?

Żadnych problemów nie miałem. Nawet się bardzo dobrze sprawuje (chyba nadal) na produkcji. (nie ma ta produkcja wielkiego obciążenia, ale pewnie by uciągła - sprawdzaliśmy). Budowanie i wszystko było ok. Rozsądne działanie na produkcji to jest warunek konieczny do poważniejszego zastosowania, ale nie jest to warunek wystarczający.
Większośc jezykow w jakich pisze/pisałem bardzo dobrze sprawuje się pod obciążeniem i działają.

To wychodzi na to, że brak problemów. Czyli brak generyków, nie był problemem. Takowoż nil (nie NULL!) też nie był. Error handling pewnie też, bo mamy rozsądne działanie na produkcji. Tak by logika nakazywała. Czyli Go ma problemy, choć w zasadzie... to nie było żadnych... czyli esencja 95% "problemów" z Go.

"Panie! Pisałem bo musiałem, otoczyli mnie z zaskoczenia i kazali pisać... pod groźbą podwyżki pensji!"

Ale nie we wszystkich z nich chce mi się pisać, bo pisanie w nich boli. Dlaczego go boli - napisałem powyżej. Boli mnie też pisanie w Javie, a nawet czasem w Kotlinie - więc przy tym GO to już zupełnie odpada.

Jak mnie boli pisanie w czymś, to zwyczajnie nie piszę (dziwny jestem?). To ma swoje konsekwencje: nie wszędzie będę pracował.
Choć zakładam, że istnieją scenariusze skrajne, typu pistolet przy skroni - no wtedy rozumiem, że ktoś przymuszony napisze coś w języku, którego "nie lubi". Masochistów tutaj z wiadomego powodu pominę.

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

Jak mnie boli pisanie w czymś, to zwyczajnie nie piszę (dziwny jestem?). To ma swoje konsekwencje: nie wszędzie będę pracował.

Ależ ja dokładnie tak zrobiłem - zespół z mojej firmy pisał sobie dalej w GO, a ja się z tej części projektu wypisałem.
Dlatego nie miałem problemu, oni też raczej nie.
Kiedyś też nie miałem problemu w pisaniu bez generyków i innych cudów.


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
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)