Programmera i Ruby

Den hälsosamme ekonomisten, Saturday 9 March, 2019
Bild: 2017-09/dsc01062.jpg

Får ibland frågan varför jag programmerar i Ruby och inte något annat språk som Java eller Python eller C++. Det ena svaret är att man slipper skriva en massa text som egentligen inte behövs. Svaret är därmed detsamma som en Javaprogrammerare skulle ge om man frågade hen varför hen inte använder Cobol.

Det andra svaret är Sinatra. Ett ramverk som gör att du genom fyra rader kod kan skriva en fungerande webbapplikation. Ja, om man bortser från att man måste ange vissa grundvariabler och bibliotek förstås.

De fyra raderna är:

require 'sinatra'
get '/frank-says' do
  'Put this in your pipe & smoke it!'
end

Men Java är ju så mycket större och C++ är så mycket snabbare och Python är så bra på numeriska operationer.

Jo, allt detta stämmer. Men när du sitter där och skriver är det framför allt två saker som räknas:

1) Kan du snabbt läsa och förstå koden?

2) Behöver du skriva massor av onödiga tecken varje gång du ska skapa en ny funktion eller klass?

Ni undrar säkert hur Ruby kan bli kompaktare och samtidigt mer lättläst än andra språk. Svaret är att det i det närmaste är helt objektorienterat. I Java och C++ skapar man två funktioner för att tilldela en klass en egenskap, med en så kallad "setterfunktion":

s = new Sak(....)
s.setSakegenskap(höjd)

I Ruby blir motsvarande kod:

s = sak.new(...)
s.egenskap = höjd

Lättare att förstå, givet att man inte givit egenskapen något orimligt namn förstås.

Detta är bara ett exempel på hur Rubykoden blir mer kompakt och lättläst än andra språk. Det enda problemet är att Ruby (ännu) inte är det mest populära språket. Många arbetar alltjämt med PHP, trots att programmerare är överens om att det är synnerligen olämpligt för strukturerad programmering. Det är inte ens ett språk, men ligger ändå till grund för system som exempelvis Wordpress.

Men Python då? Jo, Python är väldigt explicit, men oftast krävs det mer kod för att åstadkomma samma sak.

I Python skriver man kanske

from datetime import datetime
from dateutil.relativedelta import relativedelta
new_time = datetime.now() + relativedelta(months=1)

om man vill ta fram en tidpunkt en månad fram i tiden. I Ruby använder man metoder som definierats i biblioteket "active_support/all" och skriver:

require 'active_support/all'
new_time = 1.month.from_now

Ni ser skillnaden. Vilken är då nackdelen med den senare metoden? Jo, det är att man måste vara explicit och namnge sina metoder så att det går att förstå vad de gör. I fallet ovan är det inga problem, men det går lätt att tänka sig situationer där den senare metoden bli ogenomtränglig och svår att följa.

Alltså, i bästa fall förstår en utomstående koden snabbare än i andra språk, men gör man fel kan det bli svårt att felsöka.

Ruby förknippas ofta med ramverket "Ruby on Rails". Personligen tycker jag språket mer kommer till sin rätt tillsammans med ramverket Sinatra som jag nämnde tidigare. Då drar man nytta av språkets kompakthet på ett bättre sätt och snabbar upp tiden från idé till färdig produkt.

Om det här har fått er lite intresserade av Ruby - vilket väl var syftet - återstår frågan om hur man börjar använda Ruby och Sinatra?

Först behöver man en utvecklingsmiljö av typ Visual Studio eller Cloud 9. Sedan börjar man lämpligen med att installera Ruby version manager för enkel uppgradering och versionshantering. Nästa steg är att installera Git. Det gör det enkelt att vid behov flytta koden och att följa förändringar som man gjort över tid. För att installera Sinatra använder man gem och skriver "gem install sinatra".

Ok, den här guiden är lite kortfattad. Mer detaljer finns på länkarna ovan. Men jag hoppas få fler kollegor som använder Ruby och Sinatra. Tror många skulle trivas med Ruby och förmodligen också spara en hel del tid som i dag används för att skriva kod man egentligen inte behöver skriva.

Realräntorna den verkliga gåtan

Den hälsosamme ekonomisten
Bild: 2017-09/dsc01062.jpg

Det talas mycket om att låga inflationsförväntningar leder till abnormt höga priser för statsobligationer. Men det är faktiskt inte inflationsförväntningarna som är låga - utan räntorna i sig. Marknaden tycks förvänta sig en negativ avkastning på kapital sedan man justerat för prisnivån. Inflationsförväntningarna är förvisso låga, men inte så låga att detta motiverar de extremt låga räntorna. Är det rimligt att en 50-årig brittisk obligation har en avkastning på en procent per år inklusive …

Läs mer!

Vad man kan göra med dokumentvektorer

Den hälsosamme ekonomisten
Bild: 2017-09/dsc01062.jpg

Funderar på hur man kan använda algoritmen Doc2Vec som finns tillgänglig på Algorithmia . Min teori är att vektorer kan användas för att maskinellt bedöma kvaliteten i texter. Om hypotesen är korrekt kan man med hjälp av manuell betygssättning skapa ett underlag för att lära datorn vilka blogginlägg som är bra och vilka som inte är det. Doc2Vec är en utvidgning av algoritmen Word2Vec som används för att få datorer att förstå innebörden i skriven text. Word2Vec skapar vektorer i 300 …

Läs mer!

Ett inte särskilt framgångsrikt handelskrig

Den hälsosamme ekonomisten

Det står allt mer klart att USA är den stora förloraren på handelskriget med Kina . Det senaste året har USA:s export till Kina minskat med 33 miljarder dollar, eller 21 procent. Kinas export till USA däremot, har ökat med fyra miljarder eller en procent. USA:s handelsunderskott ökar ständigt och Kina sänker tullarna mot andra handelspartn… Läs mer!

Kina lanserar egen kryptovaluta

Den hälsosamme ekonomisten

Det verkar som om Kina håller på att lansera en egen kryptovaluta. Det är ett intressant drag och något som kanske påskyndats av Facebooks initiativ med Libra . En intressant egenskap hos kryptovalutor är att man kan följa alla transaktioner som görs med en viss plånbok genom historien. Det är givetvis något som påtagligt ökar möjligheten att … Läs mer!

Känn gärna skam, men gör då något åt skammen

Den hälsosamme ekonomisten

Flygskam blev årets ord. Man förväntas känna skam när man reser på semester från kalla norden där solen knappt orkar över trädtopparna och temperaturen ligger runt noll grader. Skam? Trodde jag att koldioxid var dåligt för miljön skulle jag också ha känt flygskam. Men jag hade inte stannat där, jag hade antagligen gjort något åt det. Kanske … Läs mer!

Fascinerande att MSB har så dålig koll på upphandlingsreglerna

Den hälsosamme ekonomisten

Nej, det går inte att ändra reglerna i ett kontrakt med en privat leverantör i efterhand utan att upphandla på nytt. Det är märkligt att MSB har så dålig koll på reglerna. För tänk om det vore möjligt. Då är detta information som borde ha kommit alla potentiella anbudsgivare till del innan den ursprungliga upphandlingen. Annars har de lagt … Läs mer!

Första landet som går in i recession

Den hälsosamme ekonomisten

Storbritannien blev det första landet som gick in i recessionsläge. Inte helt oväntat då landets arbetsmarknad länge varit överhettad. Det svaga pundet kommer dock att begränsa effekterna av Brexit och avmattningen i USA. Eurozonen har en betydligt besvärligare situation. Med negativ avkastning för tyska tioåriga statsobligationer och en … Läs mer!

Nyckeln som du alltid bör ha med dig

Den hälsosamme ekonomisten

Många använder ännu i dag endast användarnamn och lösenord för att logga in på olika tjänster på nätet. Är det inget viktigt lagrat där må det vara hänt, men även då bör man se upp. Många använder nämligen samma eller liknande lösenord på fler webbsidor och en hackare som får tag på ditt lösenord på en sida kan få en ledtråd om vilket lösenord du … Läs mer!

Bankerna utförde det indiska reptricket

Den hälsosamme ekonomisten

Det jag påstår här ska ses som en hypotes som jag inte har grundat i statistiska analyser. Men det slår mig att vi parallellt har företag som betalar miljoner och åter miljoner för att människor över huvud taget ska ta kontakt. Sedan har vi företag som betalar miljoner och åter miljoner för att människor *inte* ska ta kontakt. I det första … Läs mer!

Om bloggen

Den hälsosamme ekonomisten är en blogg som handlar om sjukvårdens organisation, incitament och klassisk liberalism - allt skrivet ur ett ekonomistiskt perspektiv. Webbplatsen använder tredjepartskakor (cookies) från Disqus, Piwik, Facebook, Google och Twitter för att anpassa innehållet och annonserna till användarna, tillhandahålla funktioner för sociala medier och analysera vår trafik. Vi vidarebefordrar information om din användning av vår webbplats till de sociala medier och annons- och analysföretag som vi samarbetar med. Du kan läsa mer om webbplatsens kakpolicy här. Denna sida drivs med webbverktyget Bolt. Av Mattias Lundbäck.

VR och Vårdvalssidan

Den hälsosamme ekonomisten finns även tillgänglig i VR. Har man HTC Vive eller Occulus Rift når man hifi://ekonomism genom att först installera appen High Fidelity som ger tillgång till en stor mängd olika virtuella världar. Sedan skriver man bara "ekonomism" i Goto-fältet i HiFi. Fältet motsvarar adressraden i en vanlig webbläsare.

Besök gärna www.vårdval.se - det enklaste sättet att hitta och jämföra vårdgivare.

”Jag

Läs bloggkollegor

Anybodys Place Carl-Johan Westholm Cornucopia Danne Nordling Eskil Ullberg Fnordspottning Fredrik Malm Fredrik Segerfeldt Gustav Nipe Henrik Alexandersson Janerik Larsson Jonas Grafström Lennart Grundel Maria Abrahamsson Markus Uvell Mina Moderata Karameller Mattias Svensson Niclas Berggren Opassande Per Gudmundson Sjätte Mannen Tanja Bergkvist The Market Monetarist


Creative Commons-licens
Den hälsosamme ekonomisten av Mattias Lundbäck är licensierad under en Creative Commons Erkännande 4.0 Internationell licens.
Based on a work at https://www.ekonomism.us.

Sociala medier

Den hälsosamme ekonomisten är en blogg för dig som är intresserad av ekonomi, politik och teknik. Följ mig på Twitter för regelbundna uppdateringar. Läs mer om Den hälsosamme ekonomisten och Mattias Lundbäck här.


Linkonomism
Googelkonomism
Feedkonomism