Autor Wątek: Czy PHP jest dobre  (Przeczytany 27693 razy)

Offline conx

  • Użytkownik

# Grudzień 01, 2014, 21:08:41
Dodam tylko, że obiektowość w JS budowana jest na funkcji anonimowej(prywatne/publiczne) która jest podstawową cechą języka funkcyjnego - dlatego uważam,  że to język funkcyjny. (nie będę się upierał, że nie jest obiektowy)

http://www.dofactory.com/javascript/singleton-design-pattern

Dziękuję,
Pozdrawiam

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xirdus

  • Redaktor

# Grudzień 01, 2014, 21:54:17
Podstawową cechą języków funkcyjnych jest efektów ubocznych - jedyne (tak dosłownie jedyne) co funkcja może robić to zwracać wynik. Singleton jest zaprzeczeniem funkcyjności, bo funkcja powinna mieć dostęp jedynie do swoich parametrów i innych funkcji.
« Ostatnia zmiana: Grudzień 01, 2014, 21:55:57 wysłana przez Xirdus »

Offline Karol

  • Użytkownik

  • +1
# Grudzień 01, 2014, 22:00:02
Uhu, ale się narobiło :U

Większość swoich twierdzeń autor opiera na tym, że coś jest w Perl/Python lub Java a nie ma w PHP, bardzo wiele z jego tez to kwestia gustu. Ma w kilku miejscach racje ale wiele z tych problemów istnieje w innych językach.
O właśnie, cieszy mnie ten wniosek, bo mam prawie identyczny. Jednakże pomijając rzeczy do których idzie przywyknąć, albo i nie to w PHP jest szereg niekonsekwetnych rzeczy, jakich nie spotyka się w innych językach, a także to, że bardzo łatwo zrobić jakiegoś mini fakapa jeżeli nie orientuje się człowiek w tych niuansach. Dochodzi wtedy do walki z samym PHP, a nie z problemem w kodzie. Mając doświadczenie można sobie z tym poradzić i uważać, że to żaden problem, ale dlaczego narzędzie służące dla programisty ma mu robić na złość?

Nadal nie uważam by PHP było gorsze od np Pythona/Javy do backendu stron www. Dziwi mnie też, że za słabe umiejętności programistów wystawia się ocenę językowi.
Nikt tak nie napisał przecież, sam wmówiłeś sobie, że rozmowa dotyczy tego, a dotyczyła tego, że bardzo łatwo w PHP o jakieś dziwne/nieprzewidziane zachowanie. Jeżeli faktycznie pracujesz komercyjnie z PHP to nie wmówisz mi, że nie miałeś ani razu sytuacji "WTF?!", która wynikała z samego języka, a nie kodu.

(integer) is a synonym for (int). There’s also (bool)/(boolean) and (float)/(double)/(real).Programista C czy Pascal ... nie musi zmieniać swoich przyzwyczajeń. Właściwie, język jest bez silnego typowania!! To źle?
Bardzo źle, bo co chwila muszę rzutować/konwertować/weryfikować czy dane są poprawne. Na prawdę chciałbym móc napisać coś takiego:

function whatever(float $value) {} Zamiast:
function whatever($value) {
// czy $value to float czy to int czy to string, a może null
// sprawdź, skonwertuj jak się da lub odrzuć i tak w kółko w każdej funkcji
}
« Ostatnia zmiana: Grudzień 01, 2014, 22:10:25 wysłana przez Karol »

Offline conx

  • Użytkownik

# Grudzień 01, 2014, 22:42:53
Cytuj
Nikt tak nie napisał przecież, sam wmówiłeś sobie, że rozmowa dotyczy tego, a dotyczyła tego, że bardzo łatwo w PHP o jakieś dziwne/nieprzewidziane zachowanie. Jeżeli faktycznie pracujesz komercyjnie z PHP to nie wmówisz mi, że nie miałeś ani razu sytuacji "WTF?!", która wynikała z samego języka, a nie kodu.
Często mam "WTF!" i nie tylko w PHP... Masz trochę racji z ta paranoją... ale jest coś takiego, że ludzie upodobali sobie PHP do hejtowania, a mnie to boli, bo lubie PHP.

Offline Xirdus

  • Redaktor

# Grudzień 01, 2014, 23:56:42
PHP ma ten sam problem co Java - łatwo się go nauczyć, więc jest bardzo dużo "programistów" którzy niby język znają, niby co trzeba zrobią, ale jak się potem patrzy w ten kod (lub co gorsza - rozwija i utrzymuje), to tylko się powiesić. Owszem, taki kod istnieje w każdym języku oprócz Haskella, ale w Javie i PHP tak jakby częściej.

Offline koirat

  • Użytkownik

# Grudzień 01, 2014, 23:59:52
Javie ?
Może miałeś na myśli JavaScript ?

Offline Xirdus

  • Redaktor

# Grudzień 02, 2014, 00:59:54
Racja, zapomniałem o JavaScript.

Są trzy języki nieutrzymywalne. Java, PHP i JavaScript. I Visual Basic. Są cztery języki... Wśród języków nieutrzymywalnych są Java, PHP, JavaScript i Visual Basic :) Niemniej wspólną ich cechą jest to, że "łatwo" się ich "nauczyć".

Offline DarkEngineer

  • Użytkownik

# Grudzień 02, 2014, 01:11:50
to ja może szybko zakończę wątek, PHP jest najlepszy w swoim rodzaju. Koniec tematu.

Offline Xion

  • Moderator
    • xion.log

  • +3
# Grudzień 02, 2014, 07:02:49

Zostawię to po prostu tutaj...

Offline ArekBal

  • Użytkownik

# Grudzień 02, 2014, 13:40:14
Głowa mnie boli jak wjeżdzacie na PHP, Jave, C#, JavaScript... tylko nie wiem co stawiacie po drugiej stronie...

Mam nadzieję że nie C++ bo będzie smutno :(

Mam nadzieję że nie Haskella bo będzie jeszcze bardziej smutno. :(

No z propozycji które rzeczywiście tu jakąś ciekawą dyskusję mogłyby rozpocząć to widzę tylko Lisp() i nowości...
Scala, Swift, Rust, F#, Go?

Xion: python ma stosunkowo podobną ścieżkę kariery co php... btw. __init__ ??? Lepiej pythona historii też nie rozgrzebywać.

Offline koirat

  • Użytkownik

# Grudzień 02, 2014, 13:50:38
Moim zdanie co do Javy itp. (nawet VB) to przesada z tą nie utrzymywalnścią.
Według mnie tylko języki dynamiczne są trudne w utrzymywaniu dużych projektów.

Oczywiście zakładam że programiści wiedzą co robią, bo fatalny kod nie do utrzymania da się napisać w każdym języku.

Offline Xirdus

  • Redaktor

# Grudzień 02, 2014, 14:25:00
Oczywiście zakładam że programiści wiedzą co robią, bo fatalny kod nie do utrzymania da się napisać w każdym języku.
O to dokładnie mi chodzi, że te języki są "nieutrzymywalne", bo programiści nie wiedzą co robią. W sensie takim, że odsetek tych co nie wiedzą jest statystycznie istotnie większy niż w innych językach. Nie świadczy to źle o językach jako takich, tylko raczej prezentuje pewne zjawisko socjologiczne, tj. korelacja między celem projektowym pt. "każdy powinien być w stanie w tym języku coś naskrobać" i ilością beznadziejnego kodu który został w tym języku napisany. Nie ma to żadnego związku z tym, że nienawidzę Javy.

C++ jest beznadziejny z całkiem innych powodów niż wyżej wymienione języki. Lisp, Scala i F# to języki funkcyjne, więc całkiem inna liga. Swift, Go i Rust to mają być takie "lepsze C++", co bardzo popieram bo strasznie mi takiego języka brakuje, przy czym Swift jest taką próbą "ujavowienia" języka natywnego - moim zdaniem nie tędy droga - w każdym razie, to bardzo młode języki w których nic poważnego jeszcze nie powstało.

Offline ArekBal

  • Użytkownik

# Grudzień 02, 2014, 15:29:33
Cytuj
Lisp, Scala i F# to języki funkcyjne, więc całkiem inna liga
To nie Haskelle.

Lisp ma dziką oldschoolową składnię, ale jest obiektowy też. Pozostałe dwa to jednak "general purpose" jak C#, Java. Różnica tylko taka że Java i C# są jeszcze trochę w plecy z niektórymi featurami za tymi dwoma w dziedzinie programowania funkcyjnego. Ale w obu da się przepisać program z C# czy Javy bez większych akrobacji semantycznych. Radzę spróbować jakąś KATĘ sobie zrobić. Warto przy tym starać się nie zatracić ducha obiektowości i performance oriented designu. ;)

PS. Każdy kto się bawi w callbacki już programuje funkcyjnie.
Funkcje "czyste" języka funkcyjnego nie czynią. Podobnie "immutable", czy "persistent data structures". Czy "functions as first class objects". Czy "tail recursion". Czy "curring". Czy "tagged unions"".
Idąc tą drogą rozumowania to c++ nie jest obiektowy bo nie przystaje do możliwości SmallTalka.

Offline jelcynek

  • Użytkownik

# Grudzień 02, 2014, 15:33:17
Cytuj
Głowa mnie boli jak wjeżdzacie na PHP, Jave, C#, JavaScript... tylko nie wiem co stawiacie po drugiej stronie...

ADA ftw!

Offline Xender

  • Użytkownik

  • +1
# Grudzień 02, 2014, 18:21:32
Xion: python ma stosunkowo podobną ścieżkę kariery co php... btw. __init__ ??? Lepiej pythona historii też nie rozgrzebywać.
Jestem za grzebaniem, tylko w nowym wątku (prosiłbym moderatorów o wydzielenie, jeśli pojawi się odpowiedź na ten post).
O historii Pythona trochę bym się dowiedział z chęcią.

Nazwy plików __init__.py i __main__.py wyglądają rzeczywiście słabo, ale to dość mało istotny szczegół.
__init__ jako nazwa funkcji wygląda dla mnie najzupełniej ok.

Historia historią, dla mnie obecny (3, dokładniej 3.4) Pyhton to całkiem "czysty" język.
Przynajmniej podstawowe rzeczy są intuicyjne i wyglądają na zrobione "tak, jak trzeba".

Jedną zaszłością, która odbekuje się do dziś, jest to, jak biblioteki traktują stringi - jako bytestring czy unicode.
Szczególnie dotyczy to bibliotek pisanych pod wersje 2 i 3 jednocześnie, gdyż str w Py2 oznacza bytestring, w Py3 - unicode.

Inne kwiatki w Pythonie:
http://excess.org/article/2011/12/unfortunate-python/

No ale do "fraktalu złych decyzji projektowych" to IMHO Pythonowi daleko.
Poważne rzeczy z gatunku "WTF?!" znalazłem 2:
- hasattr zjadający wszystkie wyjątki, nawet KeyboardInterrupt.
- Sloty do operatorów w CPythonie (historyczna optymalizacja, która obecnie chyba nawet stałą się pesymizacją, a do tego utrudnia przeciążanie operatorów w niektórych przypadkach).
« Ostatnia zmiana: Grudzień 02, 2014, 18:32:22 wysłana przez Xender »