<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: En minimal http-server i Ruby</title>
	<atom:link href="http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/</link>
	<description>om livet som .net utvikler</description>
	<lastBuildDate>Wed, 08 Feb 2012 09:53:01 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80332</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Mon, 22 Feb 2010 10:46:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80332</guid>
		<description>Det blir enda mer om diverse programmeringsspråk og paradigmer her snart.., har bl.a. så smått begynt å lære meg Haskell.

Og siden du nevnte det - dynamiske programmeringsspråk er mer enn bare dynamisk typing, selv om det ofte er det vi fokuserer på. Språk er ikke bare statiske eller bare dynamiske, men befinner seg alltid et sted imellom ytterpunktene. Men mer om dette i en blogpost om en ukes tid.</description>
		<content:encoded><![CDATA[<p>Det blir enda mer om diverse programmeringsspråk og paradigmer her snart.., har bl.a. så smått begynt å lære meg Haskell.</p>
<p>Og siden du nevnte det &#8211; dynamiske programmeringsspråk er mer enn bare dynamisk typing, selv om det ofte er det vi fokuserer på. Språk er ikke bare statiske eller bare dynamiske, men befinner seg alltid et sted imellom ytterpunktene. Men mer om dette i en blogpost om en ukes tid.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonas Follesø</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80328</link>
		<dc:creator>Jonas Follesø</dc:creator>
		<pubDate>Mon, 22 Feb 2010 09:45:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80328</guid>
		<description>Jepp, Kayak vil måtte basere seg på reflection for å finne klasser som skal håndtere en request. Ønsker vi ny funksjonalitet må denne kompileres og lastes via refleksjon. Dette håndteres automatisk av Kayak, så du slipper å forholde deg til refleksjon som utvikler. Dog må du kopilere koden før den kan lastes, siden C# ikke har støtte for scripting out of the box.

Når vi snakker om dynamisk funksjonalitet så handler refleksjon ikke om dynamisk tying (som i dynamiske programmerignsspråk), men dynamisk lasting av funksjonalitet (som er to forskjellige greier). Dynamisk typing får vi først i C# 4.0, og da vil man enkelt kunne f.eks laste handler filer direkte uten å måtte kompilere kode først. Mulighet å kjøre C# kompilatoren som en &quot;service&quot; og kompilere kode &quot;on the fly&quot; vil og muliggjøre C# scripting (dynamisk lasting av ukompilert kode under runtime) som ville gjort det enklere å legge til nye KayakService klasser (i dag må de kompileres).

Ang. mindset så er jo det største argumentet for å lære nye språk. Man har kanskje ikke et Ruby prosjekt på jobben, men ved å lære det på fritiden kan man endre måten man tenker på, og løse problemer i C#/.NET på en mer elegant/effektiv måte ved å bruke disse ideene. 

Har f.eks selv hatt kjempe nytte av det jeg lærte i Funksjonell Programmering i Scheme på universitetet når jeg lærte meg LINQ, og generelt måten jeg tenker funksjonell programmering. Så kjempe flott at du kjører på med Ruby blog posts på Norsk! :)</description>
		<content:encoded><![CDATA[<p>Jepp, Kayak vil måtte basere seg på reflection for å finne klasser som skal håndtere en request. Ønsker vi ny funksjonalitet må denne kompileres og lastes via refleksjon. Dette håndteres automatisk av Kayak, så du slipper å forholde deg til refleksjon som utvikler. Dog må du kopilere koden før den kan lastes, siden C# ikke har støtte for scripting out of the box.</p>
<p>Når vi snakker om dynamisk funksjonalitet så handler refleksjon ikke om dynamisk tying (som i dynamiske programmerignsspråk), men dynamisk lasting av funksjonalitet (som er to forskjellige greier). Dynamisk typing får vi først i C# 4.0, og da vil man enkelt kunne f.eks laste handler filer direkte uten å måtte kompilere kode først. Mulighet å kjøre C# kompilatoren som en &#8220;service&#8221; og kompilere kode &#8220;on the fly&#8221; vil og muliggjøre C# scripting (dynamisk lasting av ukompilert kode under runtime) som ville gjort det enklere å legge til nye KayakService klasser (i dag må de kompileres).</p>
<p>Ang. mindset så er jo det største argumentet for å lære nye språk. Man har kanskje ikke et Ruby prosjekt på jobben, men ved å lære det på fritiden kan man endre måten man tenker på, og løse problemer i C#/.NET på en mer elegant/effektiv måte ved å bruke disse ideene. </p>
<p>Har f.eks selv hatt kjempe nytte av det jeg lærte i Funksjonell Programmering i Scheme på universitetet når jeg lærte meg LINQ, og generelt måten jeg tenker funksjonell programmering. Så kjempe flott at du kjører på med Ruby blog posts på Norsk! :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80322</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Mon, 22 Feb 2010 09:22:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80322</guid>
		<description>En viktig forskjell er også hvordan jeg i Ruby kan loade kode i runtime - i mitt tilfelle basert på filnavn. I C# brukte jeg reflection, og jeg antar at Kayako har implementert den biten omtrent på samme måte. Reflection er C#&#039;s mest dynamiske feature, men siden C# ikke er særlig dynamisk i utgangspunktet er reflection noe tungvindt.</description>
		<content:encoded><![CDATA[<p>En viktig forskjell er også hvordan jeg i Ruby kan loade kode i runtime &#8211; i mitt tilfelle basert på filnavn. I C# brukte jeg reflection, og jeg antar at Kayako har implementert den biten omtrent på samme måte. Reflection er C#&#8217;s mest dynamiske feature, men siden C# ikke er særlig dynamisk i utgangspunktet er reflection noe tungvindt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Torbjørn</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80321</link>
		<dc:creator>Torbjørn</dc:creator>
		<pubDate>Mon, 22 Feb 2010 09:17:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80321</guid>
		<description>Ja, jeg ble gjort oppmerksom på Kayak etter at jeg skrev koden min, og Kayak-løsningen er absolutt elegant. Jeg begynte heller ikke blogpostene med et mål om vise at Ruby er &quot;bedre&quot; enn C#, og ble selv overrasket over hvor kompakt jeg fikk Ruby&#039;en. Jeg synes likevel mitt siste poeng, som du også var enig i, er viktig - og gjør ofte mer jobb i C# enn nødvendig. Ruby hjelper meg å endre dette mindsettet.</description>
		<content:encoded><![CDATA[<p>Ja, jeg ble gjort oppmerksom på Kayak etter at jeg skrev koden min, og Kayak-løsningen er absolutt elegant. Jeg begynte heller ikke blogpostene med et mål om vise at Ruby er &#8220;bedre&#8221; enn C#, og ble selv overrasket over hvor kompakt jeg fikk Ruby&#8217;en. Jeg synes likevel mitt siste poeng, som du også var enig i, er viktig &#8211; og gjør ofte mer jobb i C# enn nødvendig. Ruby hjelper meg å endre dette mindsettet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonas Follesø</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80320</link>
		<dc:creator>Jonas Follesø</dc:creator>
		<pubDate>Mon, 22 Feb 2010 08:59:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80320</guid>
		<description>Her er et kjapt eksempel på C#/.NET løsning basert på Kayak som er en mer reel sammenligning. Fortsatt ikke like kompakt som Ruby versjonen, men samme type funksjonalitet. [Path] attributter i stedenfor responder filer, og KayakServer i stedenfor Sinatra/WEBrick.

http://codepaste.net/p2d875 

Kan evt. forenkles ytterligere med en generisk Kayak-modul hvor man kan sende inn lambda-uttrykk for å håndtere de forskjellige HTTP GET kallene.</description>
		<content:encoded><![CDATA[<p>Her er et kjapt eksempel på C#/.NET løsning basert på Kayak som er en mer reel sammenligning. Fortsatt ikke like kompakt som Ruby versjonen, men samme type funksjonalitet. [Path] attributter i stedenfor responder filer, og KayakServer i stedenfor Sinatra/WEBrick.</p>
<p><a href="http://codepaste.net/p2d875" rel="nofollow">http://codepaste.net/p2d875</a> </p>
<p>Kan evt. forenkles ytterligere med en generisk Kayak-modul hvor man kan sende inn lambda-uttrykk for å håndtere de forskjellige HTTP GET kallene.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonas Follesø</title>
		<link>http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80315</link>
		<dc:creator>Jonas Follesø</dc:creator>
		<pubDate>Mon, 22 Feb 2010 08:12:09 +0000</pubDate>
		<guid isPermaLink="false">http://blog.kjempekjekt.com/2010/02/22/en-minimal-http-server-i-ruby/#comment-80315</guid>
		<description>Flott post. 

Dog til C#&#039;s forsvar så er løsningene basert på forskjellige abstraksjonsnivå (selv om du sammenligner WEBRick som lavnivå HttpListener). I .NET posten går store deler av koden med på å implementere selve HTTP serveren, noe du får gratis fra WEBrick hvor du kun implementerer &quot;handlerene&quot;. Dersom du hadde valgt et eksternt .NET bibliotek framfor HttpListener ville du kunne fått koden langt mer kompakt.

Men du har et viktig poeng at du som C# utvikler over 8 år lander på en løsning på 170 linjer, mens som Ruby utvikler klarer å lande på 6 kodelinjer. Det sier litt om forskjellen i mindset når man koder Ruby og C#. .NET utviklere generelt har en tendens til å lene seg alt for tungt på Microsoft (noe ALT.NET er reaksjon på), noe som gjør at man får suboptimale dersom .NET ikke har funksjonaliteten &quot;out of the box&quot;. Når du koder Ruby er det helt naturlig å bruke open source bibliotek som Sinatra og WEBrick.</description>
		<content:encoded><![CDATA[<p>Flott post. </p>
<p>Dog til C#&#8217;s forsvar så er løsningene basert på forskjellige abstraksjonsnivå (selv om du sammenligner WEBRick som lavnivå HttpListener). I .NET posten går store deler av koden med på å implementere selve HTTP serveren, noe du får gratis fra WEBrick hvor du kun implementerer &#8220;handlerene&#8221;. Dersom du hadde valgt et eksternt .NET bibliotek framfor HttpListener ville du kunne fått koden langt mer kompakt.</p>
<p>Men du har et viktig poeng at du som C# utvikler over 8 år lander på en løsning på 170 linjer, mens som Ruby utvikler klarer å lande på 6 kodelinjer. Det sier litt om forskjellen i mindset når man koder Ruby og C#. .NET utviklere generelt har en tendens til å lene seg alt for tungt på Microsoft (noe ALT.NET er reaksjon på), noe som gjør at man får suboptimale dersom .NET ikke har funksjonaliteten &#8220;out of the box&#8221;. Når du koder Ruby er det helt naturlig å bruke open source bibliotek som Sinatra og WEBrick.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

