🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.programming
66 messages
66 total messages Page 1 of 2 Started by Jivanmukta Mon, 24 Oct 2022 13:42
Page 1 of 2 • 66 total messages
mój obfuskator - problem projektowy
#217787
Author: Jivanmukta
Date: Mon, 24 Oct 2022 13:42
46 lines
3280 bytes
Piszę tutaj bo na pl.como.lang.php nie dostałem odpowiedzi.

Napisałem w C++ obfuskator PHP 5/7/8. Obfuskator umożliwia m.in. 
zaciemnienie projektu wykorzystującego Composera, tzn. katalog vendor. 
Ponieważ obfuskuję samą aplikację a nie frameworki i biblioteki z 
katalogu vendor potrzebuję zrobić żeby identifikatory z vendor nie były 
zastępowane losowymi. W tym celu analizuję kod frameworków i bibliotek z 
katalogu vendor w poszukiwaniu identyfikatorów (zmiennych, funkcji, 
metod, właściwości itd.). Problem w tym że jeśli katalog vendor jest 
duży, tzn. liczy wiele podkatalogów, proces analizy trwa długo, nawet 
kilka godzin. Żeby nie analizować katalogu vendor wielokrotnie (przy 
każdej obfuskacji projektu) zapamiętuje znalezione w vendor 
identyfikatory w cache'u (pliku xml-owym). Modyfikacja katalogu vendor 
(np. dodanie Composerem nowej biblioteki lub update) nie powoduje u mnie 
ponownego parsowania całego vendor bo zapamiętuję w cache'u timestampy 
podkatalogów vendor.

Czy takie rozwiązanie jest do przyjęcia, tzn. że pierwsza obfuskacja 
może trwać nawet kilka godzin, ale późniejsze już w minutach?
Jeśli nie, to czy ktoś mógłby mi rzucić pomysł jak rozwiązać ten 
problem? Chcę żeby mój obfuskator był uniwersalny, tzn. potrafił 
zaciemnić projekt wykorzystujący różne frameworki i różne biblioteki.

Dużo czasu zajmuje przetwarzanie wyrazeniami regularnymi kazdego wiersza 
kazdego pliku duzego katalogu vendor.

     const string remembering_regexps[index_what_num][2] =

{{"(static|abstract|final)?\\s*(public)?\\s*(static|abstract|final)?\\s*(function)\\s+(" 
+ ::identifier + ")\\s*\\(", ""},

{"(static|abstract|final)?\\s*(private|protected|public)?\\s*(static|abstract|final)?\\s*(function)\\s+(" 
+ ::identifier + ")\\s*\\(", ""},
          {"\\b(function)\\s+(" + ::identifier + ")\\s*\\(", ""},

{"(static|private|protected|public)?\\s*(readonly)?\\s*([_a-zA-Z0-9]+)?\\s*(\\$(" 
+ ::identifier + ")\\s*=.*,?\\s*)+", // uproszczenie

"(static|private|protected|public)?\\s*(readonly)?\\s*([_a-zA-Z0-9]+)?\\s*(\\$(" 
+ ::identifier + ")\\s*,?\\s*)+"},   // uproszczenie

{"(?!(private|protected|public))\\s*(\\s*|[^:\\-][^:>])\\s*(\\\\\\\\)*\\$(" 
+ ::identifier + ")", ""}};                // pasuje do "instanceof 
$var" a nie pasuje do "self::$prop;" czy "->$prop"

Ponadto dla każdego pliku wywołuję skrypt PHP robiący tokenizację.
Re: mój obfuskator - problem projektowy
#217805
Author: heby
Date: Mon, 24 Oct 2022 13:44
4 lines
1269 bytes
On 24/10/2022 15:42, Jivanmukta wrote:
> Napisałem w C++ obfuskator PHP

Komu i do czego to jest potrzebne?
Re: mój obfuskator - problem projektowy
#217783
Author: Jivanmukta
Date: Tue, 25 Oct 2022 10:46
8 lines
1146 bytes
W dniu 24.10.2022 o 15:44, heby pisze:
> On 24/10/2022 15:42, Jivanmukta wrote:
>> Napisałem w C++ obfuskator PHP
> 
> Komu i do czego to jest potrzebne?
> 

Jesteś prowokatorem czy jesteś niedorozwinięty?
Re: mój obfuskator - problem projektowy
#217808
Author: heby
Date: Tue, 25 Oct 2022 15:31
9 lines
1613 bytes
On 25/10/2022 12:46, Jivanmukta wrote:
>>> Napisałem w C++ obfuskator PHP
>> Komu i do czego to jest potrzebne?
> Jesteś prowokatorem czy jesteś niedorozwinięty?

Raczej praktykiem. Skoro coś trwa godzinami, a przeciez poprawki i 
refaktoringo się same nie zrobią, wiec x100, to musi istnieć jakiś 
*NAPRAWDĘ* znakomity powód babrania się w tym gównianym PHP aby było 
widać ale nie było widać. Ciekawośc mnie zżera, jaki to powód.
Re: mój obfuskator - problem projektowy
#217807
Author: Jivanmukta
Date: Wed, 26 Oct 2022 02:00
17 lines
1863 bytes
W dniu 25.10.2022 o 17:31, heby pisze:
> On 25/10/2022 12:46, Jivanmukta wrote:
>>>> Napisałem w C++ obfuskator PHP
>>> Komu i do czego to jest potrzebne?
>> Jesteś prowokatorem czy jesteś niedorozwinięty?
> 
> Raczej praktykiem. Skoro coś trwa godzinami, a przeciez poprawki i 
> refaktoringo się same nie zrobią, wiec x100, to musi istnieć jakiś 
> *NAPRAWDĘ* znakomity powód babrania się w tym gównianym PHP aby było 
> widać ale nie było widać. Ciekawośc mnie zżera, jaki to powód.
> 
Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za 
gówniane. Lubię C++ i języki do niego podobne.

-- 
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie antywirusowe AVG.
www.avg.com
Re: mój obfuskator - problem projektowy
#217811
Author: heby
Date: Wed, 26 Oct 2022 07:18
6 lines
1570 bytes
On 26/10/2022 04:00, Jivanmukta wrote:
> Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za 
> gówniane. Lubię C++ i języki do niego podobne.

Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
cechy PHP są podobne do C++ i Ci się spodobały?
Re: mój obfuskator - problem projektowy
#217813
Author: Jivanmukta
Date: Wed, 26 Oct 2022 10:00
9 lines
1434 bytes
W dniu 26.10.2022 o 09:18, heby pisze:
> On 26/10/2022 04:00, Jivanmukta wrote:
>> Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za 
>> gówniane. Lubię C++ i języki do niego podobne.
> 
> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
> cechy PHP są podobne do C++ i Ci się spodobały?
> 
Składnia.
Re: mój obfuskator - problem projektowy
#217843
Author: Jivanmukta
Date: Wed, 26 Oct 2022 10:04
7 lines
1687 bytes
W dniu 26.10.2022 o 09:18, heby pisze:
> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
> cechy PHP są podobne do C++ i Ci się spodobały?
> 
I to że wiele funkcji się tak samo lub podobnie nazywa, dzięki czemu 
łatwo mi było przejść na PHP (C++ miałem na studiach). Poza tym lubię 
paradygmat imperatywny i obiektowość.
Re: mój obfuskator - problem projektowy
#217779
Author: heby
Date: Wed, 26 Oct 2022 10:08
6 lines
1583 bytes
On 26/10/2022 12:00, Jivanmukta wrote:
>> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
>> cechy PHP są podobne do C++ i Ci się spodobały?
> Składnia.

W sensie templates, orientacja na wartości, silne typowanie?
Re: mój obfuskator - problem projektowy
#217844
Author: heby
Date: Wed, 26 Oct 2022 10:09
6 lines
1541 bytes
On 26/10/2022 12:04, Jivanmukta wrote:
> Poza tym lubię 
> paradygmat imperatywny i obiektowość.

Sugneruje polubić funkcyjność, a obiektowośc jest ogólnie zrobiona 
wszędzie lepiej niż w PHP.
Re: mój obfuskator - problem projektowy
#217792
Author: Jivanmukta
Date: Wed, 26 Oct 2022 10:17
8 lines
1469 bytes
W dniu 26.10.2022 o 12:08, heby pisze:
> On 26/10/2022 12:00, Jivanmukta wrote:
>>> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
>>> cechy PHP są podobne do C++ i Ci się spodobały?
>> Składnia.
> 
> W sensie templates, orientacja na wartości, silne typowanie?
Dobrze wiesz że nie.
Re: mój obfuskator - problem projektowy
#217793
Author: heby
Date: Wed, 26 Oct 2022 10:33
8 lines
1724 bytes
On 26/10/2022 12:17, Jivanmukta wrote:
>>>> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
>>>> cechy PHP są podobne do C++ i Ci się spodobały?
>>> Składnia.
>> W sensie templates, orientacja na wartości, silne typowanie?
> Dobrze wiesz że nie.

