Jak przełamać paradygmat „php is a bad language”? [Zamknięte]

19

PHP nie jest złym językiem (a przynajmniej nie tak złym, jak niektórzy mogą sugerować). Miałem nauczycieli, którzy nie wiedzieli nawet, że PHP jest zorientowany obiektowo, dopóki im nie powiedziałem. Miałem klientów, którzy natychmiast nam nie ufają, gdy mówimy, że jesteśmy programistami PHP i pytają nas, czy nie używamy eleganckich języków i frameworków, takich jak Django lub RoR, czy też języków „korporacyjnych i solidnych”, takich jak Java i ASP.NET.

Facebook jest zbudowany na PHP. Istnieje wiele solidnych projektów zasilających sieć, takich jak Joomla i Drupal, które są wykorzystywane w przedsiębiorstwie i rządach. Istnieją frameworki i biblioteki, które mają jedne z najlepszych architektur, jakie widziałem we wszystkich językach (Symfony 2, Doctrine). PHP ma najlepszą dokumentację, jaką widziałem i dużą społeczność profesjonalistów.

PHP ma zaawansowane funkcje OO, takie jak odbicie, interfejsy, nie mówiąc już o tym, że PHP obsługuje teraz horyzontalne ponowne użycie natywnie i czysto poprzez cechy .

Są źli programiści i dzieciaki skryptów, które nadają PHP złą reputację, ale jednocześnie zasilają społeczność PHP, a ponieważ PHP jest tak łatwe do zrobienia, możesz często robić rzeczy w niewłaściwy sposób, oczywiście, ale po co winić język?.

A teraz sprowadzając się do rzeczywistego pytania, na które można odpowiedzieć: co byłoby dobrym, solidnym, krótkim i słodkim argumentem, aby uniknąć marszczenia się i powstrzymać uprzedzenia za jednym zamachem i bronić swojego honoru, gdy mówisz, że jesteś programistą PHP? .

(bezpłatne ciasteczko z bitą śmietaną dla osób z empirycznymi dowodami przekonania kogoś - klienta lub innego - na miejscu)

PS: Używamy Symfony , a kod kończy się piękny i łatwy w utrzymaniu

PPS: Facebook jest napisany w PHP, skompilowany do C ++ przez HipHop i wdrożony na Hadoop. Tutaj: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
źródło
9
Na początek zaznacz wszystkie złośliwe komentarze anty-PHP dotyczące programistów. Wśród moderatorów jest co najmniej jeden programista PHP, który naprawdę uwielbia je usuwać ...
yannis
23
Napisz dobry kod PHP
Charles Sprayberry
42
Tylko uwaga, naprawdę NIENAWIDZĘ, kiedy ludzie PHP wprowadzają argument „FB jest zbudowany na PHP”. To bs, jest zbudowany na ogromnych systemach rozproszonych, takich jak Hadoop, a części, które naprawdę robią rzeczy, są w C. PHP jest używane do tworzenia szablonów i interfejs użytkownika, nie wystarczy powiedzieć „FB jest oparty na PHP” ...
TC1,
10
@NB Tak, ale w tym przypadku IMHO mówiąc, że „FB jest zbudowany na PHP” jest jak powiedzenie, że StackOverflow jest zbudowany na CSS i JavaScript, ponieważ ma tu kilka fajnych elementów interfejsu użytkownika…
TC1
13
Nie zatrudniłbym cię, ponieważ nie chcę utrzymywać kodu PHP. PHP zyskuje funkcje takie jak Perl, JavaScript i inne szybkie języki, ale jego rdzeń został zaprojektowany w pośpiechu i nie można tego zmienić. Być może powinieneś rozważyć naukę Django, RoR i Grails, a zatem być niezależnym od języka.
Job

Odpowiedzi:

40

Mam jedyną odpowiedź: wszystko jest do bani.

Możesz znaleźć mnóstwo argumentów przeciwko OOP, które są dobre (szybkie wyszukiwanie je ujawni) w porównaniu z programowaniem funkcjonalnym lub proceduralnym. Wygląda na to, że wskazuje na to, że wsparcie OO PHP go broni.

Google blank jest do bani, a znajdziesz wyniki dla czegokolwiek. Python jest do bani . Ruby jest do bani . Szyny są do bani . PHP jest do bani . Java jest do bani .

Chcesz wiedzieć, co naprawdę jest do bani? Programiści. Programiści są do dupy. Każdy dobry programista powinien być w stanie stworzyć niesamowitą aplikację, frontend i back-end, niezależnie od języka - nawet jeśli nie zna języka! (To znaczy, dobry programista powinien być w stanie skutecznie uczyć się i pracować z dowolnym językiem).

Zauważ też, że sukces aplikacji nie ma nic wspólnego z jej kodem. Słyszałem, że kod na Facebooku jest okropny, ale na Boga jest skuteczny. To samo prawdopodobnie dotyczy Wikimedia (Wikipedia jest zbudowana na PHP i jest także niezwykle popularną stroną internetową). Najważniejsze są wyniki!

PHP jest językiem, który znam osobiście najbardziej. Będę go bronił na śmierć. Pracowałem z frameworkami PHP, prostym kodem PHP, PHP, Pythonem i Ruby (a nawet Javą) do programowania. Nie mogę powiedzieć, że jedno jest szczególnie lepsze od drugiego. Najważniejsze są programiści i algorytmy. Widziałem niesamowicie dobry i całkowicie okropny kod w wielu językach (zwłaszcza PHP, ponieważ mam tak dużą ekspozycję).


Teraz twoje pytanie: zależy od tego, z kim masz do czynienia

Biznesmenów

Dbają przede wszystkim o wyniki i opłacalność. Fakt, że odnoszący sukcesy Facebook, Wikipedia i Wordpress używają PHP powinien być więcej niż wystarczający, aby przekonać ich, że jest to skuteczny język do tworzenia udanych aplikacji.

Programiści

Niech Twój kod mówi sam za siebie. Jeśli programista twierdzi, że PHP jest w jakiś sposób gorszy, pokaż mu kod PHP, który Twoim zdaniem jest skuteczny. Dowodem na budyń jest jedzenie.

Pigułki przeciwwybuchowe
źródło
8
„Każdy dobry programista powinien być w stanie stworzyć niesamowitą aplikację, frontend i back-end, niezależnie od języka” - powtórz to po wypróbowaniu go w Malbolge.
Michael Borgwardt,
5
Nie sądzę, aby dobry programista potrafił pisać dobry kod w języku, którego nie zna. Może przyzwoite, ale nie dobre. Jest tak, ponieważ pisanie dobrego kodu w dowolnym języku wymaga dobrej znajomości bibliotek i samego języka.
sick
4
Nie zgadzam się; dobry programista powinien być w stanie zapoznać się z niezbędną wiedzą do pisania dobrych aplikacji. Dobra znajomość bibliotek i składni jest ważna, ale dobry programista może to łatwo znaleźć. Znacznie trudniejsze są algorytmy i pojęcia (i prawdopodobnie cierpliwość) .. nawet jeśli językiem jest Malbolge. A może mam na myśli świetnego programistę.
Tabletki przeciwwybuchowe
7
success of an application has nothing to do with its code<- Prawda. Ale kiedy ludzie mówią, że „PHP to zły język”, nie mają na myśli „aplikacji napisanych w PHP są złe”, a raczej „aplikacje napisane w PHP często nie są fajne z powodu spaghetti z kodem”. Oczywiście są świetne aplikacje napisane w PHP. Ale nie sądzę, że ta odpowiedź dotyczy znaczenia programistów, gdy nazywają PHP „złym”.
Billy ONeal,
2
@BillyONeal Jakie są Twoje dane na temat tego, czy język jest „dobry” czy „zły”? Aplikacje są wszystkim .. nikt nie dba o kod . Linus Torvalds zaczął narzekać, jak straszny jest C ++ - można powiedzieć, że wszystko jest złe, ponieważ niektórzy programiści piszą w nim zły kod.
Tabletki przeciwwybuchowe
20

PHP ma obrzydliwą historię. Teraz jest o wiele lepiej, że było to jeszcze chwilę temu, ale był czas, bardzo długi czas, w którym zachęcano do wielu złych praktyk i wzorców, których trudno było uniknąć. Istnieje cała generacja okropnego kodu PHP, który wciąż się rozwija, a do tego stopnia, że ​​nowi programiści uczą się czytając stary kod, uczą się złych zachowań. PHP może teraz nie zasługuje na swoją reputację blackend, ale na pewno zasłużył sobie na to.

Najlepszym sposobem na obronę PHP jest staranne zdystansowanie i odróżnienie obecnego stanu wiedzy od historii, którą wszyscy znają. Można powiedzieć, że PHP nie jest okropnym językiem, ale jeśli rozmawiasz z kimś, kto jest w branży od wielu lat, jego pamięć mówi im inaczej.

Pokaż im, jak zespół PHP nauczył się na swoich błędach i zmienił język na lepszy. Dawno minęły czasy magicznych cytatów i rejestracji globali. Nie ma już globalnego paradygmatu i trybu awaryjnego oraz mysql_escape_string. Wyjaśnij im, że prawdziwi programiści PHP zawsze używają przestrzeni nazw i sparametryzowanych zapytań, unikają przestarzałych funkcji i zawsze umieszczają kod biblioteki poza katalogiem głównym dokumentu.

PHP się zmieniło, a programiści PHP się zmienili. Właśnie dlatego PHP jest dzisiaj wspaniałą platformą. Jest to również jedyna platforma, o której wiesz, że klienci będą ją wstępnie instalować. To jest ogromne.

Na marginesie odradzam cytowanie istniejących silników i struktur CMS jako dużej wygranej dla PHP. Ryzykujesz, że zwrócą uwagę na badania bezpieczeństwa Websense sprzed 4 dni, pokazujące, że 94% niedawnych infekcji stron internetowych dotyczyło witryn PHP z oprogramowaniem takim jak Joomla i Wordpress. To nie jest firma, z którą chcesz się spotkać. Zamiast podkreślić, że kod będzie sposób bardziej bezpieczny niż wszystko inne rzeczy.

tylerl
źródło
1
+1 - ale - ale - Twierdzenie, że Twój kod będzie „znacznie bezpieczniejszy” niż recenzowanie kodu przez kilku profesjonalistów, tak naprawdę nie zatrzyma nikogo w połowie na poziomie bezpieczeństwa. Każdy pisze błędy bezpieczeństwa. Sztuka polega na tym, aby naprawić je o krok przed złymi ludźmi.
Billy ONeal,
@BillyONeal tak. Ostatni akapit ma na celu sprawić, że poczujesz się trochę ... dziwnie i sprawi, że naprawdę przemyślisz swoje podejście do kwestii bezpieczeństwa. Przeprowadziłem wiele badań na temat bezpieczeństwa PHP w aplikacjach innych niż PHP, a raporty są niepokojąco masowo wypaczone w stosunku do PHP. Nie oznacza to, że PHP jest złe, ale bezpieczeństwo to poważny problem.
tylerl
1
„Poza tym jest to jedyna platforma, o której wiesz, że Twoi klienci będą ją wstępnie instalować”. To stwierdzenie wydaje mi się całkowicie fałszywe. Nie każdy wdrożony serwer jest wdrażany ze stosem LAMPhp, ani też żadna wspólna dystrybucja serwerów linux, z którą próbowałem dostarczać Zainstalowane PHP. Jednak każda dystrybucja linuksa, której kiedykolwiek używałem, jest dostarczana z Pythonem 2.x. Podejrzewam, że polegają na tym niektóre popularne narzędzia.
ThorSummoner
9

PHP jest COBOL w sieci. Oba języki nie cieszą się szacunkiem, ale wiele osób zarabia na życie budując i utrzymując w nich zapisane systemy, i są one obecne w prawie każdym większym systemie komputerowym dla ich rodzimego świata ( tj. Odpowiednio w Internecie i biznesie). Oba języki są lekceważone przez praktyków innych, bardziej popularnych języków, opartych w dużej mierze na starych i przestarzałych nawykach praktykowanych przez programistów, którzy od tego czasu nauczyli się lepiej i ulepszyli swoje narzędzia.

PHP powinien mieć tyle szczęścia, że ​​żyje życiem COBOL. COBOL istnieje dłużej niż cokolwiek innego niż FORTRAN i wkrótce nie zniknie. W codziennym użyciu jest wiele programów COBOL, które są starsze niż osoby je obsługujące. To może nie być „nowy upał”, ale zawsze będzie można zarobić pieniądze, pracując razem z nim.

Ross Patterson
źródło
4

Myślę, że przydatne może być zrozumienie drugiej strony medalu i rozpoznanie braków PHP. Chociaż PHP znacznie się rozwinęło, będąc językiem szablonów, wciąż istnieje wiele rzeczy, które można poprawić. W niektórych kwestiach wciąż brakuje PHP: Unicode, funkcje funkcjonalne, organizacja biblioteki standardowej arrayi tak dalej.

Sugeruję, aby - w celu konstruktywnej dyskusji na temat mocnych i słabych stron PHP - dobrze byłoby uznać to wszystko. „Tak, wiem, że standardowa biblioteka PHP nie jest zbyt dobrze zorganizowana. Ale gdyby została napisana dzisiaj, mogłaby skorzystać z przestrzeni nazw i obiektowych interfejsów API”. „Tak, wiem, że domyślna tablica trochę psuje mieszając słownik i struktury tablic. Ale jeśli ktoś chce lepszych kolekcji, może skorzystać z SPL”.

Twój punkt widzenia będzie silniejszy, jeśli pokażesz, że wiesz, że argumenty innych ludzi mają jakiś powód.

Andrea
źródło
2

Dlaczego?

Każdy, kto sprawia, że ​​czujesz, że musisz się bronić (niezależnie od tego, czy chodzi o karierę, małżonka, nawyki związane z wydawaniem pieniędzy itp.) Marnuje swój czas. Poświęcając czas na obronę, po prostu poniżasz ludzi niewłaściwych - teraz marnujesz swój czas, jak i ich.

Odetnij tych ludzi od swojego życia - lepiej bez nich.

JK
źródło
4
Odpowiedź brzmi: zrób to osobiście i zignoruj ​​to ?. Jest to problem kulturowy, wolę go rozwiązać i postarać się, aby moje argumenty były lepsze i bardziej zwięzłe, aby zlikwidować ignorancję.
dukeofgaming
3
W próżni zgadzam się z twoją radą tutaj, ale PHP jest nie do obrony. Zawsze dziwię się, jak Mark Zuckerberg odniósł sukces pomimo okropności PHP: codinghorror.com/blog/2008/05/…
Jim G.
1

Nie ma krótkiej i słodkiej linijki, którą można by wypróbować, aby przekonać ludzi o wartości PHP i jej twórców, ale napisałeś bardzo przekonujący argument tuż przed tym, jak zadałeś pytanie.

CFL_Jeff
źródło
1

Aby rozwiązać problem „PHP to zły język”, musisz dowiedzieć się, dlaczego dana osoba uważa, że ​​jest to zły język. Może pracował nad złym projektem napisanym w PHP. Może po prostu nie lubi prefiksu ich zmiennych $. Może sami próbowali użyć języka i napisali niemożliwy do utrzymania bałagan. Wielu programistów pochodzących z innych języków programowania widzi PHP i widzi bałagan, ponieważ to, co ma sens w PHP, tak naprawdę nie ma sensu w innym języku lub na innych platformach. Na przykład w PHP tablice są „taśmą klejącą wszechświata” i służą do osiągnięcia niemal wszystkiego, podczas gdy w innych językach programowania takie rzeczy byłyby absurdalne.

