Programowanie - dyskusje pozostałe

Pytania, które baliście się zadać

Założony przez pajper 15 wpisów ostatni wpis 3 lata temu

#1 1 polubienie

Nie wiem, czy wątek się przyjmie, ale co tam, spróbujmy, a może nawet jak się ruszy, powstanie z tego jakiś blogowy wpis...

No właśnie, na Eltenie często trwają, siłą rzeczy, dość techniczne dyskusje. A przecież programistów tu bardzo niewielu. Zaś będąc mniej czy bardziej technicznym użytkownikiem, można natrafić na coś, czego się nie wie, a co ciekawi, intryguje... Ten wątek niech służy odpowiedzią na takie pytania dotyczące programowania. Jak coś się robi, po co, co oznacza jakieś określenie, skąd bierze się jakiś błąd, jak coś działa. Taka mała szybka poradnia, hmm, informatyczna?

Ja zacznę odpowiadając na pytanie, które usłyszałem kilka dni temu na konferencjach. Zadający je użytkownik zastanawiał się nad tym, że często używamy określenia "kompilować coś", "kompilator", "kompilacja". Co jednak to oznacza?

Sprawa jest dość prosta. W znaczeniu ścisłym kompilacja to zamiana kodu w jakimś języku programowania na kod maszynowy.
W znaczeniu potocznym i zwykle przez programistów używanym, jest to każdy proces, który powoduje zamianę kodu na program. Innymi słowy to jest ta akcja, która sprawia, że 12345 linijek kodu zamienia się w plik exe pozwalający słuchać muzyki. Uprościłem, wiem, ale nie chcę tu wstawiać długiej encyklopedycznej definicji opowiadając o semantyce i translacji kodu, a po prostu powiedzieć, o czym mowa.
Kompilator, jak pewnie już łatwo się domyślić, to program, a raczej zwykle szereg programów, które służą do kompilacji kodu.

No a teraz zostawiam ten wątek i zobaczymy, czy kiedykolwiek jakiekolwiek pytania tu jeszcze wpadną. :D
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#2

Zaczynam "zabawę" z pisaniem strony internetowej.
I mam takie małe pytanko, jakiego programu najlepiej użyć do pisania kodu?
Wystarczy zwykły notatnik, czy może lepiej w jakimś innym?
"Czy ty jesteś bardzo odważny? - Średnio. - A co zrobiłeś najodważniejszego w swoim życiu? - (...) Wstałem dziś rano."
Cormac McCarthy, "Droga"

#3 2 polubienia

Notatnik może nie jest najlepszą opcją, bo potrafi robić kilka dziwnych rzeczy, ale w zupełności wystarczy. Ja czasem naprawdę trudne rzeczy w notatniku z pośpiechu pisałem.
Natomiast ja osobiście używam notepad++ oraz VS Code, zamiennie.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#4 2 polubienia

Na początek polecam Notepad Plus Plus. W VS Code mogą być rzeczy. których na tym etapie nauki będzie ci ciężko zrozumieć albo które będą ci przeszkadzać bardziej niż pomagać.
- "Intelligence and wisdom is like jam. The less you have, the harder you're trying to spread it arround." - French proverb

#5

Wytłumaczyłby ktoś, jak chłop krowie, tak wiecie, z pociągami, tramwajami i innymi studentami w grupie i podgrupie co realnie daje mi zrobienie async await i w ogóle koncepcja promises jako takich?
Ja wiem co to robi, natomiast dowiedziałem się brutalną metodą prób i błędów, a nie w przyjemny, usystematyzowany sposób.
Sygnaturka.: "That seems to point up a significant difference between Europeans and Americans. A European says: 'I can't understand this, what's wrong with me?' An American says: 'I can't understand this, what's wrong with him?'" TERRY PRATCHETT

#6 2 polubienia

Tego chyba nie da się jednoznacznie wyjaśnić i trzeba to poczuć. Ale w telegraficznym skrócie chodzi o to, by interpreter za programistę rozdzielił odpowiednio zadania między wątkami, zadbał o synchronizację i tak dalej.
Dobrze napisana pula wątków zawsze będzie wydajniejsza od systemu promisingu, ale rzadko kiedy ma się czas i cierpliwość, o umiejętnościach nie wspominając, by dobrze rozplanować wątki.
To jeszcze cenniejsze w interfejsie użytkownika i, nie ukrywajmy, widoczne chociażby w Eltenie. Dzięki asynchronicznym zapytaniom, aplikacja się nie zamraża, jak robi to Elten, po wywołaniu jakiegoś zapytania, wiele może trwać w tle i tak dalej.
W sumie wiele zależy od zastosowania.
#StandWithUkraine

Shoot for the Moon. Even if you miss, you'll land among the stars.

#7

Ale w tym przypadku przcież trzeba się zdecydować na jedną, konkretną metodę, z tego, co próbowałem ostatnio, a nie wszystkie biblioteki, których ktoś tam gdzieś tam używa zezwalają na operacje asynchroniczne... Wtedy pozostaje tylko multiprocessing czy jak? No ale znów dochodzi komunikacja między procesami, można to sobie rozwiązać strumieniami, albo innymi zależnymi od systemów mechanizmami, ale to już chyba szukania dziury w całym więcej, niż to warte, szczególnie w aplikacji, któe zbyt wiele nie musi robić, a i tak przy wczytywaniu różnych rzeczy wszystko zwisa.

#8

Programowanie wielowątkowe (multithreading) ma sens tylko w na prawdę wymagających aplikacjach, nie wiem, edytory audio, środowiska programistyczne... Ale jak sobie pliczki pobierasz z sieci to async/await daje rade.
- "Intelligence and wisdom is like jam. The less you have, the harder you're trying to spread it arround." - French proverb

#9

ale wtedy wszystko trzeba na yielt i async coś tam. NIe da isę zrobić połowę rzeczy standardowo a połowę rzeczy na asyncach.

#10 1 polubienie

W multithreadingu największym wyzwaniem jest tak zwany "Data racing" czyli jak dwa lub więcej wątkó chcą pisać do tego samego oszaru pamięci. W tych dziwnych językach pokroju Rusta tam jakoś to jest zabezpieczone, a w C ++ też była jakaś dyrektywa że blokowało się pamięć dla jednego wątku.
- "Intelligence and wisdom is like jam. The less you have, the harder you're trying to spread it arround." - French proverb

#11

ALe jw aqłaśnie zadałęm pytanie, czy muszę cała aplikację teraz asynchronicznie robić?

#12 1 polubienie

Zależy, co tak na prawdę piszesz. Generalnie jeżeli to nie jest program konsolowy to powinieneś. Pamiętaj, że jak robisz coś synchronicznego to najprawdopodobniej zajmujesz wątek interfejsu, co kończy się pięknym komunikatem "Mój zajebisty program - brak odpowiedzi"
- "Intelligence and wisdom is like jam. The less you have, the harder you're trying to spread it arround." - French proverb

#13

Tylko że nie wszystki użyte przeze mnie bibliioteki pozwalają na operacje asynchroniczne.

#14

Które nie pozwalają?
- "Intelligence and wisdom is like jam. The less you have, the harder you're trying to spread it arround." - French proverb

#15 Edytowano

Matko, teraz nie wiem, na pewno tworzone przez ludzi, którzy się na tym nie znają. WX też tzeba smuszać co chwilę, żeby działało asynchronicznie.