Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2017-02-05, 23:09
  #13
Medlem
Fel ordval enligt mig. PHP "gissar inte ihop" nåt. Det finns regler bakom det här, och språket fungerar enligt dem. Som e7andy sa, vad tycker du att resultatet borde bli om man jämför tal med strängar? Problemet är att folks kod ofta är skriven utan att upprätthålla variabeltyper. Att PHP varit så tillåtande med det där borde i sig vara nåt som får folk att koda mera strikt, det leder till situationer som överraskar de flesta annars. PHP7 har tagit stora steg i rätt riktning vad gäller det här, speciellt om man slår på strict mode.
Citera
2017-02-10, 00:46
  #14
Medlem
Trillskes avatar
Även hela JavaScripts beteende är (väldigt väl) reglerat och dokumenterat. Det betyder inte att reglerna är bra. Och du håller ju med själv när du skriver att PHP 7 tagit stora steg i rätt riktning.

Det finns en övergripande poäng med flexibiliteten i dynamiska språk (trots att merparten av alla applikationer som skapas blir horribla). Men saker som att utan att klaga konvertera bokstavssträngar till en int vid en ==operation utan att det efterfrågats tydligare än så är en helt meningslös hazard.
__________________
Senast redigerad av Trillske 2017-02-10 kl. 00:49.
Citera
2017-02-10, 12:48
  #15
Medlem
Jag står fast vid att hazard är fel ord. Det ger ganska troligt intryck av att språket är slumpartat, opålitligt och ger oförutsägbara resultat. Men verkligheten är ju att det liksom andra språk har regler som faktiskt styr resultaten(om man inte har hittat en bugg, osv, osv). Det visar väl bara tydligt att man inte ska tro att man kan nåt, eller hur det nu var . Eller att man inte ska tro att alla språk fungerar exakt likadant även fast koden ofta följer gemensamma grunder.

Om du istället säger att det nog hade varit bättre för PHP utan den där typomvandlingen så håller jag nog med dig. Men hur många gånger har det sagts på olika ställen redan..
Citera
2017-02-10, 21:03
  #16
Medlem
enowens avatar
php skjuter ju sig själv i foten här. Den behöver inte ens jämföra värdet eller försöka kasta om någonting.
Det räcker med att kolla om typerna överhuvudtaget är samma... python löser det mycket bättre som exempel.
Citera
2017-02-11, 21:05
  #17
Medlem
Citat:
Ursprungligen postat av enowen
php skjuter ju sig själv i foten här. Den behöver inte ens jämföra värdet eller försöka kasta om någonting.
Det räcker med att kolla om typerna överhuvudtaget är samma... python löser det mycket bättre som exempel.
Nej, PHP skjuter sig inte i foten.

Tänk på att om du postar data i ett webformulär så kan inte PHP veta om fältet var tänkt att innehålla text eller nummer. Och man har valt att utvecklaren inte skall behöva hantera allt data genom:

Kod:
$age get_integer($POST['age']);
$weigth get_integer($POST['weight']);
$name get_string($POST['name']); 

I stället får du automatregler som i grunden fungerar rätt väl. Men varje utvecklare förväntas förstå exakt vad språket bjuder på, så att man kan ta hand om de fall som behöver specialhantering.
Citera
2017-02-11, 23:31
  #18
Medlem
enowens avatar
Citat:
Ursprungligen postat av cellplast
Nej, PHP skjuter sig inte i foten.

Tänk på att om du postar data i ett webformulär så kan inte PHP veta om fältet var tänkt att innehålla text eller nummer. Och man har valt att utvecklaren inte skall behöva hantera allt data genom:

Kod:
$age get_integer($POST['age']);
$weigth get_integer($POST['weight']);
$name get_string($POST['name']); 

I stället får du automatregler som i grunden fungerar rätt väl. Men varje utvecklare förväntas förstå exakt vad språket bjuder på, så att man kan ta hand om de fall som behöver specialhantering.

Vilket är väldigt dåligt... Jag ser hellre att allting som kommer in via användaren är strängar som man själv får kasta om till det man förvänta sig när man ändå håller på att validera (vilket man alltid gör när man tar emot data från användaren) än att php hittar på konstiga regler.

Detta är ju väldigt fint...

Kod:
<?php
echo == "hejsan";
echo 
== "1idiot";
__________________
Senast redigerad av enowen 2017-02-11 kl. 23:37.
Citera
2017-02-12, 13:11
  #19
Medlem
Citat:
Ursprungligen postat av enowen
Vilket är väldigt dåligt... Jag ser hellre att allting som kommer in via användaren är strängar som man själv får kasta om till det man förvänta sig när man ändå håller på att validera (vilket man alltid gör när man tar emot data från användaren) än att php hittar på konstiga regler.

Detta är ju väldigt fint...

Kod:
<?php
echo == "hejsan";
echo 
== "1idiot";

Men det är bara att acceptera att världens olika programmeringsspråk finns utspridda över en rätt bred skala mellan hårt och löst typade. Det viktiga är att en bra programmerare lyckas, medan en dålig programmerare lyckas krascha sitt projekt oberoende av vilket språk de väljer.

En bra programmerare vet dessutom att de förväntas göra fullständig kontroll av sitt indata både direkt i webläsaren och direkt det tas emot i servern. Samt därefter fortsätta att misstro alla parametrar igenom hela programmet för att tidigt reagera på buggar i stället för att lämna systemet öppet för SQL injection och andra små roliga oops.
Citera
2017-02-12, 15:17
  #20
Medlem
enowens avatar
Citat:
Ursprungligen postat av cellplast
Men det är bara att acceptera att världens olika programmeringsspråk finns utspridda över en rätt bred skala mellan hårt och löst typade. Det viktiga är att en bra programmerare lyckas, medan en dålig programmerare lyckas krascha sitt projekt oberoende av vilket språk de väljer.

En bra programmerare vet dessutom att de förväntas göra fullständig kontroll av sitt indata både direkt i webläsaren och direkt det tas emot i servern. Samt därefter fortsätta att misstro alla parametrar igenom hela programmet för att tidigt reagera på buggar i stället för att lämna systemet öppet för SQL injection och andra små roliga oops.

Tar det som att du håller med mig då, annars har jag ingen aning om vad du försökte komma fram till här.
Citera
2017-02-12, 16:06
  #21
Medlem
Citat:
Ursprungligen postat av enowen
Detta är ju väldigt fint...

Kod:
<?php
echo == "hejsan";
echo 
== "1idiot";
Ja, det är underligt. Fast det som verkligen är underligt är varför man jämför en sträng med en int. Har man inte koll på sina typer så gör man explicit castning och validering.
Kan man inte koda så går det snett förr eller senare.
Citera
2017-02-12, 16:38
  #22
Medlem
Citat:
Ursprungligen postat av enowen
Tar det som att du håller med mig då, annars har jag ingen aning om vad du försökte komma fram till här.
Det jag försöker säga är att man kan inte vara arg på ett funktionellt språk för att det är just funktionellt.

Och man kan inte vara arg på ett löst typat språk för att det är löst typat.

Vill man inte ha ett löst typat språk så är ju den naturliga gången att man väljer ett annat språk. Att så många använder PHP torde komma just från att den lösa typningen gjort det enkelt för folk att komma igång. Även om det då innebär svåra problem med statisk kodanalys och därmed gör det jobbigare att skriva stora system.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback