torbjørn marø Skrevet 7. oktober 2011 Del Skrevet 7. oktober 2011 Denne litt alternative måten å konstruere «objekter» på – å lage anomyme funksjoner som lukker om bindingene i et leksikalsk skop – er faktisk mye brukt i funksjonelle språk. Google «let over lambda» når du har tid. Ta gjerne en titt på Message Passing Style bloggposten min for et eksempel + litt mer om closures. 1 Lenke til kommentar
zotbar1234 Skrevet 8. oktober 2011 Del Skrevet 8. oktober 2011 (endret) Jeg hadde også tenkt til å si at man kunne spare plass ved å lagre samme konstant bare ett sted i minne. Men det blir jo helt feil. Det er jo avgjørende at hver instans av konstanten får sin egen lokasjon. Mulig jeg er litt treg, men hvorfor er det avgjørende? Hvorfor kan ikke alle forekomster av 200 dele den samme minnelokasjonen? (På noen arkitekturer er det slettes ikke uvanlig å oversette konstanter i koden til "anonyme" globale variable. En opplagt optimalisering da er å la alle konstantforekomstene av samme verdi dele det samme objektet for konstanten. Hvorfor vil ikke det være lurt?) Endret 8. oktober 2011 av zotbar1234 Lenke til kommentar
x871kx6167ss7 Skrevet 8. oktober 2011 Del Skrevet 8. oktober 2011 Det er snakk om pass-by-reference-overføring av konstanter (som noen kanskje vil si ikke gir særlig mye mening). Dersom vi simmulerer dette med C. Og har void foo(int* x) { *x += 2; return x; } foo(&2); foo(&2); Så gir de to følgende "fiksene" to veldig forskjellig resultat: int tmpA = 2; foo(&tmpA); foo(&tmpA); int tmpA = 2; foo(&tmpA); int tmpB = 2; foo(&tmpB); Lenke til kommentar
zotbar1234 Skrevet 8. oktober 2011 Del Skrevet 8. oktober 2011 Det er snakk om pass-by-reference-overføring av konstanter (som noen kanskje vil si ikke gir særlig mye mening). Aha, pass-by-reference + konstanter + modifisering. Er det virkelig et scenario hvor man skal gjøre noe nyttig sett med implementasjonens øyne? Dersom vi simmulerer dette med C. Og har (...) Så gir de to følgende "fiksene" to veldig forskjellig resultat: Siden det er undefined behaviour i situasjonen med konstanter, så kan resultatene være forskjellige (Jeg misforstod litt problemstillingen). Lenke til kommentar
GeirGrusom Skrevet 9. oktober 2011 Del Skrevet 9. oktober 2011 Det er snakk om pass-by-reference-overføring av konstanter (som noen kanskje vil si ikke gir særlig mye mening). Aha, pass-by-reference + konstanter + modifisering. Er det virkelig et scenario hvor man skal gjøre noe nyttig sett med implementasjonens øyne? Dersom vi simmulerer dette med C. Og har (...) Så gir de to følgende "fiksene" to veldig forskjellig resultat: Siden det er undefined behaviour i situasjonen med konstanter, så kan resultatene være forskjellige (Jeg misforstod litt problemstillingen). Egentlig enkel problemstilling: I VB kan du lage en funksjon som tar et argument by reference, og allikevel gi et konstant uttrykk som parameter, men C er ikke så glad i det. Et stort problem når jeg har et uttrykstre for BASIC som ikke lett lar seg oversette til C. Men Peterbb løste ganske fint. Bare lag et nytt scope med alle ByRef argumenter som er konstanter som egne argumenter. Det er ikke udefinert oppførsel å gi en konstant til et byref argument i BASIC, men det er det i beste fall i C. Lenke til kommentar
ze5400 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 (endret) Herrejemini, nå kjennes det som syra setter inn igjen. Nok en gang forsøker jeg å lære meg Java, og nok en gang kjenner jeg frustrasjonen begynner å sette inn på grunn av alle småtingene som er pussig i Java. Det kan jeg leve med. Det jeg derimot har store problemer med er events. Det kan da ikke være så tungvindt som dette? http://www.javaworld...ent.html?page=2 Det virker på meg som en fryktelig roundabout way of doing events! Så jeg sitter nå og googler ... Har ikke java støtte for en lignende event-modell som C# som benytter delegates? Det er jo betydelig mer elegant, og mye simplere. Saken her er at jeg har en relativt lav grense for selvpining, men menne gangen akter jeg å gjennomføre det uansett hvor ass backwards språket er når det kommer til enkelte ting, men herre - det må være en bedre måte å gjøre det på? Endret 10. oktober 2011 av ze5400 Lenke til kommentar
worseisworser Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 (endret) Det første som slår meg er at artikkelen du linker til er nesten 10 år gammel. ..mulig noe nytt har skjedd siden da -- selv om en kun holder seg til Java (det finnes flere språk enn Java på Java plattformen (JVM'en) forresten), men jeg vet ikke. Endret 10. oktober 2011 av worseisworser Lenke til kommentar
ze5400 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 Jeg finner det generelt sett vanskelig å finne oppdatert informasjon på Java. Selv på Oracles sider er det mye fugl og fisk. En annen ting er at jeg har en del restriksjoner på meg, f.eks. kan jeg ikke benytte ting som ikke er i Standard Profile 1.1, da enheten jeg skal skrive for er litt kresen. Velvel, ser ut som om jeg bare får bite i det sure eplet og venne meg til galskapen Lenke til kommentar
torbjørn marø Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 Hehe - og likevel påstår folk at C# er en blåkopi av Java Lenke til kommentar
tomsi42 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 Hehe - og likevel påstår folk at C# er en blåkopi av Java Det bare viser hvor lite folk vet Lenke til kommentar
torbjørn marø Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 C# 1.0 var det. Nei 1 Lenke til kommentar
tomsi42 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 C# 1.0 var det. Nope - det er mer riktig å si at C# 1.0 var Delphi i Java/C klær med et par nye ting - f.eks. delegates som Microsoft ville ha inn i Java. 1 Lenke til kommentar
ze5400 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 Å påstå at C# er en blåkopi av Java, eller at det noen gang har vært det, er som å påstå at php er en blåkopi av C. Nesten like galt begge deler. Menmen, er ikke sikkert det blir så galt dette, bare jeg venner meg til det. Må bare begynne å huske at Java ikke har unsigned datatyper så forsvinner en stor irritasjon. Lenke til kommentar
GeirGrusom Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 C# 1.0 var det. Nope - det er mer riktig å si at C# 1.0 var Delphi i Java/C klær med et par nye ting - f.eks. delegates som Microsoft ville ha inn i Java. HVorfor Delphi? C# ligner mye på Java, det bare har vanvittig mange flere features. Anonyme funksjoner, unsafe kode, delegates, usignerte datatyper, operator overloading, egendefinerte verdi-typer, meta-informasjon og properties som en språk-konstruksjon, generatorer og sikkert mange flere ting som jeg ikke kommer på i farta er ting som fantes i C# 1.0 og som Java fortsatt ikke har. C# er Java gjort riktig. 1 Lenke til kommentar
Matsemann Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 Man kan mene mye om java, men det er virkelig ikke så ille som du skal ha det til. Enten begynner du i feil ende, eller så har du på forhånd bestemt deg for at "dette er ulikt det jeg kan, og det jeg kan er den beste maten". Events er ikke veldig vanskelig. Lag et interface alle listeners implementerer, implementer så de metodene i listeners og la de legge seg selv til som listener. Klassen man hører på har en liste med listeners den iterer over og kaller metoder til når det skjer noe. Litt boilerplate, men ikke så sinnsykt vanskelig. Lenke til kommentar
tomsi42 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 (endret) HVorfor Delphi? Fordi mannen bak Turbo Pascal og Delphi, Anders Heljsberg ble ansatt av Microsoft, blandt annet for å hjelpe de lage et nytt språk. For oss gamle Deplhi gutta, så var det lett å se hvor mye av Delphi som havnet i C# - en generelt mer pragmatisk holdning enn java, properties med mere. C# ligner mye på Java, det bare har vanvittig mange flere features. Anonyme funksjoner, unsafe kode, delegates, usignerte datatyper, operator overloading, egendefinerte verdi-typer, meta-informasjon og properties som en språk-konstruksjon, generatorer og sikkert mange flere ting som jeg ikke kommer på i farta er ting som fantes i C# 1.0 og som Java fortsatt ikke har. Dette er ting som har blitt lagt inn over tid, og lånt fra mange kanter - en kan si at Mirosoft har sett hva folk trenger i det virkelige liv, og implementert det. C# er Java gjort riktig. På mange måter, ja. Men med et viktig unntak - C# er i praksis kun for Microsoft verdenen. På de store systemene, så er det java som gjelder. Og java er standard på tyvers av Windows/Mac/Linux/Unix/Mainframe/AS400. Endret 11. oktober 2011 av tomsi42 Lenke til kommentar
ze5400 Skrevet 10. oktober 2011 Del Skrevet 10. oktober 2011 ... Enten begynner du i feil ende, eller så har du på forhånd bestemt deg for at "dette er ulikt det jeg kan, og det jeg kan er den beste maten". Events er ikke veldig vanskelig. ... Litt boilerplate, men ikke så sinnsykt vanskelig. Java er desidert det beste valget på plattformen det er snakk om, da det er det eneste som kjører der. Dog hadde jeg definitivt foretrukket f.eks. C#. Og neida, det er ikke at events er vanskelig der, men det virker fryktelig ass backwards, og man skulle tro at at de hadde implementert "bedre" måter å gjøre det på. Kalenderen viser tross alt 2011. Jeg antar noe av det som irriterer meg med Java er at det er akkurat så likt at man inbiller seg at man ikke skal møte på problemer, men akkurat så ulikt at det er tusen irritasjonsmomenter. Men jeg skal slutte å klage nå, sant og sies går det langt bedre alt nå, så regner med dette blir en breeze etter hvert. Lenke til kommentar
GeirGrusom Skrevet 11. oktober 2011 Del Skrevet 11. oktober 2011 Man kan mene mye om java, men det er virkelig ikke så ille som du skal ha det til. Enten begynner du i feil ende, eller så har du på forhånd bestemt deg for at "dette er ulikt det jeg kan, og det jeg kan er den beste maten". Events er ikke veldig vanskelig. Lag et interface alle listeners implementerer, implementer så de metodene i listeners og la de legge seg selv til som listener. Klassen man hører på har en liste med listeners den iterer over og kaller metoder til når det skjer noe. Litt boilerplate, men ikke så sinnsykt vanskelig. Brukte Java på høgskolen. Det er ikke vanskelig, det er drit forbanna irriterende fordi nær sagt alle andre plattformer har en lurere måte å gjøre dette på. Det også en del andre ting i Java som er dustete: enum er ikke en primitiv (eller engang value-type), har ikke støtte for usignerte tall, hverken lambda eller fulle closures er tilgjengelig, type erasure i generics (ArrayList<T> blir oversatt til ArrayList når en kompilerer), programmereren kan ikke definere egne value-types og en kan ikke eksplisitt gi en verdi ved referanse i funksjonskall. Men det som er mest irriterende når en programmerer er det forbanna event-listener opplegget. Du har anonyme klasser for å gjøre noe av det enklere, men uten fulle closures er det begrenset hvor stor hjelp det er. 1 Lenke til kommentar
Gjest Slettet+9871234 Skrevet 11. oktober 2011 Del Skrevet 11. oktober 2011 (endret) Lambda er en måte å skrive funksjoner på, og anonyme funksjoner er fynksjoner uten noe navn. Closure er at en anonym funksjon (trenger ikke egentlig være anonym, eller engang en funksjon, men er det i de fleste tilfeller) tar med seg alle refererte variabler fra et utenforliggende scope. Takk for den informasjonen og en god post. In the remotest regions, beyond the Functional Kingdoms, lies a fabled realm called Lambda the Ultimate. In this place it is said that there are no nouns at all, only verbs! There are “things” there, but all things are created from verbs, even the very integers for counting lambs, which are the most popular form of trading currency there, if the rumors speak truth. The number zero is simply lambda(), and 1 is lambda(lambda()), 2 is lambda(lambda(lambda())), and so on. Every single Thing in this legendary region, be it noun, verb or otherwise, is constructed from the primal verb “lambda”.[1] Bra sitat , men jeg foretrekker en lenke til origialen om det er mulig. Jeg finner ingen treff ved å Google: In the remotest regions, beyond the Functional Kingdoms, lies a fabled realm called Lambda the Ultimate. In this place it is said that there are no nouns at all, only verbs! site:www.lambda-the-ultimate.org/ Men ved å Google: In the remotest regions, beyond the Functional Kingdoms, lies a fabled realm called Lambda the Ultimate. In this place it is said that there are no nouns at all, only verbs! Finner jeg noen treff hvor de to første er fra Hacker News. Er original kilden boken http://mitpress.mit.edu/sicp/full-text/book/book.html og anbefaler du å kjøpe den, da jeg skal gjøre et nytt bokkjøp snart? Endret 11. oktober 2011 av Slettet+9871234 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å