Nim vs Crystal vs Go

Odpowiedz Nowy wątek
2019-09-09 02:12
0

Czy może ktoś podać jakiś benchmark z tymi językami programowania, aby sprawdzić który z nich jest wydajniejszy? Wszystkie są kompilowane, chyba nie mają wskaźników ale mają odśmiecanie pamięci.
https://nim-lang.org/
https://crystal-lang.org/

Pozostało 580 znaków

2019-09-09 09:15
0

Z uwagi na to ze Nim kompiluje sie do C zalozylbym ze przy zadaniach bez dynamicznej alokacji bedzie wygrywac Nim.

Natomiast jesli chodzi o GC to juz raczej dwa pozostale. Ale nie mam i nie znam na to benchmarkow.


Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2019-09-09 09:16

Pozostało 580 znaków

2019-09-09 10:05
0

@vpiotr: AFAIK nie da się używać Nim bez GC, więc nie ma to znaczenia.

@tedy wszystkie te języki mają wskaźniki, ale nie mają arytmetyki wskaźników (GC w końcu działa tylko na dynamicznie alokowanej pamięci, więc musisz mieć jakiś wskaźnik na nią). Co do pytania w temacie, to szybszy w jakich zastosowaniach? Czy do szybkości wliczasz czas developmentu albo refactoringu? Jaki program chcesz napisać? Czy znasz którykolwiek z tych języków lub ich "języki rodziców" (Python w przypadku Nim i Ruby w przypadku Crystal).

AFAIK da sie, nawet w programach wymagajacych alokacji: https://forum.nim-lang.org/t/2489 - vpiotr 2019-09-09 10:50

Pozostało 580 znaków

2019-09-09 10:56
0

Jeśli chodzi nowe języki programowania oraz niszowe języki programowania to w tym zestawieniu tylko Rust dogania C i C++, a Go jest niesamowice wolny. Wolniejszy nawet od Javy w której na co dzień programuję.


najbrzydszy wykres jaki widziałem w życiu ._. gorzej sie nie dało tych języków oznaczyć - baant 2019-09-09 11:11
@baant: co rozumiesz przez to? Bo ja specjalnie nie widzę innego sposobu, zwłaszcza przy długich nazwach języków. - hauleth 2019-09-09 16:02
Można np dać raz pod spodem a nie 10 razy w tle zaciemniając wykres - baant 2019-09-09 16:59

Pozostało 580 znaków

2019-09-09 13:38
1

IMO to nie ma znaczenia, bo często to algorytmy są wolne a nie języki programowania. Do czego potrzebny jest Ci ten benchmark? Pod jakim kątem? Poza tym np sieć potrafi tak spowolnić, że to będzie obojętne co chodzi pod maską. No chyba, że piszesz coś baaardzo niskopoziomowego, to wybiera się język pod usecase. Bez szerszego kontekstu ciężko powiedzieć.

Pozostało 580 znaków

2019-09-09 14:28
0

Uczę się dopiero C i chciałem tworzyć programy okienkowe. Na razie wybrałem C potem nauczę się GTK3. Ale interesuje mnie drugi język programowania, który jest prostszy od C, ma czytelną składnie, jest bardziej nowoczesny, czyli posiada GC, brak wskaźników, mniejsze problemy z wyciekami pamięci, jest kompilowany, brak nullów i ma statyczne typowanie. Języki skryptowe mnie nie interesują. A do maszyn wirtualnych jvm. clr jakoś nie mam przekonania, zawsze te programy desktopowe działały wolno.

Pozostało 580 znaków

2019-09-09 14:44
1

A do maszyn wirtualnych jvm. clr jakoś nie mam przekonania, zawsze te programy desktopowe działały wolno.

Scala ma wersję Native https://github.com/scala-native/scala-native podobnie jak Kotlin, ale jest narzędzie, które potrafi przekompilować już istniejące projekty Javowe, Scalowe, Kotlinowe, Clojurowe, etc do samodzielnego pliku wykonywalnego. Jest to native-image z GraalVM.
Instrukcja użycia native-image: https://www.graalvm.org/docs/reference-manual/aot-compilation/
Reszta dokumentacji: https://www.graalvm.org/
Repo GraalVM na GitHubie: https://github.com/oracle/graal

Szybkość takiej Javy skompilowanej AOT (ahead-of-time w przeciwieństwie do JIT = just-in-time) jest niestety obecnie sporo niższa niż zJITowanej: https://benchmarksgame-team.p[...]fastest/java-substratevm.html jednak AOT znacznie przyspiesza uruchamianie programów, np tutaj koleś skompilował Javowego klienta HTTP i ten staruje szybciej niż cURL: https://sites.google.com/a/at[...]runsin30msandusesonly4mbofram

Scala-Native już teraz osiąga wysoką wydajność, porównywalną z rozgrzaną JVMką: https://github.com/scala-nati[...]native/releases/tag/v0.4.0-M2 a przebija ją mocno w czasie uruchamiania (Scala-Native nie potrzebuje JITa oczywiście). Za jakiś czas (kilka lat?) GraalVM AOT powinien dogonić Scala-Native będąc jednocześnie dużo bardziej uniwersalnym (Scala-Native nie obsługuje zwykłych JARów). Oracle mocno w Graala inwestuje.


"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, 2019-09-09 14:49
Pokaż pozostałe 8 komentarzy
@hauleth: Tak mówi Wiki https://en.wikipedia.org/wiki/Type_class : Type classes first appeared in the Haskell programming language. - Wibowit 2019-09-09 16:05
A to nie jest tak z tą obiektowością z Gnome, że odpowiada za nią inny język taki jak Vala czy Ceylon lub JavaScript, a rdzeń Gnome to już tylko strukturalne C? Kiedyś zajrzałem na github do projektu Gnome i składał się właśnie z tych kilku języków programowania do tego dochodziły jeszcze skrypty w Pythonie i Lua. - tedy 2019-09-09 16:05
Obiektowość możesz mieć w każdym języku. W niektórych ta obiektowość jest po prostu ułomna. - Wibowit 2019-09-09 16:05
Nie, Vala się kompiluje do C i używa GObject do implementacji obiektowości (czyli to obiektowość w C). - hauleth 2019-09-09 16:06
@Wibowit: ok, dzięki. Myślałem, że to starsze jest. - hauleth 2019-09-09 16:08

Pozostało 580 znaków

2019-09-09 15:16
0

Jesli GUI jest Twoim celem to sprobuj:

  • Free Pascal plus Lazarus
  • C++ i Qt lub wxWidgets
  • Java plus Swing i Netbeans

Szacuje się, że w Polsce brakuje 50 tys. programistów
Pokaż pozostałe 7 komentarzy
Wymyślanie nowego dla samego wymyślania nie ma sensu. Trzeba mieć cel. Znaleźć problem, zapotrzebowanie, konkretne zyski, itp IntelliJ jest naklepany w Swingu i działa świetnie. Visual Studio jest niby napisane w nowoczesnym WPF (chyba, nie jestem pewien), ale Rider napisany w Swingu (bo to też IntelliJ Platform) działa nawet lepiej (o ile Rider wspiera dany typ projektu). Nie sądzę, by Swing był jakąś kulą u nogi przy tworzeniu porządnego IDE. W przypadku innych zastosowań może być inaczej, więc trzeba się zastanowić co chcemy zrobić. Być może HTML5 + JS będą najlepsze. - Wibowit 2019-09-09 16:37
Dynamiczne typowanie w JS to chyba nie najlepszy pomysł do dużego backendu i programów graficznych. Ostatnio Gnome miało problemy z pamięcią przez JS. - tedy 2019-09-09 16:50
W praktyce wodotryski HTML5 + JS oznaczają duże zużycie zasobów. Wystarczy przyjrzeć się ile zasobów zjadają przeglądarki gdy wchodzisz na zawalone JSem, CSSem, etc strony. Trzeba więc wybrać: albo szybkie GUI bez wodotrysków (jak Javowy Swing) albo pełno wodotrysków za cenę zużycia zasobów (jak w HTML5 + JS). Jedno i drugie razem ciężko osiągnąć, tzn wodotryski, które nie pochłaniają zasobów. Nie wydaje mi się też, by programiści byli jakoś specjalnie premiowani np za to, że stronka zżera trochę mniej baterii na telefonie. Dopóki jest w miarę płynnie to się nie przejmujemy - Wibowit 2019-09-09 17:06
Teraz byle stronkę każdy dzieciak potrafi stworzyć programami graficznymi, chyba nawet prosty backend da radę w takim Wix. https://mambiznes.pl/poradnik[...]nia-stron-internetowych-77136 Ale do Javy i C# już się nie dam namówić, po prostu nie lubię tych języków. - tedy 2019-09-09 17:10
No i to dalej jest zaimplementowane jako stronka w HTML5 + JS. - Wibowit 2019-09-09 17:11

Pozostało 580 znaków

2019-09-09 15:33
1

@tedy: odpowiadam na komentarz, bo nie chce schodzić z merytoryką do komentarzy gdzie miejsce offtopu.

Pascal czy Lazarus a może nawet Delphi zupełnie nie jest tym samym co C. Niemniej też bym nie szedł w tym kierunku, bo Embarcadero to troll licencyjny i trzeba bulić ciężkie pieniądze za nie do końca dopracowane narzędzia (Delphi), a Lazarus nie nadaje się do użycia produkcyjnego (mimo, że są tutaj zapaleńcy co walczą dzielnie i tworzą w tym soft, ale to wszystko hobbystycznie, niszowo). Warto liznąć C++, ale nie nauczysz się go łatwo i mało kto tak na prawdę go potrafi. Ja bym polecił Tobie C# - jest multiplatformowe, no poza tym, że GUI to jedynie dobre na Windows a GUI multiplatformowe jeszcze w powijakach (Avalonia UI), lub Jave. Jeśli masz złe doświadczenia to z programem danych a nie z jvm czy clr - dobrze napisany soft działa szybko i wcale nie tak łatwo zepsuć mu wydajność. Sam używając C# pisałem systemy real time i serio się da i obecnie rozbudowane programy będą działały szybciej niż kompilowane, szczególnie jeśli kod pisze początkujący.

Pokaż pozostałe 7 komentarzy
Generalnie obecnie C nadaje się do pisania kompilatorów (ale coraz mniej), do pisania softu na pralki oraz programowania systemowego. Sens języków kompilowanych poza specyficznymi zastosowaniami jest coraz mniejszy, - somedev 2019-09-09 16:07
Tego z tym LLVM nie wiedziałem. Gdy chciałem skompilować kompilator Swift na moim uniksie, wymagało to pobrania i skompilowania ponad 4000 plików. To trochę trwało. - tedy 2019-09-09 16:08
No ale JVM nie napiszesz w czystej Javie, a CLR nie napiszesz w czystym C# tak czy nie? - GraalVM to Java napisana w Javie (np GC w Javie: https://github.com/oracle/gra[...]org/graalvm/compiler/nodes/gc ). W środowisku .NETowców proponowano ten pomysł, ale MS go odrzucił (argumentem mniej więcej "po co? nie opłaca się"): https://github.com/dotnet/coreclr/issues/17576 - Wibowit 2019-09-09 16:42
Myślałem, że czas pracy programisty jest ważny i z czasem koszt napisania CLR w C# zwróciłby się Microsoftowi. A może chodziło tu o wydajność. GraalVM jest dużo wolniejszy od JVM? Nie widzę tam benchamrku porównawczego tych dwóch VM-ek. - tedy 2019-09-09 16:47
Stosunek wydajności GraalVMa (napisanego w Javie) do HotSpota (napisanego w C++) streściłem tutaj: https://github.com/oracle/gra[...]s/1069#issuecomment-473649871 Twitter używa GraalVMa (chyba Community Edition) dla kilku procent dodatkowej wydajności - te kilka procent w skali Twittera to dużo, na tyle dużo żeby otworzyć zespół ekspertów od kompilatorów. - Wibowit 2019-09-09 16:52

Pozostało 580 znaków

2019-09-09 15:36
0

Z takich waznych rzeczy pamietaj ze ani nim ani crystal nie sa jeszcze w stabilnych wersjach. Jesli juz celujesz w cos "niszowego" to proponuje RUST'a lub właśnie Golang'a (chociaż sam jestem zhajpowany na nim'a ale raczej wole nie pisać czegoś co ma trafić na produkcję w rozwiązaniu które nie jest jeszcze w wersji stabilnej)

edytowany 1x, ostatnio: machineko, 2019-09-09 15:38
Pokaż pozostałe 3 komentarze
Na OpenJDK. Poza tym to nie ma znaczenia, bo to środowisko uruchomieniowe, czyli w praktycznie cały kod będzie działał jak działał na Oracle JVM o ile nie używa Oraclowych klas. - hauleth 2019-09-09 16:12
I te małe firmy które do tej pory nie płaciły za wsparcie Oracle, przeniosą cały swój kod na darmowy OpenJDK, aby nie rezygnować z Javy? Czy będą ciągle tkwiły na Javie 8? - tedy 2019-09-09 16:14
A skąd mam wiedzieć? To od tych firm zależy. Poza tym JVM to nie moje kredki, po prostu prostuję stwierdzenie, że "Oracle wprowadziło opłaty za Jave od wersji 11+". - hauleth 2019-09-09 16:16
Oracle będzie brało kasę tylko za wsparcie LTS. Jak nie chcesz płacić to trzeba migrować na nowszę wersję lub przejść na Red Hat OpenJDK - Kamil Żabiński 2019-09-09 16:19
Wszyscy się przenoszą na OpenJDK. Migracja z Oracle JDK na Open JDK nie jest jakoś specjalnie bolesna, bo w najnowszych wersjach te JDK prawie niczym się nie różnią. Niech ktoś spróbuje wymienić jakieś najważniejsze różnice w najnowszych wersjach LTS OpenJDK i OracleJDK (czyli w 11) i ocenić ich problematyczność. Ja siedzę w JVMie od lat (najpierw Java, teraz Scala) i nie wiem, bo mnie to nie obchodzi :] - Wibowit 2019-09-09 16:47

