Co sądzicie o języku GO?

Wątek przeniesiony 2016-11-16 14:15 z Java przez Koziołek.

SH
  • Rejestracja:około 9 lat
  • Ostatnio:około 4 lata
  • Postów:94
0

Myślicie zastąpi w przyszłości javę? co sądzicie o przyszłości androida będzie on wykorzystywał jave czy go? Sorry jeśli zadaje głupie pytania jestem nowy w temacie javy. Czy dla web warto się jeszcze uczyć javy?dla androida?

spartanPAGE
i co ciekawego według Ciebie miałby robić golang na androidzie?
DE
@spartanPAGE pytanie pewnie zadane w związku z http://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift/ a skoro nie Java, to pewnie język Googla - Go.
neves
  • Rejestracja:prawie 22 lata
  • Ostatnio:około 11 godzin
  • Lokalizacja:Kraków
  • Postów:1114
0

Jeśli chodzi o trendy z branży to nadzieje co do języków funkcyjnych czy też scali powoli opadają i GO wyrasta na język z którym będą wiązane największe oczekiwania, co z tego wyjdzie jak zwykle zweryfikuje czas.

Można sobie o tym poczytać chociażby tutaj:
http://no-kill-switch.ghost.io/failed-revolution-renaissance-of-fp-3-yrs-later/


edytowany 4x, ostatnio: neves
Lectre
funkcjonalnych? ;)
AD
Jakieś źródło?
neves
lol funkcyjnych oczywiście :)
KR
Blog sugeruje coś, co nie jest prawdą. Popularność języków funkcyjnych stale rośnie - choćby patrząc po ofertach pracy czy liczbie projektów na GH. Nikt chyba nie twierdził, że FP wyprze OOP i zastąpi Javę. Jednak taka Java 8 raczej wzmocniła pozycję Scali, bo dzięki temu lambdy Scali się lepiej integrują z Javowymi.
AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
1

Raczej język dla ludzi którzy nienawidzą zasady DRY.

NJ
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 8 lat
  • Postów:1
0
adwy napisał(a):

Raczej język dla ludzi którzy nienawidzą zasady DRY.

<ironia> a Java jest dla nieuków, C# tylko dla fanuf bila gejtsa, C dla startych wykładowców a Python dla ludzi z doktoratem ... no i Swift, jest oczywiście dla hipsterów. </ironia>

GO widać (a przynajmniej ja widuje) w takich dość "operacyjnych" zastosowaniach, czy to jako routery HTTP które se tam gdzieś siedzą i coś robią (https:*github.com/cloudfoundry/gorouter) albo opędzają inne funkcjonalności związane z automatyzacją np: https:*bosh.io/ (chociaz sam bosh jest napisany w ruby :) ). Także Devops pracujący c CF to GO raczej znać powinien, bo se może coś skrobnąć w internalach clound foundry.

Widziałem też jakieś małe mikroserwisy napisane w GO - bo są bardzo tanie i koszt kilku takich małych jobów postawionych na AWS jest nieporównywalnie mniejszy niż kilku JVMowych krówek (chociaż wszyscy lofciamy JVMa i Jave). Jedna z wad tej technologi w tym zastosowaniu to że tam wszystko trzeba klepać od nowa, jakieś circuit breakery, monitoring - jakieś liby są, ale nie tyle co np: dla javy

Ale jako zamiennik dla javy to nieeeee.

edytowany 5x, ostatnio: niezdecydowanyJestGrzeczny
mr_jaro
eeee znam wymiatacza w pythonie który na studiach nie wytrzymał semestru, a ty z doktoratem wyjeżdżasz :p
NJ
@mr_jaro jeszcze raz przeczytaj, poprawiłem
AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
1
niezdecydowanyJestGrzeczny napisał(a):
adwy napisał(a):

Raczej język dla ludzi którzy nienawidzą zasady DRY.

a Java jest dla nieuków, C# tylko dla fanuf bila gejtsa, C dla startych wykładowców a Python dla ludzi z doktoratem ... no i Swift, jest oczywiście dla hipsterów.

To są opinie. A faktem jest to, że przez brak typów generycznych pisze się masę powtarzającego się kodu.

Aventus
Sam wyraziłeś opinię po czym zarzuciłeś komuś wyrażanie opnii. Logika?
AD
W sumie może masz rację. Z faktu że w Go trzeba klepać więcej kodu niż w normalnym języku nie wynika, że programiści tego języka świadomie nie przestrzegają zasady DRY (może to wynika z ignorancji / paradoksu Blub). Ale uwzględniając to, że ten język niewiele oferuje poza ograniczeniami, można się sugerować, że jest to jednak z głównych powodów dla którego go używają.
AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
1
neves napisał(a):

Można sobie o tym poczytać chociażby tutaj:
http://no-kill-switch.ghost.io/failed-revolution-renaissance-of-fp-3-yrs-later/

Argumenty autora:

  • programiści funkcyjni sami nie rozumieją podstawowych pojęć, nie rozróżniają monoidu od monady [opinia autora, bez żadnego poparcia]
  • sam język to nie wszystko [zgadzam się], liczą się narzędzia, ekosystem, biblioteki [w jaki sposób ma to związek z FP?]
  • w implementacji ScalaZ [zaawansowanej biblioteki do programowania funkcyjnego] można znaleźć trudny do zrozumienia kod [kompletnie skrajny przykład, zresztą temu służy tak skomplikowany kod w ScalaZ, żeby korzystając z tej biblioteki programista sam nie musiał go pisać]

Jeżeli są to najlepsze argumenty (bo zakładam, że osoba udowadniająca swój punkt widzenia, przedstawia najlepsze argumenty na jakie może wpaść) przeciwko językom funkcyjnym, to nie jestem przekonany, że nadzieje przeciwko nim słabną.

Xupicor
"w implementacji (...) można znaleźć trudny do zrozumienia kod" - no rzeczywiście, to żaden argument. Zwykle w implementacjach bibliotek znajdzie się kod, który nie jest za łatwy do zrozumienia - bo tam liczy się bardziej wydajność, niż czytelność. Biblioteki są do używania, a nie do czytania.
Kele
  • Rejestracja:prawie 19 lat
  • Ostatnio:około 8 lat
0

Go i Java to dwa różne języki do zupełnie innych zastosowań. Jeśli chcesz pisać na Androida, to wydaje się, że jeszcze długo królem będzie Java.

0

Go jest spoko, ale tylko w pewnych kwestiach jest w stanie konkurować z Javą. Nie nadaje się też do wszystkiego.
Ale do tych rzeczy co został zaprojektowany jest fajny.

AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
0
Krwawy Młot napisał(a):

Go jest spoko, ale tylko w pewnych kwestiach jest w stanie konkurować z Javą. Nie nadaje się też do wszystkiego.
Ale do tych rzeczy co został zaprojektowany jest fajny.

Jakie są to rzeczy i dlaczego w tych przypadkach jest lepszy od innych rozwiązań?

0

Nie mówie, że od razu lepsze.

  • Go jest spoko na przykład gdy potrzebujesz coś np. niedużego i wydajnego. I naprawdę jest szybki i do tego wygodny.
  • Najwięcej softu co w nim jest napisane jest from developers for developers. Sporo devops stuff.
  • Sporo command line ' owych rzeczy
  • Ma w porządku model współbieżnośći , w wielu przypadkach dużo łatwiejszy niż w innych technologiach
  • programowanie systemowe
  • jego prostota jest pewnego rodzaju ficzerem
AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
2

Nie mówie, że od razu lepsze.

Po co stosować coś co nie jest lepsze?

  • Go jest spoko na przykład gdy potrzebujesz coś np. niedużego i wydajnego. I naprawdę jest szybki i do tego wygodny.

Masz jakieś benchmarki na poparcie tego? Według tego co znalazłem jest prawie 3x wolniejszy od Javy, i jakieś 20% wolniejszy od Scali.

Co do wygody/prostoty to porównaj implementację w Go i Scali:

W którym kodzie szybciej byś się połapał o co chodzi?

  • Najwięcej softu co w nim jest napisane jest from developers for developers. Sporo devops stuff.
  • Sporo command line ' owych rzeczy

To że jest w czymś pisane nie znaczy że się do tego najlepiej nadaje.

  • Ma w porządku model współbieżnośći , w wielu przypadkach dużo łatwiejszy niż w innych technologiach

Model na którym opiera się Go (Communicating sequential processes), ma ciekawe właściwości, między innymi można statycznie wykrywać deadlocki. Szkoda tylko, że Go tego nie obsługuje.

  • programowanie systemowe

