Article View: pl.comp.lang.delphi
Article #345120Re: Czy nowe wersje Delphi nadają się do tworzenia stabilnych mobilnych Aplikacji ?
From: darekm
Date: Sat, 27 Aug 2016 17:54
Date: Sat, 27 Aug 2016 17:54
88 lines
5934 bytes
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-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!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