Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Emner
  • Opret bruger
  • Log ind
Se kommentarer (9)
Emner C#

C# 4 bliver dynamisk

Anders Hejlsberg har i tide og utide propaganderet for multiparadigme-paradigmet. Nu sætter han handling bag ordene i den næste udgave af C#. Nyhederne er dynamiske typer, valgfri parametre, bedre Office-integration og kode, som evalueres under kørslen.

Af Tania Andersen Onsdag, 29. oktober 2008 - 9:59

Microsofts Java-agtige sprog C# har gennemgået en rivende udvikling, og den stopper tilsyneladende ikke foreløbig. På konferencen PDC 2008, som afholdes i denne uge i Los Angeles, gav sprogets opfinder, danske Anders Hejlsberg, en smagsprøve på nyhederne i den kommende version fire.

Anders Hejlsberg har i lang slået på tromme for at nedbryde de klassiske skel i mellem programmeringssprog. Hans pointe er, at udviklerne bliver mere produktive, hvis de har objektorienterede, deklarative og dynamiske elementer til deres rådighed. Det følger han nu op på ved at putte mere af slagsen i C# og drysse retten med syntaks-sukker.

Compileren er en service

Det er normalt god latin først at kode, så kompilere, for så at afvikle programmet, men Anders Hejlsberg vil gerne sætte compileren i sving, mens programmet kører. Konceptet er at benytte compileren som en service for programmet. Det sker ved at benytte muligheden i C# for at manipulere med de abstrakte syntakstræer, som genereres når compileren hakker koden igennem.

Det udmønter sig i et nyt objekt med navnet CSharpEvaluator, der som navnet antyder har en eval-metode, der ligesom i dynamiske fortolkede sprog kan tage en streng, som indeholder C#-kode, og kompilere og udføre den færdige kode.

Det benyttede Anders Hejlsberg under foredraget til at skive en interaktiv C#-fortolker, som det kendes fra f.eks. Python, med solide klapsalver til følge.

I modsætning til fortolkede sprogs eval-funktioner, er der er ikke noget ydelsestab i C#.

»Det kører med nøjagtigt samme hastighed. Når først det er kompileret, så er det full speed ahead,« forklarer Anders Hejlsberg til Version2.

Dynamiske typer

Den største enkeltstående nyhed er, at det nu er muligt at bruge dynamiske typer i C#. Det sker ved at indføre et nyt nøgleord, "dynamic," som medfører at properties og metoder først tjekkes på kørselstidspunktet.

Det er ikke helt nemt at forstå, men C# er stadig et statisk sprog, i den forstand at dynamiske variabler har typen "dynamic."

»Er det kætteri?« spørger Anders Hejlsberg retorisk til publikum i den tætpakkede sal. Han forklarer, at han stadig er en stor fan af statiske sprog. Men C# er ikke en ø, men må være i stand til at tale med andre dynamiske sprog. Det er især bindingen til Javascript i Silverlight, som er vigtig. Andre eksempler er dom-objekter i XML og HTML, som kan glide mere gnidningsfrit ind i C#.

Det demonstrerer Anders Hejlsberg til publikums udtalte fornøjelse ved at kopiere Javascript fra en hjemmeside ind i C#-editoren, ændre "function" til "void" og skrive "dynamic" foran metodens parametre, og så er Javascript blevet til C#. Udvikleren kan skabe sine egne dynamiske objekter ved at implementere et interface med navnet IDynamicObject.

Valgfri parametre

En anden nyhed er valgfri parametre og navngivne parametre.

Valgfri parametre betyder, at visse parametre i metodekalde kan udelades, hvis der er angivet en standard-værdi i metodens definition. De valgfri parametre skal have en standardværdi og befinde sig i parameterlistens hale. Det kan f.eks. se sådan ud:

void (string s, int buffersize: 4086);

Det gør det kønnere at kalde COM-objekter, hvor den nuværende strategi er at benytte Type.Missing for valgfrie parameter i kald til COM-objekter. Det er især automatisering af Office, som eksponerer sine API'er ved hjæp af COM, som Anders Hejlsberg og kompagni har i tankerne.

Navngivne parametre gør det nemmere at undgå fejl ved kald af metoder med lange parameterlister.

Blandt andre nyheder i C# 4 er mulighed for at angive kovarians og kontravarians i forbindelse med parametriserede typer.

Send Tweet
Udskriv

IT-job & karriere

  • Se alle it-job
  • Importer din kompetenceprofil fra LinkedIn
SENIOR .NET BACKEND DEVELOPER
Udgivet 16. jan 8.43
Lead Developer BizTalk - FAST stilling
Udgivet 24. nov 2011 13.06
CFD Tester
Udgivet 20. jan 9.24
Software Development Engineer II (782838)
Udgivet 25. jan 10.38

Kommentarer (9)

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Martin R. Ehmsen 29. okt. 2008 - 11.07
 
og vupti...

har man Python :-)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Thomas Brodersen 29. okt. 2008 - 12.20
 
Anders Hejlsberg

En mand vi kan være stolte af i Danmark :-)

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Torben Mogensens billede
Torben Mogensen 29. okt. 2008 - 14.39
 
Re: og vupti...
har man Python :-)

Sidst jeg så, havde Python ikke nogen art af statisk typecheck. Ideen med dynamic typen i C# er, at man kun bruger den, når man ikke kan bruge en statisk type (dvs. sjældent), så 99% af ens program er statisk checket.

De fleste statisk typede OO sprog har iøvrigt allerede en sådan type: Den kaldes "object". Forskellen er bare, at man med object skal lave en downcast til en navngivet type for at kunne bruge en metode, mens dynamic blot tester, at den specifikke metode findes for den aktuelle værdi.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Carsten Frigaard 29. okt. 2008 - 15.08
 
multiparadigme: ikke nyt

Er der så meget nyt i det...i C++ har man "valgfri parametre" (overloading), og dynamiske metoder kan nemt emuleres uden sprog understøttelse (men C++ har jo også har et dynamisk typesystem, hvis man ønsker at koble det til).

Det "Hejlsberg"-hypede multiparadigme er ikke nyt, og Bjarne Stroustrup er vel den egentlige skaber af et mutliparadime sprog, der jo er designet i 1980'erne. C# ser bare ud til at kopiere dette rigtige "design".

Få lidt it-historisk baggrund ved at læse om Bjarne, vor nok største IT guru her: http://www.research.att.com/~bs/

mvh
Carsten

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Anonym (ikke efterprøvet) 30. okt. 2008 - 01.42
 
Er det ikke præcis hvad APL har gjort siden tresserne?

Er der no'en som vil belære mig om den store forskel?

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Brian Rasmussen 2. nov. 2008 - 15.56
 
Re: Er det ikke præcis hvad APL har gjort siden tresserne?

Almindeligvis er APL fortolket og ikke strongly typed, så det er i hvert fald to væsentlige forskelle. C# 4 er stadig strongly typed som udgangspunkt - det nye i den sammenhæng er blot, at der også tillades dynamiske typer, hvilket bl.a. gøres for at tillade bedre kommunikation med COM.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Klaus Bo Larsen 16. nov. 2008 - 22.52
 
Multiparadigme betyder (integration af) flere paradigmer

Når Anders Hejlsberg bruger udtrykket multiparadigme, mener han ikke bare dynamiske typer og default værdier på parametre. Men derimod en mulighed for i programmeringssproget at udtrykke sig med udgangspunkt i flere forskellige paradigmer. Specielt at programmøren kan skifte mellem og kombinere imperative, objektorienterede, funktionelle, deklarative og constraint-erklærede metoder og teknikker i et program. Med direkte understøttelse fra programmeringssproget. Altså at programmeringssproget understøtter mange programeringsparadigmer. For mig er det klart noget nyt for et multi-purpose mainstream programeringssprog.

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Jens Kolberg 17. nov. 2008 - 08.37
 
Re: Multiparadigme betyder (integration af) flere paradigmer
Altså at programmeringssproget understøtter mange programeringsparadigmer. For mig er det klart noget nyt for et multi-purpose mainstream programeringssprog.

Det kommer vist helt an på definitionen af ordet "mainstream". Der er mange multiparadigme sprog, se f.eks.:
http://en.wikipedia.org/wiki/Multi-paradigm_programming_language

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer
Død Profil 17. nov. 2008 - 08.44
 
void?
void (string s, int buffersize: 4086);

Måske endnu en feature. Unavngivne metoder, hvor kompileren selv kan gætte hvad man mener? :)

Mvh,
Søren

  • Stem op 0
  • Stem ned 0
  • Log ind eller opret en konto for at skrive kommentarer

Tilføj kommentar

Opret en konto eller log ind for at følge indhold på Version2 - og bliv opdateret via e-mail eller rss

Følg kommentarer
Log ind herunder eller opret en bruger for at skrive kommentarer
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?

Seneste nyt

It skal spare kommunerne for 165 millioner kroner i 2012

Udgivet 9. feb 16.02Opdateret 9. feb 16.02

Adobe: Vi laver ikke Flash til Android-udgaven af Chrome

Udgivet 9. feb 15.15Opdateret 9. feb 15.15

Så oldnordisk er politiets it-miljø: Nostalgisk gensyn med 1980’erne

Udgivet 9. feb 14.22Opdateret 9. feb 15.12

EMC lægger flash-cache på PCIe-kort: 4.000 gange hurtigere end harddiske

Udgivet 9. feb 13.39Opdateret 9. feb 13.39

Egedal Kommune sparer 100.000 om året med open source-CMS

Udgivet 9. feb 12.56Opdateret 9. feb 12.56
Flere it-nyheder »
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Seneste debat

  1. Opdateret liste over danske iværksættere

    2 comments.
    Last update 1 time 9 minutter
    Skrevet af Therese Hansen
  2. Stop SOPA, PIPA, ACTA, TPP og alle dem der kommer efter

    50 comments.
    Last update 5 timer 30 minutter
    Skrevet af Bjarne W. B. Petersen
  3. Derfor bliver dårlige it-projekter ikke stoppet i tide

    1 comment.
    Last update 5 timer 54 minutter
    Skrevet af Kasper Jørgensen
  4. Grotesk jobinterview i 2007: »Tag ikke jobbet, vi får alligevel aldrig Polsag til at virke«

    17 comments.
    Last update 6 timer 2 minutter
    Skrevet af Claus Waldersdorff Knudsen
  5. Så oldnordisk er politiets it-miljø: Nostalgisk gensyn med 1980’erne

    6 comments.
    Last update 6 timer 5 minutter
    Skrevet af Simon Justesen
  6. Domæne-forening: Lov om .aarhus og .cph var for tynd

    9 comments.
    Last update 6 timer 56 minutter
    Skrevet af Jarle Knudsen
  7. ACTA er i orden!

    51 comments.
    Last update 9 timer 28 minutter
    Skrevet af Jarle Knudsen
  8. It-advokat: Nu går grænsebommene ned over internettet

    10 comments.
    Last update 11 timer 14 minutter
    Skrevet af Niels Elgaard Larsen
Mere debat »

Information

  • Kontakt redaktionen
  • Job- og annoncesalg
  • Teknisk support
  • Om Version2
  • Brugerbetingelser
  • Privatlivspolitik

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Digitaliseringsstyrelsen
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Lion
  • Open source CMS
  • Projektledelse
  • Scrum
  • Sharepoint intranet
  • Storage
  • Ubuntu 11.10
  • Virtualisering
  • Windows 8
  • Windows Phone 7
  • iOS 5
  • iPhone 4S

Tjenester

  • Android-app
  • iPhone-app
  • RSS-feeds
Følg @version2dk
Få it-nyheder og blogs hver dag med Version2's nyhedsbrev.

Version2 udgives af

  • Mediehuset Ingeniøren A/S work Skelbækgade 4 1717 København V
  • Tlf. work 33265300