abonnement Unibet Coolblue
pi_194229587
1
2
3
4
5
6
7
<?php
1;
2;
b;
2;
print(
c); // prints 3
?>
voorbeeld I

1
2
3
4
5
6
7
<?php
1;
2;
b;
2;
print(
c); // prints 4
?>
voorbeeld II

Oké kijkende naar de twee bovenstaande pseudo code voorbeelden hoop ik dat het duidelijk is waar ik naar op zoek ben, namelijk: hoe wordt het principe genoemd waarbij zoals in voorbeeld I de variabele c bestaat uit de waarde uit de variabelen a en b, en niet meer verandert wanneer a dan wel b dit wel doen zoals dit in voorbeeld II wel het geval is?

Ik zou hier graag wat meer onderzoek naar willen doen maar ik kom niet op de juiste term.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
  donderdag 23 juli 2020 @ 21:31:47 #2
150517 SpecialK
No hesitation, no delay.
pi_194229716
byref byval
There are no things, but as a consequence there are as many things as we like
pi_194229783
quote:
0s.gif Op donderdag 23 juli 2020 21:31 schreef SpecialK het volgende:
byref byval
Ja ik had al gezocht op "arithmetics by reference" maar met weinig resultaat tot dusver. ;(
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194229963
Zoek eens op object references en object cloning.
  donderdag 23 juli 2020 @ 21:59:41 #5
85514 ralfie
!Yvan eht nioj
pi_194230050
of anders imperative programming vs functional programming (of de tegenhanger van lazy evaluation)
pi_194230167
Hm misschien was ik niet zo duidelijk (sorry als dat zo was) maar ik ben vooral op zoek naar het idee dat de wijzigingen in a dan wel b met terugwerkende kracht in c komen.

Lazy evaluation is een heel goed aanknooppunt iig denk ik even induiken. :P
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194230741
Het lijkt me stug dat er ook maar één programmeertaal is die conform voorbeeld twee werkt. 'a + b' is een expressie die evalueert tot een waarde en die waarde wijs je toe aan c. C 'is' dus die waarde (of c 'points' naar die waarde; verschilt per taal hoe je dit precies wil zien). Het is anders wanneer c een waarde 'heeft'. Dus als c een object is met een bepaald field en dat field kan van waarde veranderen. Iets als:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
val c 
= new Something();
val a = new SomethingElse();

val aOldName "phpIsAids";
a.name aOldName ;
c.mySomethingElse a;
val aNewName "daaromIsDitPseudoCode";
a.name aNewName;

c.mySomethingElse.name == aOldName // false
c.mySomethingElse.name == aNewName // true
?>
Voegt hoogtepunten toe aan jullie druilerige bestaan.
pi_194230842
quote:
7s.gif Op donderdag 23 juli 2020 22:34 schreef 2thmx het volgende:
Het lijkt me stug dat er ook maar één programmeertaal is die conform voorbeeld twee werkt. 'a + b' is een expressie die evalueert tot een waarde en die waarde wijs je toe aan c. C 'is' dus die waarde (of c 'points' naar die waarde; verschilt per taal hoe je dit precies wil zien). Het is anders wanneer c een waarde 'heeft'. Dus als c een object is met een bepaald field en dat field kan van waarde veranderen. Iets als:
[ code verwijderd ]

Hm ja qua imperatieve talen vernoed ik ook niet dat er zo een bestaat die enige bekendheid geniet, hoe pointers en references werken weet ik verder wel redelijk. :P

Maar wat voor nadelen zou de 2e versie precies met zich meebrengen?
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194230990
quote:
16s.gif Op donderdag 23 juli 2020 22:38 schreef FlippingCoin het volgende:

[..]

Hm ja qua imperatieve talen vernoed ik ook niet dat er zo een bestaat die enige bekendheid geniet, hoe pointers en references werken weet ik verder wel redelijk. :P

Maar wat voor nadelen zou de 2e versie precies met zich meebrengen?
Hoe zou je in een taal die conform voorbeeld twee werkt, het voor elkaar kunnen krijgen dat je a + b direct wil evalueren tot een nieuwe waarde? Dus hoe kan je in een taal die conform voorbeeld twee werkt code schrijven om het effect van voorbeeld één te krijgen?

Java/Kotlin werkt volgens voorbeeld één, en als ik voorbeeld twee wil, dan kan ik iets doen als:
1
2
3
4
5
6
7
<?php
var 1;
val b 2;
val add = (xy) -> y;
2;
val c add.apply(a,b)
?>
Voegt hoogtepunten toe aan jullie druilerige bestaan.
pi_194231086
quote:
7s.gif Op donderdag 23 juli 2020 22:34 schreef 2thmx het volgende:
Het lijkt me stug dat er ook maar één programmeertaal is die conform voorbeeld twee werkt.
Vroeger had je Lingo (van Adobe Director) dat zo werkte. Wilde je het zoals voorbeeld 1 dan moest je een kopie van de variabele maken. Zo niet dan was het slechts een alias.

Lingo was gebaseerd op Javascript, meen ik.
pi_194231197
quote:
7s.gif Op donderdag 23 juli 2020 22:45 schreef 2thmx het volgende:

[..]

Hoe zou je in een taal die conform voorbeeld twee werkt, het voor elkaar kunnen krijgen dat je a + b direct wil evalueren tot een nieuwe waarde? Dus hoe kan je in een taal die conform voorbeeld twee werkt code schrijven om het effect van voorbeeld één te krijgen?

Java/Kotlin werkt volgens voorbeeld één, en als ik voorbeeld twee wil, dan kan ik iets doen als:
[ code verwijderd ]

Daar zijn wel meerdere oplossingen voor je kan een andere operator of keyword defineren desnoods.


En ja zo zou het idd kunnen met een late functie call en je zou ook het observer pattern kunnen toepassen of naar het reactive paradigma. :P

Ben wel benieuwd naar wat de impact zou zijn als een programeertaal wel zoals het 2e voorbeeld zou werken.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194231210
quote:
0s.gif Op donderdag 23 juli 2020 22:50 schreef Tom_Ace het volgende:

[..]

Vroeger had je Lingo (van Adobe Director) dat zo werkte. Wilde je het zoals voorbeeld 1 dan moest je een kopie van de variabele maken. Zo niet dan was het slechts een alias.

Lingo was gebaseerd op Javascript, meen ik.
Cool ga ik ook eens naar kijken nooit van gehoord. :o
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194231254
quote:
16s.gif Op donderdag 23 juli 2020 22:54 schreef FlippingCoin het volgende:
Ben wel benieuwd naar wat de impact zou zijn als een programeertaal wel zoals het 2e voorbeeld zou werken.
Het is vooral heel irritant. Wanneer gebruik je zoiets nou in de praktijk?
  donderdag 23 juli 2020 @ 22:59:56 #14
380899 2thmx
FvD-moslim
pi_194231299
quote:
16s.gif Op donderdag 23 juli 2020 22:54 schreef FlippingCoin het volgende:

[..]

Daar zijn wel meerdere oplossingen voor je kan een andere operator of keyword defineren desnoods.

En ja zo zou het idd kunnen met een late functie call en je zou ook het observer pattern kunnen toepassen of naar het reactive paradigma. :P

Ben wel benieuwd naar wat de impact zou zijn als een programeertaal wel zoals het 2e voorbeeld zou werken.
Anders geformuleerd dan: wat zou 't type zijn van c in voorbeeld twee?

Een integer/number? Hoe kan de waarde dan later nog veranderen, zonder dat je c aan een andere waarde toewijst?

Een functie? Een functie heeft geen numerieke waarde (kan hooguit een numerieke waarde opleveren als de functie wordt geëvalueerd).
Voegt hoogtepunten toe aan jullie druilerige bestaan.
  donderdag 23 juli 2020 @ 23:04:24 #15
380899 2thmx
FvD-moslim
pi_194231365
quote:
0s.gif Op donderdag 23 juli 2020 22:50 schreef Tom_Ace het volgende:

[..]

Vroeger had je Lingo (van Adobe Director) dat zo werkte. Wilde je het zoals voorbeeld 1 dan moest je een kopie van de variabele maken. Zo niet dan was het slechts een alias.

Lingo was gebaseerd op Javascript, meen ik.
Kan me er weinig bij voorstellen. In een taal die werkt als voorbeeld twee zou `a + b` de syntax voor een functie-declaratie zijn, dus als je daar een kopie van maakt dan heb je nog steeds dezelfde functie. Heb je een code-voorbeeld anders? :)
Voegt hoogtepunten toe aan jullie druilerige bestaan.
pi_194231393
quote:
0s.gif Op donderdag 23 juli 2020 22:57 schreef Tom_Ace het volgende:

[..]

Het is vooral heel irritant. Wanneer gebruik je zoiets nou in de praktijk?
Hmmm weet ik niet goed, bij het binden van user input aan program state bijvoorbeeld.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194231418
quote:
7s.gif Op donderdag 23 juli 2020 22:59 schreef 2thmx het volgende:

[..]

Anders geformuleerd dan: wat zou 't type zijn van c in voorbeeld twee?

Een integer/number? Hoe kan de waarde dan later nog veranderen, zonder dat je c aan een andere waarde toewijst?

Een functie? Een functie heeft geen numerieke waarde (kan hooguit een numerieke waarde opleveren als de functie wordt geëvalueerd).
Hmmm nou je kan de waarde toch gewoon een integer laten, dit is vooral aan de compiler dit zo te laten verlopen mocht je dit willen?
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
  donderdag 23 juli 2020 @ 23:45:51 #18
380899 2thmx
FvD-moslim
pi_194231984
quote:
16s.gif Op donderdag 23 juli 2020 23:07 schreef FlippingCoin het volgende:

[..]

Hmmm nou je kan de waarde toch gewoon een integer laten, dit is vooral aan de compiler dit zo te laten verlopen mocht je dit willen?
Dat zou hooguit (in theorie) kunnen als alle waarden op compile-time een constante waarde hebben. Als 'a' of 'b' op run-time een waarde krijgen, bijvoorbeeld als user-input, dan niet.
Voegt hoogtepunten toe aan jullie druilerige bestaan.
pi_194232021
quote:
7s.gif Op donderdag 23 juli 2020 23:45 schreef 2thmx het volgende:

[..]

Dat zou hooguit (in theorie) kunnen als alle waarden op compile-time een constante waarde hebben. Als 'a' of 'b' op run-time een waarde krijgen, bijvoorbeeld als user-input, dan niet.
Waarom niet? Je hoeft het niet daadwerkelijk in n-bit op te slaan daar, je kan dan gewoon een reference naar een stuk geheugen opslaan of zo lijkt mij.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
  vrijdag 24 juli 2020 @ 00:28:10 #20
380899 2thmx
FvD-moslim
pi_194232408
quote:
16s.gif Op donderdag 23 juli 2020 23:50 schreef FlippingCoin het volgende:

[..]

Waarom niet? Je hoeft het niet daadwerkelijk in n-bit op te slaan daar, je kan dan gewoon een reference naar een stuk geheugen opslaan of zo lijkt mij.
Als c een integer is, dan kan je er alleen een numerieke waarde in opslaan. Eigenlijk wil je dat c een functie, (referenties naar) de argumenten van de functie en de waarde waar deze functie-aanroep naar evalueert tegelijkertijd is.
Voegt hoogtepunten toe aan jullie druilerige bestaan.
pi_194235287
quote:
7s.gif Op vrijdag 24 juli 2020 00:28 schreef 2thmx het volgende:

[..]

Als c een integer is, dan kan je er alleen een numerieke waarde in opslaan. Eigenlijk wil je dat c een functie, (referenties naar) de argumenten van de functie en de waarde waar deze functie-aanroep naar evalueert tegelijkertijd is.
Is afhankelijk van je implementatie van je compiler hoe je dat opslaat? Als jij er als ontwerper van een taal i.p.v. de numerieke waarde in binair formaat twee pointers naar een andere waarde opslaat zou dat toch gewoon moeten kunnen. En voor de programmeur gedraagt het zich door lazy evaluation gewoon als een integer wanneer deze waarde gebruijkt wordt.
I think that it’s extraordinarily important that we in computer science keep fun in computing
For all who deny the struggle, the triumphant overcome
pi_194236395
quote:
14s.gif Op donderdag 23 juli 2020 23:04 schreef 2thmx het volgende:
Kan me er weinig bij voorstellen. In een taal die werkt als voorbeeld twee zou `a + b` de syntax voor een functie-declaratie zijn, dus als je daar een kopie van maakt dan heb je nog steeds dezelfde functie. Heb je een code-voorbeeld anders? :)
Het was volgens mij alleen bij arrays. Als je bijvoorbeeld dit deed:

a = [1,2,3,4]
b = a

en je veranderde a, dan veranderde b mee.
Wilde je dat niet, dan moest je dit doen:

b = a.copy

Dingen zoals c = a + b kon alleen als a en b numeriek waren, zo niet dan kreeg je een foutmelding.

Lingo was een heel simpele programmeertaal maar je kon er echt mooie dingen mee maken. Director was een fantastisch authoring programma, totdat Adobe het opkocht omdat het te concurrerend voor ze was. Die hebben het een stille dood laten sterven. :(
  vrijdag 24 juli 2020 @ 12:17:52 #23
380899 2thmx
FvD-moslim
pi_194237231
quote:
0s.gif Op vrijdag 24 juli 2020 11:21 schreef Tom_Ace het volgende:

[..]

Het was volgens mij alleen bij arrays. Als je bijvoorbeeld dit deed:

a = [1,2,3,4]
b = a

en je veranderde a, dan veranderde b mee.
Wilde je dat niet, dan moest je dit doen:

b = a.copy
Ah zo. Dat is in Java/Kotlin (en vast heel veel andere talen) ook zo. 'a' en 'b' wijzen immers naar hetzelfde object in dit voorbeeld.

1
2
3
4
stack                           | heap
---------------------------------------------------------------
a ---> geheugen-adres XYZ -->   | array-object: [0,1,2,3]
b ---> geheugen-adres XYZ   


Als je .copy doet, dan wordt er een nieuw object aangemaakt (als je een 'deep copy' doet, dan wordt ook een kopie aangemaakt van alle elementen):

1
2
3
4
stack                           | heap
---------------------------------------------------------------
a ---> geheugen-adres XYZ -->   | array-object: [0,1,2,3]
b ---> geheugen-adres PQR -->   | array-object: [0,1,2,3]

Maar volgens is dit niet wat TS bedoelt.
Voegt hoogtepunten toe aan jullie druilerige bestaan.
  vrijdag 24 juli 2020 @ 12:21:04 #24
380899 2thmx
FvD-moslim
pi_194237279
quote:
16s.gif Op vrijdag 24 juli 2020 10:13 schreef FlippingCoin het volgende:

[..]

Is afhankelijk van je implementatie van je compiler hoe je dat opslaat? Als jij er als ontwerper van een taal i.p.v. de numerieke waarde in binair formaat twee pointers naar een andere waarde opslaat zou dat toch gewoon moeten kunnen. En voor de programmeur gedraagt het zich door lazy evaluation gewoon als een integer wanneer deze waarde gebruijkt wordt.
De twee pointers én de logica dat ze bij elkaar opgeteld moeten worden. Dus de functie en zijn argumenten. Het kan in theorie, maar het levert heel moeilijk leesbare code om iets voor elkaar te krijgen dat al kan met bestaande talen die leesbaarder zijn :s).
Voegt hoogtepunten toe aan jullie druilerige bestaan.
  vrijdag 24 juli 2020 @ 12:30:27 #25
380899 2thmx
FvD-moslim
pi_194237383
Ik denk trouwens dat als je googlet op 'command pattern' dat je wel iets vindt dat past bij je zoektocht, TS.
https://en.wikipedia.org/wiki/Command_pattern
Voegt hoogtepunten toe aan jullie druilerige bestaan.
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')