Wiec co? Klamry?
Re: mój obfuskator - problem projektowy
#217845
Author: Jivanmukta
Date: Wed, 26 Oct 2022 11:07
10 lines
1604 bytes
W dniu 26.10.2022 o 12:09, heby pisze:
> On 26/10/2022 12:04, Jivanmukta wrote:
>> Poza tym lubię paradygmat imperatywny i obiektowość.
> 
> Sugneruje polubić funkcyjność, a obiektowośc jest ogólnie zrobiona 
> wszędzie lepiej niż w PHP.
> 
Ale do większości zastosowań i przeciętnej wielkości projektów - 
wystarczająco dobrze. Ja piszę systemy o wielkości 20-kilku KLOC z 
wykorzystaniem CodeIgnitera i mi takie OOP wystarczy.
Re: mój obfuskator - problem projektowy
#217794
Author: Jivanmukta
Date: Wed, 26 Oct 2022 11:08
11 lines
1628 bytes
W dniu 26.10.2022 o 12:33, heby pisze:
> On 26/10/2022 12:17, Jivanmukta wrote:
>>>>> Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
>>>>> cechy PHP są podobne do C++ i Ci się spodobały?
>>>> Składnia.
>>> W sensie templates, orientacja na wartości, silne typowanie?
>> Dobrze wiesz że nie.
> 
> Wiec co? Klamry?
> 
Tak, klamry i składnia instrukcji, danych i klas.
Re: mój obfuskator - problem projektowy
#217795
Author: heby
Date: Wed, 26 Oct 2022 12:49
21 lines
1923 bytes
On 26/10/2022 13:08, Jivanmukta wrote:
>> Wiec co? Klamry?
> Tak, klamry

Ok.

> i składnia instrukcji

Nie ma czegoś takiego, chyba że chodzi o funkcje, których składnia jest 
mało podobna.

>, danych

PHP wspiera semantykę kopiowania, alingment danych, operacje na pointerach?

> i klas.

PHP wspiera szablony?

Żeby się na koniec nie okazało przypadkiem, że to podobieństwo, to tylko 
{}, bo dopiero by było!
Re: mój obfuskator - problem projektowy
#217846
Author: heby
Date: Wed, 26 Oct 2022 12:51
8 lines
1754 bytes
On 26/10/2022 13:07, Jivanmukta wrote:
>> Sugneruje polubić funkcyjność, a obiektowośc jest ogólnie zrobiona 
>> wszędzie lepiej niż w PHP.
> Ale do większości zastosowań

Czy większośc Twoich zastosowań to dawanie kodu źródłowego klientwi w 
formie nieczytelnej? Nie wydaje Ci się, że moze jednak wybrałes zły 
język do postawionego celu?
Re: mój obfuskator - problem projektowy
#217847
Author: Jivanmukta
Date: Wed, 26 Oct 2022 16:04
11 lines
2004 bytes
W dniu 26.10.2022 o 14:51, heby pisze:
> On 26/10/2022 13:07, Jivanmukta wrote:
>>> Sugneruje polubić funkcyjność, a obiektowośc jest ogólnie zrobiona 
>>> wszędzie lepiej niż w PHP.
>> Ale do większości zastosowań
> 
> Czy większośc Twoich zastosowań to dawanie kodu źródłowego klientwi w 
> formie nieczytelnej? Nie wydaje Ci się, że moze jednak wybrałes zły 
> język do postawionego celu?
> 
Moje programy są czytelne.
Re: mój obfuskator - problem projektowy
#217848
Author: Jivanmukta
Date: Wed, 26 Oct 2022 16:33
14 lines
1860 bytes
W dniu 26.10.2022 o 18:04, Jivanmukta pisze:
> W dniu 26.10.2022 o 14:51, heby pisze:
>> On 26/10/2022 13:07, Jivanmukta wrote:
>>>> Sugneruje polubić funkcyjność, a obiektowośc jest ogólnie zrobiona 
>>>> wszędzie lepiej niż w PHP.
>>> Ale do większości zastosowań
>>
>> Czy większośc Twoich zastosowań to dawanie kodu źródłowego klientwi w 
>> formie nieczytelnej? Nie wydaje Ci się, że moze jednak wybrałes zły 
>> język do postawionego celu?
>>
> Moje programy są czytelne.
> 
czytelne, zrefaktoryzowane, dobrze skomentowane, przetestowane i wydajne
Re: mój obfuskator - problem projektowy
#217849
Author: heby
Date: Wed, 26 Oct 2022 18:17
4 lines
1626 bytes
On 26/10/2022 18:33, Jivanmukta wrote:
> wydajne

Dalej mowa o PHP? Bo się pogubiłem.
Re: mój obfuskator - problem projektowy
#217791
Author: Jivanmukta
Date: Thu, 27 Oct 2022 04:47
25 lines
2009 bytes
W dniu 26.10.2022 o 14:49, heby pisze:
> On 26/10/2022 13:08, Jivanmukta wrote:
>>> Wiec co? Klamry?
>> Tak, klamry
> 
> Ok.
> 
>> i składnia instrukcji
> 
> Nie ma czegoś takiego, chyba że chodzi o funkcje, których składnia jest 
> mało podobna.
Jak to nie ma? A if, pętle while, do-while, for, instrukcja switch, 
wyrażenia, ternariusz, przypisania - nie są podobne?
> 
>> , danych
> 
> PHP wspiera semantykę kopiowania, alingment danych, operacje na pointerach?
A stringi i liczby nie są podobne?
>
>> i klas.
> 
> PHP wspiera szablony?
A coś Ty się tak do tych szablonów przyczepił.
Składnia klas jest podobna w obu językach. OOP w PHP opiera się na 
koncepcjach Stroustrupa.
Re: mój obfuskator - problem projektowy
#217790
Author: heby
Date: Thu, 27 Oct 2022 07:29
59 lines
3452 bytes
On 27/10/2022 06:47, Jivanmukta wrote:
>>> i składnia instrukcji
>> Nie ma czegoś takiego, chyba że chodzi o funkcje, których składnia 
>> jest mało podobna.
> Jak to nie ma? A if, pętle while, do-while, for, instrukcja switch, 
> wyrażenia, ternariusz, przypisania - nie są podobne?

Nie wszystkie.

auto x = foo();

char* y = floating_point_variable; //Error

itd.

Przypominam, bo chyba Ci się lekko rozjachało, że mówa o C++ a nie C.

for( auto x : container) [...]

>> PHP wspiera semantykę kopiowania, alingment danych, operacje na 
>> pointerach?
> A stringi

Masz na myśli std::string? Ani trochę. Jeśli mówisz o char* to:
1) to nie jest The String w C++
2) a==b w tym wypadku nie zadziała jak w PHP

Nie widzę podobieństwa, ani trochę.

> i liczby nie są podobne?

Liczby? One są podobne we wszystkich językach programowania.

>>> i klas.
>> PHP wspiera szablony?
> A coś Ty się tak do tych szablonów przyczepił.

Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
podobnego. 90% współczesnego C++ w postaci biblitek standardowych to 
szablony a w porządnych programach w C++ bez szablonów cieżko pisać.

> Składnia klas jest podobna w obu językach.

Nie jest. Przykładowo PHP nie woła konstruktora klasy nadrzędnej w 
sposób automatyczny co jest *zasadniczym* problemem. Nie ma overloadingu 
co powoduje problem z różnymi konstruktorami tej samej klasy. 
Wielokrotne dziedziczenie wpierane tylko przez interfejsy, zamiast tego 
jakaś proteza Traits. Składnia deklaracji jak żywcem wyjęta z Javy. Jak 
zwykle problemy z tym, że dzisiaj jeden z "architektów" PHP zapił na 
komersie i leży pod stołem, to musiał zrobić drugi, z 6C.

Nie, klasy w PHP nie mają niewiele wspólnego z tymi od C++.

Znowu, chodzi Ci tylko o klamry.

> OOP w PHP opiera się na 
> koncepcjach Stroustrupa.

Niewątpliwie.
Re: mój obfuskator - problem projektowy
#217820
Author: Jivanmukta
Date: Thu, 27 Oct 2022 07:45
12 lines
1992 bytes
W dniu 27.10.2022 o 09:29, heby pisze:
>>> PHP wspiera szablony?
>> A coś Ty się tak do tych szablonów przyczepił.
> 
> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
> podobnego. 90% współczesnego C++ w postaci biblitek standardowych to 
> szablony a w porządnych programach w C++ bez szablonów cieżko pisać.
Podejrzewam, że i szablony się w końcu w PHP pojawią.

-- 
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie antywirusowe AVG.
www.avg.com
Re: mój obfuskator - problem projektowy
#217806
Author: Maciek Godek
Date: Thu, 27 Oct 2022 09:40
18 lines
2670 bytes
czwartek, 27 października 2022 o 09:29:25 UTC+2 heby napisał(a):


> Nie widzę podobieństwa, ani trochę.
> > i liczby nie są podobne?
> Liczby? One są podobne we wszystkich językach programowania.
> >>> i klas. 
> >> PHP wspiera szablony? 
> > A coś Ty się tak do tych szablonów przyczepił.
> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
> podobnego. 90% współczesnego C++

Może tu jest owa kość niezgody zakopana.

Wydaje mi się, że OP ma na myśli raczej historycznego C++, tzn. takiego
jeszcze z epoki cfront (czyli przed standaryzacją ISO z 98 roku),
który rozszerzył składnię języka C o konstrukcje obiektowe, a w którym
jeszcze nie było wynalazków w rodzaju szablonów.
Re: mój obfuskator - problem projektowy
#217781
Author: Tomasz Kaczanowski
Date: Thu, 27 Oct 2022 10:18
25 lines
2427 bytes
W dniu 27.10.2022 o 11:40, Maciek Godek napisał:
> czwartek, 27 października 2022 o 09:29:25 UTC+2 heby napisał(a):
> 
> 
>> Nie widzę podobieństwa, ani trochę.
>>> i liczby nie są podobne?
>> Liczby? One są podobne we wszystkich językach programowania.
>>>>> i klas.
>>>> PHP wspiera szablony?
>>> A coś Ty się tak do tych szablonów przyczepił.
>> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim
>> podobnego. 90% współczesnego C++
> 
> Może tu jest owa kość niezgody zakopana.
> 
> Wydaje mi się, że OP ma na myśli raczej historycznego C++, tzn. takiego
> jeszcze z epoki cfront (czyli przed standaryzacją ISO z 98 roku),
> który rozszerzył składnię języka C o konstrukcje obiektowe, a w którym
> jeszcze nie było wynalazków w rodzaju szablonów.


Ale przecież szablony to też na długo przed 98 rokiem były w C++...

-- 
http://zrzeda.pl
Re: mój obfuskator - problem projektowy
#217821
Author: heby
Date: Thu, 27 Oct 2022 11:06
10 lines
2223 bytes
On 27/10/2022 09:45, Jivanmukta wrote:
>> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
>> podobnego. 90% współczesnego C++ w postaci biblitek standardowych to 
>> szablony a w porządnych programach w C++ bez szablonów cieżko pisać.
> Podejrzewam, że i szablony się w końcu w PHP pojawią.

Oczywiście, jak Maciek z 6C pójdzie do zawodówki za 3 lata, to naczelnym 
architektem zostanie Zosia z 4B. Tak że nie wątpię, że się pojawią. Od 
razu mogę postawić jakąs kasę, że do ich porównywania będzie operator 
====, bo co warte jest życie programisty bez zabawy?
Re: mój obfuskator - problem projektowy
#217850
Author: heby
Date: Thu, 27 Oct 2022 15:54
15 lines
2254 bytes
On 27/10/2022 17:37, Jivanmukta wrote:
> Na stronie
> https://thestory.is/pl/journal/python-vs-php-zalety-roznice/
> przeczytasz:
> Szybkość
> Pod względem szybkości lepiej wypada PHP. Najnowsza wersja PHP jest 
> prawie trzykrotnie szybsza od typowego programu Pythona>, co ma ogromne 
> znaczenie na przykład w wypadku systemu bankowego, gdzie codziennie 
> generowane są miliony odsłon.

Czy systemy bankowe są pisane w Pythone albo zgoła PHP?

Ja na przykład mam Chevroleta, który jest ponad trzyktotnie szybszy od 
Malucha, co ma niebagatelne znaczenie dla transportu kolejowego, gdzie 
codziennie transportuej się miliony ton węg... a nie czekaj...
Re: mój obfuskator - problem projektowy
#217789
Author: Maciek Godek
Date: Fri, 28 Oct 2022 07:29
51 lines
4245 bytes
czwartek, 27 października 2022 o 12:19:00 UTC+2 Tomasz Kaczanowski napisał(a):
> W dniu 27.10.2022 o 11:40, Maciek Godek napisał: 
> > czwartek, 27 października 2022 o 09:29:25 UTC+2 heby napisał(a): 
> > 
> > 
> >> Nie widzę podobieństwa, ani trochę. 
> >>> i liczby nie są podobne? 
> >> Liczby? One są podobne we wszystkich językach programowania. 
> >>>>> i klas. 
> >>>> PHP wspiera szablony? 
> >>> A coś Ty się tak do tych szablonów przyczepił. 
> >> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
> >> podobnego. 90% współczesnego C++ 
> > 
> > Może tu jest owa kość niezgody zakopana. 
> > 
> > Wydaje mi się, że OP ma na myśli raczej historycznego C++, tzn. takiego 
> > jeszcze z epoki cfront (czyli przed standaryzacją ISO z 98 roku), 
> > który rozszerzył składnię języka C o konstrukcje obiektowe, a w którym 
> > jeszcze nie było wynalazków w rodzaju szablonów.
> Ale przecież szablony to też na długo przed 98 rokiem były w C++... 

Wikipedia podaje, że szablony pojawiły się po 1993 roku
(czyli co najmniej 11 lat po wydaniu pierwszej wersji języka już
nazywanego C++).

Wydaje mi się, że przez długi czas główny kontakt z C++, jaki mieli programiści,
był zapośredniczony przez kompilator Borlanda. Wg. Wikipedii wsparcie
dla STLa otrzymał dopiero w 2000 roku, czyli po opracowaniu standardu ISO
(nie wiem, czy wcześniej miał wsparcie dla składni szablonów, ale zdziwiłbym
się, gdyby tak było).

Dlatego osoby, które uczyły się C++ przed 2000 rokiem, mogły mieć
na tę kwestię inną percepcję.

Ja się go uczyłem w 2003 z książki Stroustrupa. Byłem w o tyle
komfortowej sytuacji, że w tamtym czasie był już dostępny C++ w GCC
(aczkolwiek pamiętam z książki Kernighana i Pike'a "Lekcja Programowania",
oryginalnie wydanej w 1999, że były tam jakieś narzekania na niestabilność
i błędy w STL - a oni akurat mieli bezpośredni dostęp do pracy Stroustrupa
w Bell Labs).

Pamiętam, że jak oddawałem na laborce program w C++ z szablonami,
to prowadzący robił wielkie oczy.

A z tym PHP to ciekawa sprawa. Pierwsze wersje były bardzo kiepskie
i bardzo popularne. Najnowsze wersje to już dość przyzwoicie
zaprojektowany język, ale jego popularność wydaje się marginalna.
(Z C++ jest na odwrót: język z każdym kolejnym wydaniem staje się
coraz gorszy, i chyba właśnie dzięki temu jako tako udaje mu się 
popularność utrzymać)
Re: mój obfuskator - problem projektowy
#217815
Author: Tomasz Kaczanowski
Date: Fri, 28 Oct 2022 08:11
72 lines
4921 bytes
W dniu 28.10.2022 o 09:29, Maciek Godek napisał:
> czwartek, 27 października 2022 o 12:19:00 UTC+2 Tomasz Kaczanowski napisał(a):
>> W dniu 27.10.2022 o 11:40, Maciek Godek napisał:
>>> czwartek, 27 października 2022 o 09:29:25 UTC+2 heby napisał(a):
>>>
>>>
>>>> Nie widzę podobieństwa, ani trochę.
>>>>> i liczby nie są podobne?
>>>> Liczby? One są podobne we wszystkich językach programowania.
>>>>>>> i klas.
>>>>>> PHP wspiera szablony?
>>>>> A coś Ty się tak do tych szablonów przyczepił.
>>>> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim
>>>> podobnego. 90% współczesnego C++
>>>
>>> Może tu jest owa kość niezgody zakopana.
>>>
>>> Wydaje mi się, że OP ma na myśli raczej historycznego C++, tzn. takiego
>>> jeszcze z epoki cfront (czyli przed standaryzacją ISO z 98 roku),
>>> który rozszerzył składnię języka C o konstrukcje obiektowe, a w którym
>>> jeszcze nie było wynalazków w rodzaju szablonów.
>> Ale przecież szablony to też na długo przed 98 rokiem były w C++...
> 
> Wikipedia podaje, że szablony pojawiły się po 1993 roku
> (czyli co najmniej 11 lat po wydaniu pierwszej wersji języka już
> nazywanego C++).
> 
> Wydaje mi się, że przez długi czas główny kontakt z C++, jaki mieli programiści,
> był zapośredniczony przez kompilator Borlanda. Wg. Wikipedii wsparcie
> dla STLa otrzymał dopiero w 2000 roku, czyli po opracowaniu standardu ISO
> (nie wiem, czy wcześniej miał wsparcie dla składni szablonów, ale zdziwiłbym
> się, gdyby tak było).

aż spojrzałem na półkę...Tam mam stare wydanie Pasji C++ - rok wydania 
97... Sam korzystałem np z kompilatora Maxona - tam dużo konstrukcji 
było opartych na template'ach, dzięki czemu uzyskiwano w C++ bardzo mały 
kod wynikowy (szczególnie jeśli porównało się z tym co generował SASC). 
Ale z tego co pamiętam, to w Borlandzie (3.1) też template'y działały.

> 
> Dlatego osoby, które uczyły się C++ przed 2000 rokiem, mogły mieć
> na tę kwestię inną percepcję.

Uczyłem się długo przed 2000

> 
> Ja się go uczyłem w 2003 z książki Stroustrupa. Byłem w o tyle
> komfortowej sytuacji, że w tamtym czasie był już dostępny C++ w GCC
> (aczkolwiek pamiętam z książki Kernighana i Pike'a "Lekcja Programowania",
> oryginalnie wydanej w 1999, że były tam jakieś narzekania na niestabilność
> i błędy w STL - a oni akurat mieli bezpośredni dostęp do pracy Stroustrupa
> w Bell Labs).
> 
> Pamiętam, że jak oddawałem na laborce program w C++ z szablonami,
> to prowadzący robił wielkie oczy.

zdarza się. W zasadzie template'ów używałem (mniej lub bardziej 
rozumnie) na laboratoriach, tak jak Ty. Tyle, że było to w latach 90...

> 
> A z tym PHP to ciekawa sprawa. Pierwsze wersje były bardzo kiepskie
> i bardzo popularne. Najnowsze wersje to już dość przyzwoicie
> zaprojektowany język, ale jego popularność wydaje się marginalna.
> (Z C++ jest na odwrót: język z każdym kolejnym wydaniem staje się
> coraz gorszy, i chyba właśnie dzięki temu jako tako udaje mu się
> popularność utrzymać)


no cóż, tak bywa - życie. Bo to jedna ciekawa gałąź rozwoju została 
ucięta i wyparła ją gorsza?
-- 
http://kaczus.ppa.pl
Re: mój obfuskator - problem projektowy
#217822
Author: Jivanmukta
Date: Fri, 28 Oct 2022 08:17
1 lines
1290 bytes
I jeszcze symbole operatorów i komentarzy są podobne w obu językach.
Re: mój obfuskator - problem projektowy
#217819
Author: heby
Date: Fri, 28 Oct 2022 08:17
9 lines
2316 bytes
On 28/10/2022 10:11, Tomasz Kaczanowski wrote:
> aż spojrzałem na półkę...Tam mam stare wydanie Pasji C++ - rok wydania 
> 97... Sam korzystałem np z kompilatora Maxona - tam dużo konstrukcji 
> było opartych na template'ach, dzięki czemu uzyskiwano w C++ bardzo mały 
> kod wynikowy (szczególnie jeśli porównało się z tym co generował SASC). 

Używałem w tym czasie SASC na Amidze. O ile pamiętam, on generował kod 
pośredni w C. Nie był najlepszej jakości, ale jako baza na zabawę z C++ 
był wystarczający. Z szablonami, oczywiście.
Re: mój obfuskator - problem projektowy
#217823
Author: heby
Date: Fri, 28 Oct 2022 08:18
4 lines
1627 bytes
On 28/10/2022 10:17, Jivanmukta wrote:
> I jeszcze symbole operatorów i komentarzy są podobne w obu językach.

No własnie mówiłem, "klamry".
Re: mój obfuskator - problem projektowy
#217824
Author: Jivanmukta
Date: Fri, 28 Oct 2022 08:30
9 lines
1602 bytes
W dniu 28.10.2022 o 10:18, heby pisze:
> On 28/10/2022 10:17, Jivanmukta wrote:
>> I jeszcze symbole operatorów i komentarzy są podobne w obu językach.
> 
> No własnie mówiłem, "klamry".
> 
> 
W sumie podobieństwo obu języków głownei polega na tym, że ich twórcy 
najpierw programowali w C.
Re: mój obfuskator - problem projektowy
#217825
Author: heby
Date: Fri, 28 Oct 2022 08:34
11 lines
2106 bytes
On 28/10/2022 10:30, Jivanmukta wrote:
>>> I jeszcze symbole operatorów i komentarzy są podobne w obu językach.
>> No własnie mówiłem, "klamry".
> W sumie podobieństwo obu języków głownei polega na tym, że ich twórcy 
> najpierw programowali w C.

PHP nie jest podobny do C ani C++ z kilku fudamentalnych powodów. 
Zacznij od silnego typowania, wskaźników, zarządzania pamięcią, szablonów.

Ja wiem, że dokumentacja do PHP odwołuje się co chwile do C/C++. Ale oni 
to robią chyba tylko aby ten dziecinny jezyk zestawić z czymś użytecznym.
Re: mój obfuskator - problem projektowy
#217817
Author: Maciek Godek
Date: Fri, 28 Oct 2022 08:53
44 lines
4315 bytes
piątek, 28 października 2022 o 10:11:46 UTC+2 Tomasz Kaczanowski napisał(a):
> W dniu 28.10.2022 o 09:29, Maciek Godek napisał: 
> > czwartek, 27 października 2022 o 12:19:00 UTC+2 Tomasz Kaczanowski napisał(a): 
> >> W dniu 27.10.2022 o 11:40, Maciek Godek napisał: 
> >>> czwartek, 27 października 2022 o 09:29:25 UTC+2 heby napisał(a): 
> >>> 
> >>> 
> >>>> Nie widzę podobieństwa, ani trochę. 
> >>>>> i liczby nie są podobne? 
> >>>> Liczby? One są podobne we wszystkich językach programowania. 
> >>>>>>> i klas. 
> >>>>>> PHP wspiera szablony? 
> >>>>> A coś Ty się tak do tych szablonów przyczepił. 
> >>>> Stwierdziłeś, że podobny do C++. Staram się dowiedzieć co w nim 
> >>>> podobnego. 90% współczesnego C++ 
> >>> 
> >>> Może tu jest owa kość niezgody zakopana. 
> >>> 
> >>> Wydaje mi się, że OP ma na myśli raczej historycznego C++, tzn. takiego 
> >>> jeszcze z epoki cfront (czyli przed standaryzacją ISO z 98 roku), 
> >>> który rozszerzył składnię języka C o konstrukcje obiektowe, a w którym 
> >>> jeszcze nie było wynalazków w rodzaju szablonów. 
> >> Ale przecież szablony to też na długo przed 98 rokiem były w C++... 
> > 
> > Wikipedia podaje, że szablony pojawiły się po 1993 roku 
> > (czyli co najmniej 11 lat po wydaniu pierwszej wersji języka już 
> > nazywanego C++). 
> > 
> > Wydaje mi się, że przez długi czas główny kontakt z C++, jaki mieli programiści, 
> > był zapośredniczony przez kompilator Borlanda. Wg. Wikipedii wsparcie 
> > dla STLa otrzymał dopiero w 2000 roku, czyli po opracowaniu standardu ISO 
> > (nie wiem, czy wcześniej miał wsparcie dla składni szablonów, ale zdziwiłbym 
> > się, gdyby tak było).
> aż spojrzałem na półkę...Tam mam stare wydanie Pasji C++ - rok wydania 
> 97... Sam korzystałem np z kompilatora Maxona - tam dużo konstrukcji 
> było opartych na template'ach, dzięki czemu uzyskiwano w C++ bardzo mały 
> kod wynikowy (szczególnie jeśli porównało się z tym co generował SASC). 
> Ale z tego co pamiętam, to w Borlandzie (3.1) też template'y działały.


Aż sprawdziłem, i masz rację. W Borlandzie 3.1 nie było jeszcze STLa,
ale procesor szablonów już był, i były generyczne funkcje min i max
oraz kilka generycznych kolekcji (ARRAYS, BAGS, DEQUES, DLIST,
QUEUES, SETS, STACSK, VECT)
Re: mój obfuskator - problem projektowy
#217826
Author: Maciek Godek
Date: Fri, 28 Oct 2022 09:00
17 lines
2818 bytes
piątek, 28 października 2022 o 10:34:26 UTC+2 heby napisał(a):
> On 28/10/2022 10:30, Jivanmukta wrote: 
> >>> I jeszcze symbole operatorów i komentarzy są podobne w obu językach. 
> >> No własnie mówiłem, "klamry". 
> > W sumie podobieństwo obu języków głownei polega na tym, że ich twórcy 
> > najpierw programowali w C.

> PHP nie jest podobny do C ani C++ z kilku fudamentalnych powodów. 

