Gå til innhold

Hva er poenget med dynamiske datatyper?


Anbefalte innlegg

Videoannonse
Annonse

Vil ikke auto i C++0x løse noe av dette da?

 

auto v = max(1, 2.0); // Vil returnere double

eller er kanskje template argumenter obligatorisk?

 

Uten at jeg kjenner til C++0x noe sånn voldsomt eller i detalj vil auto direkte være inne på noe av det vi egentlig snakker om, ja.

Endret av worseisworser
Lenke til kommentar

Mulig det. Sier vel helst at C++0x ikke fantes sist jeg programmerte C++ ;)

 

Mener å huske at man kunne utelate det dersom alle argumentene var entydig også, så max(1,2) ville gå bra og returnerer int, mens max(1, 2.0) ikke ville gå, selv om vanlig covariance tillater tilordning av int til double... Bør kanskje teste det.

 

Edit: Testet i VS2010:

 

int i = max(1, 0); // ok
double j = max<double>(1, 1.2); // ok
double k = max(1, 1.2);  // kompilerer ikke

auto l = max(1, 0); // ok, auto utleder int
auto m = max<double>(1, 1.2); // ok, auto utleder double
auto n = max(1, 1.2);  // kompilerer ikke

Endret av MailMan13
Lenke til kommentar
Gjest Slettet+9871234

I C++ (om man ser stort på det, som en "supermengde av C") løses det enkelt ved templates og overloading,

Skrev om dette i midten av nitti årene og postet koden på nettet for noen år siden:

 

http://www.forumnorway.com/viewtopic.php?t=500

 

Neste poster har jo også gitt et eksempel. Jeg koder svært sjelden på forum, da det tar for mye tid. Jeg leser også svært sjelden omfattende kode av samme grunn. Har nok med å viderutvikle 50 domener.

Endret av Slettet+9871234
Lenke til kommentar
Neste poster har jo også gitt et eksempel.

 

Ja, og det en var ute etter her var altså ikke mulig. Ugh, eller jeg orker egentlig ikke å gå inn på dette da poenget er at type-informasjon "sendes rundt" helt implisitt (type inference), "hele tiden", eller at kombinasjonen av dette i videre sammenheng med språk en kan uttrykke seg både statisk og dynamisk på er interessant eller "kult" selv om det er fint lite mulig og i hvert fall ikke enkelt i C++ sånn spesifikt (ikke så interessant), og foreløpig også sterkt begrenset i selv mer moderne eller "akademiske" språk (synd).

Endret av worseisworser
Lenke til kommentar
Gjest Slettet+9871234

Du leser det som om det står "Class is not Type"?

 

Leste du mine poster #43 og #44?

 

Der står langt mer om typing og de finere detaljer i ovenfor nevnte bok av professor Blair http://www.comp.lancs.ac.uk/department/staff.php?name=gordon et. al. fra Lancaster Universitet i England. Omtalte bok er svært spennende, da det også viser en annen tilnærmig til OO enn den skandinaviske skolen.

 

Delegation er for eksempel et stort felt. Her er jeg imidlertid på tynn is med å hevde at delegation er stemoderlig behandlet av den Skandinaviske skolen.

 

Den som er svært interesset bør skaffe seg omtalte bok. Jeg kan ikke repetere det for dere nå. En tid siden jeg leste emnet.

 

Vil ikke auto i C++0x løse noe av dette da?

 

auto v = max(1, 2.0); // Vil returnere double

eller er kanskje template argumenter obligatorisk?

 

Jeg kjenner ikke den aller siste utviklingen av C++. Som sagt arbeidet jeg mest med språket i 90 årene. Nå er PHP viktigst av naturlige grunner.

 

Det ser ut til at det samme gjelder andre så vi skulle nok være litt mer varsomme med å dømme C++. Der har sikkert skjedd en del siden 90 årene.

Endret av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

Ja, og det en var ute etter her var altså ikke mulig. Ugh, eller jeg orker egentlig ikke å forklare dette;

Det bør du forklare.

 

poenget er at type-informasjon "sendes rundt" implisitt (type inference) -- eller at kombinasjonen av dette i videre sammenheng med språk en kan uttrykke seg både statisk og dynamisk på er interessant eller "kult".

Uten at det er viktig. Hvilket språk er Lisp og F# skrevet i?

Lenke til kommentar

Uten at det er viktig. Hvilket språk er Lisp og F# skrevet i?

 

Her blander du språk og implementasjon av språk, men jeg kan velge å være grei og ikke late som om jeg ikke forstår hva du egentlig mener.

 

SBCL er ett eksempel på en implementasjon av Lisp (Common Lisp), og SBCL er skrevet i C (GC'en spesielt; d.v.s. små deler av de lavnivåmessige delene av run-time'en) og Common Lisp. Selve kompileren, både høy- og lavnivå-biten, er skrevet i Common Lisp og genererer "ren" X86 eller X86-64 maskinkode. Det samme gjelder kompiler- og run-timestøtte i sammenheng med OOP-støtten i språket m.m.. D.v.s. at alt det interessante i denne sammenhengen er skrevet i Common Lisp.

 

(edit: med "interessant" mener jeg at selv om bootloaderen til Linux er skrevet i ASM, sier en at Linux er skrevet i C fordi det er helt klart at dette er tilfelle når en tar for seg det aller meste av interesse når en tenker Linux .. det går heller ikke an å tenke LOC da en i et annet univers kan se for seg at "C" kunne ha vært veldig, veldig konsist, men altså helt klart fortsatt det mest interessante..)

 

SBCL kan ikke en gang bootstrappes fra GCC; en trenger SBCL eller en annen Common Lisp kompiler for å kompilere SBCL. Videre har en ting som Lispmaskiner ( http://en.wikipedia.org/wiki/Lisp_machine ) og Movitz ( http://common-lisp.net/project/movitz/ ).

Endret av worseisworser
Lenke til kommentar
Gjest Slettet+9871234

En kan si at en ønsker samme oppførsel som i C ("hjernedød" roll-around ved overflow), og kompileren vil da generere ennå enklere, "kjappere", kode.

 

Vil påstå at det (statisk utleding av typeinformasjon vs dynamiske typing) ikke er løst i C++ siden man, med et unntak jeg kommer på, eksplisitt må mate inn typenavn hele veien. Funksjonelle språk er alle funksjoner generiske/templates "by default", så man slipper navnespagettien som jager folk bort fra C++ og Java.

 

Ydmykhet postere. Være varsomme med det dere skriver. Hvorfor skrives fortsatt de fleste (nesten alle) språk i C eller C++?

 

Begynn med disse

 

Andrew Koenig

 

"Templates and generic algorithms" JOOP june 1994

 

"Generic iterators" JOOP September 1994

 

"Function objects, templates and inheritance" JOOP September 1995

 

Oppdater dere på språket før dere dømmer det. Jeg tror jeg holder en knapp på Texas professoren http://www2.research.att.com/~bs/

 

Språk har ulike egenskaper. Å sammenligne C++ med PHP er som å sammenligne epler og pærer.

 

Lisp er sikkert skrevet i lisp, og F# er sikkert skrevet i F#.

Hvor sikkert er det?

Endret av Slettet+9871234
Lenke til kommentar
Gjest Slettet+9871234

Hva med mangelen på bounds checking o.l.? Skal vi kalle det "enkelt" .. eller "lavnivåmessig" .. eller noe slikt?

Lavnivå er mitt ord. Der er grunner til at C er som det er. Der er en rekker kompromisser under utviklingen av C++.

 

Bound checking kan man jo lett gjøre selv. I tillegg finnes der en rekke gode biblioteker som gjør det som for eksempel: http://www.boost.org/. Man trenger ikke finne opp hjulet på nytt.

Lenke til kommentar
Gjest Slettet+9871234

Ikke hundre prosent sikkert, men det er temmelig standard fremgangsmåte når en lager programmeringsspråk.

Ja om du ikke regner Lua, Python og PHP som språk er muligens det riktig.

 

PHP begynner jo å nærme seg ekte oop med navnerom og multippel arv for interfaces.

 

Men jeg har ikke fått henvisninger enda og da vet jeg ikke hvor godt dere kjenner språkene.

 

Jeg holder meg til PHP, Python, C og C++.

Lenke til kommentar
Gjest Slettet+9871234

Takk for det.

 

Naturlige spørsmål:

 

  1. Portabilitet?
  2. Betinget kompilering?
  3. Inline assembly?
  4. Brukerstøtte?
  5. Utbredelse større enn BETA og GBETA?
  6. Standardisering.
  7. Hvor mange jobber med å utvikle språket?
  8. Biblioteker?

Lenke til kommentar
Gjest Slettet+9871234

(..det er viktig med møter; da får en nemlig avklart når neste møte er, og en får gjort så fryktelig mye..)

Bruker altfor my tid her og har jo også mine feider i andre forum, der man jo helst bør svare.

 

Takk.

 

@GeirGrusom

 

Meget interessant tråd forresten.

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