Re: PHP: false, null en '0'
Rene Pijlman wrote:
> Daniel Tryba:
>>maar python is toch volledig OO!
>
> Als je met "volledig" bedoelt dat er uitsluitend objecten bestaan in de
> zin van "een instantie van een klasse" dan moet ik je teleurstellen.
Dan zal je idd bij ruby moeten zijn :)
Mark
Re: PHP: false, null en '0'
Rene Pijlman wrote:
> Inca:
>>Rene Pijlman wrote:
>>> 1/2 is 5/10 ofwel 0,5. Dat leren kinderen van 11 (ofzo). Het is heel
>>> merkwaardig dat in programmeertalen van de
>>> lagere/middelbareschool-wiskunde wordt afgeweken.
>>
>>Tsja, maar daar/voor/ leren ze dat 1 gedeeld door 2 nul is, met rest 1.
>
> Dat is een didactische tussenstap, die later onjuist blijkt. Zoals de
> ooievaar die kindertjes brengt.
>
> Datzelfde kan van de bewering 1/2 = 0,5 niet gezegd worden. Die houdt in
> alle mij bekende varianten van de wiskunde stand.
Wij leerden anders op de middelbare school dat dit fout is.
0,5 == 1/2 +/- 1/20
Mark
Re: PHP: false, null en '0'
robert wrote:
> > Definieer logisch?
>
> Dusdanig dat ik niet na hoef te denken of de gebruikte
> programmeertaal zelf gaat afronden.
(-: Dan moet je zelf een programmeertaal schrijven. Want alleen een die je
zelf schrijft kan precies doen wat je verwacht. Ik vind het huidige gedrag
juist veel 'logischer'.
(Hoewel 'intuitiever' misschien een beter woord is, want met formele logica
heeft het weinig te maken)
> Ik kan de logica daarachter niet vinden: ik deel het ene getal door
> het andere, en dan verwacht ik een wiskundig kloppend antwoord.
Verdiep je eens in discrete wiskunde en wie weet wordt het 'logischer'?
Bij mij werd bij wiskunde al vrij snel erin gehamerd dat je natuurlijke en
reele (gebroken) getallen hebt, en dat dat heel verschillende dingen zijn.
En dat het wiskundig prima kloppend is als je zegt dat 1 / 2 = 0, als het
gaat over natuurlijke getallen. En het is slechts een kwestie van afspraak
(en context) of je uitgaat van natuurlijke getallen of juist niet.
--
Inca
NEE - Geen handel met voorkennis
JA - Wel met een gouden tip
http://www.poldermodelstickers.nl/
Re: PHP: false, null en '0'
Marcus:
>Rene Pijlman:
>> Datzelfde kan van de bewering 1/2 = 0,5 niet gezegd worden. Die houdt in
>> alle mij bekende varianten van de wiskunde stand.
>
>Wij leerden anders op de middelbare school dat dit fout is.
>0,5 == 1/2 +/- 1/20
Dat waren eigenwijze natuurkunde-, scheikunde- en biologie-leraren die hun
eigen wending aan de wiskunde gaven.
Het zit zo:
0,5 = 1/2
0,5 +/- 0,05 = 1/2 +/ 1/20
Onnauwkeurigheden, afrondingen en onzekerheden moeten expliciet gemaakt
worden. Ik kan mij die benadering (pun intended) herinneren van het
natuurkundig prakticum in het eerste studiejaar _na_ de middelbare school.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Re: PHP: false, null en '0'
Daniel Tryba wrote:
> maar python is toch volledig OO! Dat betkent toch dat 1/2 een object
> naar een integer met de waarde 0 oplevert. Het object bestaat en dus
> dient 1/2 true op te leveren! Of is python weer zo'n vage halve
> implementatie?
In dat geval lijkt me de test volledig zinloos, want dan krijg je toch
altijd true? 0/2 levert ook een object op. En zelfs 'false' zou dan een
object op moeten leveren en derhalve evalueren naar true. Ergens moet je een
keer de conversie maken naar een waarde, en wel een boolean. Het moment
waarop dat gebeurt is slechts een afspraak.
Overigens vermoed ik dat je in een pure OO-omgeving niet eens zoiets mag
schrijven. Het lijkt me eerder dat er dan een foutmelding moet komen dat er
een conversiefout is opgetreden (van een integer-object naar een
bool-object).
--
Inca
JA - Wel liberalisatie stroomnet
NEE - Geen stroom
http://www.poldermodelstickers.nl/
Re: PHP: false, null en '0'
Inca wrote:
> Ergens
> moet je een keer de conversie maken naar een waarde, en wel een
> boolean. Het moment waarop dat gebeurt is slechts een afspraak.
Je hoeft geen conversie te maken: als ik het mij goed herinner wordt in
SmallTalk het bericht 'ifTrue' gestuurd naar het object, met als argument
een block; een 'False' object negeert dat block, een 'True' object voert het
uit.
> Overigens vermoed ik dat je in een pure OO-omgeving niet eens zoiets
> mag schrijven. Het lijkt me eerder dat er dan een foutmelding moet
> komen dat er een conversiefout is opgetreden (van een integer-object
> naar een bool-object).
Doorredenerend op het voorgaande zou ook een integer-object een ifTrue
message kunnen ondersteunen, waarbij '0' het argument niet uitvoert en alle
anderen wel. Ik kan mij niet herinneren of SmallTalk dat doet, maar ik
vermoed van niet. Het lijkt me ook niet intuitief, maar aan het OO-zijn of
niet doet het niets af.
Groet, Jaap
Re: PHP: false, null en '0'
robert <{n.i.w.s}@allyourbass.org.invalid> wrote:
> > maar python is toch volledig OO! Dat betkent toch dat 1/2 een object
> > naar een integer met de waarde 0 oplevert. Het object bestaat en dus
> > dient 1/2 true op te leveren!
>
> Zodat een Boolean-object met waarde false ook true oplevert? ;)
Correct. IMHO is de if van python net zo consequent als de if van php.
Bij een string wordt niet naar de waarden van het object gekeken maar
naar of het object bestaat, bij een integer is opeens de waarde van het
object van belang. Althans zo komt het over, het zal wel een enge
afspraak zijn net zoals de string "0" false oplevert in php. Zelfs java
(met z'n primitieven en wrapperclasses voor deze primitieven) doet het
in dit geval beter. Daar dient de expression van een if een boolean (de
primitieve dus) op te leveren. bv:
class Foo
{
public static void main(String args[])
{
Boolean t=new Boolean(true);
if(t)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
}
}
Resulteert in:
$ javac /tmp/Foo.java
/tmp/Foo.java:7: incompatible types
found : java.lang.Boolean
required: boolean
if(t)
^
1 error
De enige correcte expression in dit geval is
if(t.booleanValue())
--
Daniel Tryba
Re: PHP: false, null en '0'
Inca <shadow*movements@wanadoo.nospam.invalid> wrote:
>> naar een integer met de waarde 0 oplevert. Het object bestaat en dus
>> dient 1/2 true op te leveren! Of is python weer zo'n vage halve
>> implementatie?
>
> In dat geval lijkt me de test volledig zinloos, want dan krijg je toch
> altijd true? 0/2 levert ook een object op. En zelfs 'false' zou dan een
> object op moeten leveren en derhalve evalueren naar true. Ergens moet je een
> keer de conversie maken naar een waarde, en wel een boolean. Het moment
> waarop dat gebeurt is slechts een afspraak.
>
> Overigens vermoed ik dat je in een pure OO-omgeving niet eens zoiets mag
> schrijven. Het lijkt me eerder dat er dan een foutmelding moet komen dat er
> een conversiefout is opgetreden (van een integer-object naar een
> bool-object).
Dat is wat ik persoonlijk logisch zou vinden, er is op zo'n moment zeer
weinig twijfel aan wat de expressie in een if betekent.
--
Daniel Tryba
Re: PHP: false, null en '0'
Marcus <mark@ijbema.xs4all.nl.invalid> wrote:
>> Datzelfde kan van de bewering 1/2 = 0,5 niet gezegd worden. Die houdt in
>> alle mij bekende varianten van de wiskunde stand.
>
> Wij leerden anders op de middelbare school dat dit fout is.
> 0,5 == 1/2 +/- 1/20
Beide beweringen zijn waar. De eerste (1/2=0.5) is namelijk een
definitie en 0.5~=0.5 +/- 0.05 is een afspraak die gemaakt is omtrendt de
sygnificantie van gemeten waarden.
--
Daniel Tryba
Re: PHP: false, null en '0'
Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
>>maar python is toch volledig OO!
>
> Als je met "volledig" bedoelt dat er uitsluitend objecten bestaan in de
> zin van "een instantie van een klasse" dan moet ik je teleurstellen.
Auw, en het leek me nog wel zo'n zinnige taal.
>>Of is python weer zo'n vage halve implementatie?
>
> Van wat?
Het OO paradigma (alles is een object).
--
Daniel Tryba
Re: PHP: false, null en '0'
Daniel Tryba:
>Rene Pijlman:
>>>maar python is toch volledig OO!
>>
>> Als je met "volledig" bedoelt dat er uitsluitend objecten bestaan in de
>> zin van "een instantie van een klasse" dan moet ik je teleurstellen.
>
>Auw, en het leek me nog wel zo'n zinnige taal.
Nou ja, als jij alleen met objecten wil werken dan kan dat. Maar voor de
liefhebbers van eenvoud en performance zijn er ook nog gewoon integers
enzo.
>>>Of is python weer zo'n vage halve implementatie?
>>
>> Van wat?
>
>Het OO paradigma
Is dat welgedefinieerd? Op welke standaard, specificatie of publicatie
doel je?
>(alles is een object).
If all you have is a hammer... :-)
Ik vind dit toch net zoiets als de relativiteitstheorie samenvatten als
"alles is relatief" of de aquadynamica als "alles stroomt".
Vanwaar die intellectuele armoede? Wees welkom, builtin types!
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Re: PHP: false, null en '0'
Daniel Tryba:
>0.5~=0.5 +/- 0.05 is een afspraak die gemaakt is
Niet met mij.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Re: PHP: false, null en '0'
Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
>>> Als je met "volledig" bedoelt dat er uitsluitend objecten bestaan in de
>>> zin van "een instantie van een klasse" dan moet ik je teleurstellen.
>>
>>Auw, en het leek me nog wel zo'n zinnige taal.
>
> Nou ja, als jij alleen met objecten wil werken dan kan dat. Maar voor de
> liefhebbers van eenvoud en performance zijn er ook nog gewoon integers
> enzo.
Kijk dat is nou een taak voor de compiler. In de syntax van de taal
hoeft deze niets te weten van wat sneller is. Zo kan het natuurlijk zijn
dat een 32bit integer op sommige platformen sneller is dan een 64bit
integer, performance betrekken in de syntax is IMHO dus volkomen fout.
Dat je wil kunnen forceren dat een int die je gebruikt daadwerkelijk
maximaal maar 256 waarden kan hebben is wel handig, maar dat zou
betekenen dat er gewoon een Byte object is wat een afgeleide is van het
Integer object.
>>>>Of is python weer zo'n vage halve implementatie?
>>> Van wat?
>>
>>Het OO paradigma
>
> Is dat welgedefinieerd?
Vast niet. Boeit ook niet. Er zijn meerdere beschikbare implentaties die
precies voldoen aan de "alles is een object" houding die ik al noemde.
> Op welke standaard, specificatie of publicatie doel je?
Vanwaar deze starre houding en de drang naar regels? Ik kan helaas geen
publicaties voor je vinden aangezien er schijnbaar netwerk problemen
zijn in het netwerk waarin ik zit. Maar volgens mij kan je voorbeelden
vinden bij de smalltalk implementaties (en wellicht in de C# specs,
immers op pagina 331 van "A programmer's introduction to C#" ISBN:
1-893115-86-0 staat beschreven dat primitieven afgeleiden zijn van de
ultimime bases classe).
>>(alles is een object).
> If all you have is a hammer... :-)
Het haer als object is toch echt multifunctioneel. Zo kan je er spijkers
mee in een muur rammen, maar ook een ruimte mee ventileren. Dit zijn
slechts 2 voorbeelden.
> Ik vind dit toch net zoiets als de relativiteitstheorie samenvatten als
> "alles is relatief" of de aquadynamica als "alles stroomt".
> Vanwaar die intellectuele armoede? Wees welkom, builtin types!
En waarom zouden builtins geen object kunnen zijn?
--
Daniel Tryba
Re: PHP: false, null en '0'
Rene Pijlman <reply.in.the.newsgroup@my.address.is.invalid> wrote:
> Daniel Tryba:
>>0.5~=0.5 +/- 0.05 is een afspraak die gemaakt is
>
> Niet met mij.
Tsja, ik heb ook geen goedkeuring gegeven voor de huidige definitie van
de meter of gram of seconde. Ik zal dit nog eens aankaarten zodra ik
weer eens op m'n flikker krijg dat ik volgens mijn werkgever te laat
kom :)
--
Daniel Tryba
Re: PHP: false, null en '0'
Daniel Tryba:
>Rene Pijlman:
>>Daniel Tryba:
>>>Het OO paradigma
>>
>> Is dat welgedefinieerd?
>
>Vast niet. Boeit ook niet.
Tsja, daar houdt het voor mij op. Zo werkt het gewoon niet in de techniek.
>Er zijn meerdere beschikbare implentaties
"Van wat?" Is dan de enige zinnige vraag, maar in deze context kennelijk
retorisch.
>> Op welke standaard, specificatie of publicatie doel je?
>
>Vanwaar deze starre houding en de drang naar regels?
Nou ja, je kunt natuurlijk als kunstenaar naar computerprogramma's kijken.
Dan kun je er mooi behang mee maken enzo.
Maar ik bekijk het als techicus. Ik wil software construeren die bepaalde
functionaliteit garandeert. Dat kun je een starre houding noemen, maar het
is de houding waardoor vliegtuigen vliegen en treinen
rijd^H^H^H^H^H^H^H^H^H^H^H^Hboten blijven drijven.
>>Wees welkom, builtin types!
>
>En waarom zouden builtins geen object kunnen zijn?
Omdat ik "types" zei, niet "classes".
--
René Pijlman
Wat wil jij leren? http://www.leren.nl