A może: pod pewnymi względami jest, a pod innymi nie jest?

> Zacznij od silnego typowania, wskaźników, zarządzania pamięcią, szablonów. 

W C nie ma szablonów, a typowanie też nie jest zbyt silne.
Co do zarządzania pamięcią, oto pmiętny cytat z Rasmusa Lerdorfa:

"I'm not a real programmer. I throw together things until it works then I move on. The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." I’ll just restart Apache every 10 requests. "
Re: mój obfuskator - problem projektowy
#217827
Author: heby
Date: Fri, 28 Oct 2022 09:17
17 lines
2557 bytes
On 28/10/2022 11:00, Maciek Godek wrote:
>> PHP nie jest podobny do C ani C++ z kilku fudamentalnych powodów.
> A może: pod pewnymi względami jest, a pod innymi nie jest?

Tak. Ale dodałbym, że jest podobny pod względami mało istotnymi. 
Wyglądu. Czyli "klamry".

>> Zacznij od silnego typowania, wskaźników, zarządzania pamięcią, szablonów.
> W C nie ma szablonów, a typowanie też nie jest zbyt silne.

Zdanie wyżej masz "C albo C++". Nie manipuluj.

> Co do zarządzania pamięcią, oto pmiętny cytat z Rasmusa Lerdorfa:
> "I'm not a real programmer. I throw together things until it works then I move on. The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." I’ll just restart Apache every 10 requests."

Czy ktoś tutaj napisał, że C/C++ ma lepsze/gorsze zarządzanie pamięcią? 
Ma *INNE* od PHP. Podobieństwa praktycznie nie istnieją.
Re: mój obfuskator - problem projektowy
#217828
Author: Maciek Godek
Date: Fri, 28 Oct 2022 09:32
29 lines
3354 bytes
piątek, 28 października 2022 o 11:18:00 UTC+2 heby napisał(a):
> On 28/10/2022 11:00, Maciek Godek wrote: 
> >> PHP nie jest podobny do C ani C++ z kilku fudamentalnych powodów. 
> > A może: pod pewnymi względami jest, a pod innymi nie jest?
> Tak. Ale dodałbym, że jest podobny pod względami mało istotnymi. 
> Wyglądu. Czyli "klamry".

Nie tylko klamry. Z C++ zapożyczył składnię deklarowania klas.
Semantyki może nie.

W każdym razie zgoda że podobieństwo jest raczej powierzchowne.


> > Co do zarządzania pamięcią, oto pmiętny cytat z Rasmusa Lerdorfa: 
> > "I'm not a real programmer. I throw together things until it works then I move on. The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." I’ll just restart Apache every 10 requests."
> Czy ktoś tutaj napisał, że C/C++ ma lepsze/gorsze zarządzanie pamięcią? 
> Ma *INNE* od PHP. Podobieństwa praktycznie nie istnieją.

Jasne. Na tym polega podobieństwo: że pod jakimiś względami jest taki sam,
a pod innymi względami jest inny.

Gdyby pod każdym względem był taki sam, to nie byłby podobny, tylko identyczny.

Pod względem składni PHP i C są do siebie podobne.

Pod względem semantyki PHP jest bardziej podobny do Pythona, a C do Pascala.

Jak weźmiesz np. Lamborghini Diablo, i resoraka Lamborghini Diablo, to też będą do siebie podobne,
chociaż jeden z nich będzie dużo mniejszy i nie będzie nawet miał silnika.
Re: mój obfuskator - problem projektowy
#217829
Author: heby
Date: Fri, 28 Oct 2022 09:49
40 lines
3584 bytes
On 28/10/2022 11:32, Maciek Godek wrote:
>> Tak. Ale dodałbym, że jest podobny pod względami mało istotnymi.
>> Wyglądu. Czyli "klamry".
> Nie tylko klamry. Z C++ zapożyczył składnię deklarowania klas.
> Semantyki może nie.

Czyli "klamry"?

>> Czy ktoś tutaj napisał, że C/C++ ma lepsze/gorsze zarządzanie pamięcią?
>> Ma *INNE* od PHP. Podobieństwa praktycznie nie istnieją.
> Jasne. Na tym polega podobieństwo: że pod jakimiś względami jest taki sam,
> a pod innymi względami jest inny.

Pod jakimi względami zarządzanie pamięcą w PHP jest podobne do C++?

Pozwól że ja zacznę: PHP ma prymitywny RAII.

> Gdyby pod każdym względem był taki sam, to nie byłby podobny, tylko identyczny.

Rzecz w tym "podobny". Czy kangur jest podobny do fotela? Tak: oba 
obiekty składają się z fermionów.

> Pod względem składni PHP i C są do siebie podobne.

Niewątpliwie należy mocno naciągnąć tą "cechę" aby uzasadnić takie 
twierdzenia.

> Jak weźmiesz np. Lamborghini Diablo, i resoraka Lamborghini Diablo, to też będą do siebie podobne,
> chociaż jeden z nich będzie dużo mniejszy i nie będzie nawet miał silnika.

Jak by to było takie podobieństwo, to bym nie protestował.

W PHP są tylko "klamry" podobne do C++. Pozostałe cechy są skrajnie 
różne. Oba imperatywne, ale to akurat 95% języków na rynku ma tą cechę. 
PHP to zupełnie inny język, ze składnią kradzioną nie tylko z C++ ale 
również z wysypiska śmieci, chorych urojeń i przypadkowych pomysłów. 
Niewątpliwie znajdzie się tam też podobieństwo do JS, Moduli i COBOLa. 
Wystarczy mieć odpowiednio elastyczną definicję, że jak dodawanie to "+" 
to już podobne. Z czym nie ma problemu, wszak elastycznośc definicji 
jest najzwyczajniej opinią.
Re: mój obfuskator - problem projektowy
#217841
Author: Jivanmukta
Date: Fri, 28 Oct 2022 10:01
5 lines
1668 bytes
W dniu 28.10.2022 o 11:17, heby pisze:
Podobieństwa praktycznie nie istnieją.
> 
Dla mnie takie cechy jak imperatywność i obiektowość to niebanalne 
własności obu języków. Z tymi klamerkami przesadzasz.
Re: mój obfuskator - problem projektowy
#217830
Author: Maciek Godek
Date: Fri, 28 Oct 2022 10:08
61 lines
5205 bytes
piątek, 28 października 2022 o 11:49:28 UTC+2 heby napisał(a):

> >> Czy ktoś tutaj napisał, że C/C++ ma lepsze/gorsze zarządzanie pamięcią? 
> >> Ma *INNE* od PHP. Podobieństwa praktycznie nie istnieją. 
> > Jasne. Na tym polega podobieństwo: że pod jakimiś względami jest taki sam, 
> > a pod innymi względami jest inny.
> Pod jakimi względami zarządzanie pamięcą w PHP jest podobne do C++? 

To zależy jak zarządzasz pamięcią.
Np jeżeli programujesz w C tylko wywołując malloc i nigdy nie wywołując free,
to podejrzewam, że taka strategia może być identyczna ze strategią zarządzaniem
pamięcią we wczesnych wersjach PHP (czyli: cała pamięć jest zwalniana przez
system operacyjny po zakończeniu procesu).

Co do współczesnych wersji PHP, to jeżeli np. używasz funkcji shmop_*,
to zarządzanie taką pamięcią niewiele się różni od tego, co byś pisał w C.

> Pozwól że ja zacznę: PHP ma prymitywny RAII.
> > Gdyby pod każdym względem był taki sam, to nie byłby podobny, tylko identyczny.
> Rzecz w tym "podobny". Czy kangur jest podobny do fotela? Tak: oba 
> obiekty składają się z fermionów.
> > Pod względem składni PHP i C są do siebie podobne.
> Niewątpliwie należy mocno naciągnąć tą "cechę" aby uzasadnić takie 
> twierdzenia.

Nieprawda.
Składnia pętli for jest praktycznie identyczna. Podobnie jak pozostałe
instrukcje sterujące (if, while, switch, do while).
Nazwy wielu funkcji operujących na stringach są żywcem wzięte
z biblioteki standardowej języka C.
W PHP jest nawet funkcja "define", która została tak "zaprojektowana",
żeby przypominać preprocesor języka C (którego wielu programistów
używało do definiowania stałych w programie)

> > Jak weźmiesz np. Lamborghini Diablo, i resoraka Lamborghini Diablo, to też będą do siebie podobne, 
> > chociaż jeden z nich będzie dużo mniejszy i nie będzie nawet miał silnika.
> Jak by to było takie podobieństwo, to bym nie protestował. 