Proponuję tutaj kombinację odpowiedzi.

  1. Jak powiedział Tylerl , musisz pokazać, że współczesne PHP jest znacznie lepsze niż jego starsi kuzyni. Minęła paskudność create_function. Zniknęła dżungla includeręcznego dzwonienia wszędzie.
  2. Potwierdź, że w PHP występują błędy. Błędy występują w każdym języku programowania. Powiedzenie inaczej sprawi, że wielu poważnych programistów całkowicie zignoruje twoją odpowiedź jako „fanboi”.
  3. Pokaż ludziom rzeczy łatwe w PHP, które są trudne w innych językach programowania. Języki programowania zostały zaprojektowane tak, aby niektóre zadania były łatwe, co z konieczności utrudnia wykonywanie innych zadań. DO? Manipulowanie pamięcią i bit hacki są naprawdę łatwe, a język jest naprawdę prosty, ale utrzymanie dużych aplikacji jest trudne. Jawa? Nie ma free, a wszystko to „OO-ish”, ale środowisko wykonawcze jest duże, a OO może ograniczać. C ++? Pozwala tworzyć typy, które zachowują się dokładnie tak samo, jak typy pierwotne (np. Int) w języku, ale mają dużą złożoność. PHP? Sprawia, że ​​bardzo łatwo jest zacząć bez dużej wiedzy programistycznej, ale w rezultacie w Internecie pojawiło się mnóstwo śmieci.
  4. Potwierdź pozajęzykowe zalety PHP. W PHP wciąż jest wiele rzeczy, które mogą być ... denerwujące w pracy. Ale jest łatwy do skonfigurowania, łatwy do wdrożenia i zawiera duży zestaw świetnych bibliotek, do których można „podłączyć” bez większego nakładu pracy.

Jest miejsce na każdy język. Wybierz język odpowiadający danemu problemowi, nie próbuj podbijać preferowanego języka w miejscach, w których nie należy.

Billy ONeal
źródło
1
-1: Dlaczego próbujesz bronić PHP? Jest do kitu: codinghorror.com/blog/2008/05/…
Jim G.
1
@JimG .: Bo o to poprosił mnie OP. Gram tu adwokata diabła; Naprawdę nie cierpię pracy z PHP. Ale fakt, że system jest denerwujący w pracy, nie oznacza, że ​​nie ma dobrych rzeczy w tym systemie. Można się uczyć nawet od dużych kurwa. :)
Billy ONeal
@BillyONeal Dlaczego nie lubisz z tym pracować? Sam decyduję o wszystkim.
Johnny
@Johnny: Przeważnie jest to po prostu język skryptowy, który nie nadaje się do budowania dużych systemów. Języki skryptowe doskonale nadają się do szybkiego prototypowania, łatwości wdrażania i są dostarczane z dużymi standardowymi bibliotekami w pudełku. Jednak budowanie z nimi dużych systemów często powoduje niemożliwy do utrzymania bałagan z powodu niemożności wymuszenia kontroli i ograniczeń czasu kompilacji. Rzeczy, które sprawiają, że PHP jest elastyczne i dobre w scenariuszach skryptowych (np. Zmienne są bez typu) utrudniają budowanie systemów, w których więcej niż kilka osób używa komponentu.
Billy ONeal
@Johnny: Aby wyjaśnić - nie mówię, że budowanie dużych systemów za pomocą PHP jest niemożliwe - Facebook i spółka są dowodem na to, że jest to bardzo możliwe. Tyle, że kończy się to trudniej niż w przypadku języków, które zapewniają lepszą składnię czasu kompilacji i kontrolę semantyczną.
Billy ONeal