Progammeren

10-07-2020 12:23 37 berichten
Hoi allen,

Heb sinds kort interesse in progammeren, kwam even iets tegen wat ik niet helemaal begrijp

Zitten er hier toevallig programmeurs die mij simpel kunnen uitleggen wat string interpolation is en waarvoor het gebruikt wordt.... wat kun je er uiteindelijk mee?

Groetjes
kantlijn schreef:
10-07-2020 15:25


Dan kun je wel gaan doen alsof het absolute noodzaak is om tot in detail te weten hoe stringinterpolatie in zijn werk gaat maar uiteindelijk is het allemaal niet zo interessant en veel handiger dat TO gewoon door kan naar het volgende onderwerp. Dat zal dan deep comparison zijn en dan kan ze weer 18 pagina's wikipedia en MDN doornemen. Uiteindelijk zien beginners dan door de bomen het bos niet meer, daarom is het beter om soms wat te vereenvoudigen.
Dat inderdaad. TO kan weer verder, helemaal prima dus :)
Alle reacties Link kopieren
Okay, ik hap.
kantlijn schreef:
10-07-2020 15:25
TO is zelf aan het programmeren geslagen en vraagt om een simpele uitleg over string interpolation, ze is geen eerstejaarsstudent die vraagt hoe een red-black tree te implementeren. Dan kun je heel gewichtig 'read the docs' gaan zitten roepen en een wikipedialink gaan zitten geven, maar TS is ongetwijfeld van na de oorlog en niet op haar achterhoofd gevallen, ergo ruim bekend met wikipedia en hoe daar iets op te zoeken. Waarschijnlijk werd het haar daar ook niet duidelijk omdat ze in de eerste drie zinnen vijf termen tegenkomt die ze niet kent en die ze dan ook recursief kan gaan zitten uitpluizen. Dat schiet niet op.
moentje_ komt hier met een brede vraag: Wat is string interpolation en waarvoor gebruik je het? Er is voldoende materiaal te vinden. Beter dan je kan verwachten van een forum. Zeker van een forum dat er in eerste instantie niet voor bedoeld is, maar waar het vast wel okay is. Daar is niks gewichtigs aan. De wikipedia-pagina heeft, naast de definitie tal van voorbeelden. Als ze daar niet uitkomt kan ze een gerichte vraag stellen en dan snel verder. Dat is vast ook hoe je een wikipedia-pagina kan lezen. Er is een def, voorbeelden, redenen waarom je het gebruikt etc.

Wat onhandig is is onjuiste informatie geven. Nu is iemand die het onderwerp niet snapte weg met onjuiste info. Misschien is het te herstellen, en komt ze erachter dat het niet klopt. Maar ik zou niet tevreden zijn na een cursus om dan zelf te moeten herstellen. Maar ja, misschien mag je zelf herstellen verwachten van een forum. Het is nog niet duidelijk dat ze het begrijpt. Ze denkt dat ze het begrijpt.
kantlijn schreef:
10-07-2020 15:25
Waarschijnlijk is ze in javascript of python bezig (en komt er geen compiler aan te pas) om data types onder de knie te krijgen en gaat het in eerste instantie om gepersisteerde data in een geprinte string te krijgen.

Dan kun je wel gaan doen alsof het absolute noodzaak is om tot in detail te weten hoe stringinterpolatie in zijn werk gaat maar uiteindelijk is het allemaal niet zo interessant en veel handiger dat TO gewoon door kan naar het volgende onderwerp. Dat zal dan deep comparison zijn en dan kan ze weer 18 pagina's wikipedia en MDN doornemen. Uiteindelijk zien beginners dan door de bomen het bos niet meer, daarom is het beter om soms wat te vereenvoudigen.
Waarom die aannames over wat ze doet en wat haar achtergrond is? Als je data types onder de knie wilt krijgen zijn Python en Javascript niet de beste keuzes. Ze zijn vrij los met datatypes. Vooral Javascript laat je dingen doen met variabelen die je misschien niet zou willen. Maar ja, dat is een didactische keuze. deep comparison had ik niet verwacht na stringinterpolatie omdat voor deep comparison je eerst iets wilt weten van de datastructuur van dingen die je vergelijkt met deep comparison. En ik zou denken dat iemand die net heeft gestoeid met string interpolatie dat nog niet weet. En deep comparison lijkt me qua concept ingewikkelder dan stringinterpolatie. Maar he, misschien klopt de aanname wel gewoon dat haar volgende onderwerp deep comparison is.
Alle reacties Link kopieren
Dan wat er niet klopt.

Ik zal het informeel uitleggen zonder code.

Stel, Alice en Bob zitten aan tafel.
Alice zegt tegen Bob:
"Ik heb een woord in gedachten. Schrijf dat woord op."
Dat gaat niet, want Bob weet niet wat dat woord is en gaat het niet raden.
kantlijn schreef:
10-07-2020 13:16
Dit is inderdaad string interpolation: een eerder gedeclareerde variabele...
Het scenario wat ik omschrijf is wat hier gebeurt. Je kan je programma zien als verhaal dat je de computer vertelt en dat de computer nadoet (informeel). Als je een variabele declareert zeg je: Neem iets in gedachte. Een getal, een woord, wat dan ook. Dat kan je specifieker maken. Maar dan heb je niet gezegd wat dat woord is. Als we fancy computerwoorden gaan gebruiken moet je die variabele ook initialiseren. Een waarde eraan geven. (Kan je zeggen flauw, maar dat het een waarde heeft en dus kan vervangen is het hele punt van stringinterpolarisatie. In een klas met beginners vergeet de helft goed te initialiseren.)
Bijvoorbeeld, Alice had kunnen zeggen: Dat woord is "fiets".

Dan string interpolation.
Bij string interpolation heb je een 'pseudozin' die je compleet maakt met informatie. Bijvoorbeeld:
"Het woord dat Alice in gedachten heeft is [woord]." De haken geven aan dat iets vervangen moet worden. (Elke taal die stringinterpolarisatie ondersteunt kan zijn eigen manier van dat aangeven en aanpakken weten.)
Als iemand je dan het vervoermiddel heeft verteld kan je stringinterpolatie toepassen.
Je vervangt
kantlijn schreef:
10-07-2020 13:16
die dan evalueert naar de toegewezen waarde.
(Niet "evalueert". En de rest van de pseudozin blijft bestaan.)
[vervoermiddel] met de eerder gespecificeerde waarde.
Zo krijg je bijvoorbeeld de zin:
"Het woord dat Alice in gedachten heeft is fiets."
Het 'vertalen' naar die nieuwe zin zou je evalueren kunnen noemen. Maar dat gebeurt met de vervangingen. De 'pseudozin' evalueert naar het resultaat, i.p.v. naar de toegewezen waarde.
kantlijn schreef:
10-07-2020 13:16
Dit is inderdaad string interpolation: een eerder gedeclareerde variabele binnen een string kunnen aanroepen, ...
Technisch geneuzel, je roept strings niet aan, je leest ze, of schrijft ze. En in sommige talen bewerk je ze, niet altijd. Bijvoorbeeld methoden roep je aan.
Alle reacties Link kopieren
kantlijn schreef:
10-07-2020 16:09
Nee, maar uitgerekend TO geeft aan wel wat met mijn antwoord te kunnen. Blijkbaar kan ik dus toch wel redelijk inschatten hoe iets voor beginners inzichtelijk te krijgen.

Wat jij doet is echt 'the horror' wat mij betreft. Als iemand een vraag stelt, dan geef je óf volledig antwoord (en zeker bij programmeren luistert dit nauw!) of je geeft de versimpelde versie en je zegt dit er bij. Mensen automatisch, zonder rekening houden met hun leerstijl, bestempelen als beginners en ze in de waan laten dat ze het volledige antwoord hebben gekregen, vind ik persoonlijk stuitend. Aan mij als student zou je een slechte hebben als ik er achter kwam. Ik wil namelijk een concept in één keer goed leren. Niet er pas later achter komen dat het eigenlijk genuanceerder ligt.
Alle reacties Link kopieren
madamzonderm schreef:
10-07-2020 18:09
Okay, ik hap.

moentje_ komt hier met een brede vraag: Wat is string interpolation en waarvoor gebruik je het? Er is voldoende materiaal te vinden. Beter dan je kan verwachten van een forum. Zeker van een forum dat er in eerste instantie niet voor bedoeld is, maar waar het vast wel okay is. Daar is niks gewichtigs aan. De wikipedia-pagina heeft, naast de definitie tal van voorbeelden. Als ze daar niet uitkomt kan ze een gerichte vraag stellen en dan snel verder. Dat is vast ook hoe je een wikipedia-pagina kan lezen. Er is een def, voorbeelden, redenen waarom je het gebruikt etc.

Wat onhandig is is onjuiste informatie geven. Nu is iemand die het onderwerp niet snapte weg met onjuiste info. Misschien is het te herstellen, en komt ze erachter dat het niet klopt. Maar ik zou niet tevreden zijn na een cursus om dan zelf te moeten herstellen. Maar ja, misschien mag je zelf herstellen verwachten van een forum. Het is nog niet duidelijk dat ze het begrijpt. Ze denkt dat ze het begrijpt.

De vraag wat stringinterpolatie is, is niet een brede vraag. Het is bij uitstek een vrij specifieke vraag die dan ook tamelijk bondig beantwoord kan worden. Dat deed ik dan ook en ik zie niet in waar ik fout zit maar aangezien je het hebt over niet door de compiler komen danwel dat het onbedoelde resultaten op zou leveren gok ik dat je aanslaat op het feit dat ik het had over declaratie zonder er expliciet bij te vermelden dat die variabele ook nog geinitializeerd moet worden. Indien dat je bezwaar is, ben je aan het haarkloven. Jij linkt alleen naar een wikipediapagina en mijn uitleg wijs je met een uitermate badinerend toontje af zonder zelf met een betere definitie te komen. Nogmaals, stringinterpelatie is zeker vanuit utilitair oogpunt helemaal niet zo ingewikkeld: een variabele in een string inpassen die binnen die binnen die string evalueert tot de assigned waarde. Overigens komt dat ook redelijk overeen met de eerste zin van die wikipediapagina die jij geeft. De tweede zin luidt echter: It is a form of simple template processing[1] or, in formal terms, a form of quasi-quotation (or logic substitution interpretation). String interpolation allows easier and more intuitive string formatting and content-specification compared with string concatenation. Je hebt grote kans dat een dergelijk machinegeweer aan terminologie meer verwarring dan verheldering schept.

Waarom die aannames over wat ze doet en wat haar achtergrond is? Als je data types onder de knie wilt krijgen zijn Python en Javascript niet de beste keuzes. Ze zijn vrij los met datatypes. Vooral Javascript laat je dingen doen met variabelen die je misschien niet zou willen. Maar ja, dat is een didactische keuze. deep comparison had ik niet verwacht na stringinterpolatie omdat voor deep comparison je eerst iets wilt weten van de datastructuur van dingen die je vergelijkt met deep comparison. En ik zou denken dat iemand die net heeft gestoeid met string interpolatie dat nog niet weet. En deep comparison lijkt me qua concept ingewikkelder dan stringinterpolatie. Maar he, misschien klopt de aanname wel gewoon dat haar volgende onderwerp deep comparison is.
Ik doe de volgende aannames over TO:

1 TO is niet bejaard
2 TO is niet achterlijk
3 (volgend uit 1 en 2) TO is bekend met Wikipedia
4 TO is als beginner waarschijnlijk bezig in Javascript of Python

Voor 1,2 en 3 durf ik mijn hand redelijk blind in het vuur te steken en de meeste mensen die voor zichzelf beginnen te programmeren doen dat met een cursus javascript of python, niet in Haskell of x86-assembly. Primitieve en samengestelde datatypen moeten natuurlijk instrumenteel worden aangeleerd om zinvol met een taal te kunnen werken, ik bedoelde ook niet dat het concept datatypen als doel op zichzelf werd aangeleerd want inderdaad zijn zwak getypeerde talen niet ideaal om datatypen uit te diepen. Het gaat er niet om of deep comparison het volgende onderwerp is, het ging me erom dat als TO voor ieder volgend concept dat ze niet begijpt eerst een half digitaal boekwerk moet doornemen gaat dat leren programmeren nogal een onderneming zijn.
I'm not a big fish, William. I'm Moby Dick.
Alle reacties Link kopieren
@madamzonderm: ah, je had al uitgebreid beantwoord, ik had je eerdere post gequote zonder je laatste gezien te hebben.


De 'pseudozin' evalueert naar het resultaat, i.p.v. naar de toegewezen waarde.

Akkoord, dat was erg slordig geformuleerd, daarin ga ik inderdaad mee.

Een string roep je niet aan

Als je nauwkeurig leest zul je zien dat ik ook niet beweer dat je een string aanroept.


Overigens moet ik zeggen dat ik jouw uitleg uiteindelijk wel veel preciezer geformuleerd en beter qua invalshoek vind dus op zich prima dat je kritiek op me had.
I'm not a big fish, William. I'm Moby Dick.
Alle reacties Link kopieren
kantlijn schreef:
10-07-2020 20:11
De vraag wat stringinterpolatie is, is niet een brede vraag. Het is bij uitstek een vrij specifieke vraag die dan ook tamelijk bondig beantwoord kan worden.
Er is enigszins veel over te zeggen en ondanks dat het een klein onderwerp is is het praktisch de breedste vraag die je erover kan stellen. Het is beter te versmallen door te zeggen welke voorbeelden of zinnen niet worden gesnapt. Met je andere aannames zijn die er vast mbt wikipedia bijv. zijn die zinnen en voorbeelden er vast. Ze hoeft niet in een keer een antwoord. Na doorvragen over voorbeelden of zinnen die ze niet begreep kan ze beter worden geholpen. Ze wordt alleen geholpen. Er is geen groep die tegelijk uitleg krijgt.
kantlijn schreef:
10-07-2020 20:11
Dat deed ik dan ook en ik zie niet in waar ik fout zit maar aangezien je het hebt over niet door de compiler komen danwel dat het onbedoelde resultaten op zou leveren gok ik dat je aanslaat op het feit dat ik het had over declaratie zonder er expliciet bij te vermelden dat die variabele ook nog geinitializeerd moet worden. Indien dat je bezwaar is, ben je aan het haarkloven. Jij linkt alleen naar een wikipediapagina en mijn uitleg wijs je met een uitermate badinerend toontje af zonder zelf met een betere definitie te komen.
kantlijn schreef:
10-07-2020 20:15
Overigens moet ik zeggen dat ik jouw uitleg uiteindelijk wel veel preciezer geformuleerd en beter qua invalshoek vind dus op zich prima dat je kritiek op me had.
Dit steekt wel ergens. Ik noem dat er iets niet klopt aan je post zonder verder in te gaan op wat er niet klopt. Dan wil ik het zo laten gaan dat moentje_ er zelf achter komt door te gaan proberen; ze denkt dat ze het snapt. Maar ondertussen is het mijn 'verantwoordelijkheid' een 'betere' definitie te geven. Als anderen onnauwkeurigheden maken is het niet mijn verantwoordelijkheid een betere definitie te geven. Het is aan te voeren dat ik aanwijs waar de onnauwkeurigheden zitten, in eerste instantie door dus haar te laten proberen.

kantlijn schreef:
10-07-2020 20:11
Nogmaals, stringinterpelatie is zeker vanuit utilitair oogpunt helemaal niet zo ingewikkeld: een variabele in een string inpassen die binnen die binnen die string evalueert tot de assigned waarde. Overigens komt dat ook redelijk overeen met de eerste zin van die wikipediapagina die jij geeft.
Voor de zekerheid (je stemde al in), redelijk, maar dit klopt niet helemaal.
De 'pseudozin' evalueert. Dat gaat door middel van vervangingen van strings.

kantlijn schreef:
10-07-2020 20:11
De tweede zin luidt echter: It is a form of simple template processing[1] or, in formal terms, a form of quasi-quotation (or logic substitution interpretation). String interpolation allows easier and more intuitive string formatting and content-specification compared with string concatenation.
Je hebt grote kans dat een dergelijk machinegeweer aan terminologie meer verwarring dan verheldering schept.
Er zijn nog de voorbeelden. Niet de hele pagina hoeft begrepen te worden.
kantlijn schreef:
10-07-2020 20:11
Ik doe de volgende aannames over TO:

1 TO is niet bejaard
2 TO is niet achterlijk
3 (volgend uit 1 en 2) TO is bekend met Wikipedia
4 TO is als beginner waarschijnlijk bezig in Javascript of Python
1 FWIW denkelijk niet nee.
2 Ik ga ook uit van niet. 'Niet achterlijk' staat los van 'in staat goede info te vinden over een specifiek vakgebied, eigen leerstijl mbt programmeren kennen etc'
3 wat is 'bekend met wikipedia'? Gehoord van de site? Bekend met opbouw van een wikipediapagina? ..over programmeren/programmeerconcepten?
4 maakt niet uit om het concept te snappen. In mijn uitleg gebruikte ik geen programmeertaal bijvoorbeeld.
kantlijn schreef:
10-07-2020 20:11
Voor 1,2 en 3 durf ik mijn hand redelijk blind in het vuur te steken en de meeste mensen die voor zichzelf beginnen te programmeren doen dat met een cursus javascript of python, niet in Haskell of x86-assembly. Primitieve en samengestelde datatypen moeten natuurlijk instrumenteel worden aangeleerd om zinvol met een taal te kunnen werken, ik bedoelde ook niet dat het concept datatypen als doel op zichzelf werd aangeleerd want inderdaad zijn zwak getypeerde talen niet ideaal om datatypen uit te diepen. Het gaat er niet om of deep comparison het volgende onderwerp is, het ging me erom dat als TO voor ieder volgend concept dat ze niet begijpt eerst een half digitaal boekwerk moet doornemen gaat dat leren programmeren nogal een onderneming zijn.
Waarom zou je voorbeelden gebruiken die niets toevoegen aan je punt? Deep comparison is onlogisch. Mij verwar je niet maar een student/iemand die nog e.e.a. leert denkt misschien dat die hierna deep comparison zou moeten leren. Je kan je punt maken door te zeggen dat ze niet voor elk onderwerp een half digitaal boekwerk moet doorploegen.
Vergelijkbaar met zeggen dat datatypen leren in Python of Javascript. Je zegt:
kantlijn schreef:
10-07-2020 15:25
Waarschijnlijk is ze in javascript of python bezig (en komt er geen compiler aan te pas) om data types onder de knie te krijgen en gaat het in eerste instantie om gepersisteerde data in een geprinte string te krijgen.
Je zegt hier wel dat "het concept datatypen als doel op zichzelf werd aangeleerd". Maar goed je bedoelt het niet, dat is helder.
kantlijn schreef:
10-07-2020 20:15
Als je nauwkeurig leest zul je zien dat ik ook niet beweer dat je een string aanroept.
Je hebt gelijk. Je zegt:
kantlijn schreef:
10-07-2020 13:16
Dit is inderdaad string interpolation: een eerder gedeclareerde variabele binnen een string kunnen aanroepen, die dan evalueert naar de toegewezen waarde.
Je zegt dus een variabele aan te roepen. Ook een variabele roep je niet aan, maar lees je, schrijf je of bewerk je soms. Je kan enigszins geforceerd zeggen dat je een variabele aanroept als je er een methode aan toewijst. Maar IMO roep je dan alsnog de methode aan.
kantlijn schreef:
10-07-2020 20:15
Overigens moet ik zeggen dat ik jouw uitleg uiteindelijk wel veel preciezer geformuleerd en beter qua invalshoek vind dus op zich prima dat je kritiek op me had.
Toch bedankt. 'Mensentaal' heeft veel concepten die computertaal dan wel concepten duidelijk kunnen maken.
Alle reacties Link kopieren
Hoezo een beetje doorschieten?
Er wordt gevraagd om een simpele uitleg. Wat er volgt is een nogal uitgebreide discussie. Technisch vast wel in orde, maar niet echt meer te volgen voor de meeste mensen hier.
Alle reacties Link kopieren
F1823 schreef:
11-07-2020 09:19
Hoezo een beetje doorschieten?
Er wordt gevraagd om een simpele uitleg. Wat er volgt is een nogal uitgebreide discussie. Technisch vast wel in orde, maar niet echt meer te volgen voor de meeste mensen hier.

Dat geeft toch niet?
Alle reacties Link kopieren
Omdat ik tenminste deel ben van wat jij noemt 'beetje doorschieten' zal ik er wat over zeggen.
Het gaat me erom dat de dingen moentje_ als antwoord geeft kloppen en hopelijk dat ze het snapt. Dat eerste was niet altijd en daar zei ik wat van. Mijn laatste post ging vooral over didactiek en wat ethiek en niet zozeer over het programmeren zelf. Als iets onduidelijk is kan ze het vragen fwiw.
Programmeurs in discussie... :popcorn: :rofl:
Alle reacties Link kopieren
:whut:

Dit is een oud topic. Het topic is daarom gesloten.
Maak een nieuw topic aan om verder praten over dit onderwerp.

Terug naar boven