Gå til hovedindhold
Version2 it for professionelle
Forsiden

Hovedmenu

  • It-nyheder
  • Blogs
  • It-job
  • It-firmaer
  • Whitepapers
  • Opret bruger
  • Log ind
Du kan logge ind med din e-mail-adresse
Der er forskel på store og små bogstaver i adgangskoden.
Glemt adgangskode?
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
.Net/C# udviklere
Udgivet 16. jun 2011 14.34
Erfaren udvikler til C# og SQL
Udgivet 22. maj 8.29
EPIserver Web Developer
Udgivet 14. maj 9.33
Software Engineering Manager
Udgivet 2. maj 9.51

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

Rygte: Microsoft lancerer Office til iOS i november

Udgivet 24. maj 15.33Opdateret 24. maj 15.33

Yahoos nye browser får uheldig start - lækker eget sikkerhedscertifikat

Udgivet 24. maj 14.52Opdateret 24. maj 14.53

Danske internetudbydere nægter at blokere 12 pokersites

Udgivet 24. maj 13.58Opdateret 24. maj 13.58

Dokumentation: Her er Spillemyndighedens krav - og 12 ulovlige pokersider

Udgivet 24. maj 13.58Opdateret 24. maj 13.58

Ny blog: Offentlige it-projekter set indefra

Udgivet 24. maj 13.19Opdateret 24. maj 13.30

Flere it-nyheder »

Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Whitepapers

Om eBinder

eBinder ApS

Kick-start your master data management initiative

Affecto Denmark

Affecto Data Quality Assessment: Er din indsigt og beslutning baseret på validt data?

Affecto Denmark

Framework til datamigrering i SAP miljøer - spar op til 50% på dine Data Migration udgifter

Affecto Denmark

Få et Data Warehouse (DW) review hos Affecto

Affecto Denmark
  • Flere whitepapers

Branchenyheder

Konica Minoltas stand på drupa 2012 slog besøgsrekord

Konica Minolta Business Solutions Denmark

Komplex it er blevet Brocade Premier Partner

Komplex IT

Øg din effektivitet og produktivitet med bizhub C654/C754

Konica Minolta Business Solutions Denmark

Brugerfjendtlige it-løsninger gør brugerne til en sikkerhedstrussel

Projectplace

Athena IT-Group A/S med solid indtjening

Athena IT-Group

Seneste debat

  1. Kynisk it-guru: »Internettet er basalt set noget lort«

    7 comments.
    Last update 2 minutter 17 sekunder
    Skrevet af Poul-Henning Kamp
  2. Oracle tabte, vandt Google Java ?

    16 comments.
    Last update 12 minutter 15 sekunder
    Skrevet af Poul-Henning Kamp
  3. Meego-afløseren Tizen klar til at tage kampen op med Android

    11 comments.
    Last update 15 minutter 34 sekunder
    Skrevet af Dennis Krøger
  4. Yahoos nye browser får uheldig start - lækker eget sikkerhedscertifikat

    1 comment.
    Last update 23 minutter 9 sekunder
    Skrevet af Thue Kristensen
  5. Danske internetudbydere nægter at blokere 12 pokersites

    3 comments.
    Last update 29 minutter 30 sekunder
    Skrevet af Jesper Lund Stocholm
  6. Dokumentation: Her er Spillemyndighedens krav - og 12 ulovlige pokersider

    3 comments.
    Last update 31 minutter 32 sekunder
    Skrevet af Jens Larsen
  7. GOTO - programming with the stars (F#)

    9 comments.
    Last update 32 minutter 17 sekunder
    Skrevet af Baldur Norddahl
  8. ESA arbejder på interplanetarisk internet

    5 comments.
    Last update 37 minutter 8 sekunder
    Skrevet af Jarle Knudsen

Mere debat »

It-virksomheder

Raxco Scandinavia
|
Halibut
|
Avenida
|
Redpill Linpro
|
Netcompany
|
Zylinc
|
Visma Sirius A/S
|
Ciklum
|
Olsens IT
|
Mobile Advisor
|
IT Company
|
C2IT
 

Information

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

Aktuelle emner

  • Agil udvikling
  • Android
  • Bruttolønsordning
  • Business Intelligence
  • Cloud computing
  • Download Windows 8
  • HTML5
  • Harddisk-priser
  • IE9
  • Intranet
  • It-sikkerhed
  • Kindle Fire
  • Multimedieskat
  • NemID
  • OS X Mountain 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
Tilmeld dig Version2's it-nyhedsbrev og vind den nye iPad.

Version2 udgives af

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