Zijn punt is niet scheef.
Jij hebt ook niet geheel ongelijk, maar deels wel.
Ten eerste;
Een framework is reten makkelijk zelf te bouwen. "Er is no way dat je routing en modulairization op een dergelijke manier zelf voor elkaar gaat krijgen zonder ernstige security problemen of buggy code. "
-- Nee, en daarom heb ik dat gebouwd in 35 minuten tijd...
Het klinkt misschien aannemelijk, maar is de 94 in jouw username je geboortejaar? Want dan kan ik mij jouw standpunt enigszins inbeelden. Tegenwoordig wordt elke programmeur opeens grootgebracht met "Kijk hoe geweldig frameworks zijn!" en "Je hoeft het wiel niet opnieuw uit te vinden hoor!"
Nou, frameworks zijn helemaal niet zo top als je denkt. Daarom zijn er ook zo bizar veel. Ze denken allemaal het beter te kunnen doen dan een ander en dat blijft consistent zo. Als er iets buggevoelig is en security issues heeft is het wel een gigantisch kant-en-klaar framework. Mijn home-made frameworks hebben zelden updates of onderhoud nodig en zijn vaak juist veiliger.
Anyway, back to the point;
@Dr.Zeno probeert geloof ik duidelijk te maken, dat het tegenwoordig een beetje de norm is om programmatuur te gebruiken welke kant-en-klare code uitspuugt. Deze code genereert vaak gigantische hoeveelheden overhead. Ook veel moderne truukjes en server-side frameworks doen dat. Het veroorzaakt nou eenmaal hele gigantische bakken met if-statements, checks bovenop checks, queries bovenop queries en binnen al die dingen nog eens 35 keer dezelfde dingen om iets uit te poepen wat eigenlijk in 5 regels code van een goede programmeur geschreven kon worden. -- Het punt zijnde dat, als 80% van't internet ondertussen zo in elkaar zit, waarom niet een paar apps? Niemand geeft er blijkbaar iets om.
"Zonder die template is de applicatie nog net zo ruk en draait deze gewoon als app in een browser."
-- Ook deze stelling is simpelweg niet waar.
- Ten eerste brengt een web-app enkele voordelen met zich mee zoals offline gebruiksmogelijkheden, toegang tot telefoonfuncties (zoals de camera, vibraties en bestanden) en push berichten.
- Ten tweede, kan zo'n app aanzienlijk veel sneller zijn dan een slecht geprogrammeerde native app (vooral welke dus gebouwd worden met template poepmachines). Als je echt veel spul lokaal af gaat vangen zal een native app altijd sneller zijn en dit is vanzelf sprekend, maar wanneer je veel server-side afvangt kan een web-app zelfs sneller zijn. Het is maar net waar je voor gaat... Ik heb juist enkele native apps vervangen met web-apps voor een fijnere interface en betere werking specifiek voor bepaalde doelgroepen. Deze doelgroepen zijn daar bijzonder blij mee maar apple staat hier vaak in de weg. Een groot deel van deze doelgroepen is dan ook als bedrijf geheel overgestapt naar android, puur om de Apple drama's te vermijden.
"Het template zorgt niet voor code die security in je Scripts toevoegt, waar Angular, Zend en Laravel dat bijvoorbeeld wel doen en daarnaast structuur in je code toevoegen."
Deze frameworks voegen praktisch geen security toe. Er zijn bepaalde simpele handelingen (vooral SQL-injection gerelateerd) waar deze frameworks rekening mee houden voor je.
Het punt is echter, dat veiligheid compleet binnen de handen van de programmeur ligt. De programmeur bepaald wat er precies gebeurd en als jij dekking gaat zoeken achter de frameworks kun je daar goed veel spijt van krijgen.
Waarom?
Ten eerste; frameworks zijn zo lek als een mandje. Het is maar net de vraag wanneer de volgende exploit gevonden word.
Ten tweede; Het ligt alsnog in de hand van de programmeur. De programmeur kan met 1 regel code alle beveiligingen van het framework ongedaan maken.
Ten derde; Een groot deel van security heeft met server settings te maken. Staat geheel los van deze frameworks.
ten vierde; Angular is een javascript framework. Dit is front-end, client-side. Dit doet weinig aan security, het maakt alles enkel 'strict' waardoor jij er zelf beter op gaat letten. Dan kun je het echter nog steeds erg makkelijk verknallen.
Het schrijven van een eigen framework en/of je wat beter verdiepen in het programmeren met de taal i.p.v. één of andere vervorming van een framework, zal je veel meer begrip geven van hoe code werkt en waarom het zo werkt. Dit raad ik dan ook elke stagiair(e) aan welke ik begeleid.
Frameworks en templating systemen zijn uiteindelijk niet erg anders dan slechte medicatie in het ziekenhuis. Je krijgt een pilletje en dit pilletje blijkt bijwerkingen te hebben. Vervolgens krijg je nog 3 pillen om deze bijwerkingen te verhelpen en dan krijg je voor elk van die 3 pillen weer 2 pillen, terwijl een gezond dieet al deze problemen al zou voorkomen. Dit is een oneindige cyclus.
Mijn home-made websites zonder kant-en-klaar frameworks zijn tot op de dag nog niet gehackt (kan ook te maken hebben met de kleine schaal natuurlijk, maar ook niet door bots e.d.) en zonder al die troep hebben mijn producten loadtimes van zo'n 70 tot 450ms... zonder caching. Elk van mijn frameworkloze websites scoort in de top 5% (Degene die er voor betalen zelfs in de top 1%) snelste websites ter wereld. Dit is iets waar ik niet eens moeite voor doe, maar iets wat gewoon gebeurd omdat ik geen 3rd-party crap injecteer in mijn projecten.
Zoals ik al zei; Die routing en modulairization waar jij het over hebt, heb ik in 35 minuten geschreven, --3 jaar geleden-- en daar heb ik nu nog steeds baat bij. Dit komt omdat ik de basis van het programmeren begrijp i.p.v. afhankelijk te zijn van partijen van 3e.
Ik ben erg blij voor je dat je passie hebt voor programmeren en dat is iets waardoor je waarschijnlijk ver zal komen, maar onderschat niet de kracht van seniore programmeurs. Toen ik nog maar net programmeerde sprak ik ze ook maar al te graag tegen met al mijn kennis over de nieuwste snufjes, maar het feit is dat de nieuwste snufjes zo fantastisch nog niet zijn.
Hoe verder het terug gaat naar de basics, hoe beter het product zal zijn.
Just my 2 cents, ik hoop dat je er wat aan hebt. Het was zeker niet mijn intentie om je te beledigen oid maar om je een nieuw perspectief te bieden.
[Reactie gewijzigd door NoobishPro op 23 juli 2024 02:13]