W czym jest lepszy od C/C++/Rust?

  • jego prostota jest pewnego rodzaju ficzerem

Brak ficzera = ficzer? Według tego argumentu asembler jest najlepszym językiem programowania.

Prostota kodu jest oczywiście zaletą, bo pozwala się skupić bezpośrednio na problemie, który rozwiązujemy. A żeby to osiągnąć potrzebujemy ekspresywnego języka, który dostarcza odpowiednich abstrakcji.

KR
Raczej 3x wolniejszy od Scali, bo Scala jest na równi z Javą. Każdy program w Javie można napisać w Scali bez utraty wydajności.
AD
W tym benchmarku chodziło o pokazanie wydajności idiomatycznego kodu. Oczywiście można napisać super zoptymalizowany kod oparty na samych tablicach i pętlach i uzyskać wydajność na poziomie C, ale nie o to tutaj chodziło.
KR
Jeżeli komuś zależy na wydajności to nie pisze funkcyjnie tylko imperatywnie. Cała heca polega na tym, że Scala daje wybór. W Go nie da się pisać ani bardzo wydajnego kodu, ani bardzo wysokopoziomowego kodu. Poza tym źle zaokrągliłeś - w tym benchmarku Scala jest tylko ok. 2x wolniejsza, nie 3x.
0

Po prostu według mnie w wielu przypadkach będzie good enough + nie pozwala na tworzenie miliona poziomow abstrakcji jak Java czy Scala.

Byłem sceptyczny do Go, ale im więcej zaczynam się nim bawic tym wiecej mi sie podoba. Tam gdzie znajdzie zastosowanie wydaje sie bardzo ok.

0
0

Z moich poszukiwań wynika, że wydajność Go, Rust, Swift jest zbliżona, ale każdy język ma trochę inne zastosowanie.
I Go w ostatnim czasie też znacznie swoją wydajność polepszył. A w 1.8. ma mieć stop-the-world GC na poziomie 100 mikrosekund.

Póki co mi się podoba, i tyle.

Lectre
mikrosekund? R U sure?
0

https://blog.golang.org/7years
'And we’ve developed new garbage-collection techniques that reduce typical “stop the world” pauses to under 100 microseconds. (Contrast that with Go 1.5’s big news of 10 milliseconds or less.)'

I to niby jest worst case.

0

Wedlug mnie Golang jest duzo bardziej popularny niz wskazuja na to oferty pracy. Chyba wszystkie duze korpo juz z tego korzystaly, google, netflix, intel, amazon...

Warto tez poczytac o Uberze, dropbox, malwarebytes itp. Ciekawe przypadki uzycia.

Jako javowca mnie urzeklo, ze prosta rest aplikacje moge napisac szybko w golym Go, uruchamia sie to w sekunde, edytorow pod dostatkiem, testy sie rowniez uruchamiaja w moment. ;)

1

https://github.com/golang/go/wiki/FromXToGo

Polecam tez poczytac te historyjki

AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
1
  • Go nie konkuruje z C++ ani Rust, jest nieco wyżej.

Przed chwilą stwierdziłeś, że niszą Go jest programowanie systemowe, a ja podałem przykłady języków które są w tej domenie wykorzystywane. Zatem albo Go konkuruje z tymi językami na tej płaszczyźnie, albo wcale się nie nadaje do programowania systemowego.

Nie ma to jak dobrać technologie, tak aby Go wypadł najlepiej w porównaniu (zwłaszcza że porównuje wysokopoziomowe frameworki jak Spring czy RoR z czystym Go). Według drugiego linka to z tego co widzę w wielu przypadkach Go przegrywa zarówno z Erlangiem jak i Javą i Scalą (i to w frameworku Play, szkoda że nie porównał np. z Akka).

Tutaj można znaleźć bardziej obiektywne benchmarki (dotyczące może z 99% frameworków jakie istnieją):
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=json

Jak widać w wielu przypadkach jest trochę lepszy, czasem trochę gorszy, jednak nie jest to rząd wielkości różnicy. Jeśli chodzi o przetwarzanie współbieżne czy dostęp do zasobów to większość frameworków zdaje się wykorzystywać prawie w pełni możliwości sprzętu, nie sądzę żeby języki takie jak Go pozwoliły osiągnąć tutaj jakiś znaczący postęp.

