Article View: pl.comp.lang.delphi
Article #345121Re: Czy nowe wersje Delphi nadają się do tworzenia stabilnych mobilnych Aplikacji ?
From: arivald
Date: Sat, 27 Aug 2016 18:34
Date: Sat, 27 Aug 2016 18:34
87 lines
5069 bytes
5069 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ł:
>>>> 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.
Kwestia tego co rozumiesz poprzez "ma kontrolę". W Twoim przykładzie JS
zleca załadowania obrazka, czym dalej zajmuje się kod natywny, który
może używać wątków (i pewnie to robi), i jak kod natywny skończy to
informuje czy obrazek się załadował czy nie (event onload / onerror). I
sam JS na ten proces nie ma wpływu, on jedynie zleca, i czeka na event.
Nic więcej. A co przeglądarka naprawdę zrobi żeby załadować ten obrazek
jest już daleko poza zasięgiem JS.
A że JS jest jednowątkowy, to tak naprawdę nie ma gwarancji kiedy JS
obsłuży event wysłany przez przeglądarkę. Eventy, tak jak i timery JS są
uruchamiane dopiero jak silnik JS skończy robić to co robił. Coś jak
kolejka komunikatów w Windows. Tak samo się blokuje jak coś dłuższego
uruchomisz.
> 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ę".
> 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.
Co nie zmienia faktu że nie przez JavaScript, a przez kod natywny w
przeglądarce. JS dalej pozostaje jednowątkowy. Nie rozumiem
"wielowątkowości JS" bo nic takiego nie istnieje. Jeśli już to jest to
multitasking, w wersji cooperative.
> 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.
Oczywiście że proste, jest tylko jeden watek, jego zakończenie to śmierć
aplikacji ;-)
>
> I żeby nie było że dołuję Delphi. Nie. Programuję równocześnie w obu językach
> (i nie tylko tych). Każdy ma swoje miejsce i cechy.
>
> Paweł
>
--
Arivald
Technical Details
Message-ID:
<npsmeg$s1c$1@gioia.aioe.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!aioe.org!.POSTED!not-for-mailReferences:
<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!news.nask.pl!news.nask.org.pl!news.unit0.net!news.mixmin.net!aioe.org!.POSTED!not-for-mail From: arivald <arivald@nowhere.interia.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: Czy nowe wersje Delphi nadają się do tworzenia stabilnych mobilnych Aplikacji ? Date: Sat, 27 Aug 2016 20:34:05 +0200 Organization: Aioe.org NNTP Server Lines: 89 Message-ID: <npsmeg$s1c$1@gioia.aioe.org> 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> NNTP-Posting-Host: 0bU75bhJ8rIBB/efsa6WUg.user.gioia.aioe.org Mime-Version: 1.0 X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 X-Notice: Filtered by postfilter v. 0.8.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit