Zdjęcie w tle
Programowanie

Społeczność

Programowanie

1k+
Wygląda, że Rust ma swoje 5 minut, na scenie języków programowania i jest znany ze swojej wydajności bliskiej C/C++.

Zatem w jaki sposób nowy język mógłby uszczknąć nieco popularności od Rusta? Ano poprzez twierdzenie że jest on szybszy o 50% od niego w jednym z benchmarków.

Tym językiem jest Mojo
Być może się zastanawiacie, czemu dodałem tutaj tam emotkę ognia - ano bo tak się ten język nazywa - serio w nazwie takie coś mają, sprawdźcie sami.

W skrócie jest to język przeznaczony do AI, interoperacyjności z Pythonem, przy zachowaniu jego prostoty i wydajności porównywalnej lub większej niż Rusta.
Brzmi dobrze... aż za dobrze.

Zatem blog o wyczynach wydajnościowych jest widoczny tutaj - https://www.modular.com/blog/mojo-vs-rust-is-mojo-faster-than-rust

Już na samym początku pada ciekawe stwierdzenie

There are a lot of considerations surrounding any benchmark implementation, you can't use any one benchmark to say x language is faster than y language

a następnie widzimy jak to właśnie tym benchmarkiem chcą udowodnić

Widać potem opis kilku elementów, które twórcy uważają że są one powodem tej lepszej wydajności(całkiem logiczne w większości btw.) tj. pożyczanie wartości zamiast jej kopiowania, TCO czy dobre wsparcie dla simd, oraz ostatecznie owy benchmark.

Na tym ta historia mogłaby się zakończyć, gdy oczywiście nie jakiś wścibski programista, który chciał przetestować ową wydajność.

https://viralinstruction.com/posts/mojo/#matching_the_implementation_in_julia

Odkrył on, że kod w Mojo , robi mniej walidacji niż testowane programy.
Przy wybranej większej ilości optymalizacji, kod w Rust czasowo niemal zrównał się z tym z Mojo , a program napisany w języku Julia, oba mocno wyprzedził.

Wygląda, że Mojo jest ciekawym projektem, którego rozwój warto mieć na oku, ale jego zamknięty kod, masa błędów(ciągle jest w fazie alpha) czy szukanie taniej sensacji przy naginaniu reguł, pozostawia niesmak i obawy o rzeczywiste działanie w przyszłości.

#rustlang
#mojo
#programowanie
5b70296d-faa6-4d90-a582-f7a883032f12
kodyak

Żeby język mógł zaistnieć musi mieć przede wszystkich ogromną bibliotekę. Rust jest jeszcze w fazie gdzie się mnóstwo tworzy, a same staty wiosny nie czynia. Choć już czytałem że hype na ten język się trochę wypalil.

rayros

Piszę w rust pare miesięcy i uważam że to jest naprawdę dobry język w porównaniu do Java, typescript czy c lub c++

vinclav

RUST is not a dust. Bardzo lubię ten język, już wiem, że warto.

Zaloguj się aby komentować

Od prawie roku korzystam z AI(chatgpt i github copilot) do pomocy przy programowaniu i muszę przyznać że potwornie się mi te narzędzia przydają i znacznie przyspieszyło mi to niektóre czynności.

W moim przypadku działa to świetnie do:

  • Tworzenia funkcji mapujacych obiekt z jednej klasy do drugiej(np. From/TryFrom w Rust)
  • Dopisywania logiki w prostszych funkcjach - czasami wystarczy wpisać nazwę funkcji, argumenty i zwracany typ, by cała logika którą oczekiwałem była wpisana do środka
  • Podpowiadaniu w jaki sposób używać danej biblioteki - zdarza się, że mimo przeczytania dokumentacji, nie mam pomysłu w jaki sposób użyć danej funkcji i zwykle podpowiedzi nawet nie do końca trafne, kierują mnie na właściwe rozwiązanie (pomogło mi to przy bibliotece diesel, która jest trudna do opanowania)

dzięki temu, zamiast żmudnego kopiowania i wklejania czy też tworzenia mniej wymagających funkcji, mogę skupić się na bardziej wymagających zadaniach.

Jednak zauważyłem, że pod niektórymi wątkami na reddicie i innych forach, jest spora rzesza osób, które z ai wcale nie korzystają(nie dlatego że nie wiedzą, ale bo nie chcą korzystać).

Jednym z argumentów, jest kwestia etyczna, bo kod nauczony przez ai nie jest w żaden sposób sprawdzany pod kątem licencji oryginalnego kodu.

Inny argument to kwestia tego, że więcej szkodzi(lub bierze więcej czasu niż jakby pisać to wszystko ręcznie) niż pomaga - akurat w moim przypadku argument chybiony.

Jakie są wasze argumenty za/przeciw?

#programowanie
#ai
#sztucznainteligencja
588d911b-9f78-4179-b25b-9e344a333646

Czy korzystacie z AI przy programowaniu?

525 Głosów
ChilledMimosa

Obydwa nadają się do trywialnych i prostych zadań. Niech dla przykładu zaproponuje Ci rozwiązanie problemu, gdy mając jakąś starą aplikację w Javie (choćby 7 i starsze) musisz zacząć obsługiwać TLSv1.2. Skończysz na przepisywaniu aplikacji lub tysiącu propozycji, z których żadna nie zadziała.

pluszowy_zergling

Dopiero się z tym ogarniam, wiele prostych podpowiedzi jest spoko, niestety jak już trzeba coś na poważnie skonfigurować to sugestie AI są - delikatnie mówiąc - z pupy.

pepe_delfin

U mnie niestety przydatne tylko do wskazania ogólnego kierunku - w narzędziu z którym pracuję najczęściej kod napisany przez chatGPT po prostu nie działa. Za dużo halucynacji, wymyśla biblioteki które nie istnieją, wrzuca nieaktualne biblioteki albo takie które nie są wspierane w wykorzystywanej przeze mnie wersji tylko następnej, albo podaje kod który zwyczajnie nie zadziała bo korzysta ze słów kluczowych czy funkcji które nie istnieją. Często też podaje użycie funkcji w sposób w który nie da się z nich skorzystać (np totalnie złe argumenty). A czasami zapytany o stworzenie jakiejś logiki zwraca deklarację funkcji z jej nazwą i komentarzem - dopisz sobie resztę xD

Szkoda bo narzędzie jako takie bardzo przydatne, ale najwyraźniej moje środowisko pracy zbyt mało popularne żeby umiał sobie z nim poradzić.

Zaloguj się aby komentować

#regex #wyrazeniaregularne
Doskonały interaktywny edytor wyrażeń regularnych obslugujący kilka ich standardów (m.in popularne PCRE)
https://regexr.com
dolitd

Nie dość, że sam regex jest trudny, to jeszcze ma kilka standardów.

Zaloguj się aby komentować

Nie tak dawno temu dokonałem czegoś niemożliwego - znalazłem błąd który był w obcej bibliotece, a nie w moim kodzie.

Na jednym ze starych armów których używamy, odkryliśmy bład w pythonowym programie, gdzie podczas testowania punktów poza okręgiem o promieniu 30, niekiedy wartości wyskakiwały poza skalę.

W okręgu r<30 mamy ~60 punktów z wartościami, które im dalej od środka, tym bardziej się powinny zmniejszać. Dla punktów spoza okręgu r>30 musimy to ekstrapolować, bo do nich danych nie mamy.

Lokalnie na komputerze wszystko mi działało, choć metoda ekstrapolacji wartości RBFInterpolator(korzystamy ze starszej wersji scipy - nie możemy jej niestety łatwo podnieść na urządzeniu, by przetestować czy została naprawiona) dawała nieco niepoprawne i zawyżone wyniki.

Dla pewności ujednoliciłem wersje wszystkich pakietów(głównie zależności pośrednich, bo główne zależności były w tej samej wersji) pomiędzy urządzeniem i komputerem, jednak nie przyniosło to żadnej poprawy.

Przełożony na wieść że nie występuje problem lokalnie, zasugerował bym upewnił się że wszystko lokalnie sprawdzam z tymi samymi parametrami co na urządzeniu. Niezbyt wziął pod uwagę moje wątpliwości co do tego, że może jest to wina biblioteki - szczerze mówiąc się mu nie dziwię, bo z jego strony nie wyglądało to zbyt dobrze - gościu tylko od roku programujacy mówi że być może to nie jego wina i problem może występować w jednej z najpopularniejszych bibliotek pythona i w issues na githubie nie było nawet jednego podobnego wątku.

Ostatecznie udało mi się zilustrować wartości w siatce w kwadracie (od -100 do 100) przy użyciu matplotlib, gdzie widoczne było że na komputerze wartości w miarę regularnie zmniejszają w miarę oddalania od środka. W przypadku urządzenia ARM, wartości promieniście odchodzące z kątów 0,90,180,270 stopni poza okręgiem(r>30), są wybite poza wszelkie granice.

Wygląda więc że w przyszłości będziemy musieli, zainstalować na produkcyjnym sprzęcie pytest, by sprawdzić czy wszystko działa tak jak powinno na armowym urządzeniu, skoro nikomu już nie można wierzyć.

#python
#programowanie
b48a7301-09cf-499d-ab8f-77e27bef38f0
ZohanTSW

Niesamowite że ktoś pomyślał że może z tym nie być problemu - zawsze powinno się budować, uruchamiać testy na docelowym sprzęcie (przecież tam będzie to wszystko działać na nie na kompie programisty lol). Dobrym pomysłem jest nawet redundancja, macie joba który uruchomi testy na x86_64 i joba na ARM, oba muszą przejść. Gdybyście kompilowali, to również im więcej kompilatorów tym lepiej. W embedded trzeba spodziewać się niespodziewanego.

A już totalną ignorancją okazali się prowadzący ten projekt jeśli uruchamiacie testy na 64 bitowej platformie, a docelową platformą jest 32 bitowy ARM

Ilirian

Najgorzej jak znajdziesz buga w Firefoxie i okazuje się że podobny błąd został zgłoszony w 2006 roku i od 18 lat toczy się pod nim dyskusja. Co jakiś czas ktoś pyta kiedy to będzie naprawione, następnie ktoś z mozilli odpowiada że nad tym pracuje by za dwa lata znowu dostać pytanie o postępy xD


Zauważyłem np że firefox na androidzie bardzo często odświeża strony po powrocie do niego, tak jakby od razu po przeskoczeniu do innej apki czyścił dane strony z pamięci. Oczywiście zgłoszony bug wisi od paru lat w backlogu bo niby ważny błąd ale jakoś tak nie umieją go odtworzyć


(sorki za offtop xD)

sadamasin

Używacie biblioteki scipy i się dziwicie… zaciągnijcie normalnie z github a nie z jakiejś cipy…

Zaloguj się aby komentować

Korzystał ktoś z samby(libsmbclient) z wielu wątków?

Chciałem w każdym uruchomionym wątku, stworzyć sobie klienta łączącego się z serwerem, przesyłającego jakieś kilku megabajtowe pliki a na końcu zamykający połączenie.

Jednak zauważyłem że wywoływanie smbc_new_context z wielu wątków jednocześnie, powoduje problemy z pamięcią i wysypywanie się programu a nie znalazłem innej metody na łączenie się z serwerem i przesyłanie danych.

Próbowałem grzebać w bindingach które używamy, ale nie udało mi się nic zdziałać - issue https://github.com/veeso/pavao/issues/17

Obecnie w programie dodaję globalnego locka na operacje i tylko jedna na raz może się wykonywać.

Czy samba jest ograniczona do działania tylko w jednym watku w programie, czy może to błąd nakładki której używam, czy może istnieje jakaś opcja do uruchomienia wsparcia wielu wątków?

#samba
#jezykc
#programowanie
koszotorobur

@qarmin - ale do przesyłania plików weź ty użyj czegoś normalnego jak scp, rsync, robocopy, gołe SSH, sftp a nawet ftp(s).

Zaloguj się aby komentować

Niecały rok temu, pokazałem szefostwu że może warto było użyć Rusta w jednym projekcie zamiast na maxa optymalizować pythona, z którym mieliśmy od groma wydajnościowych problemów, ale przez długi czas odpowiedzią było "nie", bo to nie jest nam potrzebne(kolega optował za C++ i całe szczęście jego pomysł miał bardziej stanowcze "nie" - zbyt wiele wycierpiałem by używać go jako głównego języka w projekcie który tworzę).

Dopiero pół roku temu najbardziej krytyczne części powoli zaczęły być przepisywane na ten język i jak można było przewidzieć, problemy wydajnościowe przy naszym używaniu programu prawie nie występują.

Obecnie projekt ma ~50k linii w pythonie i ~10k linii w rust i szefostwo uznało, że najwyższy czas przepisać to na rusta, skoro tak dobrze się sprawdza i naprawi kilka pomniejszych błędów i oczywiście jako jeden z tych co zna ten język, znaczna część pracy przypada mnie.

Minusem jest to że jest od groma przy tym roboty na kilka miesięcy i być może to w 100% nie będzie to działało identycznie jak wcześniej(a powinno).
Plusem jest to że w końcu zaczynam się naprawdę uczyć tego języka - przy robieniu projektów dla zabawy nie musiałem zbytnio się przejmować stylem, a tutaj nie dość że trzeba pisać programy tak, by się samemu je rozumiało, to trzeba zrobić je tak by inni je zrozumieli - a rust czasami bywa trudnawy do zrozumienia.

#programowanie
#rustlang
Astro

@krokietowy wybacz za bezpośrednie pytanie ale czy dostałeś znaczącą podwyżkę? Bo to chyba najlepszy moment na negocjacje.

Pokazałeś dużo zapału, warto by ktoś go docenił.

rm-rf

@krokietowy no wszystko spoko tylko jest jedno ale - uczenie się języka na produkcyjnej aplikacji to koniec końców i tak jej pisanie raz jeszcze po skończeniu nauki. Niestety znam to

Zaloguj się aby komentować

Dodałem na główną sortowanie po popularności ogłoszenia. Algorytm użyłem z posta na stack overflow https://stackoverflow.com/questions/11128086/simple-popularity-algorithm

Ciekawie to teraz wygląda, ciągle coś nowego na głównej się pojawia, ale chyba muszę odfiltrować boty z wyświetleń. Tu można zobaczyć efekt:
https://mamrzeczy.pl

#programowanie

Zaloguj się aby komentować

Mam problem w github CI, że projekt który kompiluję bierze całą dostępną przestrzeń dyskową.

Używam C++ i problem występuje przy linkowaniu - nie ważne czy używam lld, gold czy mold, zawsze jest to samo.

Da się coś na to zaradzić? Np. jest jakiś krok przed linkowaniem, który usuwa pliki źródłowe i zostawia tylko to co potrzebne do linkowania?

To jest krok z budowaniem aplikacji z address sanitizerem, więc nie mogę wyciąć żadnej opcji, która zmniejszyłaby rozmiar binarki.

#programowanie
#cpp
mike-litoris

@krokietowy ustaw sobie ramdysk jako target do kompilacji, tam przechowywanie objfile zlinkują sięjak trzeba a po tym procesie zyskasz binarkę na fizycznym storage'u

m_h

A nie dałoby rady budować bibliotek (.a) z poszczególnych komponentów i na koniec z linkować je do końcowej binarki?

groman43

@krokietowy Z czystej ciekawości, co to za projekt. Bo to musi być niezła kobyła, w co nie za bardzo chcę mi się wierzyć.

Zaloguj się aby komentować

Proszę o sprawdzenie co jest nie tak, dlaczego pluje mi errory?

Strona to https://ikc.biblioteka.ilawa.pl/
55ce1096-e8c1-48cb-a6f2-c6263ea929dc
9edfb75f-fd4f-4af6-ab1a-641009a37fde
Vuaaas

@Bezbronny Dobrą praktyką jest nie przesyłanie wartości true/false jako parametr i tworzenie warunków, tylko stworzenie osobnej funkcji dla każdego przypadku. W twoim kodzie było by to podzielenie funkcji "url" na: "url" i "urlSaveParams" gdzie pierwszy wariant obsługiwałby to co jest w "else" a drugi to co jest w "if". Widać potem lepiej jak działa program podczas wywoływania funkcji. Oprócz tego możesz zrobić if($arg) zamiast if($arg!=nulll), a nawet użyć if/else jednolinijkowego


$url .= $arg ? "$arg=$val/" : "$val/";


Tę listę ifów też bym zmienił, jako np. listę z możliwymi parametrami i osobną funkcją do pobiewrania, np.

$paramsCanBeSaved = [['name' => 'id', 'inUrl' => true], ['name' => 'foo', 'inUrl' => false]];

foreach($paramsCanBeSaved as $param) {

getSavedParam($param); //funkcja wywołuje to co w if, lub po prostu wklejasz tu to co masz w if

}


Wtedy masz do edycji tylko listę zamiast dodawania kolejnego warunku, potem możesz dodać tę listę do bazy danych i stamtąd dynamicznie dodawać sobie kolejne parametry do sprawdzenia bez konieczności edycji kodu.


Tak nawiasem mówiąc to dodawanie tego w ścieżce jest trochę niekonwencjonalne, ja użyłbym query buildera, wtedy masz jedną funkcję: https://www.php.net/manual/en/function.http-build-query.php

I link wygląda tak: www.foobar.com?name=asd&sort=desc

Bezbronny

Widzę, że to będzie coś grubszego. Ja jestem skromnym Technikiem Informatykiem. Serwis zrobię, ale kodu php nie napiszę. Ten, który napisał ten kod, już dawno w bibliotece nie pracuje. Teraz Serior admin czy jak to się zwie w korpo, i "nie mam czasu na takie pierdoły"

Zaloguj się aby komentować

eloszka #programowanie jak robicie migracje #bazydanych ? każda technologia mile widziana #ankieta dla zasięgów xD #gownowpis też

ja dopisuję swój własny kod jako jedną z komend możliwych do wywołania w zbudowanej binarce, potem wywołuję przy starcie instancji #golang

Jak robisz migracje?

93 Głosów
psalek

@wombatDaiquiri Django spięte z CI/CD.

rm-rf

No zależy. Update u mnie dzielą się na 2: te co można cofnąć i te, których nie da rady cofnąć ze względu na zależności z aplikacją. Każda migracja leci w blue/green deployment razem z softem, gdzie pierw migruje się kopia bazy, później testy, później apka i testy i przelaczenie blue green apkii. Liquibase na migracjach db. Jak testy nie przechodzą to nie przełącza Blue green. Baza leci ze snapshot z aws pierw do testów a później leci migracja na produkcji.

green-greq

Piszę do DevOpsów ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

Tomki pijcie ze mną kawę. Wygrałem ekspres ciśnieniowy na targach IT. #chwalesie #programowanie #programista15k
62cd6d2d-0598-42c8-b05d-c623a44aece6
Ewidentnie_nie_on

Smacznej kawusi. Ja sobie gadam z AI i nawet nie muszę uruchomić kąkutera ani telefonu. Jeszcze się dąsa.

UmytaPacha

@rayros a Tosie też mogą?

Szpadownik

Eee, kolbowy... Sprzedaj to czym prędzej i kup coś normalnego ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

I tak się żyje jako programista open source

#programowanie
#opensource
eefd97e1-2b70-48a1-a7f6-4e79790d4cb6
628d5a07-8210-44af-bd3b-961d79dbcee3
vinclav

@qarmin O widzę kolega natknął się na bramę indyjską. No niestety.

Jak tak miałem, to dzwoniłem do supportu US.

Catharsis

Zawsze uważałem ffmpeg za nadprogram ale teraz to jeszcze większy szacuneczek.

Zaloguj się aby komentować

Następna