🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217835

Re: mój obfuskator - problem projektowy

#217835
From: heby
Date: Fri, 28 Oct 2022 12:57
198 lines
10860 bytes
On 28/10/2022 14:11, Maciek Godek wrote:
>>> Java pod wieloma innymi względami jest podobna do C++.
>> Dokładnie tak jak PHP jest podobny do C++.
> Nie, zupełnie inaczej.

Tak, podobieństwa są inne, ale istota podobieństwa taka sama. Zapis ma 
kilka cech wspólnych, w większości kompletnie nieistotnych.

>> Algol też się chyba złapie. Ma if-y.
> Algol jest pradziadkiem prawie wszystkich języków programowania,
> więc trudno żeby się nie załapał.

Czyli Algol podobny do C++, Javy i PHP? To jest teza, czy to już przegięcie?

> Napisałem o składni "for".
> W C piszesz
> for (i = 0; i < N; ++i)
> a w PHP
> for ($i = 0; $i < N; ++$i)
> Jedyna różnica pomiędzy powyższymi zapisami jest natury finansowej.

No a z for(auto x: my_fancy_container) to jak będzie?

>> Wiele języków ma iteracje po kontenerach. Czy czyni je składniowo
>> podobnymi do siebie?
> Nie. Ale czyni je to podobnymi do siebie pod względem posiadania
> składni na iterowanie po kontenerach.

To niestety oznacza całkiem spory zbiór języków programowania. Zgaduje 
że wszystkie współczesne są "podobne". Troche bida. Mają takie kryteria 
szybko dojdziesz do Jedynego Języka.

>> A może to najzwyczajniej podstawowa jednostka każdego języka imperatywnego?
> Na pewno nie każdego.

Tak, brainfuck się nie łapie.

>> Znowu masz szeroko pojęte "podobieństwo" które na koniec sprowadza się
>> do "bo też ma klamry i ify".
> I for, i do while, i switch case, i ...

Tak, to dużo zmienia. W zasadzie mogę wyjąć dowolny język programowania 
i mam spore szanse na takie "podobieństwa".

Może języki mało co się do siebie róznią w tej kwestii, a prawdziwe i 
ważne róznice są kompletnie gdzie indziej?

> Ale tak naprawdę nietrudno się domyślić o co chodzi.
> Chodzi o to, że przechodząc od jednego języka do drugiego,
> nie musisz radykalnie zmieniać nawyków.

Hmmm jak mogę łatwo przejśc z std::shared_ptr<std::optional<Foo> > na 
PHP bez zmiany nawyków?

> Na przykład, przechodząc z C do Fortha, trzeba nawyki zmienić dość mocno.

Z tym się nikt nie spiera.

Ja się spieram ze spłycenia PHP i C++ do kilku klamr i ifów.

>>> Java i C++ to języki podobne, bo Java celowo była tak projektowana,
>>> żeby była podobna do C++. (I nie nazwałbym tego stwierdzenia ryzykownym)
>> Mówisz o wskaźnikach, szablonach i wielodziedziczeniu? Czy o klamrach,
>> znowu?
> Mówię o klasach oraz modyfikatorach "private", "public" i "protected".
> Wskaźniki, szablony i wielodziedziczenie to różnice, a więc nie podobieństwa.

Czyli "klamry". Znowu mamy podobieństwo na poziomie Kazika z łopatą i 
koparki. Oba podobne. Kwestia jakości gumki w pojęciu "podobny".

>> W ten sposób dostajemy niezwykle użyteczne pojęcie "język podobny" a
>> dzięki uproszczeniu rzeczy trudnych i istotnych, możemy zredukować to
>> pojęcie do jednej instancji, Języka Uniwersalnego, który używa bajtów,
>> więc każdy się łapie (poza BCPL).
> Jeżeli widzisz w tym jakąś użyteczność, to ok.

Nie widzę ani śladu. Do głowy by mi nie przyszło mowić, że PHP i C++ to 
"podobne" języki, a co dopiero uważać że używanie bajtów to jakiś argument.

>>> Natomiast są takie języki, jak np. unlambda czy whitespace,
>>> które są pod tym względem podobne do brainfucka, że
>>> - są ezoteryczne
>>> - nie można w nich używać słów
>> Spacja to nie słowo? Tabulator to nie słowo? Nie przesadzasz czasem?
> Oczywiście, chciałem napisać "definiować słów".

W języku maszynowym też nie można. Ale ma ify, tylko napisane np. jako 
np. beq. Czy to czyni z niego jezyk podobny do C++? Różnica między PHP i 
C++ to podobno tylko $. Tutaj niewiele wiecej: ot tylko inne słowo. 
Przeciez to prawie to samo. A że nie ma klarm? W C++ nie ma $ i nie 
przeszkadza to dostrzegać podobieństwo.

>> Te klamry to poprawny termin określający cały zbiór róznych języków
>> programowania. Spytaj google.
> Pewnie nawet zbiór różnych języków programowania w jakiś sposób
> do siebie podobnych.

