.oisyn schreef op vrijdag 27 maart 2009 @ 18:06:
Heeft javascript een slecht imago dan?
For what it's worth, ik vind javascript een mooie en goed uitgedachte taal. Dat PHP een slecht imago heeft vind ik terecht, maar dat imago heeft ie dan wel weer om de verkeerde redenen denk ik (namelijk het vele aantal prutsers, maar dat is niet de "schuld" van PHP zelf)
Klopt, net als dat Visual Basic (.Net) een slechte naam had doordat er veel mensen waren waarvoor dat hun eerste taal was. (Vooral met VB.net is er weinig meer op aan te merken, en VB heeft een paar leuke functies waar ik als C# programmeur jalours op ben, en tbh vond ik all die "{ }" overal en ";" aan het eerst maar shit!) (
Wikipedia: Comparison of C Sharp and Visual Basic .NET maar niet compleet / veel is sinds C#2008 ook in C# aanwezig).
Verder heb ik om zelf wat feeling voor webtalen te krijgen geprobeerd om een mini-cmsje te maken in zowel C#/asp.net3.5 en php5. (Heel simpel, meeste hardcoded maar gewoon login/register, beetje rechten en articles/publish/comments)
In beide talen is dit goed te doen, maar toch had ik veel meer problemen met PHP, waar ASP allemaal hele nette controls heeft die het doen zowel als er wel of geen js actief is, en ook altijd een serverside check doen op verificatie van input, moest je dit in php allemaal zelf doen (goed maar dat maakt php natuurlijk nog niet brak).
Ik had echter veel problemen om sessie netjes op te zetten, daar heeft ASP veel meer support door door verschillende lagen sessies. (Viewstate, Cookies, Session, Membership) en ook voor performance optimalisatie helpt ASP je erg goed (denk aan de verschillende caching mechanisme).
In php kan je dit waarschijnlijk allemaal ook wel zelf maken, maar toch ben je zo met ASP sneller aan de gang, en heb je robuste geteste code ipv je eigen progsels (security issues zijn niet altijd direct zichtbaar als je het zelf maakt).
Ok maar nogsteeds is er dan niets mis met PHP zelf. Echter vind ik PHP ook erg onlogisch, (sowieso vind ik het hele weak typed gebeuren een beetje lastig, maargoed dat kan ik nog zien als een feature).
Waar ik wel van baalde was het al aangehaalde gedrag van de == operator icm met strings. Ook leek het telkens zodra je probeerde OO te programmeren of PHP je express dwars probeert te zitten. Je kunt niet-static methoden aanroepen uit je nette classen zonder je class te initialiseren. WTF!? Encapsulatie lijkt iets waarvan de ontwikkelaars nog nooit van gehoord hebben. Het doet me zelfs vermoeden dat itern alles eigenlijk nog harstikke imperatief is opgezet en dat OO in php eigenlijk maar een beetje syntactic sugar is.
Ook zijn er vage backwardcompatiblity besluiten gemaakt, kijk maar naar de constructors, waar dit eerst Classname() was is dit nu __construct(), maar waarom? Bij talen als Java, C++, C# e.d. ging het altijd goed met Classname() ook na update, ook qua backwardscompatibility, wat zat er fout waardoor php nu __construct() nodig heeft?
Ook kwam ik op de volgende vaagheid (niet zeker of dat nu nog zo is).
fter working with PHP for a while, I noticed a serious design flaw in the language: when you perform an object assignment, the object is copied as a whole, while you would expect only a reference to the object to be copied.
$myObj = new MyObject();
$myObj.prop = 1;
$yourObj = $myObj;
$yourObj.prop = 2;
There are now two objects instead of one, with two different property values. To avoid this, you apparently have to use =& instead of =. This leads to really hard-to-find bugs because it's so easy to forget the & everywhere.
On a related note, PHP's parser displays hints of a one-dimensional implementation that is so common among mediocre programmers. For example, it will accept:
$child =& $myObj->getChild();
$child->doSomething();
but not:
$myObj->getChild()->doSomething();
Aaarg!