Wniosek z tego jest taki, że Go nie jest w tym przypadku lepszy (ani też może gorszy), więc nie należy wybierać języka na podstawie tego kryterium.

W jaki sposób z faktu, że Go jest lepszy od jednego języka, wynika że jest lepszy od wszystkich innych?

  • Scala... i prostota? Na moje jak musisz robic dziwne kombinacje w Go... to używasz złego języka do zadania. Do jakis obliczen raczej będzie sredni.

Do prostych zadań kod w Scali jest proporcjonalnie prostszy. W jaki sposób Go jest lepszy w prostych zadaniach?

  • Go jest prosty. Z tym, że wiekszosc myli prostotę z wygodą. Go jest restrykcyjny i narzuca sporo rzeczy dlatego programisci mogą łątwo się połapać w projektach, bo wszędzie wygląda to podobnie.

W asemblerze też piszesz w kółko te same mov'y i jmp'y, w czym Go jest lepszy od asemblera?

  • Dockery, Consule, Kubernetesy tego jest już pełno itp. itd.

Wiem że te programy są napisane w Go. Co z tego wynika?

http://jimplush.com/talk/2015/12/19/moving-a-team-from-scala-to-golang

Kiepski programista pisze kiepski kod. Nie wynika z tego, że język jest zły. Problemy wymienione w tym artykule (np. nadużywanie operatorów) są od dawna uznawane za złą praktykę w Scali.

Nie będę się za bardzo rozpisywał, tutaj masz odpowiedź społeczności Scali na ten artykuł:
https://www.reddit.com/r/scala/comments/3xkbeg/moving_a_team_from_scala_to_golang/

I Go w ostatnim czasie też znacznie swoją wydajność polepszył. A w 1.8. ma mieć stop-the-world GC na poziomie 100 mikrosekund.

Zobaczymy jak to wyjdzie, nie można opierać się na obietnicach. Co jeżeli w zamian np. zostanie zwiększona częstotliwość GC? Albo jeżeli nie ma to aż tak istotnego znaczenia dla końcowego użytkownika?

0

Hejtujesz nieco. A sukces jezyka wcale nie zalezy jaki swietny nie bedzie. Python jest przeciez rowniez ok w wielu przypadkach ale co go niby takiego wyroznia?

Ja nie probuje nic udowodnic, bo mi sie nie chce. Chcesz to sobie udowadniaj.

Scala moze byc fajna, ale raczej watpie by sie spopularyzowala. Rust wyglada ciekawie. Ale servo chyba za bardzo sie nie udal. Rozumiem, ze docker lepiej jakby byl napisany w scali?

A co do programowania systemowego, to nie zawsze musisz od razu pisac system operacyjny... Do czego Rust raczej sprawdzi sie lepiej.

Co do benchmarkow, sam tez dobierasz Go w wersji 1.4 badane na jakis matematycznych obliczeniach gdzie oczywistym jest, ze Scala bedzie lepsza.

Go jest tez spoko by wziac udzial w jakis open source.

0

A co do porownywania Go z frameworkami. To wlasnie kwestia jest tego typu, ze w Go nie potrzebujesz frameworkow i dalej jest dosc wygodny. Wiec porownanie to ma sens.

0

Nigdzie nie uzylem sformulowania, ze Go jest gdzies lepszy od czegos. Dopoki nie uzyje Go produkcyjnie to sie w tej kwestii nie wypowiem. Powiedzialem, ze mozna uzyc do programowania systemowego, a nie ze jest super do tego.

Scala jest ok, i rozumiem, ze sa dobre i zle praktyki. Ale niestety nie wierze w dyscypline wsrod ludzi i jak to wszyscy beda tworzyc dobry kod.

Go nam sporo narzuca i na pewno nie konkuruje z Java czy Scala.

AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
0

Hejtujesz nieco.

Czym się różni krytyka od "hejtu"?

A sukces jezyka wcale nie zalezy jaki swietny nie bedzie.

Nie uważasz, że powinny wygrywać rozwiązania dobre?

Python jest przeciez rowniez ok w wielu przypadkach ale co go niby takiego wyroznia?

Nadaje się bardzo dobrze do pisania skryptów, także do obliczeń naukowych. Czyli rzeczy, które raz się implementuje ale później do nich nie wraca.

Ja nie probuje nic udowodnic, bo mi sie nie chce. Chcesz to sobie udowadniaj.

To dlaczego wchodzisz na forum, które służy dyskusji?

Scala moze byc fajna, ale raczej watpie by sie spopularyzowala.

Wracamy do punktu wyjścia. Dlaczego uważasz że Scala się nie spopularyzuje?

Rozumiem, ze docker lepiej jakby byl napisany w scali?

C++ czy Rust byłby dobrym wyborem. Jeśli nie ma tak dużego znaczenia wydajność to może OCaml.

A co do programowania systemowego, to nie zawsze musisz od razu pisac system operacyjny... Do czego Rust raczej sprawdzi sie lepiej.

Programowanie systemowe to nie tylko tworzenie systemów operacyjnych.

Programowanie systemowe polega na tworzeniu aplikacji służących innym aplikacjom lub takich w których liczy się wysoka wydajność, np: bazy danych, silniki gier.

Co do benchmarkow, sam tez dobierasz Go w wersji 1.4 badane na jakis matematycznych obliczeniach gdzie oczywistym jest, ze Scala bedzie lepsza.

To jest benchmark języka, w którym sprawdzamy jak kompilator/platforma radzi sobie z typowym zadaniem przetwarzanie danych. Programowanie polega na przetwarzaniu danych zatem jest to całkiem precyzyjny test.

I dlaczego Scala miałaby być lepsza? Nie ma w niej nic co by sprawiało że jest lepsza w matematycznych obliczeniach.

Go jest tez spoko by wziac udzial w jakis open source.

A inne języki nie mają projektów open source?

A co do porownywania Go z frameworkami. To wlasnie kwestia jest tego typu, ze w Go nie potrzebujesz frameworkow i dalej jest dosc wygodny. Wiec porownanie to ma sens.

W innych językach też nie potrzebujesz frameworków. Ten benchmark był nieuczciwy ponieważ porównał niskopoziomowy mechanizm w Go z rozbudowanymi rozwiązaniami z innych języków. Uczciwsze byłoby porównanie np. z Netty+Jackson+JDBC.

Nigdzie nie uzylem sformulowania, ze Go jest gdzies lepszy od czegos. Dopoki nie uzyje Go produkcyjnie to sie w tej kwestii nie wypowiem. Powiedzialem, ze mozna uzyc do programowania systemowego, a nie ze jest super do tego.

Jeżeli nie jest w niczym lepszy w żadnym zastosowaniu, to po co go w ogóle używać?

Ale niestety nie wierze w dyscypline wsrod ludzi i jak to wszyscy beda tworzyc dobry kod.

Dlatego lepiej wybrać język w którym wszyscy są zrównani do najniższego poziomu?

edytowany 1x, ostatnio: adwy
0

Ja tylko sprzeciwiam się wmawianiu mi, że uważam, że Go jest od czegoś lepsze. Nie umiem na to pytanie odpowiedzieć, bo mało jeszcze używałem. Mogę powiedzieć tylko do czego wydaje mi się 'ok'.
Skąd taka pewność u Ciebie jakie to beznadziejne?

Nie wiem też czemu uparcie porównujesz do Scali. Według mnie akurat Scala sprawdzi się dużo lepiej w wielu zadaniach niż Go bo jest po prostu językiem wyższego poziomu. I o to w sumie mi chodziło z matematycznymi obliczeniami, kod Scali do matematycznych obliczeń będzie raczej dużo lepszy. Niefortunnie trochę zestawiłem to z wydajnością.

Wiara, że będą wygrywać rozwiązania najlepsze to utopia. Bardziej wygrywa marketing, duże community i ecosystem.
Go jest właśnie dobre jeśli nie potrzebujesz frameworków. I w gołym Go szybciej wystartuje niż np. w Spring Boot czy Play/Akka-http, gdy będę potrzebował usługę, która będzie tylko nawalać żądaniami http jak głupie. I jako goły Go według mnie sprawdza się tu dobrze i znajduje swoje zastosowanie.

Co do C++ https://talks.golang.org/2013/oscon-dl.slide#1 to daleko temu też do najlepszego narzędzia. Do programowania systemowego według mnie sprawdza się tam gdzie trzeba wykonać mniejsze taski.

Inne języki mają open source. W Go jednak znajduje sporo takich co mnie zainteresowała.

Im większa skala tym gorzej wyglądający kod i warstwa abstrakcji, które ludzie zaczynają w którymś momencie wymyślać.
W Go według mnie lepiej nad tym zapanujesz.

Go według mnie ma być dość wydajny, łatwy w nauce i niezbyt uciążliwy w codziennej pracy i zdecydowanie nie jest językiem do wszystkiego.

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

Taka mała uwaga - ani Go ani Scala nie są językami do obliczeń matematycznych, chyba że chodzi o coś prostego typu FV.

Kilka języków/środowisk typowo matematycznych:
https://www.nextplatform.com/2016/01/26/dirt-simple-hpc-making-the-case-for-julia/
(zestawienie na dole)

edytowany 1x, ostatnio: vpiotr
0
vpiotr napisał(a):

Taka mała uwaga - ani Go ani Scala nie są językami do obliczeń matematycznych, chyba że chodzi o coś prostego typu FV.

Kilka języków/środowisk typowo matematycznych:
https://www.nextplatform.com/2016/01/26/dirt-simple-hpc-making-the-case-for-julia/

Spoko. Jednak w Scali będzie to dużo wygodniejsze niż w Go ;)

AD
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 8 lat
  • Postów:67
0

Skąd taka pewność u Ciebie jakie to beznadziejne?

Nie jestem niczego pewien, chciałbym wiedzieć do czego ten Go jest lepszy.

Nie wiem też czemu uparcie porównujesz do Scali. Według mnie akurat Scala sprawdzi się dużo lepiej w wielu zadaniach niż Go bo jest po prostu językiem wyższego poziomu. I o to w sumie mi chodziło z matematycznymi obliczeniami, kod Scali do matematycznych obliczeń będzie raczej dużo lepszy. Niefortunnie trochę zestawiłem to z wydajnością.

Podałem przykład wysokopoziomowego języka, który jest szybszy od Go.

Ten konkretny przykład porównuje w jaki sposób wygląda kod przetwarzający dane w obu tych językach. Czy uważasz, że operacje takie jak mapowanie czy grupowanie elementów w kolekcji nie przydają się w codziennym programowaniu?

Wiara, że będą wygrywać rozwiązania najlepsze to utopia. Bardziej wygrywa marketing, duże community i ecosystem.

Będzie tak dopóki ludzie będą bezkrytycznie wybierać języki czy technologie.

Go jest właśnie dobre jeśli nie potrzebujesz frameworków. I w gołym Go szybciej wystartuje niż np. w Spring Boot czy Play/Akka-http, gdy będę potrzebował usługę, która będzie tylko nawalać żądaniami http jak głupie. I jako goły Go według mnie sprawdza się tu dobrze i znajduje swoje zastosowanie.

A w innych językach potrzebujesz frameworków? Podałem przykład bibliotek, które nie są frameworkiem i byłyby porównywalne do tego co oferuje Go.

Jak chcę coś szybko napisać to używam Pythona, w czym Go jest tutaj lepszy od Pythona?

Co do C++ https://talks.golang.org/2013/oscon-dl.slide#1 to daleko temu też do najlepszego narzędzia. Do programowania systemowego według mnie sprawdza się tam gdzie trzeba wykonać mniejsze taski.

Porównuję kod ze slajdu 58 i 59 i nie widzę żadnego usprawnienia wynikającego ze zmiany języka. Poprzedni system był źle napisany, np. wykorzystywał całą masę odwołań do pól klasy. W przykładzie z Go obsługa błędów została wyraźnie zignorowana. Poza tym porównywany jest niskopoziomowy przykład (obsługa błędu) z wysokopoziomowym kodem, który gdzieś pod sobą kryje ten sam kod co w C++.

Inne języki mają open source. W Go jednak znajduje sporo takich co mnie zainteresowała.

W każdym języku można znaleźć dużo ciekawych projektów open source. Jednak nie jestem pewien co to dodaje do tej dyskusji.

Im większa skala tym gorzej wyglądający kod i warstwa abstrakcji, które ludzie zaczynają w którymś momencie wymyślać.
W Go według mnie lepiej nad tym zapanujesz.