Tak, klamrami. I tyle.

Troche jak twierdzić, że wszystkie obrazy malarzy holenderskich są 
podobne, bo płaskie.

>>>> "Kolega pisze na komputerze a ja długopisem. Dlatego właśnie można
>>>> powiedzieć, że robimy to bardzo podobnie, bo oboje piszemy".
>>> I pewnie nawet obaj używamy alfabetu łacińskiego.
>> Tak, to tez podobieństwo, dlatego nie widzę sensu nauki innych języków.
> Nie rozumiem argumentu.

Ja też go nie rozumiem. Na tym polega żart.

>> Nauka alfabetu załatwia mówienie we wszystkich jezykach które ich
>> używają, a hiszpański i angielski są w zasadzie identyczne, jak PHP i
>> C++.
> Nie załatwia, i nikt tu do tej pory nie twierdził, że załatwia.

Jak to nie, przecież PHP i C++ są podobne. Ba, są nawet nieśmiałe próby 
kilka akapitów wyżej, że "łatwo się między nimi przenosić". Zgadza się, 
jesli zagadnieniem jest "policz sumę wszystkich liczb od 0 do 10" to 
nawet można to zrobić sed'em, jak ktoś lubi sado maso.

>>> Podobieństwo dwóch przedmiotów rozumiem w taki sposób,
>>> że istnieją w tych przedmiotach pewne cechy, które są identyczne.
>> I ktoś się z tym spiera?
> No, najwyraźniej Ty.

Trochę spieram się o szerkość słwoa "podobny" a nie o jego użycie. Ktoś 
nieopacznie przeczyta że PHP to prawie to samo co C++ i nastepny startup 
niewypali. Trzeba ostrożnie z takimi bzdurami.

>> Jak na razie nie udało się znaleźc nic innego, podobnego, między C++ i
>> PHP. Tylko klamry.
> Udało się, tylko Ty twierdzisz, że się nie udało.

Nie. Tylko klamry. Do tej pory padł tylko jeden argument, który okazał 
się być zbiorem nazw z bibliteki standardowej. Wszystko inne jest inne, 
a jeśli "podobne" to na poziomie klamrowym.

>> Zaznaczam, że strcmp itd są dostępne przez abi z
>> dowolnego języka, wiec cięzko mówić, że to cecha specyficzna dla C++.
> Jak wywołujesz w PHP substr, to nie wywołujesz funkcji w C, tylko funkcję
> w PHP, którą ktoś tak nazwał.

I która działa dokładnie tak samo?

https://www.php.net/manual/en/security.filesystem.nullbytes.php

No patrz, podobieństwo, jak zwykle, klamrowe.

> Bo PHP po prostu zmałpował wiele nazw funkcji z biblioteki standardowej C.

Żeby tylko. One działaja inaczej, bo zapomniał zmałpować całej reszty. 
Innymi słowy: ktoś projektuje jezyk, ale tak strasznie stara się go 
zmałpować z innego, że wychodzi coś bez większego sensu.

>> Ja kiedyś usilnie uzywalem PHP do zagadnień niewebowych. Naprawdę,
>> uważałem go za przydatny język do zarządzania serwerm. Taki bash, tylko
>> nie pisany przez durniów, choć niewątpliwe bardzo lepiej nie było.
> Nie wiem, czy bash był pisany przez durniów.

Myślę, że tak. Oczywiscie z poziomu świata dzisiaj. Wtedy mógł być 
objawieniem, szczególnie przy Forth czy BCPL. Dzisiaj większośc 
konstrukcji w bashu jest zaprojektowana błędnie, upierdliwie, 
dziecinnie, bez śladu sensownego projektu, planu, koncepcji. Ludzie 
lubią takie języki. Stąd popularnośc Perla, Basha, PHP i kilku innych. 
Nie rozumiem fenomenu, ale akceptuje.

Pisanie w bashu czegokolwiek większego niż kilkanascie linijek boli co 
prawda mniej, niż w Perlu, ale dalej stanowi niebezpieczeństwo wylewu 
bądź detonacji istoty szarej.

Świadomośc podobnych problemów w PHP pozwoliła by nie doprowadzić do 
upadku niejeden bank, choć nie mam pewności, czy autor zlinkowanego 
kilka postów temu tekstu miał pojęcie co pisze. Ale zakładajmy, że miał 
i PHP jest ważny w bankach.

> Nie wiem, czy PHP nie był.

Pierwsze wersja PHP były przefajne. Pamiętam nawet wykład jakiegoś 
lokalnego doktoranta pokazującego na bazie PHP jak *NIE* wolno 
projektować języków. Wybacz, po tylu latach wyleciało mi nazwisko z 
głowy. Z resztą umierałem wtedy ze śmiechu, to jestem usprawidliwiony.

