🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #216708

Re: Czemu Python jest jaki jest?

#216708
From: J-23
Date: Sat, 04 Jan 2020 21:03
162 lines
9535 bytes
W dniu 04.01.2020 o 09:08, godek.maciek@gmail.com pisze:
> W dniu sobota, 4 stycznia 2020 02:35:03 UTC+1 użytkownik J-23 napisał:
>>>>>> Nie będę się tu rozpisywał bo to raczej większość piszących powinna
>>>>>> wiedzieć jak działają takie środowiska w językach typu .NET, Java i o
>>>>>> takie środowiska mi chodzi. Teraz czym się różni interpreter Pythona? I
>>>>>> tutaj zaczynają się schody :) jest to do wytłumaczenia ale jest to dość
>>>>>> zawiłe.
>>>>>
>>>>> I nie ma najmniejszego znaczenia.
>>>>>
>>>>
>>>> Ma bo zarówno .Net i Java są kompilowane do kodu pośredniego (i to
>>>> właśnie jest główna różnica od języków tzw skryptowych)
>>>
>>> No dobrze. I Python też jest kompilowany do kodu pośredniego.
>>> Zatem według Twojej definicji nie jest skryptowy?
>> Gdzie ty znalazłeś taką informację że jest kompilowany do kodu
>> pośredniego? Mam na myśli czystego Pythona. Chętnie poznam jakiś przykład
> 
> Na przykład tutaj:
> https://docs.python.org/3/glossary.html#term-bytecode
> 
> "Python source code is compiled into bytecode, the internal representation of a Python program in the CPython interpreter"

A przeczytałeś całość, zakładam że nie bo byś wiedział że kod pośredni 
jest tworzony tylko niektórych funkcji. Ale jeśli nawet przyjąć że 
całość - podobnie jak to się dzieje w przypadku np Javy to wspomniałem 
już wcześniej w postach cos takiego: "Podział na języki skryptowe i 
kompilowane jest raczej prosty. Bardziej skomplikowane jest rozróżnienie 
języka skryptowego i języka który działa na maszynie wirtualnej - tj 
Java .NET które są świetne ale potrzeba do nich środowiska 
uruchomieniowego."

> 
>>>>> Nie. Mówię właśnie o używaniu języka.
>>>> Nie bierzesz różnic w działaniu poszczególnych języków a to właśnie te
>>>> różnice sprawiają że jedne nazywamy skryptowymi a te drugie kompilowanymi
>>>
>>> Piszesz tak, jakby skryptowość była czymś przeciwnym do "bycia kompilowanym".
>>> A tymczasem nawet artykuł na Wikipedii, który podesłałeś, tak nie twierdzi.
>>>
>> Bo działą to odmiennie nawet sam przyznałeś cytuje "Proszę. Już sam
>> fakt, że istnieją dwa odrębne hasła dla "języków skryptowych" i "języków
>> kompilowanych" świadczy poniekąd o tym, że to nie są synonimy."
> 
> Błędnie napisałem. Miałem na myśli "języków skryptowych" i "języków interpretowanych" (bo to było w kontekście tych haseł do Wikipedii)
> 
>>> W pewnym sensie można mówić o opozycji "kompilowania vs. interpretacji".
>>> Ale to jakiś szczegół techniczny, który nie ma żadnego związku z samym językiem, a jedynie z narzędziami wykonawczymi.
>> No tych szczegółów jest kilka (Wymienie dwa ręsztę doczytaj)
>> - Wyizolowane środowiska pracy
> 
> Jak uruchamiasz program w C w maszynie wirtualnej, to też izolujesz środowisko pracy.

Jeżeli masz na myśli takie coś jak VirtualBox lub soft innych 
producentów to owszem izolujesz od sprzętu fizycznego ale nie to zależy 
od implementacji tej maszyny

Są maszyny wirtualne które działają na takim dostępie jak zwykły PC

Ale to raczej mały ma związek z maszynami Wirtualnymi zaszytymi w 
językach programowania

> 
>> - Brak kodu binarnego wynikającego bezpośrednio z twojego skryptu
> 
> No to Python jest tutaj kontrprzykładem.
Nie jest a dlaczego nie jest masz wyjaśnione to wyżej
> 
>>> Przykładowo, pierwsze implementacje JavaScriptu to były interpretery.
>>> Teraz przeglądarki mają swoje JIT-kompilatory, które generują kod maszynowy.
>> Widziałeś kiedyś taki kod maszynowy? Zakładając że twój skrypt będzie
>> wynosił 1% wielkości wynikowego pliku binarnego to 99% będzie się
>> powtarzać bo jest tam mówiąc w uproszczeniu środowisko uruchomieniowe.
>> Niech jako przykład posłuży .nodejs od JavaScriptu z Pythonem jest
>> prawie że identycznie.
>>> Mnie z punktu widzenia użytkownika języka (albo użytkownika programu) w ogóle to nie obchodzi.
>> Z punktu widzenia użytkownika programu zgoda ale z punktu użytkownika
>> języka (programisty) obchodzi bardzo bo musi być zgodność co do użytych
>> bibliotek i wersji pythona
> 
> Zgodność musi być, ale jeżeli narzędzia to załatwiają, ja się nie mam czym martwić.
> 
Tak i nie musisz się martwić podczas pisania czy softu czy ci to co 
chcesz obsłuży? Bądź poważny :)
>>> A co jeżeli przed wykonaniem programu najpierw go skompiluje i zapisze w jakimś swoim cache'u i wykona wersę skompilowaną?
>>> (Tak np. robi GUILE)
>>>
>> Nie używałem tego nie wiem. Ale jak to działa jak JTL to to nic nie
>> zmieni, bo nadal będzie działać w odizolowanym środowisku. Rozumiem że
>> sugerujesz że to działa inaczej?
> 
> Co to jest JTL?
Sorki miałem na myśli JIT-kompilatory tj np. NodeJS
> 
>>> No to weźmy sobie takie coś:
>>> https://gitlab.com/zsaleeba/picoc
>>> To jest interpreter języka C.
>>> I teraz, czy istnienie tego interpretera sprawia, że C staje się językiem skryptowym?
>>>
>> Nie używałem ale już z opisu widać z tego co się domyśliłem, bo jak to
>> działa to bym musiał sprawdzić że działa to bezpośrednio na sprzęcie
>> więc domyślam się że nie tworzy żadnego izolowanego środowiska - w tej
>> chwili gdybam bo tak jak mowie tego nie używałem.
> 
> No to załóżmy, że tworzy wyizolowane środowisko. To co wtedy?
>
No to i tak dla mnie pozostanie to próbą stworzenia najprawdopodobniej 
języka skryptowego bazującego na C

>> Swoją drogą obejmuje to któryś pełny standard C?
> 
> Załóżmy że tak.
> (Podejrzewam, że tak, bo C nie jest jakimś kosmicznym monstrum)
> 
>>> Tzn. skryptowość jest "cechą interpretera języka"?
>>> Czyli czy wg Ciebie jest tak:
>>> 1. języki można podzielić na kompilowane i interpretowane
>>> 2. niektóre spośród języków interpretowanych są skryptowe, i to w jakiś sposób zależy od interpretera języka
>>> ?
>> A nie zauważasz takiej prostej zasady że języki nazywane "skryptowymi"
>> nie mają np kodu maszynowego i kod zawarty w skrypcie jest przetwarzany
>> na bieżąco po uruchomieniu prosto z "pliku" gdzie zawarty jest skrypt?
> 
> Nie zauważam.
> Zauważam, że języki skryptowe służą do pisania skryptów.

To ja zadam pytanie teraz co według ciebie jest skryptem/a co zwykłym 
tekstem napisanym.
> A to, czy te skrypty są przed uruchomieniem kompilowane przez środowisko, czy interpretowane, jest szczegółem, który jest dla mnie niewidoczny, i który bynajmniej mnie nie obchodzi.

Podkreślam i powtarzam ciężko jest odróżnić sposób wykonywania kodu 
pośredniego tak jak to ma np Java, .NET od języka interpretowanego 
zwanych zazwyczaj skryptowymi idąc nazewnictwem z WIKIPEDII

Różnica między nami jest taka że ty uważasz że wystarczy użyć narzędzia 
typu JIT kompilator i to będzie tak samo działało jak tradycyjne języki 
kompilowane - bo od nich zaczęliśmy dyskusje.

Potem jak już zrozumiałeś mój punkt widzenia że rozdzielam pojęcia 
języki skryptowe a kompilowane proszę o to cytat "Mnie się zdaje, że 
utożsamiasz ze sobą te dwie rzeczy.
Tzn. rozróżniasz na "języki skryptowe" i "języki kompilowane"
[podczas gdy nic nie stoi na przeszkodzie, żeby języki skryptowe były 
kompilowane]

Odpisałem ci na to:
"Masz racje nie stoi nic na przeszkodzie. Fakt jednak jest taki że 
obecne rozwiązania takie jak JTL czy NodeJS czy inne podobne rozwiązania 
nie kompilują tego skryptu a jedynie dają możliwość jego uruchomienia po 
za natywnym środowiskiem a to jest różnica"

Gdze pisząc JTL miałem na myśli JIT na co słusznie zwróciłeś uwagę.

Więc jeśli znów zapytasz mnie czy według mnie Java czy .NET można uznać 
za skryptowe odpowiem po raz kolejny - nie - a wynika to z różnic ich 
implementacji.

Pozdrawiam
J-23

> 
Technical Details
Message-ID: <5e10fdc1$0$17354$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!border2.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <913ee55b-6577-46ef-8ef2-92c748a43610@googlegroups.com> <qukale$3o1$1@news.icm.edu.pl> <5e0e44da$0$525$65785112@news.neostrada.pl> <0d4a791d-c777-4c44-9541-88b51c7b8467@googlegroups.com> <5e0f9a57$0$17364$65785112@news.neostrada.pl> <66517b9b-d8a5-41fb-b9d0-b289e9dfba64@googlegroups.com> <5e0fcf1c$0$553$65785112@news.neostrada.pl> <b423f7d8-df8c-40cc-8381-71cf709b1285@googlegroups.com> <5e0feb24$0$501$65785112@news.neostrada.pl> <b51256da-e6a2-417f-9e8e-8c8525d39ddf@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder7.news.weretis.net!border2.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Czemu Python jest jaki jest?
Newsgroups: pl.comp.programming
References: <913ee55b-6577-46ef-8ef2-92c748a43610@googlegroups.com> <qukale$3o1$1@news.icm.edu.pl> <5e0e44da$0$525$65785112@news.neostrada.pl> <0d4a791d-c777-4c44-9541-88b51c7b8467@googlegroups.com> <5e0f9a57$0$17364$65785112@news.neostrada.pl> <66517b9b-d8a5-41fb-b9d0-b289e9dfba64@googlegroups.com> <5e0fcf1c$0$553$65785112@news.neostrada.pl> <b423f7d8-df8c-40cc-8381-71cf709b1285@googlegroups.com> <5e0feb24$0$501$65785112@news.neostrada.pl> <b51256da-e6a2-417f-9e8e-8c8525d39ddf@googlegroups.com>
From: J-23 <Baczeklu@poczta.fm>
Date: Sat, 4 Jan 2020 22:03:59 +0100
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1
MIME-Version: 1.0
In-Reply-To: <b51256da-e6a2-417f-9e8e-8c8525d39ddf@googlegroups.com>
Lines: 163
Message-ID: <5e10fdc1$0$17354$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 188.146.100.11
X-Trace: 1578171841 unt-rea-a-01.news.neostrada.pl 17354 188.146.100.11:32349
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit