ze5400 Skrevet 11. august 2015 Del Skrevet 11. august 2015 I Nemiver (frontend til gdb) får jeg ikke opp noen av verdiene (int member) i foo. Er dette mulig å få til på noen måte? Du må caste det til child-typen den er for at du skal gjøre det.Om du kompilerer med RTTI (default) kan du benytte dynamic_cast til å caste fra base til child. Om du ikke har den child-classen du tror får du NULL. struct BaseClass { }; struct ChildClass : public BaseClass { int ChildMember; }; int main() { ChildClass cc; cc.ChildMember = 666; BaseClass *bc = &cc; return 0; } (gdb) print *bc $1 = {<No data fields>} (gdb) print *static_cast<ChildClass *>(bc) $2 = {<BaseClass> = {<No data fields>}, ChildMember = 666} Lenke til kommentar
Lycantrophe Skrevet 11. august 2015 Del Skrevet 11. august 2015 (endret) Og for øvrig synes jeg svarene deres er dårlige. Fordi dere prater om språket C++. Jeg er klar over hvordan det fungerer. Greia er at når jeg debugger så forventer jeg å kunne se "mer". Det er "litt" av poenget med en debugger at man kan gjøre mer enn man kan gjøre i selve språket, eller så hadde man ikke trengt en debugger. Da kunne man bare spredt printf() litt rundt omkring.Det kan du om du caster. Men når jeg debugger programmet steg for sted så vet jeg at det ikke er sånn.Se over, du kan caste. Du kan vel alltids caste nedDet er nettopp det jeg ikke kan. Om jeg legger inn en std::cout med cast i programmet så funker det, men det funker ikke i debuggeren. gdb kan caste. Endret 11. august 2015 av Lycantrophe 1 Lenke til kommentar
Emancipate Skrevet 11. august 2015 Del Skrevet 11. august 2015 Ok, takk, det funket når jeg skrev det direkte inn i gdb. Lenke til kommentar
Emancipate Skrevet 28. august 2015 Del Skrevet 28. august 2015 Filosofisk spørsmål. Hvis man skulle ha programmering i skolen, hva tror dere om free-form (curly braces og semikolon) vs "semantic whitespace" (python/haskell-stil på indentering av blokker)? På den ene siden har jeg lagt merke til at noen elever på khanacademy har problemer med semikolon, og semikolon vs. komma. Det kan man løse ved å fjerne semikolon. De gir også blaffen i å formatere programmet pent, inkludert indentering. Det vil jo løses hvis indentering markerer blokker, og dermed er påkrevd. Spørsmålet er om små barnehjerner klarer å få til indentering når det er påkrevd, eller om de fortsatt ikke vil gjøre det, og programmet dermed ikke vil virke. Lenke til kommentar
Lycantrophe Skrevet 28. august 2015 Del Skrevet 28. august 2015 Haskell har semikolon. Forøvrig er det en mindre problem, men språk som Haskell oppfordrer i større grad til pen formatering enn andre språk. Videre tror jeg innholdet i språket har en større og mer positiv effekt. Lenke til kommentar
Emancipate Skrevet 28. august 2015 Del Skrevet 28. august 2015 Hva skulle innholdet i språket vært? Khanacademy har ProsessingJS, som er sikkert vil oppleves gøy, men jeg synes ikke det er noe læringsutbytte i det løpet de har der, for elever som aldri mer skal programmere. Lenke til kommentar
Lycantrophe Skrevet 29. august 2015 Del Skrevet 29. august 2015 Tenker mer i retning språkdetaljer, altså semantikk, syntax, execution model (lazy vs strict), managed vs unmanaged, destructors, funksjoner, currying, purity etc. Lenke til kommentar
Emancipate Skrevet 30. august 2015 Del Skrevet 30. august 2015 (endret) Ok, skjønner. Jeg leste på noe, og kom over noe jeg ikke skjønte. Linken som skulle forklare var død. http://merd.sourceforge.net/polymorphism.html Statically typed languages introduce the "closed world" vs "open world" restriction. In a closed world we know every instance of a function, whereas in a open world we must allow the programmer to add new instance without changing the local meaning.Dynamically typed languages usually do not bother with such limitations allowing free overloading, blurring the differences between ad'hoc overloading and interface inheritance. "ad'hoc overloading" is the closed world polymorphism. It is used in C++/Java to allow multi form constructors... It fits quite well in explicitly-typed languages, alas the simple & efficient implementation introduces traps. Det jeg ikke skjønner er det som er understreket. Edit: Under står det "Parametric and inheritance polymorphism are orthogonal." Betyr det at han mener de passer sammen og utfyller hverandre, eller at de kolliderer og ikke passer sammen? Endret 30. august 2015 av Emancipate Lenke til kommentar
Lycantrophe Skrevet 31. august 2015 Del Skrevet 31. august 2015 (endret) Det betyr at det ikke er motsetninger og konflikter mellom parametric og inheritance polymorphism (se: C++). Her er forøvrig paperen: http://dl.acm.org/citation.cfm?id=203096&dl=ACM&coll= Fra wikipedia: https://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29 Giuseppe Castagna[8] observed that in a typed language with multiple dispatch, a generic function can have some arguments which control dispatch and some "left-over" arguments which do not. Because the method selection rule chooses the most specific applicable method, if a method overrides another method, then the overriding method will have more specific types for the controlling arguments. On the other hand, to ensure type safety the language still must require the left-over arguments to be at least as general. Using the previous terminology, types used for runtime method selection are covariant while types not used for runtime method selection of the method are contravariant. Conventional single-dispatch languages like Java also obey this rule: there only one argument is used for method selection (the receiver object, passed along to a method as the hidden argument this), and indeed the type of this is more specialized inside overriding methods than in the superclass. Endret 31. august 2015 av Lycantrophe Lenke til kommentar
banansplitt™ Skrevet 31. august 2015 Del Skrevet 31. august 2015 Tenkte jeg skulle leke litt med grafikkprogrammering (tegne geometriske figurer 2d/3d). Dvs. alt jeg vil er å kunne definere et vindu etter egen størrelse og ha muligheten til å tegne en pixel på en gitt posisjon. Jeg ønsker også å kunne animere dette etterhvert. Hvilket programmeringsspråk burde jeg gå for? Lenke til kommentar
Emancipate Skrevet 31. august 2015 Del Skrevet 31. august 2015 Hvilket programmeringsspråk burde jeg gå for?Hvilket kan du? Sannsynligvis bør du bruke det du kan. Ellers kan du bruke Python og pygame. Python er et ganske treigt språk, så det kommer litt an på hvor mye ytelse du trenger. Lenke til kommentar
Emancipate Skrevet 31. august 2015 Del Skrevet 31. august 2015 Det betyr at det ikke er motsetninger og konflikter mellom parametric og inheritance polymorphism (se: C++). Takk. Nytt spørsmål: Hvordan kan det ha seg closures ikke bryter med purity? En pure function er jo en funksjon som kun er avhengig av sine parametre. Mens en closure er nettopp det motsatte. Så hvordan kan "purely functional programming languages" ha closures? Lenke til kommentar
banansplitt™ Skrevet 31. august 2015 Del Skrevet 31. august 2015 Hvilket programmeringsspråk burde jeg gå for?Hvilket kan du? Sannsynligvis bør du bruke det du kan. Java Lenke til kommentar
Emancipate Skrevet 31. august 2015 Del Skrevet 31. august 2015 Bruk Java da, om du er fornøyd med det. Lenke til kommentar
Lycantrophe Skrevet 31. august 2015 Del Skrevet 31. august 2015 Hvordan kan det ha seg closures ikke bryter med purity? let f1 x = (+ x) let f2 = f1 2 f2 2 4 let x = 3 // konstant let f2 = (+ x) // identisk med (+ 3) f2 3 6 Du kan anse x som en implisitt partial application av (+). En pure function er jo en funksjon som kun er avhengig av sine parametre.Omgivelsen gir parameteren ved konstruksjon. Mens en closure er nettopp det motsatte. Så hvordan kan "purely functional programming languages" ha closures?Se over. Lenke til kommentar
Emancipate Skrevet 1. september 2015 Del Skrevet 1. september 2015 Ok, det gikk et lys opp for meg. Den indre funksjonen er ikke aksesserbar direkte, men KUN via at den returneres fra den ytre? function outer(n) x = 2 function inner(p) return n+x+p return inner myfunc1 = outer(1) myfunc2 = outer(2) myfunc3 = outer::inner() // <- Og dette er altså det som er UMULIG, // og gjør at purity og sunn fornuft ikke brytes?? // Og myfunc1 og myfunc2 refererer da til to separate funksjoner. Right? Så myfunc1 != myfunc2. // der myfunc1 er return 1+2+p mens myfunc2 er return 2+2+p. Dette er da selvsagt "pure functions". Lenke til kommentar
Lycantrophe Skrevet 1. september 2015 Del Skrevet 1. september 2015 (endret) Hvilket språk skal dette være? I utgangspunktet ja, men i noen språk (typisk dynamic scope) kan x fort være både mutable og global. Men du har nå idéen uansett. Det stemmer. Husk at funksjoner også er verdier. Det er det som gjør at du kan returnere de, og i den sammenheng blir ikke closures så merkelig. Endret 1. september 2015 av Lycantrophe Lenke til kommentar
Emancipate Skrevet 1. september 2015 Del Skrevet 1. september 2015 Takk. Det er ikke noe spesielt språk jeg snakker om. Jeg har ikke noe problem med å se funksjoner som verdier, problemet var forholdet mellom closures og purity. Lenke til kommentar
Lycantrophe Skrevet 1. september 2015 Del Skrevet 1. september 2015 Vel, du har noen språk som ikke er så nøye på purity (Javascript er sikkert den verste her) som lar deg gjøre allverdens shenanigans. Ellers har du et stygt eksempel fra C++: int x = 2 auto f = [&x](int y) { return x + y; }; assert(f(2) == 4); x = 3; assert(f(2) == 5); Eller enda verre: int x = 2 auto f = [&x](int y) { return x += y; }; assert(f(2) == 4); assert(f(2) == 6); Ikke gjør sånt. :----) Lenke til kommentar
sinnaelgen Skrevet 4. oktober 2015 Del Skrevet 4. oktober 2015 Selv om jeg foretrekker delphi ( pascal) så har ejg en utfordring til dere problemet er at jeg har en teksstreng med masse tallverdier i,de er adskilt med komma tallverdiene forløper i stigende orden fra 0 til 504, men de kommer ikke nødvendigvis etter hverandre ( d.v.s at noen verdier mangler hvis man tenker på at teksstrengen inneholder alle verdier mellom 0 og 504. utfordringen blir da korte ned innholdet slik at det f,eks står 0,3..10,15..20 o.s.v i stedet for 0,3,4,5,6,7,8,9,10, 15,16,17,18,19,20 o.s.v Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå