12.10.2015 Views

BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand

BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand.pdf

BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand.pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Peter</strong> <strong>Sjöstrand</strong> 2015-09-13 Sid 1<br />

<strong>Backend</strong>utvecklare C# - Uppgift 1.2, 2015-09-11.<br />

Utvecklingsspråk och -miljöer, DEL 1.<br />

Kort beskrivning C, C++, Java, C#, Obj-C, Swift, PHP, Ruby, Python, Go samt JavaScript, samt vad språket är bra<br />

på och vad det kan användas till.<br />

De vanligaste bland de tusental programmeringsspråken på marknaden idag är C, C++, Java, C#, Objective-C,<br />

Swift, PHP, Ruby, Python, Go samt JavaScript. Det är bara C och Objective-C som inte releasats de senaste 12<br />

månaderna. Alla kan på något vis härledas från Fortran, år 1954. Flera av dessa har också funnits med i minst<br />

20-tal år på marknaden bortsett från Go, publicerad 2009 av Google och Swift, publicerad så sent som förra<br />

året av Apple efter fem års utveckling.<br />

Det påstås enligt TIOBE att Java och C idag är de mest omtalade och sökta programmeringsspråken sedan 2002<br />

i flera olika sökmotorer. C och C++ är äldst bland dessa från början av 70- respektive 80-talet och användes för<br />

att bland annat bygga operativsystem för att de också är säkra och stabila att bygga med. Ett exempel på<br />

tillämpning av C är utvecklingen av UNIX operativsystemet men används vanligtvis också för utveckling av<br />

inbäddade system exempelvis till DVD-spelare, medicintekniska produkter och farthållare till bilar. Alltså är C<br />

ett väldigt hårdvarunära programmeringsspråk där minnesutrymmet är högst begränsat. Hit till denna grupp<br />

hör C++ där möjligheterna för manipulering av minnesytor gör språket lämplig inom inbäddade system.<br />

Det unga systemnära och trendiga programspråket Go är Googles behov av att ta tillbaka stabila och säkra<br />

egenskaperna med C/C++. Go, C och C++ påträffas även inom frontend och kanske då speciellt<br />

affärssystemtillämpningar som flyttat ut till frontend.<br />

Även Java och C# klassas som säkra och stabila och används därför inom backend, i vilket man gärna bygger<br />

verksamhetssystem med.<br />

För webbutveckling används Java och C# som båda är de största på världsmarknaden. PHP, Ruby, Phyton och<br />

JavaScript används också för webbutveckling för att de är snabba, enkla och interpreterande att bygga med och<br />

dessutom är de också relativt nya och trendiga, i synnerhet JavaScript. Just därför att det är snabbt och enkelt<br />

att utveckla i används JavaScript, PHP, Ruby och Phyton för att ta fram prototyper. En viktig orsak till att de är<br />

enkla och smidiga för snabba lösningar är säkert på grund av att de är interpreterande programspråk. PHP<br />

används framförallt inom Bloggar och E-handelssystem och My News Desk utvecklades i Ruby som var trendigt<br />

och stort för 8-10 år sedan.<br />

Enligt Wikipedias ” Programming languages used in most popular websites” använder Google för sin sökmotor<br />

C, C++, Go, Java och Python för sina backend utvecklingar. Facebook för sociala nätverk använder bland annat<br />

PHP, C++, Java och Phyton. En tydlig inriktning för Wordpress och Wikipedias backend är att de bygger<br />

uteslutande på PHP. Yahoo använder både PHP och JavaScript för sina backendlösningar. Swift använder Apple<br />

till utveckling av sina operativsystem. Men enligt Apples egna hemsidor är det även tänkt till att användas för<br />

utvecklingar av appar till Apples Mac, iPhone och iPad. Anmärkningsvärt är att Twitter verkar vara den ende<br />

som tagit till sig Ruby i sin verktygslåda där bland annat C++ och Java även ingår för backend lösningar. De mest<br />

populära webb-siterna verkar vara helt eniga om att JavaScript är det mest lämpliga för frontend lösningar.<br />

Ingen av dem ovan nämnda siterna använder något annat programspråk för detta ändamål.<br />

Inom datorspel används C++, C, Java, C#, Objective-C, Swift och JavaScript. För grafiska tillämpningar eller<br />

användargränssnitten används Java, JavaScript, C#, Objective-C och Swift.


<strong>Peter</strong> <strong>Sjöstrand</strong> 2015-09-13 Sid 2<br />

<strong>Backend</strong>utvecklare C# - Uppgift 1.2, 2015-09-11.<br />

Utvecklingsspråk och -miljöer, DEL 2.<br />

Beskrivning av likheter mellan språken.<br />

Det finns många språkliga och funktionella egenskaper eller aspekter kring vilket programmeringsspråk skulle<br />

kunna grupperas in i. Vanliga egenskaper man pratar om är hur språket hanterar syntax, datatyper, objekt,<br />

procedur, minne, funktion och exekvering. Många fler grupperingar kan göras men kanske ligger utanför denna<br />

inlämningsuppgift. Det kan vara såsom att ta hänsyn till språklig nivå, syfte, självlärande, effektivitet och<br />

processer.<br />

Högnivåspråk<br />

För alla de 11 representerade språken från uppgift 1 har det gemensamma att de tillhör familjen högnivåspråk.<br />

Även om C anses vara väldigt maskinnära och mest maskinnära bland dessa språk hör den ändå till gruppen<br />

högnivåspråk. Typiskt för högnivåspråk är att de är lite pratigare och lättare att förstå i motsatsen till<br />

maskinspråken.<br />

Syntax<br />

När det skiljer sig i syntaxen mellan språken kan man välja att titta på huruvida man måste avsluta satser med<br />

semikolon eller inte. Bland de språk där semikolon är obligatorisk för att avsluta satser är närmare hälften av<br />

dessa elva. Det är i språken C, C++, C# och Objective-C som jag fortsättningsvis kallar C-språken. Utöver dessa<br />

hör även Java och PHP till denna grupp. I de övriga fem språken behöver man inte avsluta med semikolon men<br />

går att använda ändå.<br />

Hela nio av språken måste man gruppera in programavdelningar eller block med klammer. Det är alla C-<br />

språken, JavaScript, Go, Swift, Java och PHP. Undantagna är Ruby och Python från denna grupp.<br />

Typade<br />

Sedan finns programspråk som är hårt respektive svagt typade. Med det menas om man måste ange typen<br />

explicit eller inte. Exempelvis är satsen ”variabel X” skrivet som svagt typad, dvs skulle kunna förstås som<br />

heltalsdatatyp eller tecken-datatyp. Det står inte svart på vitt vad det är för datatyp på variabel X. Men<br />

tilldelningssatsen ”variabel flyttal X := 2.3” skulle man kunna säga är hårt typad då det krävdes explicit<br />

angivande av datatypen flyttal i detta exempel. De språken som kräver hård typning är utöver C-språken, Swift<br />

Java och Go. De svagt typade är JavaScript, Python, Ruby och PHP.<br />

Objektorientrad<br />

Alla utom tre C, Go och JavaScript är objektorienterade. Det innebär egentligen att dessa språk som är<br />

objektorienterade underlättar för programmerare att strukturera tänket kring data mer organiserat. I dagligt<br />

tal skulle vi säga att min Volvo eller min Fiat är en bil. Eller för att ta ytterligare exempel skulle man kunna säga<br />

min tax heter Ruffe. I ett objektorienterat språk finns det stöd för att bygga upp eller strukturera upp sina<br />

objekt i klasser. I vårt exempel skulle Volvo och Fiat kunna vara två objekt som hör till alla andra objekt som är<br />

bilar som då blir en klass. Eller objektet Ruffe hör till klassen av alla taxar med sina typiska egenskaper - som i<br />

sin tur skulle kunna ingå i en större klass av hundar osv. Även händelser borde kunna gå att objektifiera och<br />

klassas in. Detta borde bädda för att kunna hantera oerhört komplexa objekt på ett översiktligt och<br />

kodningsmässigt hanterbar form.<br />

Anonyma funktioner<br />

Alla 11 språken utom standard C stödjer anonyma funktioner. Däremot har vissa C-dialekter stöd för anonyma<br />

funktioner. Enligt ” https://en.wikipedia.org/wiki/Anonymous_function” har även Java stöd för detta. I video<br />

klippet ” General Programming Language Comparison” som publicerades slutet av januari i år säger Mac inget<br />

om Java men har ändå med den under gruppen som inte har stöd för anonyma funktioner med kommentar om<br />

att sanningen gäller fram till videon lades upp.<br />

Python har synonym till anonyma funktioner. Där heter det lambda.<br />

Anonyma funktioner är en beteckning på ett sätt att anropa funktion utan att tilldela den ett namn. Det är<br />

smidigt i lägen där funktionen sannolikt kommer att anropas i programmet en gång eller ett fåtal gånger.


<strong>Peter</strong> <strong>Sjöstrand</strong> 2015-09-13 Sid 3<br />

<strong>Backend</strong>utvecklare C# - Uppgift 1.2, 2015-09-11.<br />

Utvecklingsspråk och -miljöer, DEL 3<br />

1) Vad är skillnaden på ett programmeringsspråk, ett ramverk och ett system (Exempelvis C#, ASP.NET och ett<br />

CMS så som Episerver)?<br />

a. Programmeringsspråk är grunden i vilket man kan bygga allt och själva verktyget för att skriva de<br />

fundamentala algoritmerna för att bearbeta data på det sätt man vill att det skall fungera. Man<br />

bygger själva applikationerna och funktionaliteterna med själva programmeringsspråken.<br />

b. Ramverk är en plattform eller snickarbänk för snickaren. Så är ett ramverk för programmeraren en<br />

väl tillrättalagd arbetsmiljö för just det programmeringsspråk man valt lösa sin uppgift på.<br />

c. Ett system är i princip en produkt som är färdigutvecklat för installation men finns viss möjlighet<br />

att lägga till ytterligare funktionalitet på. Dessutom ger ett färdigt system mer<br />

affärsnytta/verksamhetsnytta direkt utan att behöva utveckla. Det man kan göra är att man istället<br />

kan modifiera det för att göra specialanpassningar. Exempel kan vara CMS Content Management<br />

System, Forum, E-handel, <strong>Backend</strong> mm.<br />

2) Varför passar inte alla programmeringsspråk för alla tillämningar?<br />

En del programmeringsspråk är utvecklade för över 30 år sedan och kanske inte har riktigt bra stöd för<br />

modern teknik. Speciellt utmärkande för programspråk inom mobiltelefonitillämpningar och E-handel.<br />

Andra program har olika ändamål såsom till exempel att styra reläer, svarvar eller känna av givare och<br />

utifrån det aktivera rörelser i olika maskindelar. Hit hör bland annat programspråket C. En del programspråk<br />

ger speciellt bra stöd för att utveckla ekonomisystem som Cobol. Att använda ett enda programmeringsspråk<br />

för alla tillämpningar blir som att använda en plattskruvmejsel till alla sorters skruvar. Det skulle exempelvis<br />

säkert gå att använda en plattskruvmejsel till skruvar med stjärnspårning. Det går hjälpligt. Men ännu<br />

smidigare att använda stjärnskruvmejsel i så fall.<br />

3) Varför är det viktigt att tänka på vilken server- eller klientmiljö (operativsystem) som kommer användas?<br />

Valet av operativsystem bestämmer sedan vilket ramverk som bör väljas. Eller vill man utveckla i en viss<br />

utvecklingsmiljö eller ramverk bör man känna till vilka operativsystem detta är lämpligast att köra i.<br />

Dessutom är det oftast inte samma operativsystem som körs i både server- och klientmiljöer. Men trenden är<br />

högst sannolikt att utvecklingen dock går åt det hållet att det är ett och samma operativsystem hela vägen.<br />

