Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse

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 av zotbar1234
Lenke til kommentar

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

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

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

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 av ze5400
Lenke til kommentar

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 av worseisworser
Lenke til kommentar

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 :p

Lenke til kommentar

Å 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

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.

  • Liker 1
Lenke til kommentar

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

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 av tomsi42
Lenke til kommentar

...

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

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.

  • Liker 1
Lenke til kommentar
Gjest Slettet+9871234

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. :thumbup:

 

 

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”.

 

Bra sitat :thumbup: , 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 av Slettet+9871234
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...