incaz schreef op zaterdag 22 maart 2014 @ 20:28:
Kajel: het toont volgens mij vooral aan dat imago belangrijker is dan werkelijkheid. Python is cooler dan php, als je designkeuzes goed weet te verkopen worden ze geaccepteerd, en men gebruikt php dan ook vooral om te bewijzen dat je goed genoeg bent om erop neer te kijken.
Cooler is niet relevant, het is vrij duidelijk zichtbaar dat er beter nagedacht is over het ontwerp van Python dan het ontwerp van PHP als je simpelweg naar de naamgevingen van de functies kijkt.
Ik heb vroeger heel wat PHP geschreven en daar had ik toch zeer regelmatig de PHP handleiding nodig om functies op te zoeken omdat het niet voorspelbaar was. Bij Python kan ik 90% van de tijd gewoon puur door logisch na te denken code schrijven en heb ik maar zelden documentatie nodig. Dat is echt puur een ontwerp punt.
Wolfboy: het ging er niet om dat het onmogelijk is... het ging erom dat het foutieve code kan opleveren. En geen beter voorbeeld dan je zelf hebt geillustreerd: 2 statements die zich op hetzelfde niveau bevinden worden verschillend geindenteerd en lijken dus tot verschillende scope te behoren, juist omdat je NIET het verschil kunt zien tussen een tab en een spatie tenzij je dat weer laat geven, maar het toont wel anders.
Klopt, daarom is die onvolkomenheid er in Python 3 helemaal uitgehaald, bij Python 2 kan je dat gedrag ook krijgen door "python -tt bestand.py" uit te voeren, dan is het mixen van tabs en spaties een error.
Maar zoals gezegd, met fatsoenlijke editors en werkwijzes heb je dit probleem gewoon niet, tenzij je random code van blogs gaat copy/pasten (wat sowieso een slecht idee is, daar zijn libraries voor) loop je eigenlijk nooit tegen dat probleem aan.
Vermoedelijk zien veel PHP'ers dit als een probleem omdat het bij PHP veel normaler is code te copy/pasten van het web en/of een script te downloaden en deze aan te passen. Aangezien development in de Python community veel meer library based is en je in principe eigenlijk nooit library download om deze zelf aan te passen (afgezien van het forken van een library wat nog weleens voorkomt) werkt dit gewoon heel anders en is het in de praktijk sowieso nooit een probleem.
Nu weet ik dat je bij PHP wel PEAR hebt maar het is heel wat anders dan de standaard werkwijze bij Python.
- Maak een virtualenv aan
- Begin met het maken van je project
- Heb je requirements? (Django, Flask, Numpy, etc...), installeren met "pip install <librarynaam>"
- Tijd om te delen/deployen? "pip freeze > requirements.txt"
En dan kan je bij de productieserver en/of andere developers gewoon dit doen:
- Maak een virtualenv aan
- git clone repository
- pip install -r requirements
En je hebt het geheel werkend inclusief alle libraries.
Je hebt dus whitespace die betekenis heeft, met als argument dat het misleidend is als dingen verkeerd worden weergeven... en vervolgens geef je iets waarbij de weergave nadrukkelijk misleidend is.
Dat slaat gewoon helemaal nergens op, echt niet.
Het is een voorbeeld van hoe je echt niet moet werken om te illustreren dat als je zo eigenwijs bent tabs en spaties te willen mixen, dat het kan.
Uiteraard slaat het voorbeeld nergens op, dat was het doel ook niet. Het was simpelweg een tegenbewijs van "je kan tabs en spaties niet mixen", dat iets kan wil niet zeggen dat je het moet willen