Ramverken i sin tur bestämmer vilka programmeringsspråk man kan utveckla sina program i. C# körs bäst i<br />

Windows medan Java går att köra i alla operativsystem. Windows 10 går att köra i både server- och<br />

klientmiljöer. Objective-C och Swift körs i Apples OS X på serversidan och på klientsidan iOS. När det<br />

gäller serverdistributioner körs Linux- och Unix-operativsystemen är det lämpligt att använda<br />

programspråken PHP, Ruby och Python.<br />

4) Varför är det viktigt att tänka på hur länge ett system ska leva när man väljer vad det ska utvecklas i?<br />

Anledningen till att ha koll på hur länge ett system som CMS, Forum, E-handel m fl skall leva är att detta<br />

påverkar valet av utvecklingsmiljö och språk. Är det exempelvis ett system som är tänkt att leva över många<br />

år kanske man bör ta ett framtidssäkert utvecklingsverktyg och kanske då något som många använder idag.<br />

Exempelvis är det ok att utveckla ett system som bara ska finnas i ett par år i Visual Basic som troligen<br />

håller på att dö ut.


<strong>Peter</strong> <strong>Sjöstrand</strong> 2015-09-13 Sid 4<br />

<strong>Backend</strong>utvecklare C# - Uppgift 1.2, 2015-09-11.<br />

Utvecklingsspråk och -miljöer, DEL 4<br />

Projektet Försäkring<br />

Försäkringsbolaget vill hantera sina interna ärenden och dokument. Det innebär att kunden är ute efter ett<br />

CMS, Content Management System. Då kunden har stort fokus på stabilt och säkert system är förstahandsvalet<br />

att utveckla systemet i C som passar bra till kundens redan befintliga blandade miljöerna Microsoft, Unix och<br />

Linux. C är dessutom välbeprövad och dessutom äldst bland alternativen – som dessutom är populärt och<br />

behärskas av många programmerare och utvecklare. Alltså är C en väl etablerad teknik troligen mest eftersökta<br />

enligt många sökmotorer på nätet vilket högst sannolikt indikerar på att det även blir enkelt att hitta<br />

arbetskraft. För webbutveckling där delar av systemet skall exponeras ut till iPhone och iPad fungerar C även<br />

bra som ett första alternativ.<br />

Som exempel på två andra alternativ som skulle kunna uppfylla ganska väl ovan kriterierna är C++ som går att<br />

även den köra i alla miljöer och Java som dessutom är plattformsoberoende. Båda språken är stabila och säkra<br />

och populära varför det är relativt lätt att finna utvecklare på arbetsmarknaden då många behärska även dessa<br />

tekniker.<br />

Tyvärr kan alla tre valda rekommenderade alternativen vara dyra och tidskrävande att utveckla i men då det<br />

finns gott om utvecklingspengar i bolaget utgör detta ingen flaskhals i projektet.<br />

Projektet Handel<br />

Vi bör erbjuda kunden i första hand en webbhotell lösning på grund av det relativt låga kundunderlaget initialt<br />

första åren och snabbt utveckla funktionalitet efter kundens önskemål i JavaScript då det inte ställs större krav<br />

på säkert och stabilt - inte heller krav på miljö. Investeringsbudgeten verkar dessutom utgöra en stark flaskhals<br />

i projektet enligt kunden. Då gäller det att få ut affärsnyttan omgående lite snabbt och enkelt. Skulle kunden<br />

växa avsevärt på marknaden är det bara att flytta ut kundens affärssystem ut i egna molnet.<br />

Två andra val skulle kunna vara Ruby och sen PHP som minst skulle kunna uppfylla kundens önskemål och<br />

förutsättningar framförda ovan.<br />

Projektet Spel<br />

Självklara förstahandsvalet är JavaScript. Perfekt för enkla animeringar och lite grafik. Snabbt och enkelt att ta<br />

fram enkelt spel i. Funkar såväl för mobila lösningar och webben. Andra utvecklingsalternativ är Ruby och PHP.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!