Pisałem wcześniej, że o wyborze technologii internetowych decydują ludzie i dostępne w danej chwili oprogramowanie bazowe. Dodam teraz czas. Czas, który można lub trzeba poświęcić na zbudowanie w pełni funkcjonalnego systemu. Jeśli zapytamy programistów o przeciętny czas potrzebny na napisanie średnio rozbudowanego systemu zarządzania treścią (CMS), to odpowiedzi dostaniemy bardzo zróżnicowane. Jedni powiedzą, że wystarczy dwa tygodnie, inni, że pół roku. Wszyscy będą mieli rację. Inne są jednak kryteria, jakimi kierowali się odpowiadając na to pytanie. Jeśli przyjmiemy, że programista php 5 chce napisać CMS w sześć miesięcy, a ASP.NET w dwa tygodnie, to czym sie kierują? Otóż. Waldek(.NET) wie, że jego system będzie działał pod kontrolą Windows, że użyje MSSQL, a całość najprawdopodobniej będzie działała na serwerze IIS (chyba to się tak nazywa?). Nie musi specjalnie zastanawiać się nad problemami, które Krzysio napotka budując swój system w php 5. Jakie są problemy Krzysia? Ano. Po pierwsze, musi zdecydować się na konkretna wersję php (że są różnice pomiędzy 5.0.0, a 5.1.4, to chyba widać?). Może, ale nie musi wziąć pod uwagę serwera na jakim przyjdzie działać aplikacji. Musi wybrać pomiędzy tekstem, XML'em i bazą danych, lub zdecydować się na dynamiczne przełączanie źródła danych w zależności od mnóstwa czynników zewnętrznych. Żeby miał jeszcze trudniej, to powinien uwzględnić system operacyjny serwera. Nie mówię, że Waldkowi te problemy są zupełnie obce, w końcu i On może pisać aplikację bardziej elastyczną. Problem tkwi gdzie indziej. Waldek ma punkt odniesienia w postaci firmy Microsoft, która w dużym stopniu narzuca bądź preferuje pewne standardy. Kiedy Waldek szuka pracy, to śmiało może powiedzieć, że stosuje się do najnowszych światowych trendów w programowaniu aplikacji webowych. Może, bo za nim stoi firma z Redmond. Ta firma jeśli Waldek będzie chciał, wyda mu certyfikat, urządzi szkolenia - jednym zdaniem - uczyni z Waldka profesjonalistę. Waldek raczej nie będzie musiał tłumaczyć szefowi, dlaczego napisał jakiś kod tak, a nie inaczej. Po prostu większość programistów ASP.NET ma bardzo podobny styl programowania i używa podobnych standardów, "bo Microsoft jest za tym".
Daleki jestem od tego, aby twierdzić, że jest to z gruntu złe. Nie, szanuję to, że ludzie szukający czegoś pewnego w programowaniu wybierają .NET, który jest dla nich wręcz wymarzony. Mnie samego też denerwuje ciągłe poszukiwanie dobrych rozwiązań, których jest przecież bez liku. Różnica pomiędzy .NET, a php nie występuje zatem na poziomie samego kodowania, a raczej na sposobie podejścia do projektu.
Niewątpliwie np. takie środowisko jak ASP.NET Web Matrix dostarcza potęznego zestawu narzędzi do budowania aplikacji. Niewątpliwie programista php musi sam zbudować sobie narzędzia, które powyższe środowisko ma wbudowane. Niewątpliwie milej jest po prostu "przenieść coś i upuścić" niż pisać samemu ze strachem, czy aby dobrze napisane. Niewątpliwie programiści .NET mają lepiej zorganizowaną kulturę wymiany informacji i kodu "ponownego użycia". Na koniec, niewątpliwie programiści php piszą więcej kodu ponownego użycia niż ponownie używają (to akurat nie jest moja myśl, ale jest prawdziwa).
Do tego wszystkiego należy dodać jeszcze, że php do dzisiaj jest uważane za język amatorów, co jest karygodne i bardzo krzywdzi osoby piszące niesamowite wręcz programy w tym języku.
Dlaczego tak jest? Wszystko z powodu popularności tego języka, łatwości pisania prostych skryptów i masy beznadziejnych postów na forach internetowych (np te o register globals).
Nie wiem, czy ktoś z was ostatnio oglądał fragment jakiegoś kodu języka Java, jeśli nie, to proponuję spojrzeć. Zwłaszcza na stricte obiektowe elementy (definicje klas etc.). Wiadomo, że php zżyna z Javy jak tylko się da, a Java jest przecież uważana za język profesjonalistów, prawda?
Większość osób orzekających o php wypowiada się na podstawie wersji 3 i 4 tegoż języka. Dlaczego żadna z nich nie chce zauważyć, że php 5 jest językiem obiektowym i tak naprawdę pisanie aplikacji nie ma wiele wspólnego ze "wstawianiem" skryptów do dokumentów HTML, a wręcz odwrotnie.
Coraz częściej jest wykorzystywany do ich generowania "przy okazji". Można wstawiać skrypty do HTML'a - niekiedy nawet nie warto robić inaczej, ale taka możliwość jedynie dobrze świadczy o języku, nie odwrotnie. Mylne wrażenie, jak już wspomniałem mogą odnieść osoby przeglądające głupkowate (przepraszam) niekiedy posty "młodocianych" programistów. Wszystko byłoby w porządku, gdyby nie to, że informatyk po studiach przychodząc do pracy bardzo często marginalizuje znaczenie technologii GNU/GPL, czy open source i przekonuje pracodawcę do technologii "poważnych", do "profesjonalistów", a z tych dzieciaków od php śmieje się niekiedy pokazując co zabawniejsze fragmenty kodu. Pośmiejmy się i my:
oto kod...
<?php
function pokaz_licznik() {
$plik_licznika = fopen("./licznik.dat","r");
$licznik++;
$plik_licznika = fopen("./licznik.dat", "w");
fputs($plik_licznika, $licznik);
}
pokaz_licznik();
?>
oto licencja do powyższego kodu...
------------------------------
Licznik tekstowy wersja 0.5
Jest to wersja beta. W kolejnych wersjach zamierzam dodać: blokowanie IP, grafiki. Sugestie proszę zgłaszać to w wpisach do księgi gości na stronie www.[xxx].pl .
Orginalny skrypt znajduje się na stronie www.[xxx].pl .
Licencja
Plik licznika możesz wykorzystywać na wszystkie możliwe sposoby z wyjątkiem ponoszenia korzyści majątkowej. W takiej sytuacji proszę o zgłoszenie się na mój adres e-mail: [xxx]@interia.pl .
------------------------------
Nie wiem, czy autor kodu i licencji sie obrazi, czy nie, jeśli to przeczyta i mało mnie to obchodzi. Pewnie pisał to będąc początkującym. Dam sobie uciąć głowę, że podobne kwiatki można znaleźć wśród dzieł programistów .NET
Gdybyśmy próbowali ustalić, jakie są faktyczne różnice pomiędzy ASP.NET, a php, to musielibyśmy poznać zdanie osób tworzących oba języki, porównać kod języków (w przypadku php jest to język C, nie wiem jak jest w przypadku .NET, bo się nie interesuję).
To właśnie programiści tych języków (np C) powinni odpowiadać na pytanie który język jest lepszy, który ma większe możliwości, który jest bardziej "przyszłościowy". My - użytkownicy php i .NET możemy jedynie wyciskać z obu języków ostatnie poty i prosić innych o nowe funkcje, które spowodują, że będzie nam się przyjemniej wprowadzało idee w życie. Możemy więc sprowadzić ten spór do sporu twórców obu języków, a w konsekwencji do sporu dwóch obecnie dominujących platform systemowych, czyli ***X i Windows. Ten spór jeszcze długo nie zostanie rozstrzygnięty, więc i nasz mały sporek nie ma tu wiele sensu.
Może więc zmieńmy pytanie tego topika - "Gdzie jest więcej profesjonalistów - wśród programistów php, czy .NET?"
To, że są po obu stronach, to wiem, bo widziałem efekty ich pracy. Z kolei zastanawianie się nad tym, w jakim języku funkcja 'pocaluj_mnie_w_tylek()' jest efektywniejsza, to sprawa drugorzędna.
Odniosę się jeszcze do sprawy zatrudnienia i zarobków. Przejrzałem oferty pracy, porównałem nieco zarobki i faktycznie z ubolewaniem muszę stwierdzić, że rzeczywiście programistom .NET proponuje się wyższe zarobki. Jeśli jednak programista php nie jest leniem, to jako freelancer jest w stanie zarobić więcej od programistów DOTNET. Po prostu zapotrzebowanie na nawet proste aplikacje w php jest większe nić .NET. Wynika to z przewagi firm hostingowych oferujących rozwiązania oparte właśnie na LAMP'ie, nad tymi, które oferują środowiska MS. Ta "lampa" jeszcze długo będzie świeciła.
Mam też poważne obawy związane z przyszłością obu platform. Otóż języki skryptowe takie jak php i ASP.NET wykorzystywane są przede wszystkim do zarządzania treścią. To zresztą istota internetu - informacja. Strony www są świetnym nośnikiem informacji, ale nie zapominajmy o ograniczeniach. Nie darmo w końcu powstają takie technologi jak AJAX, bo ciągle aplikacjom www czegoś brakuje. Coraz bardziej męczy mnie myśl, że aplikacje stricte systemowe przejmą funkcje, które teraz spełniają przeglądarki internetowe. Teraz, gdy wiele firm buduje swoje interfejsy CMS, CRM (customer relationship management) na bazie języków skryptowych, wielu programistów tych języków ma pracę. Co jednak się stanie, gdy do gry wejdą jakieś programy, które uczynią z przeglądarek narzędzie co najmniej archaiczne? Dalej będziemy się kłócili?
podpisano
Programista php, który nawet nie myśli o nazywaniu siebie profesjonalistą, ale ma nadzieję, że jego profesjonalne podejście do programowania kiedyś zaowocuje.
pozdrawiam