🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #216705

Re: Czemu Python jest jaki jest?

#216705
From: godek.maciek
Date: Fri, 03 Jan 2020 23:55
156 lines
8973 bytes
W dniu sobota, 4 stycznia 2020 00:33:33 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?

> > Nie. To też nie.
> > Kod źródłowy UNIXa możesz studiować z dala od jakiegokolwiek komputera. I on nie jest skryptem, tylko złożonym systemem.
> > 
> Kod napisany w czymkolwiek (moze być nawet Notatnik) bez przepuszczenia 
> go przez kompilator lub Interpreter jest co najwyżej kodem złożonego 
> systemu niczym więcej (Kupa znaków)

Dokładnie.
A po przepuszczeniu kodu przez kompilator zamienia się w kupę znaków będącą wynikiem pracy kompilatora.

Dopiero uruchomienie go spowoduje wygenerowanie procesu obliczeniowego.

> > Cron nie jest skryptem. 
> Cron jest aplikacją (Interpretatorem) w postaci demona i to właśnie na 
> podstawie skryptu który mu się poda on działa

Znów, interpreterem :)

> > 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.

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.

Przykładowo, pierwsze implementacje JavaScriptu to były interpretery.
Teraz przeglądarki mają swoje JIT-kompilatory, które generują kod maszynowy.
Mnie z punktu widzenia użytkownika języka (albo użytkownika programu) w ogóle to nie obchodzi.

> >> Tak pokrótce o tym czy dany język jest skryptowy czy nie decyduję kilka
> >> czynników: (skrócę do trzech bardzo ogólnych)
> >> - sposób wykonania kodu
> > 
> > Skąd ten pomysł?
> 
> Interpreter języków skryptowych wykona kod który mu dostarczysz i to w 
> chwili wykonania programu. Ponadto kod języków skryptowych pozostaje 
> pisany tekstem bez zamiany na kod maszynowy

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)

> >> - sposób dostarczenia kodu
> > 
> > Czyli jak przekazuję kod źrodłowy programu w C, to język C staje się skryptowy?
> > 
> Jaki przekaz masz konkretnie na myśli? Wynikiem wykonania kodu w C jest 
> plik binarny tyle i tylko tyle.
> 
> Ten plik binarny żyje bez kodu. Jego kod jest zamieniony w postać 
> binarną i jest wykonywany zupełnie w inny sposób niż kod tzw języków 
> skryptowych odbywa się to w zupełnie innych warunkach

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?

> >> - wyizolowanego środowiska uruchomieniowego uniezależnionego od
> >> systemu/sprzętu
> > 
> > Czyli C# jest skryptowy?
> > 
> C# jest kompilowany do kodu pośredniego. Java podobnie a to sprawia że 
> wykonuje się w innych warunkach jak kod języka skryptowego i kompilatora 
> pliku binarnego
> 
> Są pewne podobieństwa np wyizolowane środowiska uruchomieniowe ale 
> zasady działania są odmienne
> 
> >>> Ponieważ zakres zastosowań Pythona pokrywa się z zakresem zastosowan Perla, a niekiedy i języków powłoki, czasem i o nim mówi się, że jest "skryptowy".
> >>
> >> Błędne założenie ale już tu tyle napisałem że chyba da się zauważyć -
> >> wspólną cechy dla języków skryptowych (interpretowanych) - zresztą to
> >> jest do znalezienia w sieci. Wiki nie jest wyrocznią tutaj ale ma to
> >> dość obrazowo przedstawione.
> >>
> >> https://pl.wikipedia.org/wiki/J%C4%99zyk_interpretowany
> >> https://pl.wikipedia.org/wiki/J%C4%99zyk_skryptowy
> > 
> > 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.
> > 
> Dokładnie tak ja to twierdze od samego początku

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]

> > Zresztą Wikipedia potwierdza to, co napisałem:
> > 
> > "Teoretycznie każdy język może być kompilowany i interpretowany, dlatego rozróżnienie to polega na najczęściej stosowanych rozwiązaniach, a nie zależy od cech samego języka"
> > 
> > Zupełnie tak jak pisałem wcześniej! "Nie jest cechą języka!"
> > 
> A to nie złapałeś że autorowi całego wątku nie chodzi i samą składnie 
> języka?
> 
> Jemu chodzi przecież o to dlaczego Python nadaje się do "pewnych" rzeczy 
> a do innych nie

Tematem naszej rozmowy jest to, co to znaczy "język skryptowy", a nie to, o co chodzi autorowi całego wątku. W każdym razie ja się skupiłem wyłącznie na tej kwestii.

> > a w drugim artykule:
> > 
> > "Języki skryptowe są to najczęściej języki interpretowane"
> > 
> > Zwracam uwagę, że "najczęściej" nie oznacza "zawsze" ani "z konieczności".
> A wiesz co to znaczy język jest interpretowany?
> 
> Widzę po poniższej odpowiedzi ze skrypt według ciebie jest "sposobem 
> używania" niestety ale to nie jest tak
> > 
> >>> Swego rodzaju "opozycją" do języków skryptowych są języki systemowe - czyli takie, które służą do pisania dużych, skomplikowanych systemów (czy raczej: o których się myśli, że do tego służą).
> >>>
> >> Dobrze że dodałeś nawias bo aż się chciało napisać co oznacza - tzw.
> >> "języki systemowe" ale już mówisz o zastosowaniu języka a to zupełnie
> >> inna para butów
> >>> Ale to nie jest twardy podział. Języki takie jak PHP czy JavaScript można w tym duchu nazwać "webowymi", bo się ich używa do opracowywania stron (choć nic nie stoi na przeszkodzie, by pisać w nich skrypty).
> >>>
> >> Mówisz o sposobie zastosowania nie zmienia to faktu że są to języki
> >> skryptowe
> > 
> > Nie. "Skryptowość" nie jest cechą języka, tylko sposobu używania go.
> Nie sposobem używania a sposobem wykonania się kodu tzw skryptu przez 
> zaimplementowany interpreter który go wykonuje.
> 
> Nigdzie nie napisałem że jest to cecha języka jest to cecha 
> interpretatora danego języka.

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
?

Jeżeli tak, to jakie cechy musi spełniać ten interpreter, żeby interpretowany przez niego język był skryptowy?
Technical Details
Message-ID: <b423f7d8-df8c-40cc-8381-71cf709b1285@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!g89no10107073qtd.0!news-out.google.com!w29ni648qtc.0!nntp.google.com!g89no10107070qtd.0!postnews.google.com!google-groups.googlegroups.com!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>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:ba04:: with SMTP id k4mr73084063qkf.74.1578095739220;        Fri, 03 Jan 2020 15:55:39 -0800 (PST)
X-Received: by 2002:a05:6214:11a8:: with SMTP id u8mr68597510qvv.16.1578095738980; Fri, 03 Jan 2020 15:55:38 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!g89no10107073qtd.0!news-out.google.com!w29ni648qtc.0!nntp.google.com!g89no10107070qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Fri, 3 Jan 2020 15:55:38 -0800 (PST)
In-Reply-To: <5e0fcf1c$0$553$65785112@news.neostrada.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=83.25.229.148; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 83.25.229.148
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>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b423f7d8-df8c-40cc-8381-71cf709b1285@googlegroups.com>
Subject: Re: Czemu Python jest jaki jest?
From: godek.maciek@gmail.com
Injection-Date: Fri, 03 Jan 2020 23:55:39 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit