De_Bastaard schreef op vrijdag 03 februari 2012 @ 21:46:
Gebruikt iedereen PHP omdat het (volgens velen) vrij toegankelijk is voor nieuwelingen en omdat je er veel van kan leren, of kies je juist voor iets anders zoals RubyOnRails omdat dat "misschien" beter om kan gaan met scaling of iets anders?
Niet om het een of ander, maar RoR staat er juist bekend om om niet zo goed te schalen. Rails is absoluut een mooi platform en dat blijkt ook uit dat meerdere andere platforms (zoals b.v. Java EE/JSF) dingen eruit heeft overgenomen.
Probleem is dat Ruby traag, traag, traag is. Staat PHP al niet bekend om een snelheidsmonster te zijn vergeleken met C/C++/Java/C#, dan is Ruby meestal nog eens even net een tikkeltje trager.
De volgende benchmark is indicatief hiervoor:
http://shootout.alioth.de...languages-are-fastest.php (let op, dit zijn slechts benchmarks en real-world usage kan anders uitpakken). Meer op real-world gebruik gebaseerd zijn de verhalen van Twitter die ondanks een massive engineering effort het gewoon niet snel en goed schaalbaar hebben kunnen krijgen. Uiteindelijk zijn ze op Java overgestapt.
Natuurlijk zit je niet zomaar op het niveau Twitter, maar Ruby is dus zeker NIET per definitie schaalbaar. Ook is Ruby helemaal niet zo populair in vergelijking met hoe vaak het genoemd wordt in blogs en fora zoals deze. Ter indicatie:
http://www.tiobe.com/inde...paperinfo/tpci/index.html (andere bronnen, zoals aangeboden banen laten ongeveer een zelfde beeld zien).
Maar goed wat dan wel?
PHP is zoals reeds vermeldt ook vrij langzaam en is zowel als taal als platform vrij rommelig opgezet, en is ook al een poosje flink aan het dalen in populariteit. Wel is dit nog steeds -het- platform waarop je eenvoudige
homepage achtige sitjes kunt laten bouwen door tal van goedkope webbedrijfjes. Open source en cheap (shared) hosting zijn de kern woorden hier.
Denk alleen niet dat je zo'n goedkoop webbedrijfje even een complex platform kan laten bouwen (ala Tweakers, Facebook, Marktplaats, etc).
ASP.NET/C# is een platform dat zich duidelijk meer richt op de professionele markt. Veel grote bekende merken hebben hun site op dit platform draaien. ASP.NET/MVC zit vrij goed in elkaar en de IDE support is zeer goed omdat deze door Microsoft hand in hand met het platform ontwikkeld wordt. In de C-style familie wordt C# als 1 van de beste talen gezien. De bekende C syntax, met veel moderne features (voor imperatieve talen) als clossures, linq, reified (echte) generics, etc.
Het grote nadeel van ASP.NET/C# is dat het alleen op Microsoft platformen draait. Goedkope hosting kun je vergeten en zelfs bij zelf hosten moet je nog de license voor het OS betalen. Ook is het niet open source, wat inovatie door derden tegenwerkt en debuggen bemoeilijkt. Ik heb tenminste vaak gescholden als er een wazige error melding terug komt en je niet even in de source kunt kijken onder welke condities die nu precies gegenereerd wordt. Om deze reden is er misschien ook wat minder een "blogosphere' om ASP.NET heen.
Dan is er nog Java/Java EE. De taal Java is al een ruim decennia de absolute nummer 1 (wel continu dalend, dus de vraag is voor hoe lang nog). Het Java platform is er 1 van grote tegenstrijdigheden. Zo staat Java in de volksmond bekend als traag, terwijl het in de regel juist 1 van de snelste moderne talen is. Voor puur number crunching winnen C en C++ het nog wel, maar het verschil is opvallend klein. Deze opvatting komt van de oude applets en trage desktop apps die het 'volk' kent, maar dit speelt op de server absoluut niet.
De standaard library voor web en server toepassingen (Java EE, voorheen J2EE), stond bekend als prijzig, heavyweight en closed source. Dit omdat het rond 2004 partijen als IBM waren die gedrochten aanboden van 1GB install size waar duizenden voor betaald moest worden en die er tientallen minuten(!) over deden om op te starten. Tegenwoordig download je echter GlassFish, TomEE, Resin, of JBoss AS. Download size tussen de 25 en 100MB. Volledig open source en start in enkele seconden op. De oude vooroordelen zijn dus absoluut niet meer waar.
De API van Java EE is tegenwoordig erg elegant. Het web framework (JSF) lijkt wat op ASP.NET, maar waar ASP.NET iets gebruikt dat meer op het oude JSP/ASP lijkt, gebruikt JSF de moderne templating engine Facelets. Wel heeft ASP.NET dan weer ASP.NET MVC, waar Java EE met JSF en JAX-RS slechts gedeeltelijk een antwoord op heeft.
C# is ooit begonnen als een nauwelijks van Java te onderscheiden Java-clone, maar heeft ondertussen veel meer interessante features in zich opgenomen, waar Java als taal (niet als platform!) toch wel lang heeft stilgestaan.
Voor Java is ondertussen ook veel gratis/goedkope hosting te krijgen (in de regel cloud gebasseerd), zoals GAE en OpenShift.
Het grote nadeel van Java is en blijft de grote interne fragmentatie. Bij ASP.NET huur ik een ASP.NET developer en die gaat dan ASP.NET dingen bouwen. Er is hooguit de discussie VB.net vs C#, maar die is toch wel grotendeels beslecht nu in het voordeel van C#. Als je echter 'gewoon' een Java developer huurt, weet je nooit wat je krijgt. Het kan een fanatieke Spring aanhanger zijn die volledig over de rooie gaat bij het horen van de term "EJB", maar het kan ook een Wicket zealot zijn die juist weer helemaal gek wordt als hij Spring MVC moet doen. Etc.
Waarop baseer je zoiets?
Of is het zoals ik eigenlijk verwacht, je kiest de taal waar je zelf verstand van hebt ... en gaat daarvoor ....
Dat gebeurd inderdaad vaak ja. Samengevat van bovenstaande (lange) verhaal zijn de keuzen: volwassenheid taal, platform en IDE, performance, beschikbaarheid developers, hosting opties, open source / gratis beschikbaar en nog niet genoemd; wat is gebruikelijk in het segment waar je iets voor gaat ontwikkelen?
B.v. NoSQL en Search wordt momenteel grotendeels gedomineerd door Java. Als je iets wilt bouwen wat hier direct op aansluit ben je gek als je PHP gaat gebruiken. Aan de andere kant, CMS, fora en blog systemen worden volledig gedomineerd door PHP. In de UK draaien banken enorm vaak Java/Spring. Wil je iets in die sector doen, dan is dat waarschijnlijk geen slechte keuze, etc etc.
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.