To jest dokładnie takie podobieństwo.
Jedno i drugie to zabawka, tylko jedna bardziej niebezpieczna.
Choć nawet i to jest dość pozorne, bo choć mogłoby się wydawać,
że nikt nie będzie próbował jeździć resorakiem po prawdziwych drogach,
programiści oczywiście zaczęli to robić, i w efekcie trudno powiedzieć,
co jest bardziej niebezpieczne.

> W PHP są tylko "klamry" podobne do C++. Pozostałe cechy są skrajnie 
> różne. Oba imperatywne, ale to akurat 95% języków na rynku ma tą cechę. 
> PHP to zupełnie inny język, ze składnią kradzioną nie tylko z C++ ale 
> również z wysypiska śmieci, chorych urojeń i przypadkowych pomysłów. 

Czyli z dokładnie tych samych źródeł, co C++. Kolejne podobieństwo.

> Niewątpliwie znajdzie się tam też podobieństwo do JS, Moduli i COBOLa. 
> Wystarczy mieć odpowiednio elastyczną definicję, że jak dodawanie to "+" 
> to już podobne. Z czym nie ma problemu, wszak elastycznośc definicji 
> jest najzwyczajniej opinią.


Dokładnie.
Dlatego spieranie się, że coś jest "zupełnie niepodobne do czegoś innego",
nie ma większego sensu.
Re: mój obfuskator - problem projektowy
#217842
Author: Tomasz Kaczanowski
Date: Fri, 28 Oct 2022 10:09
18 lines
2220 bytes
W dniu 28.10.2022 o 12:01, Jivanmukta napisał:
> W dniu 28.10.2022 o 11:17, heby pisze:
> Podobieństwa praktycznie nie istnieją.
>>
> Dla mnie takie cechy jak imperatywność i obiektowość to niebanalne 
> własności obu języków. Z tymi klamerkami przesadzasz.
> 

Ale obiektowość możesz uzyskać w wielu innych językach. Jest kwestia 
tego jak jest wspierana i jak zaimplementowana.

Inna rzecz, ze samo podobieństwo - to kwestia indywidualnej optyki. Nam 
się wydaje na przykład, że większość azjatów się od siebie nie różni, bo 
patrzymy na pewne szczególne punkty przy ocenie. Azjaci patrzą na inne i 
oni bez problemu się rozróżniają.

-- 
http://kaczus.ppa.pl
Re: mój obfuskator - problem projektowy
#217831
Author: heby
Date: Fri, 28 Oct 2022 10:32
93 lines
6096 bytes
On 28/10/2022 12:08, Maciek Godek wrote:
> To zależy jak zarządzasz pamięcią.

Oczywiście. Wszak w C++ można używać np. garbage collectorow. Co czyni 
go podobnym do Javy. Prawda?

W tym tępie dojdziemy za chwilę do wniosku, że wszystkie języki 
programowania są identyczne. W końcu każdy jest turing-complete, wiec 
można emulować w każdym co tylko sobie chcesz.

> Np jeżeli programujesz w C tylko wywołując malloc i nigdy nie wywołując free,
> to podejrzewam, że taka strategia może być identyczna ze strategią zarządzaniem
> pamięcią we wczesnych wersjach PHP (czyli: cała pamięć jest zwalniana przez
> system operacyjny po zakończeniu procesu).

Oooo właśnie. Gdyby na przykład do koparki przymocowasz szpadel zamiast 
lemiesza, to taka strategia może być bardzo podobna do Kazika z łopatą. 
Co czyni Kazika i koparkę podobnymi.

> Co do współczesnych wersji PHP, to jeżeli np. używasz funkcji shmop_*,
> to zarządzanie taką pamięcią niewiele się różni od tego, co byś pisał w C.

A używasz i/lub znasz kogoś kto używa? I wiesz, że nie są do tego samego 
co malloc/new?


>> Niewątpliwie należy mocno naciągnąć tą "cechę" aby uzasadnić takie
>> twierdzenia.
> Nieprawda.
> Składnia pętli for jest praktycznie identyczna.

Serio? W C++, który ma być ponoć podobny, jest:

for( auto x : container) [...]

> Podobnie jak pozostałe
> instrukcje sterujące (if, while, switch, do while).

A wies,z że są prawi identyczne równiez w JS, Javie i wielu innych? 
Zaryzykujesz, że Java i C++ to jezyki "podobne" bo mają te same 
instrukcje co prawie każdy jezyki imperatywny?

W takich oparach absurdu będzie cieżko znaleźc język "niepodobny". No 
chyba, że brainfuck.

> Nazwy wielu funkcji operujących na stringach są żywcem wzięte
> z biblioteki standardowej języka C.

I trylion innych, niepodobnych, do obsługi stringów, z czego te podobne 
do C w zasadzie mogą być używane przez bylekogo - kwestia abi do glibc 
lub nazwania funkcji.

> W PHP jest nawet funkcja "define", która została tak "zaprojektowana",
> żeby przypominać preprocesor języka C (którego wielu programistów
> używało do definiowania stałych w programie)

Do robienia prymitywnych substytutów. #define w C jest o wiele bardziej 
skomplikowana, co nie jest, zaznaczam, ani trochę zaletą.

>>> Jak weźmiesz np. Lamborghini Diablo, i resoraka Lamborghini Diablo, to też będą do siebie podobne,
>>> chociaż jeden z nich będzie dużo mniejszy i nie będzie nawet miał silnika.
>> Jak by to było takie podobieństwo, to bym nie protestował.
> To jest dokładnie takie podobieństwo.

Nie, to dwa różne języki o wspólnej inspiracji. *Ważnych* detali je 
różniących jest zdecydowanie za dużo, aby była mowa o tym że są podobne, 
bo "klamry".

>> W PHP są tylko "klamry" podobne do C++. Pozostałe cechy są skrajnie
>> różne. Oba imperatywne, ale to akurat 95% języków na rynku ma tą cechę.
>> PHP to zupełnie inny język, ze składnią kradzioną nie tylko z C++ ale
>> również z wysypiska śmieci, chorych urojeń i przypadkowych pomysłów.
> Czyli z dokładnie tych samych źródeł, co C++. Kolejne podobieństwo.

"Kolega pisze na komputerze a ja długopisem. Dlatego właśnie można 
powiedzieć, że robimy to bardzo podobnie, bo oboje piszemy".

Jesteś pewny, że rozumiesz słowo "podobieństwo" tak samo jak reszta 
ludzkości?

>> Niewątpliwie znajdzie się tam też podobieństwo do JS, Moduli i COBOLa.
>> Wystarczy mieć odpowiednio elastyczną definicję, że jak dodawanie to "+"
>> to już podobne. Z czym nie ma problemu, wszak elastycznośc definicji
>> jest najzwyczajniej opinią.
> Dokładnie.
> Dlatego spieranie się, że coś jest "zupełnie niepodobne do czegoś innego",
> nie ma większego sensu.

Nie ma, ale tu usenet a ja ciągle nie wiem gdzie PHP jest podobny do 
C++. Miałem szczerą nadzieję, że w świecie PHP, z którym zerwałem 
kontakt 20 lat temu, coś ciekawego się wydarzyło. A tu dalej "klamry, 
jak w C++". Nawet w dokumentacji takie informacje. Aż strach pomyśleć, 
jak ktoś w to uwierzy, że to "prawie jak w C++".
Re: mój obfuskator - problem projektowy
#217839
Author: heby
Date: Fri, 28 Oct 2022 10:48
4 lines
1894 bytes
On 28/10/2022 12:32, heby wrote:
> W tym tępie

tempie.
Re: mój obfuskator - problem projektowy
#217832
Author: Maciek Godek
Date: Fri, 28 Oct 2022 10:59
109 lines
6670 bytes
piątek, 28 października 2022 o 12:32:17 UTC+2 heby napisał(a):
> On 28/10/2022 12:08, Maciek Godek wrote: 
> > To zależy jak zarządzasz pamięcią.
> Oczywiście. Wszak w C++ można używać np. garbage collectorow. Co czyni 
> go podobnym do Javy. Prawda? 

Java pod wieloma innymi względami jest podobna do C++.

> W tym tępie dojdziemy za chwilę do wniosku, że wszystkie języki 
> programowania są identyczne.

Raczej nie dojdziemy do tego, że są identyczne,
w każdym razie nie bez poważnych błędów w rozumowaniu.

> > Co do współczesnych wersji PHP, to jeżeli np. używasz funkcji shmop_*, 
> > to zarządzanie taką pamięcią niewiele się różni od tego, co byś pisał w C.
> A używasz i/lub znasz kogoś kto używa?

Zdarzyło mi się.

> >> Niewątpliwie należy mocno naciągnąć tą "cechę" aby uzasadnić takie 
> >> twierdzenia. 
> > Nieprawda. 
> > Składnia pętli for jest praktycznie identyczna.
> Serio? W C++, który ma być ponoć podobny, jest:
> for( auto x : container) [...]

No widzisz.
W PHP też jest for_each, który się różni od tego co masz w C
(i jest - uwaga uwaga - bardziej podobny do tego co masz w C++)

> > Podobnie jak pozostałe 
> > instrukcje sterujące (if, while, switch, do while).
> A wies,z że są prawi identyczne równiez w JS, Javie i wielu innych? 

Tak. Jak również to, że są języki, w których ich nie ma.
Bo - uwaga uwaga - JS i Java też są składniowo podobne do C.

(Natomiast mniej podobne składniowo są np. Lua, Ruby czy Python)

> Zaryzykujesz, że Java i C++ to jezyki "podobne" bo mają te same 
> instrukcje co prawie każdy jezyki imperatywny? 

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)

> W takich oparach absurdu będzie cieżko znaleźc język "niepodobny". No 
> chyba, że brainfuck.

Również Forth jest dość mocno niepodobny.
Tzn. ok, jest podobny pod tym względem, że można w nim używać słów.

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

> > W PHP jest nawet funkcja "define", która została tak "zaprojektowana", 
> > żeby przypominać preprocesor języka C (którego wielu programistów 
> > używało do definiowania stałych w programie)
> Do robienia prymitywnych substytutów. #define w C jest o wiele bardziej 
> skomplikowana, co nie jest, zaznaczam, ani trochę zaletą.

Owszem.

> >>> Jak weźmiesz np. Lamborghini Diablo, i resoraka Lamborghini Diablo, to też będą do siebie podobne, 
> >>> chociaż jeden z nich będzie dużo mniejszy i nie będzie nawet miał silnika. 
> >> Jak by to było takie podobieństwo, to bym nie protestował. 
> > To jest dokładnie takie podobieństwo.
> Nie, to dwa różne języki o wspólnej inspiracji. *Ważnych* detali je 
> różniących jest zdecydowanie za dużo, aby była mowa o tym że są podobne, 
> bo "klamry".

Ale te "klamry" to Ty powiedziałeś.

> >> W PHP są tylko "klamry" podobne do C++. Pozostałe cechy są skrajnie 
> >> różne. Oba imperatywne, ale to akurat 95% języków na rynku ma tą cechę. 
> >> PHP to zupełnie inny język, ze składnią kradzioną nie tylko z C++ ale 
> >> również z wysypiska śmieci, chorych urojeń i przypadkowych pomysłów. 
> > Czyli z dokładnie tych samych źródeł, co C++. Kolejne podobieństwo.
> "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.

> Jesteś pewny, że rozumiesz słowo "podobieństwo" tak samo jak reszta 
> ludzkości?

Podobieństwo dwóch przedmiotów rozumiem w taki sposób,
że istnieją w tych przedmiotach pewne cechy, które są identyczne.

A Ty jak rozumiesz? (I jak rozumiesz, że reszta ludzkości rozumie?)


> Nie ma, ale tu usenet a ja ciągle nie wiem gdzie PHP jest podobny do 
> C++.

Nie wiesz, bo nie pytasz po to, żeby się dowiedzieć, tylko po to,
żeby się dowartościować i pokazać swoją wyższość nad rozmówcą.

> Miałem szczerą nadzieję, że w świecie PHP, z którym zerwałem 
> kontakt 20 lat temu, coś ciekawego się wydarzyło.

Wydarzyło. W PHP5.2 wprowadzono domknięcia, w PHP7 uproszczono składnię,
w PHP8 zdaje się usprawniono wydajność.

> Aż strach pomyśleć,  jak ktoś w to uwierzy, że to "prawie jak w C++".

Bo co się wtedy stanie?
Re: mój obfuskator - problem projektowy
#217840
Author: Maciek Godek
Date: Fri, 28 Oct 2022 11:01
7 lines
2199 bytes
piątek, 28 października 2022 o 12:48:38 UTC+2 heby napisał(a):
> On 28/10/2022 12:32, heby wrote: 
> > W tym tępie 
> 
> tempie.

Tępię.
Re: mój obfuskator - problem projektowy
#217833
Author: heby
Date: Fri, 28 Oct 2022 11:37
152 lines
8854 bytes
On 28/10/2022 12:59, Maciek Godek wrote:
>> Oczywiście. Wszak w C++ można używać np. garbage collectorow. Co czyni
>> go podobnym do Javy. Prawda?
> Java pod wieloma innymi względami jest podobna do C++.

Dokładnie tak jak PHP jest podobny do C++.

Algol też się chyba złapie. Ma if-y.

>>> Składnia pętli for jest praktycznie identyczna.
>> Serio? W C++, który ma być ponoć podobny, jest:
>> for( auto x : container) [...]
> No widzisz.
> W PHP też jest for_each, który się różni od tego co masz w C
> (i jest - uwaga uwaga - bardziej podobny do tego co masz w C++)

"bardziej podobny" do daleko posunięty otymizm. Ma inną składnię.

Napisałeś "jest praktycznie identyczna". Nie jest. Składnia foreach w 
PHP wygląda inaczej.

Wiele języków ma iteracje po kontenerach. Czy czyni je składniowo 
podobnymi do siebie?

A może to najzwyczajniej podstawowa jednostka każdego języka imperatywnego?

>>> Podobnie jak pozostałe
>>> instrukcje sterujące (if, while, switch, do while).
>> A wies,z że są prawi identyczne równiez w JS, Javie i wielu innych?
> Tak. Jak również to, że są języki, w których ich nie ma.
> Bo - uwaga uwaga - JS i Java też są składniowo podobne do C.

Znowu masz szeroko pojęte "podobieństwo" które na koniec sprowadza się 
do "bo też ma klamry i ify".

> (Natomiast mniej podobne składniowo są np. Lua, Ruby czy Python)

Zauważyłes, że auto wątku na początku nic nie mówił o jakieś "składni" a 
jedynie że "lubi języki podobne do C++"? Dopiero po wymęczeniu go 
pytaniam okazało się, że chodzi o klamry. Ku mojemu zasmuceniu, bo 
miałem nadzieję, że komisja z 7C wraz z trójką klasową, dokonali jakichś 
istotnych zmian w tym języku, co uzasadnia to twierdzenie. A tu 
"klamry". Czyli jak zwykle. Doceniam genryki w Javie, to było coś, co 
uznałbym za rewolucję, gdyby pojawiło się w PHP.

Nie wiem, czy wiesz, aje hasło "klamry" nie wymyśliłem ja. To poprawny 
termin, oreślający cała rodzinę języków, o zupełnie różnych 
paradygmatach, budowie, zastosowaniu, których jedyną cechą wspólną jest 
{}. No i może if/for, choć nie zawsze.

>> Zaryzykujesz, że Java i C++ to jezyki "podobne" bo mają te same
>> instrukcje co prawie każdy jezyki imperatywny?
> 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?

>> W takich oparach absurdu będzie cieżko znaleźc język "niepodobny". No
>> chyba, że brainfuck.
> Również Forth jest dość mocno niepodobny.
> Tzn. ok, jest podobny pod tym względem, że można w nim używać słów.

Idziesz w dobrą stronę. Jeszcze tylko jeden krok: jesli język używa 
bajtów, to jest podobny do innych języków używających bajtów. Nie łapie 
się tylko BCPL, ale to żadna strata, a wręcz zaleta.

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

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

Nagle spacja "to nie słowo" ale już zarządzanie pamięcią to "prawie to 
samo co w C++". Raczysz żartować?

>> Nie, to dwa różne języki o wspólnej inspiracji. *Ważnych* detali je
>> różniących jest zdecydowanie za dużo, aby była mowa o tym że są podobne,
>> bo "klamry".
> Ale te "klamry" to Ty powiedziałeś.

Te klamry to poprawny termin określający cały zbiór róznych języków 
programowania. Spytaj google.

>> "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. 
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++. I tu i tu słowa, niektóre nawet podobne. Pikuś. To to samo.

>> Jesteś pewny, że rozumiesz słowo "podobieństwo" tak samo jak reszta
>> ludzkości?
> 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? Bo ja widzę podobieństwo "klamry" od samego 
początku tej dysputy. Co powoduje zamęt, no bo jak tak można? Wszak sa 
jeszcze if'y!

> A Ty jak rozumiesz? (I jak rozumiesz, że reszta ludzkości rozumie?)

Reszta ludzkości rozumie, że aby dysputować należy poznać stanowisko 
drugiej strony. Moje stanowisko jest takie, że poza "klamrami" nie ma w 
PHP nic podobnego do C++. Napisane bodaj w 3 poście.

Jak na razie nie udało się znaleźc nic innego, podobnego, między C++ i 
PHP. Tylko klamry. Zaznaczam, że strcmp itd są dostępne przez abi z 
dowolnego języka, wiec cięzko mówić, że to cecha specyficzna dla C++.

>> Nie ma, ale tu usenet a ja ciągle nie wiem gdzie PHP jest podobny do
>> C++.
> Nie wiesz, bo nie pytasz po to, żeby się dowiedzieć, tylko po to,
> żeby się dowartościować i pokazać swoją wyższość nad rozmówcą.

"Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
cechy PHP są podobne do C++ i Ci się spodobały?"

Napisałem to na początku tej dyskusji.

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.

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.

Mam do niego pewien sentyment. I liczę na to, że coś poprawili. Nie. Nie 
poprawili. Mieszają herbatę i mówią, że coraz słodsza.

>> Miałem szczerą nadzieję, że w świecie PHP, z którym zerwałem
>> kontakt 20 lat temu, coś ciekawego się wydarzyło.
> Wydarzyło. W PHP5.2 wprowadzono domknięcia, w PHP7 uproszczono składnię,
> w PHP8 zdaje się usprawniono wydajność.

Ale to są rewolucje, poprawki na błedy czy ewolucja?

>> Aż strach pomyśleć,  jak ktoś w to uwierzy, że to "prawie jak w C++".
> Bo co się wtedy stanie?

Napisze w tym system bankowy, jak już w wątku padło. W końcu 
programatora PHP łatwiej trafić niż hackera od COBOLa, wiec cel 
biznesowy zasadny.
Re: mój obfuskator - problem projektowy
#217838
Author: Mateusz Viste
Date: Fri, 28 Oct 2022 11:49
24 lines
2699 bytes
2022-10-28 o 03:59 -0700, Maciek Godek napisał:
> W PHP też jest for_each, który się różni od tego co masz w C
> (i jest - uwaga uwaga - bardziej podobny do tego co masz w C++)

Niezaczepnie poprawię: foreach()
Bardzo przyjemna sprawa swoją szosą.

Od C++ trzymam się jak najdalej, ale coby domieszać swoje 3 gr. wtrącę
tylko, że regularnie piszę w PHP. Prymitywnie, bo nie jestem żadnym
web programistą, ale jednak. Jedna z cech, która bardzo mi się podoba w
PHP to jego podobieństwo do C. W sensie, że po programowaniu w dzień w
C mogę przesiąść się wieczorem na chwilę żeby poskrobać coś w PHP i
czuję się "prawie jak w domu". Przy czym uściślę, że nie używam żadnego
OOP, moje amatorskie PHP jest wyłącznie proceduralne.

Druga fajna cecha to łatwość obsługi zapytań http w tym języku.
Kilkanaście lat temu pisałem trochę w CGI, via C. W porównaniu do tego,
PHP jest niesamowicie przyjaznym środowiskiem.

Trzecia fajna cecha to fakt, że PHP jest wszędzie. I to chyba
zamyka listę PHP-owych fajności.


Mateusz
Re: mój obfuskator - problem projektowy
#217834
Author: Maciek Godek
Date: Fri, 28 Oct 2022 12:11
174 lines
9627 bytes
piątek, 28 października 2022 o 13:37:43 UTC+2 heby napisał(a):
> On 28/10/2022 12:59, Maciek Godek wrote: 
> >> Oczywiście. Wszak w C++ można używać np. garbage collectorow. Co czyni 
> >> go podobnym do Javy. Prawda? 
> > Java pod wieloma innymi względami jest podobna do C++.
> Dokładnie tak jak PHP jest podobny do C++. 

Nie, zupełnie inaczej.

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

> >>> Składnia pętli for jest praktycznie identyczna. 
> >> Serio? W C++, który ma być ponoć podobny, jest: 
> >> for( auto x : container) [...] 
> > No widzisz. 
> > W PHP też jest for_each, który się różni od tego co masz w C 
> > (i jest - uwaga uwaga - bardziej podobny do tego co masz w C++)
> "bardziej podobny" do daleko posunięty otymizm. Ma inną składnię. 
> 
> Napisałeś "jest praktycznie identyczna". Nie jest. Składnia foreach w 
> PHP wygląda inaczej. 

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.

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

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

Na pewno nie każdego.

> >>> Podobnie jak pozostałe 
> >>> instrukcje sterujące (if, while, switch, do while). 
> >> A wies,z że są prawi identyczne równiez w JS, Javie i wielu innych? 
> > Tak. Jak również to, że są języki, w których ich nie ma. 
> > Bo - uwaga uwaga - JS i Java też są składniowo podobne do C.
> 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 ...

> > (Natomiast mniej podobne składniowo są np. Lua, Ruby czy Python)
> Zauważyłes, że auto wątku na początku nic nie mówił o jakieś "składni" a 
> jedynie że "lubi języki podobne do C++"? Dopiero po wymęczeniu go 
> pytaniam okazało się, że chodzi o klamry.

Nie. Napisał, że chodzi o składnię.
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.

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

Zresztą to jest istatota słowa "lubić".
Po angielsku masz "like" -- "I like something" -- "lubę coś",
tzn. "coś PODOBA mi się" (jak w "PODOBIEŃSTWIE").

> >> Zaryzykujesz, że Java i C++ to jezyki "podobne" bo mają te same 
> >> instrukcje co prawie każdy jezyki imperatywny? 
> > 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.

> >> W takich oparach absurdu będzie cieżko znaleźc język "niepodobny". No 
> >> chyba, że brainfuck. 
> > Również Forth jest dość mocno niepodobny. 
> > Tzn. ok, jest podobny pod tym względem, że można w nim używać słów.
> Idziesz w dobrą stronę. Jeszcze tylko jeden krok: jesli język używa 
> bajtów, to jest podobny do innych języków używających bajtów. Nie łapie 
> się tylko BCPL, ale to żadna strata, a wręcz zaleta. 
> 
> 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.

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

> >> Nie, to dwa różne języki o wspólnej inspiracji. *Ważnych* detali je 
> >> różniących jest zdecydowanie za dużo, aby była mowa o tym że są podobne, 
> >> bo "klamry". 
> > Ale te "klamry" to Ty powiedziałeś.
> 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.

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

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

> >> Jesteś pewny, że rozumiesz słowo "podobieństwo" tak samo jak reszta 
> >> ludzkości? 
> > 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.

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

> 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ł.
Bo PHP po prostu zmałpował wiele nazw funkcji z biblioteki standardowej C.

> >> Nie ma, ale tu usenet a ja ciągle nie wiem gdzie PHP jest podobny do 
> >> C++. 
> > Nie wiesz, bo nie pytasz po to, żeby się dowiedzieć, tylko po to, 
> > żeby się dowartościować i pokazać swoją wyższość nad rozmówcą.
> "Interesująca teza o tym podobieństwie do C++. Możesz rozwinąc jakie 
> cechy PHP są podobne do C++ i Ci się spodobały?" 
> 
> Napisałem to na początku tej dyskusji. 

No, i OP również odpisał na początku dyskusji.

> 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.
Nie wiem, czy PHP nie był.
Wszystkie te rzeczy powstawały w jakimś tam swoim kontekście,
nie czuję się w pozycji oceniania kompetencji ich twórców.

Ale pod względem jakości projektu oba są siebie warte.

> 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!)
Re: mój obfuskator - problem projektowy
#217835
Author: 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.
Re: mój obfuskator - problem projektowy
#217836
Author: Mateusz Viste
Date: Fri, 28 Oct 2022 13:29
15 lines
2278 bytes
2022-10-28 o 05:11 -0700, Maciek Godek napisał:
> Jak wywołujesz w PHP substr, to nie wywołujesz funkcji w C, tylko
> funkcję w PHP, którą ktoś tak nazwał.
> Bo PHP po prostu zmałpował wiele nazw funkcji z biblioteki
> standardowej C.

Znów się niekulturalnie wtrącę.

To małpowanie nazw ma swoje limity. Fajne, bo człowiek od razu wie,
czego szukać i ma wrażenie, że wie co robi... do czasu, kiedy
rzeczywistość uświadomi go, że jest jednak na obcej ziemi. Taki np.
sprintf() zwraca zupełnie co innego, niż jego odpowiednik w C.
Chwila nieuwagi i można się nadziać.

Mateusz
Re: mój obfuskator - problem projektowy
#217837
Author: Jivanmukta
Date: Fri, 28 Oct 2022 14:11
11 lines
2383 bytes
W dniu 28.10.2022 o 14:11, Maciek Godek pisze:
> Nie. Napisał, że chodzi o składnię.
> 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.

Oto właśnie mi chodziło. Programowałem trochę w C++ (MFC/Windows), potem 
robiłem inne rzeczy, potem zająłem się właśnie PHP i wcale nie musiałem 
się dużo uczyć, żeby pisać w nim programy o wielkości 20 KLOC. Stąd moje 
wrażenie o podobieństwie C++ i PHP. Ale nie jestem jeszcze 
profesjonalistą w PHP.
Page 1 of 2 • 66 total messages
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads