Spis treści
Dyskusja:Interpreter (program komputerowy)
uzasadnienie
[edytuj kod]Interpreter często jest napisany w języku kompilowanym, np. C dla języka Lua bądź Python, zatem prędkość wykonania programu w języku Python lub Lua jest równoważna temu napisanemu w C. Różnica wynika z poziomu abstrakcji danego języka - widać to np. w Python gdzie nie ma tablic (poza bytearray, ale to inna sprawa), natomiast te są wprowadzone np. przez bibliotekę numpy będącą nakładką na typy z języka C wraz z operacjami na nich, i mają taką samą szybkość wykonania jak skompilowane w C(bo są normalnie skompilowanym kodem C). Jest narzut analizy składni (która znowu często jest w C lub C++) i przetwarzania kodu języka na kod interpretera, ale kod kompilowany również jest poddawany analizie składni i przekształcany na język właściwy dla kompilatora.
Nie wiem dokładnie jak z Javą i C#, ale raczej kody po skompilowaniu nie wymagają pełnej analizy składni i przetwarzania przed podaniem do interpretera.
Są jeszcze interpretery - powłoki, np. Bash, który jest interpreterem napisanym w C, gdzie wyraźnie widać, że nie ma sensu porównywać programów kompilowanych i interpretowanych pod względem szybkości ( ./program_w_C_ktory_wykona_sie_w_2_dni ).
Podsumowując, pisanie, że programy interpretowane "są wolniejsze" albo "są szybsze" niż kompilowane, albo, że interpretacja zajmuje więcej czasu niż uruchomienie jest co najmniej pozbawione sensu. O implementacji języka oraz jego poziomie abstrakcji lepiej wspominać na stronie języka, a ogólnie o językach skryptowych na stronie języków skryptowych. Ponadto nie należy mieszać programu będącego interpreterem ze wzorcem projektowym interpreter.
Są jeszcze maszyny Lispowe, które sprzętowo realizują interpretację czy cuś, ale to już nie moja bajka. Gawronft (dyskusja) 18:38, 19 kwi 2020 (CEST)
Nie zgadzam się w Twoimi tezami, są niezasadne i nie odnoszą się do tego co zapisano w artykule. Dlatego wycofałem Twoje usunięcie niemal całego artykułu. StoK (dyskusja) 20:42, 19 kwi 2020 (CEST)
Tym razem bez usuwania.
Prawdopodobnie tekst został wprost przetłumaczony z fragmentu en wikipedii, na której zgłoszono zapotrzebowanie na źródła tych informacji ([citation needed]). Źródłem pierwotnym prawdopodobnie jest to podane przezemnie z 1995 roku, które zostało przeniesione na en wiki, a przetłumaczone na pl wiki fragmenty znajdują się w rozdziale "Efficiency".
W związku z umieszczeniem przetłumaczonego tekstu, prawdopodobnie należałoby dodać przetłumaczoną informację analogiczną do tej na angielskiej wikipedii, na samym dole: "This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later."
Źródło pierwotne kiedyś było związane z uniwersytetem Imperial College London (ten udostępniał serwer), ale niekoniecznie było poddawane recenzji naukowej. W 2015 roku uniwersytet odciął się od projektu. Ponadto od 1995 roku ten wpis w tym słowniku nie był aktualizowany, a cytowane fragmenty nie odnoszą się do wyników badań(a jeśli tak, to jakich), stąd moje poważne wątpliwości wyrażone wcześniej. Dlatego dodałem szablon
{{Dopracować|nierzetelne}}
aby zwrócić uwagę, że coś może być nie tak z tymi informacjami, i należałoby je skonfrontować z innymi publikacjami naukowymi.
Gawronft (dyskusja) 17:06, 20 kwi 2020 (CEST)
Tak się nie robi!
- Zamieszczasz przypis i ramkę nierzetelne źródła. Jeżeli uznam rzetelność wstawienia szablonu, to muszę usunąć przypis.
- Zmieniłeś zdanie wstępne, w tej wersji jego treść jest sprzeczna z tym co w dalszej części programu. co jest kolejnym argumentem za wycofaniem twojej edycji.
Określenie interpretacja i wynikający z tego termin realizatora interpreter ma kilka znaczeń. W tym artykule chodzi o interpretacje jako sposób przetwarzania programu w postaci zrozumiałej dla człowieka i wykonania go przez komputer i będący przeciwieństwem kompilatora.
Wybacz ale wycofam twoje zmiany, wnoszą zamieszanie i nic nie usprawniają w artykule.
StoK (dyskusja) 21:26, 20 kwi 2020 (CEST)
Dodałem źródła opisujące funkcjonowanie implementacji języków uważanych za interpretowane, ze wskazaniem gdzie następuje interpretacja i co jest nazywane interpreterem jako program.
Interpreter często jest utożsamiany z programem do którego wpisuje się kod najczęściej w językach (bardzo) wysokiego poziomu i coś robi, jednak jest to błędne, gdyż bardzo często wykonanie tego typu programu inicjuje pracę parsera, kompilatora, i na samym końcu interpretera. Znaczenie "interpreter to wszystko" powinno trafić do Kategoria:Żargon_informatyczny. Kompilacja nie jest przeciwieństwem zasady funkcjonowania interpretera, tylko jest kompletnie czymś innym. "Interpreter" zajmujący się przetwarzaniem jakiegoś ludzkiego języka ma takie znaczenie w Interpreter_(wzorzec_projektowy).
Więcej w źródłach.
I proponowałbym rozbudować artykuł chociażby opisując funkcjonowanie poszczególnych interpreterów, ale jeśli teraz ~poprawiony zalążek nie zostanie zaakceptowany, to jednak odpuszczę ten temat. Gawronft (dyskusja) 12:37, 21 kwi 2020 (CEST)