Aktywne Wpisy
zeszyt-w-kratke +26
Poznałem dziewczynę na #tinder widzieliśmy się 3 razy (były to długie spotkania po 5-6 godzin) jest mega sympatyczna i miła. Ogólnie od początku byliśmy nastawieni na szukanie dłuższej relacji. Widzieliśmy się tylko 3 razy ze względu na to, że ona wyjeżdża na studia do innego miasta. W piątek napisała mi, że chce mnie zaprosić do swojego domu rodzinnego na jej imieniny i jej imprezę rodzinną gdzie będą jej rodzice, brat z żoną
dawig123 +6
Nie popieram działań Rosji ale słowa papieża o negocjacjach z Putinem dały mi do myślenia i mam do was pytanie, po cholerę my poszerzamy Nato, skoro Putin wprost powiedział, że ekspansja nato zakończy się wojną? My chcemy komuś na złość zrobić, czy cieszycie się z tego, że zgnijecie w okopach? Powinniśmy dążyć do utalenia rozejmu, który pozwoli na zostanie nato i Rosji tam gdzie te były od lat, tymczasem nasi politycy codzień
Kodzę głównie w C/C++ - w sensie drivery, finalne rozwiązania - nie wiem jak to dobrze określić - po prostu apki nisko poziomowe, blisko sprzętu. Tylko coraz częściej jest tak, że żeby dojść sedna problemu gdzie faktycznie C/C++ jest tym narzędziem, które robi robotę to muszę przejść przez warstwę sieciową, żeby odebrać config, sparsować (np JSON RPC czy dbus) zaaplikować, wygenerować odpowiedź itd. Ogólnie dużo roboty która nie jest w ścieżce krytycznej, ale generuje kolosalny nakład pracy. No i tu pojawia się problem bo C/C++ to tak średnio do tego. No można niby wszystko tylko po co jeżeli można prościej i szybciej.
Co polecacie jako (nie wiem czy dobrze sie wyrażam) "frontend dla backendu" :P Chodzi mi jaki jezyk wybrać żeby:
1. Łatwo obsugiwać komuniację sieciową (zakładajć że kontroluję kod klienta i serwer): HTTP, JSON RPC i być może inne protokoły (dbus?).
2. Łatwa interakcja z plikami, serializacja/deserializaja.
2. Mieć w miarę szybki kod - nie musi być demonem prędkości, to nie jest ścieżka krytyczna.
3. Mieć możliwość łatwej interakcji z C/C++ - w sensie odbieram config, wołam funkcje z C/C++, żeby go zaaplikować.
4. Wszystkie zależności muszą być dostępne offline w czasie budowy paczki i uruchamiania aplikacji (w sensie totalnie offline).
5. Mieć dobre IDE z uzupełnianiem składni i hintami - must have.
6. Możliwość debugowania, najlepiej przez coś al'a gdb + IDE support - must have.
Myślałem ostanie o #golang W sumie tutoriale wyglądają prosto, język wydaje się prosty. Tylko znajomy powiedział mi, że po dłuższym spotkaniu z tym językiem to poza zastosowaniami sieciowymi to gówno totalne.
Teraz myślę nad #rustlang tylko tutaj nie mam w ogóle doświadczeń. W sumie jestem negatywnie nastawiony do tego języka ze względu, że nie podoba mi się składnia, ale co tam jak będzie robił robotę to mogę się przełamać i nauczyć.
Próbowałem też #python i #lua, ale dla mnie języki dynamicznie typowane to dzieło szatana.
Jakieś propozycje języków z przykładami dla powyższych wymagań?
#programista15k #programowanie i wszyscy inni święci.
W moim odczuciu tylko #rustlang i nie ma tak naprawdę alternatywy, skoro kodzisz w C++ to jego trudność jest do ogarnięcia. Tylko nie bardzo rozumiem, jak to ci się składnia nie podoba, w Go jest dużo gorsza i prymitywniejsza. A jak zrozumiesz jak Rust rozwiązuje problemy
@BeginEnd: a masz inne zastosowania? Zastanów się dwa razy nad odpowiedzą.
Jeżeli możesz robić appki od podstaw, to też może zrób sobie szablon projektu i np. skorzystaj z takich udogodnień jak vcpkg:
https://vcpkg.io/en/docs/examples/manifest-mode-cmake.html
Albo może jednak kod niskopoziomowy ci się
@BeginEnd:
Jeżeli C++:
* do HTTP: https://github.com/yhirose/cpp-httplib#server-multi-threaded
* do JSON: https://github.com/nlohmann/json
* binarny standard serializacji/deserializacji: https://google.github.io/flatbuffers/ albo coś od BSON
A ogólniej:
1️⃣ https://www.google.com/search?hl=en&q=awesome%20C%2B%2B%20curated%20list
2️⃣ https://vcpkg.io/en/packages.html
@BeginEnd, @patrolez: niepopularna opinia: uważam że do sieci tym bardziej gówno i nie rozumiem co ludzie widzą w tym języku. No dobra, może nie gówno, ale Rust ma obsługę sieci i współbieżności zrobioną pod każdym względem lepiej. Go nie gwarantuje wykrycia wyścigów w danych, gorutyny są znacznie cięższe od korutyn w Rust,
Golang super łatwo umożliwia bundlowanie jednoplikowej binarki z pełną appką Web, gdzie statyczne pliki też są bundlowane na np. assety: https://blog.jetbrains.com/go/2021/06/09/how-to-use-go-embed-in-go-1-16/
Szybciej nie da się napisać czegoś z API, co działa off-the-shelf niż w Go, co można to albo wykorzystać do prototypowania, albo na "tymczasowe" (co w praktyce znaczy, że jako docelowe/permanentne) rozwiązanie.
@patrolez: to bardzo miło z jego strony, ale Rust i cały tuzin innych języków łącznie nawet z Javą też. W czasach dockera to czy to jeden plik czy kilka ma niewielkie znaczenie. Ważniejsze jest już ile łącznie to waży. A na tym polu znowu Go przegrywa z Rust.
@patrolez: szybkość pisania to głównie kwestia znajomości języka, jego bibliotek i praktyki. Pisanie typowych API i CRUDów jest proste w każdym nowoczesnym języku. Ale spróbuj zrobić prosty broadcast na kilka serwisów i już w Go musisz kombinować prawą ręką do lewego ucha dookoła głowy, bo język nie ma wielu mechanizmów które byłyby przydatne: https://stackoverflow.com/questions/36417199/how-to-broadcast-message-using-channel
@patrolez: Tak, moje główne zadanie to nie są rzeczy sieciowe. Piszę apki w C / C++ robiące coś innego, a obsługa sieci to tylko niemiły dodatek który muszę robić żeby odebrać jakiś request raz na godzinę przesłać odpowiedź. Dlatego zależy mi na tym aby dobrać taki język lub framework który będzie prosty, nie wymagał dużo pracy przy utrzymywaniu kodu