🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #345120

Re: Czy nowe wersje Delphi nadają się do tworzenia stabilnych mobilnych Aplikacji ?

#345120
From: darekm
Date: Sat, 27 Aug 2016 17:54
88 lines
5934 bytes
W dniu 2016-08-27 o 15:54, zpksoft pisze:
> W dniu sobota, 27 sierpnia 2016 09:06:04 UTC+2 użytkownik arivald napisał:
>> W dniu 2016-08-27 o 08:46, zpksoft pisze:
>>> W dniu piątek, 26 sierpnia 2016 18:24:55 UTC+2 użytkownik arivald napisał:
>>>> W dniu 2016-08-26 o 17:36, Mikołaj 'Virion' Milewski pisze:
>>>>> W dniu czwartek, 25 sierpnia 2016 22:54:14 UTC+2 użytkownik kamel...@gmail.com napisał:
>>>>>
>>>>>> JavaScript odpada u mnie z definicji :)
>>>>>> 1. Jest za wolna
>>>>>
>>>>> Wolna czy za wolna? ;-) Firefox, Thunderbird i szereg aplikacji systemowych Windowsa
>>>>> 8/10 jest napisane w JS.
>>>>
>>>> Eeee... nie całkiem. Firefox, Thunderbird i inne aplikacje na Gecko są
>>>> napisane głównie w C++, a JavaScript jet rodzajem kleju pomiędzy
>>>> komponentami. Tak, sporo logiki biznesowej jest w JS. Szacuję że
>>>> aplikacja spędza nie więcej niż 5% czasu w JS, resztę w natywnych binarkach.
>>>>
>>>> I JS jest jednym z powodów dlaczego Firefox czy Thunderbird jak się
>>>> zawiesi to wszystkie okna na raz ... brak wielowątkowości w JS.
>>>>
>>>> A najbardziej wkurza jak skrypt na stronie WWW zawiesza całą aplikację...
>>>>
>>>
>>> Widać że nie używasz JS. Wielowątkowość jest w tym języku i to bardzo ładnie opakowana
>>> bez kombinacji jak np w Delphi. Wielowątkowość tqorzy się sama. Trzeba mieć tego
>>> świadomość. Na przykład (pseudokod):
>>>
>>> pobieram obrazek
>>> coś z nim robię
>>>
>>> ^ powyższy kod jest błędny bo pobieranie obrazka nie zakończy się a już wywoływana
>>>  będzie instrukcja "coś z nim zrobię".
>>>
>>> Powinno być w "pobieram obrazek":
>>>
>>> obrazek.onLoad=function{
>>>   coś z nim robię  //zostanie wywołane dopiero po pobraniu obrazka
>>> }
>>
>> Ale tu mówisz nie o wielowątkowym kodzie JS. Mówisz o asynchronicznym
>> API używanym przez JS. A to ogromna różnica.
>> Sam JS nie ma żadnego wpływu na to jak i kiedy i czy w ogóle obrazek się
>> załaduje. To jest domena nawet nie silnika JS, a przeglądarki.
>>
>> Podobnie ze wszytkimi asynchronicznymi API, jak np. XmlHttpRequest.
>>
>>> Kolejna kwestia to szybkość działania JS. Od zawsze mówiło się o tym że języki
>>>  interpretowane są wolniejsze od kompilowanych.
>>> Teraz przeglądarka po wczytaniu strony dokonuje kompilacji JS i kod działa jak należy.
>>>
>>> Co do Javy- nie używam. Bo nie działa natywnie w przeglądarce :P
>>>
>>> Paweł
>>>
>>
>> --
>> Arivald
>
> Albo ja Ciebie nie rozumiem albo Ty mnie. Piszesz że JS nie ma kontroli nad tym czy obrazek się załaduje. Właśnie podałem przykład na to że ma. I jest to typowe w programowaniu w JS. Jeżeli się tego nie uwzględnia to aplikacja działa tak jak napisał to bodajże wloochacz "roszypuje się i blokuje przeglądarkę".

Formalnie rzecz biorąc to nie jest wielowątkowość.  To że przeglądarka 
ma kilka warstw i np rendering dzieje się równolegle do wykonywania 
skryptu JS to znaczy że przeglądarka jest wielowątkowa a nie samo JS.
Generalnie program w JS to w zasadzie zbiór skryptów (upraszczając mocno 
sprawę), które są wywoływane w przypadku wystąpienia określonych 
zdarzeń. Pomijając webworkery w danym momencie wykonywany jest tylko 
jeden skrypt.

> Ale tak się dzieje tylko wtedy gdy nie rozumie się wielowątkowości JS. Możesz to nazwać "asynchronicznym API" ale na jedno wychodzi: kilka czynności jest wykonywanych w tym samym czasie niezależnie.

Przeglądarka je wykonuje, i wywołuje w określonych momentach wskazane 
funkcje JS, ale zawsze jednocześnie tylko jedną.
Faktem jest że problemem może być nieokreslona kolejność nadejścia 
zdarzeń (podobnie jak w wielowątkowości) i np. będzie wywołany
wielokrotny rendering strony lub inne powtórzenia działań.
Tak czy inaczej głowną przyczyną złego działania jest zazwyczaj zła 
struktura programu a nie słaba wydajność JS.


> To w Delphi musimy stosować się do odpowiednich zabiegów żeby stwierdzić czy dany wątek zakończył się. W JS jest to proste i naturalne.
Pytanie do czego potrzebujesz wątki. Jak do obliczeń równoległych to w 
JS musisz się trochę bardziej nastarać niż w Delphi. Komunikacja z 
użytkownikiem w Windows jest dokonywana w oparciu o kolejkę komunikatów
co też jest asynchronicznym API.

--
Darek
Technical Details
Message-ID: <57c1d3cc$0$15191$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <f598bc71-3997-4916-b6e2-4668a1845a7b@googlegroups.com> <nphfk8$1a1n$1@gioia.aioe.org> <57bca64b$0$15209$65785112@news.neostrada.pl> <463bdc36-6971-4080-a437-84944c62249c@googlegroups.com> <e27cf067-438a-408f-97c4-e5df166f9dc6@googlegroups.com> <577275ed-0aa6-4638-b786-14ab65f86538@googlegroups.com> <80d4b314-94b5-4571-a718-a54fd3466dfb@googlegroups.com> <nppqgi$j9q$1@gioia.aioe.org> <8006a142-764b-4de4-806f-92b487d40a75@googlegroups.com> <npre4r$som$1@gioia.aioe.org> <80ae63a7-3ca9-4971-ae34-ed3d17d70835@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed2.plix.pl!goblin3!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Czy nowe wersje Delphi nadają się do
 tworzenia stabilnych mobilnych Aplikacji ?
Newsgroups: pl.comp.lang.delphi
References: <f598bc71-3997-4916-b6e2-4668a1845a7b@googlegroups.com> <nphfk8$1a1n$1@gioia.aioe.org> <57bca64b$0$15209$65785112@news.neostrada.pl> <463bdc36-6971-4080-a437-84944c62249c@googlegroups.com> <e27cf067-438a-408f-97c4-e5df166f9dc6@googlegroups.com> <577275ed-0aa6-4638-b786-14ab65f86538@googlegroups.com> <80d4b314-94b5-4571-a718-a54fd3466dfb@googlegroups.com> <nppqgi$j9q$1@gioia.aioe.org> <8006a142-764b-4de4-806f-92b487d40a75@googlegroups.com> <npre4r$som$1@gioia.aioe.org> <80ae63a7-3ca9-4971-ae34-ed3d17d70835@googlegroups.com>
From: darekm <darekm@emadar.com>
Date: Sat, 27 Aug 2016 19:54:27 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1
MIME-Version: 1.0
In-Reply-To: <80ae63a7-3ca9-4971-ae34-ed3d17d70835@googlegroups.com>
Lines: 89
Message-ID: <57c1d3cc$0$15191$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.187.5.190
X-Trace: 1472320460 unt-rea-a-02.news.neostrada.pl 15191 79.187.5.190:55304
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit