Czemu programiści nie lubią PHP?

Czemu programiści nie lubią PHP?

Wątek przeniesiony 2014-02-26 00:18 z Off-Topic przez flowCRANE.

MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
4

Moim zdaniem problem z tym całym wątkiem jest taki, że ludzie utożsamiają się ze swoją pracą i narzędziami jakich używają.
Jeśli ktoś krytykuje narzędzia jakie używają, to odbierają to jakby ktoś gwałcił im matkę.

Większość swojej kariery spędziłem z C++, ale nie wciskam wszystkim dookoła jak doskonałe to jest narzędzie. Od razu wiedziałem, że ten język ma swoje braki, a po używaniu przez 3 miesiące C# stało się to jeszcze bardziej oczywiste.
Teraz używam Objective-C i czuje jakbym wpadł z deszczu pod rynnę.
PHP nie używałem, ale przeczytałem kilka artykułów opisujących co nie jest tak z tym językiem i te argumenty do mnie docierają, a po drugiej stronie widzę jedynie reakcję na "gwałcenie matki".


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
Zobacz pozostałe 2 komentarze
vpiotr
Wygląda trochę jakby ktoś miał za zaliczenie zrobić preprocesor do C robiący coś ekstra.
vpiotr
No i się zgadza: "Cox began writing a pre-processor for C to add some of the capabilities of Smalltalk. He soon had a working implementation of an object-oriented extension to the C language, which he called "OOPC" for Object-Oriented Pre-Compiler." - Wikipedia
MarekR22
fajne rzeczy w Objective-C: sposób wywoływania metod, kategorie (możliwość łatwego wstrzykiwania kodu), protokoły (metody opcjonalne). Rzeczy które minie denerwują: KVO (boilerplate code), język ani słabo ani silnie typowany (wolę konsekwencję albo 100% silnie typowany, albo słabo 100% słabo), biblioteki są nieprzyjazne trudne w użytku (są chlubne wyjątki), Debugger jest do d**y (szczególnie gdy ma pokazać wartość BOOL), XCode odstaje od konkurencji (np uzupełnianie kodu jest zrobione w denerwujący sposób), dość kłopotliwy system zarządzania pamięcią.
vpiotr
A JetBrains AppCode próbowałeś?
MarekR22
Nie, ale z tego co się dowiedziałem od współpracownika, to pracuje nad za dużym projektem i po prostu AppCode pada z tym projektem przy każdej okazji.
0

Ostatnio zasłyszałem ciekawą opinię, że duże firmy i korpo odchodzą od rozwiązań MS i kierują się ku rozwiązaniom darmowym (PHP / Python / Ruby) itp. Czy ktoś z Was się z tym spotkał?

vpiotr
Ja tak. Cała korpo bazująca na jednym stacku OSS. Dostawcy muszą się dostosowywać z technologią, dzięki czemu nie masz oranżerii. Dobre rozwiązanie. Tylko że niekoniecznie to było PHP. W PHP wiem że jedna instytucja finansowa robi.
YF
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 11 lat
  • Postów:9
0

@MarekR22
Masz 100% racji ludzie bardzo przywiązują się do technologii w której pracują i ciężko w pewnym momencie wykonać przeskok na coś innego. Jednak nie patrzę na poprzednie posty tak jak to ująłeś. Dla mnie to po prostu język z którego kiedyś będzie trzeba uciec z powodu właśnie jego braków.

@Topic
Do mnie przemawiają argumenty treściwe. Np przemówiło by do mnie to że PHP jest powolne i nie nadaje się do obróbki danych mocno podatnych na błędy z powodu swojej logiki. Jednak argumenty które przytoczył @somekind w 1 linku są po prostu żałosne. Bo osoba która siedzi naprawdę w tym języku widzi te artykuły jako pisane przez osoby które nie pracują w tym języku no ale coś o nim napiszą.

Może będę nie obiektywny teraz ale tak przeglądając temat to ja napisałem najwięcej informacji o niedoskonałościach języka. A uchodzę za maniakalnego obrońce go ;o