Pozostało 580 znaków

2019-09-09 15:59
0

Mój kolega programista Javy mówi do mnie, że wypadałoby się w końcu nauczyć C++ bo wypada go znać. Skoro on go nie umie, a zawodowo programuje w Javie przeszło 20 lat to raczej nie biorę się za C++.

To taki trochę dziwny argument - skoro jest programistą Javy to żadna niespodzianka, że nie musiał nigdy uczyć C++. Skoro zaś sam nie chcesz zostać Javowcem, tylko zdryfować w jakieś kompletne odmienne rejony z programowaniem aplikacji okienkowych, to nie wiem czemu tak bardzo się inspirujesz tym co on robił albo i nie robił. Qt/wxWidgets to solidne biblioteki.

Pokaż pozostałe 15 komentarzy
Stackoverflow Jobs pokazuje, że dla JS 2175, Javy jest 1968 ofert, dla C# 712 Scala 299. Fakt dla javy jest ponad 2 razy więcej ofert ale .NET jest młodszy to raz, a dwa dopiero wkracza w multiplatfromowość. Późno, ale produkcyjnie już ładnie działa. Nie wróże przepisywania czegokolwiek z JS na Jave, ale sporo green fieldów robi się w .net core. Natomiast dla Rusta są 32 oferty, nim - 0, crystal -10 - te 3 języki praktycznie nic nie znaczą i nie zapowiada się, by nauka miała jakiś komercyjny sens. Nawet jak sam chcesz startupa pisać to bym ich nie wybrał. - somedev 2019-09-09 18:51
Dla Golang jest 850 wyników, ale Go jest stworzony do zupełnie innej klasy problemów niźli C# czy Java - zależy co chcesz pisać (a tego jeszcze ani razu nie napisałeś). Jakbym miał pisać coś komercyjnego niskopoziomowo ale nie na mikroklockach gdzie każdy bajt się liczy to bym pewnie popatrzył na Go, bo z C++ mam złe doświadczenia, a C jest prymitywny. Rusta czy inne wynalazki nie tykał bym ze względu, na niepewność - niech ktoś z większymi zasobami kasy przeciera szlaki. Pchanie się w coś jeszcze nie popularnego to jak pchanie się w coś już nie popularnego jak np. w pascal - somedev 2019-09-09 18:57
Idąc twoim tokiem rozumowania, to taki Kotlin czerpie wiele z C# to wydaje się być dużo lepszym wyborem niż C#. Nie wiem ile jest jego ofert pracy na Stackoverflow Jobs, ale pewnie podobnie co Scala. Ale jeżeli w Go jest więcej ofert pracy niż w C# i też piszą w nim backend to może być to najlepszy wybór. Poza płatnym IDE GoLand od JetBrains jest jakieś darmowe które dobrze sprawdza się z tym językiem? Na początek nauki i do swoich prostych projektów darmowe IDE powinno wystarczyć. - tedy 2019-09-09 19:13
Kotlin jest bardzo związany z JVM. Ja mam spore doświadczenie z pisaniem pod CLR i z pracą w tym ekosystemie więc go szczerze polecam. Z Kotlinem nie pracowałem w ogóle, a z JVM nie komercyjnie więc nie polecam, aczkolwiek Kotlin to może być dobry kierunek, ale tego nie gwarantuje. Ofert pracy dla C# deva w popularnym polskim portalu to koło 100 na ten moment - Golang - ani jednej oferty - to troszkę mówi o tym jaki polski rynek jest i też pytanie gdzie chcesz pracować. A jeśli to ma być pierwszy język to to olej i pisz w czymkolwiek bo i tak zmienisz albo nauczysz się - somedev 2019-09-09 19:30
nowych języków. Już wielokrotnie pisałem, że ja komercyjnie używam koło 10 języków a pewnie z 2 razy tyle używałem w swoim życiu zarówno komercyjnie jak i badawczo. - somedev 2019-09-09 19:31

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0