BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand
BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand.pdf
BE15_Sprakochmiljoer_Backend_Peter_Sjöstrand.pdf
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.