MarekR22
tu nawet nie chodzi o przywiązanie do technologi czy trudnośc nauczenia się czegoś nowego, ale zwykle funboy'stowo. Fun PHP nie różni się niczym od funboy'a: konsol, PCtów, Apple, Androida itd. Każde nieprzychylne słowo jest dla funboy'a zaproszeniem do flame'a .
somekind
Moderator
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:Wrocław
0
YourFrog napisał(a):

Do mnie przemawiają argumenty treściwe. Np przemówiło by do mnie to że PHP jest powolne i nie nadaje się do obróbki danych mocno podatnych na błędy z powodu swojej logiki. Jednak argumenty które przytoczył @somekind w 1 linku są po prostu żałosne.

To może odnieś się treściwie do tych żałosnych argumentów i je obal?

Tak BTW, to nie jest tak, że ja nie lubię PHP. Jest mi ono całkowicie obojętne, nie piszę w nim, ani nie jestem pisaniem w nim zainteresowany. Linki umieściłem dlatego, że odpowiadają na pytanie zadane w temacie.

aurel
Moderator
  • Rejestracja:około 15 lat
  • Ostatnio:dzień
3

Eh, w sumie tak sobie przeczytałam, jakie było początkowe pytanie w temacie:

No ale wracając do tematu, co w PHP jest takie złe, na co uważać, żeby nie wyrobić sobie złych nawyków i jak potem np. z przerzuceniem się z PHP na Pythona? Czego warto być świadomym kodząc w PHP, jeśli się ma niewielkie pojęcie o programowaniu w ogóle, w szczególności dobrym stylu itp?

Na co uważać? No na to, żeby nie pisać w PHP :D
Widzisz, słusznie zauważyłeś, że jest pewna niechęć do PHP. Jak widać po tym topiku, niechęć ta powoduje, że ludzie wolą pisać o tym, czego nie lubią w PHP ;)

Wiesz, wiadomo, że i w PHP da się napisać duży projekt, jeśli np. wykorzystasz dobry framework. Jednakże ja osobiście (i myślę, że wielu programistów tak ma) lubię wykorzystywać rozwiązania najprostsze, a nie takie, gdzie da się.
A mój osobisty uraz do PHP wziął się z niespójności i nielogiczności biblioteki standardowej... Dajmy na przykład głupią zamianę stringa w stringu. Wszystkie inne języki mają to zrobione w jednym z dwóch wariantów:

Kopiuj
String.Replace(ref tekst, tekst_do_zamiany, na_co_zamienic);

lub

Kopiuj
tekst = tekst.Replace(tekst_do_zamiany, na_co_zamienic);

A PHP? PHP oczywiście musi być oryginalne, tutaj argumenty nie mogą być w logicznej kolejności:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
http://pl1.php.net/str_replace

BTW - porównajmy powyższy cytat z dokumentacji PHP do analogicznego wpisu w dokumentacji msdn:

Kopiuj
public string Replace(
	string oldValue,
	string newValue
)

http://msdn.microsoft.com/en-us/library/fk49wtc1(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp

Nie wiem czy to tylko moja odosobniona opinia, ale ja z tego króciótkiego wycinka z dokumentacji od razu wiem, jak użyć funkcji Replace. Natomiast w wersji PHP: search - w tym szukaj, czy tego szukaj? subject? Cóż, gdyby to było w logicznej kolejności to bym się może domyśliła, ale tak to muszę przeczytać opis by być pewną:

This function returns a string or an array with all occurrences of search in subject replaced with the given replace value.

Zwraca stringa ALBO tablicę, po prostu bosko... To są właśnie rzeczy, których nie lubię w PHP...

W dalszej części możemy przeczytać, że search właściwie to nazywamy "needle", a subject nazywamy "haystack". Replace nie ma drugiej nazwy. Po co tyle motania? Co złego jest w prostym oldValue i newValue?

No to se ponarzekałam ;) W początkach mej nauki PHP co krok napotykałam na podobne drobne irytacje. Brak spójności w nazwach (str_ i str), zwracanie wartości różnych typów, naprawdę kiepska dokumentacja... No i skończyłam naukę na początkach i mam uraz i nie chcę więcej :|

I na koniec link ;) http://www.phpwtf.org/

vpiotr
Ten link już był. I nie, nie jesteś odosobniona. Za każdym razem gdy szukam stringu muszę zaglądać do dokumentacji.
Sarrus
  • Rejestracja:prawie 14 lat
  • Ostatnio:12 dni
  • Postów:2512
4

@aurel Do wszystkiego idzie przywyknąć, ale mnie też zawsze drażni nazwa tych argumentów. Ciągle muszę sprawdzać dokumentację.

Mnie denerwuje bardziej konwersja typów, którą czasami ciężko obejść. Przykład może niezbyt wyszukany, ale się na to nadziałem:
Chciałem sprawdzić czy użytkownik wprowadził wartość. Może jest jakaś funkcja... o jest empty. Sprawdzam pobieżnie dokumentację ok wszystko się zgadza.
Błąd się nie ujawnił od razu, bo kod wykrywał zmiany przy zapisie do bazy. Gdy wartość była pusta i użytkownik wpisał zero to się nie zapisywało.
Ale jak to? Przecież "0" jest jakąś wartością. Otóż nie. "0" zostało skonwertowane do 0, a to natomiast skonwertowane na FALSE, co w rezultacie daje "0" == "".
Oczywiście jest to moja nieznajomość języka i tej funkcji, ale i tak mam odruchy wymiotne na to wspomnienie.

PS. empty w zasadzie nie było funkcją przed php 5.5. Poznać można po tym, że nie przyjmował wyrażeń, tylko same zmienne.

http://pl1.php.net/empty
Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.

(buulleeee)

edytowany 5x, ostatnio: Sarrus
vpiotr
Sorry, takie mamy empty() :)
KR
Moderator
  • Rejestracja:prawie 21 lat
  • Ostatnio:dzień
  • Postów:2964
0

Jednak argumenty które przytoczył @somekind w 1 linku są po prostu żałosne.

Niestety takich programistów z "Mamo umiem PHP" jest bardzo, bardzo dużo - oczywiście nie wszyscy, ale przez to, że w PHP jest tak niski próg wejścia, odsetek słabych programistów jest w tym języku bardzo wysoki i wyższy niż odsetek np. słabych programistów Pythona/Ruby. Generalnie im trudniejszy język, tym trudniej znaleźć programistów, ale zarazem odsetek tych dobrych jest wyższy (np. nie znam słabych programistów Haskella albo Rusta - ludzie, którzy się w to bawią zwykle reprezentują wysoki lub bardzo wysoki poziom).

I teraz mając to na uwadze, wyobraź sobie, że jako ambitny programista masz wybór - pracować w zespole programistów PHP lub np. w zespole programistów Pythona, ale nie znasz jeszcze konkretnie tych ludzi (tj. np. zastanawiasz się do której firmy aplikować). Dla mnie wybór byłby oczywisty (nawet mimo że osobiście nie lubię Pythona). Kolejna rzecz, że jeśli firma wybrała Pythona jako główny język programowania, to świadczy o niej, że jest bardziej nastawiona na jakość a nie taniość. Można się spodziewać, że syf w kodzie, jaki tam zastanę, będzie mniejszy.

0

Akurat python czy php to prawie to samo słabo typowane badziewie.
Może python mniej ale jednak. Jedno i drugie pozwala na szereg różnych wałków i 'sztuczek', że nowa osoba w zespole musi czesto domyslac sie o co chodzilo osobie, ktora to przed nim pisala, zespół musi sam stworzyć swoją wlasna konwencję, bo język jest zbyt 'elastyczny'.
Dlatego wolę jednak silnie typowane języki.

Sarrus
Z tych samych powodów wolę silnie typowane języki, ale nie uważam że wszystkie słabo typowane to badziewie
hauleth
Trochę odkopię, ale bzdury waść gadasz. Python i Ruby są silnie typowane, ale dynamicznie. Przykładowo 1 + '1' w Ruby zwróci błąd konwersji.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.