> Wszystkie te rzeczy powstawały w jakimś tam swoim kontekście,
> nie czuję się w pozycji oceniania kompetencji ich twórców.

Zgadza się. Ale wszystko podobne do C++ bo mają ify. Czy wiesz, że bash 
ma klamry? Ojej! To prawie to samo.

>> Jednak po wielu wpadkach z nim, które są charakterystyczne dla języków
>> projektowanych na kolanie, nie sięgnąłem po niego ponownie. Jest popsuty
>> po wieloma względami, niebezpieczny, głupi.
> Jest. Ale to samo można powiedzieć o C++.
> (i mamy kolejne podobieństwo!)

Jak już wspomniałem, mamy inną definicję "podobieństa".

To, że słoń wygląda trochę jak kura to nie znacza, że to to samo 
podobieństwo co krzesła i balkonu. To różne podobieństwa.
Technical Details
Message-ID: <tjgjjv$33ilo$1@dont-email.me>
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!feeder8.news.weretis.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
References: <tj64ne$36qsg$3@portraits.wsisiz.edu.pl> <tj64rj$1mmv4$1@dont-email.me> <tj8epv$3afh$1@portraits.wsisiz.edu.pl> <tj8vg4$21ll8$2@dont-email.me> <tjabcs$t53e$2@portraits.wsisiz.edu.pl> <tjan0p$2drd6$1@dont-email.me> <tjb0ft$10mf6$1@portraits.wsisiz.edu.pl> <tjb0up$2eot6$1@dont-email.me> <tjb1g2$10mnn$2@portraits.wsisiz.edu.pl> <tjb2ee$2ep64$1@dont-email.me> <tjg379$2q700$1@portraits.wsisiz.edu.pl> <tjg38l$314k8$2@dont-email.me> <tjg3ua$2qa65$1@portraits.wsisiz.edu.pl> <tjg46f$314k8$3@dont-email.me> <e896216c-e3ca-4ec9-9903-8a33d43fcc00n@googlegroups.com> <tjg6o5$31ke4$1@dont-email.me> <6a159c97-995c-4408-9cf8-d14faee45dd9n@googlegroups.com> <tjg8j5$31ke4$2@dont-email.me> <90bbce43-c979-43da-aa26-9397596021c6n@googlegroups.com> <tjgb3e$31ke4$3@dont-email.me> <6f90c461-2fa9-435c-a120-31cae1a9b3a4n@googlegroups.com> <tjgeu5$32t15$2@dont-email.me> <ea6b4629-c1e4-4fbe-b902-720a2213c2e8n@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!feeder8.news.weretis.net!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: heby <heby@poczta.onet.pl>
Newsgroups: pl.comp.programming
Subject: Re: mój obfuskator - problem projektowy
Date: Fri, 28 Oct 2022 14:57:34 +0200
Organization: A noiseless patient Spider
Lines: 199
Message-ID: <tjgjjv$33ilo$1@dont-email.me>
References: <tj64ne$36qsg$3@portraits.wsisiz.edu.pl> <tj64rj$1mmv4$1@dont-email.me> <tj8epv$3afh$1@portraits.wsisiz.edu.pl> <tj8vg4$21ll8$2@dont-email.me> <tjabcs$t53e$2@portraits.wsisiz.edu.pl> <tjan0p$2drd6$1@dont-email.me> <tjb0ft$10mf6$1@portraits.wsisiz.edu.pl> <tjb0up$2eot6$1@dont-email.me> <tjb1g2$10mnn$2@portraits.wsisiz.edu.pl> <tjb2ee$2ep64$1@dont-email.me> <tjg379$2q700$1@portraits.wsisiz.edu.pl> <tjg38l$314k8$2@dont-email.me> <tjg3ua$2qa65$1@portraits.wsisiz.edu.pl> <tjg46f$314k8$3@dont-email.me> <e896216c-e3ca-4ec9-9903-8a33d43fcc00n@googlegroups.com> <tjg6o5$31ke4$1@dont-email.me> <6a159c97-995c-4408-9cf8-d14faee45dd9n@googlegroups.com> <tjg8j5$31ke4$2@dont-email.me> <90bbce43-c979-43da-aa26-9397596021c6n@googlegroups.com> <tjgb3e$31ke4$3@dont-email.me> <6f90c461-2fa9-435c-a120-31cae1a9b3a4n@googlegroups.com> <tjgeu5$32t15$2@dont-email.me> <ea6b4629-c1e4-4fbe-b902-720a2213c2e8n@googlegroups.com>
MIME-Version: 1.0
Injection-Date: Fri, 28 Oct 2022 12:57:35 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="758fd47d21ac65228da440c0da78f4f9"; logging-data="3263160"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/HxuiUk5azPzEsYOQ8aFue"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0
Cancel-Lock: sha1:JiCuURCEb4zqTrtvKAuUXbLtDBg=
In-Reply-To: <ea6b4629-c1e4-4fbe-b902-720a2213c2e8n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit