Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

mój obfuskator - problem projektowy

34 views
Skip to first unread message

Jivanmukta

unread,
Oct 24, 2022, 9:42:08 AM10/24/22
to
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ę.

heby

unread,
Oct 24, 2022, 9:44:22 AM10/24/22
to
On 24/10/2022 15:42, Jivanmukta wrote:
> Napisałem w C++ obfuskator PHP

Komu i do czego to jest potrzebne?

Jivanmukta

unread,
Oct 25, 2022, 6:46:27 AM10/25/22
to
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?

heby

unread,
Oct 25, 2022, 11:31:17 AM10/25/22
to
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.

J-23

unread,
Oct 25, 2022, 2:34:57 PM10/25/22
to
W dniu 24.10.2022 o 15:42, Jivanmukta pisze:
> 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?

Wnioskuje po zapytaniu ze próbujesz zrobić narzędzie które będziesz
sprzedawał/dystrybuował na szerszą skale. Pytanie to nie powinno być na
grupę a do pierwszej partii klientów którzy ten produkt otrzymają.
Sposobów przyspieszenia tego jest dużo, ale tez nie będzie to proste w
implementacji. Musisz przeanalizować sobie gdzie jest dla Ciebie punkt
który zadowoli Ciebie lub Twoich klientów.

Pozdrawiam


Jivanmukta

unread,
Oct 25, 2022, 11:58:12 PM10/25/22
to
W dniu 25.10.2022 o 20:35, J-23 pisze:
> Sposobów przyspieszenia tego jest dużo, ale tez nie będzie to proste w
> implementacji.
Ale czy jakąś optymalizację konkretnie masz na myśli?

--
Ta wiadomość e-mail została sprawdzona pod kątem wirusów przez oprogramowanie antywirusowe AVG.
www.avg.com

Jivanmukta

unread,
Oct 26, 2022, 12:00:31 AM10/26/22
to
W dniu 25.10.2022 o 17:31, heby pisze:
Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za
gówniane. Lubię C++ i języki do niego podobne.

heby

unread,
Oct 26, 2022, 3:18:52 AM10/26/22
to
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?

Jivanmukta

unread,
Oct 26, 2022, 6:00:32 AM10/26/22
to
W dniu 26.10.2022 o 09:18, heby pisze:
Składnia.

Jivanmukta

unread,
Oct 26, 2022, 6:04:34 AM10/26/22
to
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ść.

heby

unread,
Oct 26, 2022, 6:08:27 AM10/26/22
to
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?

heby

unread,
Oct 26, 2022, 6:09:29 AM10/26/22
to
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.

Jivanmukta

unread,
Oct 26, 2022, 6:17:40 AM10/26/22
to
W dniu 26.10.2022 o 12:08, heby pisze:
Dobrze wiesz że nie.

heby

unread,
Oct 26, 2022, 6:33:52 AM10/26/22
to
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?

Jivanmukta

unread,
Oct 26, 2022, 7:01:54 AM10/26/22
to
W dniu 26.10.2022 o 04:00, Jivanmukta pisze:
> Mnie PHP bardzo odpowiada a ostatnie wersje PHP wcale nie uważam za
> gówniane. Lubię C++ i języki do niego podobne.
>
Poza tym jestem Linuxiarzem i cenię sobie stabilność PHP i mnogość
(darmowych) narzędzi i pakietów.

Jivanmukta

unread,
Oct 26, 2022, 7:07:30 AM10/26/22
to
W dniu 26.10.2022 o 12:09, heby pisze:
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.

Jivanmukta

unread,
Oct 26, 2022, 7:08:48 AM10/26/22
to
W dniu 26.10.2022 o 12:33, heby pisze:
Tak, klamry i składnia instrukcji, danych i klas.

Jivanmukta

unread,
Oct 26, 2022, 7:11:13 AM10/26/22
to
W dniu 26.10.2022 o 13:01, Jivanmukta pisze:
Frameworki są też niezłe; ja używam CodeIgniter bo do moich projektów
wystarczy a jest prosty w użyciu i ma świetną dokumentację. Poza tym
lubię MVC.

Jivanmukta

unread,
Oct 26, 2022, 8:46:55 AM10/26/22
to
Mam jeszcze jedno pytanie: mój program wywołuje w czasie działania
skrypty napisane w PHP8 (bo dopiero w ósemce tokenizacja jest
wystarczająco dobrze zrobiona) - czy to nie będzie kłopotliwe, że
użytkownik (będący w 85% programistą PHP) mojego programu będzie musiał
mieć zainstalowane PHP ver.8? (oczywiście może mieć na komputerze też
inne wersje PHP, bo PHP pozwala na współużytkowanie wielu swoich
wersji). Mój program działa pod Linuxem i pod Windows (.exe).

heby

unread,
Oct 26, 2022, 8:49:27 AM10/26/22
to
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!

heby

unread,
Oct 26, 2022, 8:51:05 AM10/26/22
to
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?

Jivanmukta

unread,
Oct 26, 2022, 12:04:20 PM10/26/22
to
W dniu 26.10.2022 o 14:51, heby pisze:
Moje programy są czytelne.

Jivanmukta

unread,
Oct 26, 2022, 12:33:51 PM10/26/22
to
W dniu 26.10.2022 o 18:04, Jivanmukta pisze:
czytelne, zrefaktoryzowane, dobrze skomentowane, przetestowane i wydajne

Jivanmukta

unread,
Oct 26, 2022, 12:39:27 PM10/26/22
to
W dniu 26.10.2022 o 14:51, heby pisze:
Mnie martwi raczej coś innego: jak długo pociągnie PHP, bo popularność
spada, chociaż język się rozwija.

heby

unread,
Oct 26, 2022, 2:17:32 PM10/26/22
to
On 26/10/2022 18:04, Jivanmukta wrote:
>> 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.

Dla klientów?

heby

unread,
Oct 26, 2022, 2:18:03 PM10/26/22
to
On 26/10/2022 18:33, Jivanmukta wrote:
> wydajne

Dalej mowa o PHP? Bo się pogubiłem.

Jivanmukta

unread,
Oct 26, 2022, 3:20:23 PM10/26/22
to
W dniu 26.10.2022 o 20:17, heby pisze:
Dla mnie. Na razie mam jednego stałego klienta który nie czyta kodu.

Jivanmukta

unread,
Oct 27, 2022, 12:47:17 AM10/27/22
to
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.

heby

unread,
Oct 27, 2022, 3:29:25 AM10/27/22
to
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.

Maciek Godek

unread,
Oct 27, 2022, 5:40:02 AM10/27/22
to
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.

Jivanmukta

unread,
Oct 27, 2022, 5:45:52 AM10/27/22
to
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ą.

Tomasz Kaczanowski

unread,
Oct 27, 2022, 6:19:00 AM10/27/22
to
Ale przecież szablony to też na długo przed 98 rokiem były w C++...

--
http://zrzeda.pl


heby

unread,
Oct 27, 2022, 7:07:10 AM10/27/22
to
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?

Jivanmukta

unread,
Oct 27, 2022, 11:37:23 AM10/27/22
to
W dniu 26.10.2022 o 20:17, heby pisze:
> On 26/10/2022 18:33, Jivanmukta wrote:
>> wydajne
>
> Dalej mowa o PHP? Bo się pogubiłem.
>
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.

heby

unread,
Oct 27, 2022, 11:54:05 AM10/27/22
to
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...

Jivanmukta

unread,
Oct 27, 2022, 12:28:19 PM10/27/22
to
W dniu 27.10.2022 o 17:54, heby pisze:
> od względem szybkości lepiej wypada PHP. Najnowsza wersja PHP jest
> prawie trzykrotnie szybsza od typowego programu Pythona

Istotne jest to:

Pod względem szybkości lepiej wypada PHP. Najnowsza wersja PHP jest
prawie trzykrotnie szybsza od typowego programu Pythona.

Czy może programujesz w Pythonie?

heby

unread,
Oct 27, 2022, 12:54:11 PM10/27/22
to
On 27/10/2022 18:28, Jivanmukta wrote:
> Istotne jest to:
> Pod względem szybkości lepiej wypada PHP. Najnowsza wersja PHP jest
> prawie trzykrotnie szybsza od typowego programu Pythona.

Dlatego też mówie, że mój Chevrolet jest trzyktonie szybszy od Malucha i
to jest istotne.

> Czy może programujesz w Pythonie?

Czasami.

Maciek Godek

unread,
Oct 28, 2022, 3:29:50 AM10/28/22
to
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ć)

Tomasz Kaczanowski

unread,
Oct 28, 2022, 4:11:46 AM10/28/22
to
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


Jivanmukta

unread,
Oct 28, 2022, 4:17:49 AM10/28/22
to
I jeszcze symbole operatorów i komentarzy są podobne w obu językach.

heby

unread,
Oct 28, 2022, 4:17:49 AM10/28/22
to
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.

heby

unread,
Oct 28, 2022, 4:18:31 AM10/28/22
to
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".


Jivanmukta

unread,
Oct 28, 2022, 4:30:04 AM10/28/22
to
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.

heby

unread,
Oct 28, 2022, 4:34:26 AM10/28/22
to
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.

Maciek Godek

unread,
Oct 28, 2022, 4:53:29 AM10/28/22
to
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)

Maciek Godek

unread,
Oct 28, 2022, 5:00:57 AM10/28/22
to
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. "

heby

unread,
Oct 28, 2022, 5:18:00 AM10/28/22
to
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ą.

Maciek Godek

unread,
Oct 28, 2022, 5:32:11 AM10/28/22
to
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.

heby

unread,
Oct 28, 2022, 5:49:28 AM10/28/22
to
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ą.

Jivanmukta

unread,
Oct 28, 2022, 6:01:10 AM10/28/22
to
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.

Maciek Godek

unread,
Oct 28, 2022, 6:08:02 AM10/28/22
to
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.

Tomasz Kaczanowski

unread,
Oct 28, 2022, 6:09:20 AM10/28/22
to
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

heby

unread,
Oct 28, 2022, 6:32:17 AM10/28/22
to
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++".

heby

unread,
Oct 28, 2022, 6:48:38 AM10/28/22
to
On 28/10/2022 12:32, heby wrote:
> W tym tępie

tempie.

Maciek Godek

unread,
Oct 28, 2022, 6:59:58 AM10/28/22
to
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?

Maciek Godek

unread,
Oct 28, 2022, 7:01:26 AM10/28/22
to
Tępię.

heby

unread,
Oct 28, 2022, 7:37:43 AM10/28/22
to
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.

Mateusz Viste

unread,
Oct 28, 2022, 7:49:38 AM10/28/22
to
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

Maciek Godek

unread,
Oct 28, 2022, 8:11:57 AM10/28/22
to
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!)

heby

unread,
Oct 28, 2022, 8:57:38 AM10/28/22
to
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.

Mateusz Viste

unread,
Oct 28, 2022, 9:29:14 AM10/28/22
to
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

Jivanmukta

unread,
Oct 28, 2022, 10:11:30 AM10/28/22
to
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.

Jivanmukta

unread,
Nov 2, 2022, 12:34:50 AM11/2/22
to
W dniu 25.10.2022 o 20:35, J-23 pisze:
> Wnioskuje po zapytaniu ze próbujesz zrobić narzędzie które będziesz
> sprzedawał/dystrybuował na szerszą skale. Pytanie to nie powinno być na
> grupę a do pierwszej partii klientów którzy ten produkt otrzymają.

Klientami obfuskatora będą głównie programiści PHP. Dlatego pytanie
zadałem na tej grupie.

Jivanmukta

unread,
Nov 2, 2022, 8:37:38 AM11/2/22
to
W dniu 27.10.2022 o 17:54, heby pisze:
> 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...
>
system bankowy NORDEA jest napisany w php

Tomasz Kaczanowski

unread,
Nov 2, 2022, 9:05:27 AM11/2/22
to
Potrafisz rozróżnić system bankowy od modułu obsługi stron?

To są niezależne moduły

--
http://kaczus.ppa.pl

Jivanmukta

unread,
Nov 2, 2022, 11:00:26 AM11/2/22
to
> W dniu 02.11.2022 o 13:37, Jivanmukta napisał:
>> system bankowy NORDEA jest napisany w php
>>
Tak przeczytałem na jednym forum.

0 new messages