Abstrakcje upraszczają kod, żeby wyglądał lepiej. Go nie obsługuje żadnych poważnych abstrakcji, więc nie nadaje się do aplikacji o większej skali.

Go według mnie ma być dość wydajny, łatwy w nauce i niezbyt uciążliwy w codziennej pracy i zdecydowanie nie jest językiem do wszystkiego.

Tutaj masz artykuł wyjaśniający nieco motywacje za powstaniem Go:
http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/

Zgodnie ze słowami twórcy języka:

The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.

Wynika z tego, że ten powstał dla młodych osób, dla których konstrukcje takie jak typy generyczne są zbyt skomplikowane. Czy nie można zatem powiedzieć że jest to język, który został zaprojektowany na bazie ignorancji?

0

Uważam, że stwierdzenie, że Scala jest szybsza od Go to błąd. Nie jest to oczywiste ani trochę.

Restowa Applikacja w pure Java albo Scala to byłaby akurat masakra i nie chciałbym tknąć tego kijem. W pure Go jest to dość proste. Ile osób pisze w Netty+jackson+jdbc ? Jakieś 99% projektow to Spring/Java EE.

Od Pythona akurat jest dużo szybszy i ma statyczne typowanie, które może się przydać ale to już jest dyskusyjne. To zależy co potrzebujemy.

Abstrakcje również powodują to, że próg wejścia w projekt jest większy. W javie można spotkać się z tym całkiem często i wcale nie jest to takie cudowne...
Go do abstrakcji się nie nadaje. Ale posiadanie corowych usług w Java/Scala i wokół appki Golang wydaje się ciekawym pomysłem.

Co do obługi błędów w Go nie umiem się zdecydować czy mi się podoba to czy nie. ma to swoje plusy i minusy. Jednak stosując się do pewnych praktyk mam pewność, że zawsze obsługuję błędy i zawsze wiem co się w kodzie dzieje.

I co w tym założeniu, że większość osób jest przeciętna jest niepoprawne? To założenie ma sens. I można w Go pisać poprawny kod nie będąc orłem i skończyć projekt w dość szybkim czasie.
Nie znaczy to jednak, że nie mamy korzystać z innych narzędzi jak choćby Scala. Na pewno nie chciałbym pisać wszystkiego w Go, zresztą nie da się.

0

A co do popularnosci Scala vs Golang. To jak wejde na jakies czaty, slacki, gittery to ilosc osob tam gdzie jest Go jest dużo większa. Lecz zupełnie inny rodzaj softu powstaje w Scala niż w Go.
Z tym, że według mnie Scala bardziej konkuruje z Javą. Osobiście chyba wole pozostać przy Java. Scali użyłbym tylko w kilku przypadkach.

Według mnie wyrobić sobie opinie o technologii można tylko przez praktykę. Warto poczytać itp. Ale nic nam nie da tyle co praktyka.

KR
Scala konkuruje z Javą? Pierwsze słyszę. Zupełnie inna grupa docelowa. Raczej się uzupełniają. Natomiast Go ma wiele cech pierwszej Javy. Java miała być prostym językiem dla ludzi, którzy nie chcą się długo uczyć np. C++. Teraz Java trochę się rozrosła i Google postanowiło ją uprościć.
1
0

Używam Go od 2 lat.

Oglądam duzo kodu fajnych systemów napisanych w tym języku.
Produkcyjne pisze kod odpalony na win 32, 64 linux w tym lin na Armach
Z łatwością portuje kod napisany z myślą tylko o linux na windę
Nie czekam 30 min na kompilacje
Milo i sprawnie pisze testy
Dodam że mam 15 letnie doświadczenie w C C++, mniejsze w C#, znam Pythona

Robiłem wiele własnych testów i nie znam takiego obiektywnego benchmarku który podważyć może performance Go i uznać że jest wolniejszy istotnie od innych języków.

Mało framework ów- w sensie ze np czego brakuje?

Scala, .net, java - to się nie sprawdzi w przyszlosci mikroserwiaowej, gdzie serwisy rozleja się też po iot
Setki MB runtime , nieograniczona zachowaniach na ram.

C++ że swoimi nowymi wersjami to poprzednia epoka - sorry

Za to docker, elementy coreos, telegraf , influxdb, consul, I masa innych nie małych rozwiązań powstaje w Go.

Zobaczymy za kilka lat .... bardzo jestem ciekaw

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)