Nauka programowania

Niestety mylisz się, pracuję z PHP od 15 lat, zawodowo od 10 lat i widzę jaką drogę przechodzi ten język. Wiem z czego ewoluował i wciąż będę uważał go za Frankensteina. Dowodem na to jest Twój przykład, który pozwala na współistnienie tablicy typu Array oraz tablicy typu ArrayObject. To jest masakra…

To jest przede wszystkim wina języka, że nie wymusza dobrych praktyk, bo zamiast się odciąć od skryptowej przeszłości i zrobić niekompatybilną wstecz w pełni obiektową wersję, dokleja się ciągle nowe rzeczy w “metodyce” Big Ball of Mud.

Oczywiście, że gdyby wymuszał dobre praktyki, to by wiele aplikacji było lepiej napisanych. Ale co to za programista, który nie potrafi zdyscyplinować się i trzymać te dobre praktyki. To zwykły klepacz kodu, który nie myśli o kodzie i konsekwencjach. Sam pracuję w PHP.
Przykładowo ( nie jestem pilotem) Na autopilocie każdy może być dobrym pilotem, ale jak się go wyłączy, to już nie koniecznie będzie taki dobry.(Mam nadzieje, że rozumiesz o co chodzi)

Wiem o co Ci chodzi, ale w ten sposób można obronić każdy język programowania (“jakby programista był dobry to by było dobrze napisane”).
A nie o to chodzi. To trochę jak z zabezpieczeniami - wydają nam się głupie dopóki się nie zamyślimy i “system” nie da nam czegoś zrobić. Przy programowaniu takim zabezpieczeniem jest choćby silne typowanie zmiennych. W Javascripcie możesz nadpisać sobie funkcję zmienną i dla JS to jest całkowicie legalne. W PHP możesz wpisać do zmiennej zły typ (o ile wprost nie wskażesz typowania). W C# czy Javie typ musi się zgadzać, co wymusza użycie konkretnej klasy (lub interfejsu, jeśli mamy kilka z nich o wspólnych cecach). To od razu wymusza stworzenie hierarchii klas i intefejsów co daje dużo bardziej przejrzysty kod. Oczywiście jak chcesz zepsuć to Ci się uda - deklarujesz zmienną typu Object i jechana, nikt Cię nie powstrzyma :smiley: Ale wymaga to Twojej premedytacji, w PHP możesz taki myk zrobić zupełnie niechcący i w najgorszym wypadku błąd odkryją dopiero klienci.

Zgodzę się z tobą, że w ten sposób można obronić każdy język. Teraz jest bum na programistów, a nie wszyscy muszą być nimi, jeśli się nie nadają, oczywiście też trzeba się tego nauczyć, ale trzeba chcieć .
Chodzi mi bardziej o to czy wolisz naprawiać samochodów u dobrego mechanika, który uważa co robi, myśli i sprawdza, czy u kogoś kto robi coś z automatu i zdaje się na narzędzia, a potem nie sprawdza czy faktycznie dobrze zostało zrobione. Narzędzia mogą ułatwić zadanie i prace, ale nie zwalniają od myślenia.
Jestem świadom problemów w PHP bo je widzę i też niektóre rzeczy mi przeszkadzają. Ale wydaje mi się, że każdy język ma większe lub mniejsze problemy. Ale według mnie PHP to jest dobry test dla programistów czy myślą i jak programują. Według mnie PHP uczy u ważności jeśli stosuje się poprawne praktyki.

Według mnie wszystko ma swoje plusy i minusy. Kwestia spojrzenia. Wydaje mi się, że kiedyś PHP się zmieni w pełno obiektowy i zrezygnują z wsparcia wstecz funkcjonalnego. Ale jeszcze czasu potrzeba.