Avatar billede ladbye Nybegynder
07. september 2010 - 19:21 Der er 8 kommentarer og
1 løsning

Valg af programmeringssprog (fortolket eller kompileret) til nyt system

Hej Eksperter,

Jeg er sammen med et par bekendte i gang med at starte virksomhed og står over for at skulle have ansat en udvikler/programmør der kan stå for selve udviklingen af virksomhedens kernesystem. I den forbindelse har vi en række mulige personer i kikkerten der hver har deres bud på hvordan vores system kan opbygges, men i den evaluering kommer vores kompetencer en smule til kort.

Grundlæggende set står vi over for valget om systemet skal opbygges i et fortolket sprog (eks. PHP eller ASP) eller kompileret sprog (eks. JAVA eller C). De personer vi snakker med virker desværre ret biased mht. deres løsningsforslag, så nu håber jeg at I herinde kan hjælpe med at kaste lys over vores situation og komme med Jeres fordele/ulemper til de 2 typer sprog, eller et dediceret forslag til hvilket der vil være at foretrække.

Uden at gå for meget i detaljer med den reelle forretningsmodel, skal vi have lavet et system der kan klare følgende følgende:

Funktioner
- Indsamle items fra en lang række RSS-kilder, bearbejde dataene og smide resultaterne ned i en database (eks. MySQL).
- Opbevarer database over 'kunder', herunder information i en række parametre.
- Kompilere unik e-mail til hver 'kunde' udfra indsamlede data igennem RSS-feeds og kundens præferencer.
- Samarbejde med front-end website mht. visning af data.

Dette er systemets væsentligste egenskaber. Hertil kommer den load systemet vil blive udsat for:

Belastning/Eksekvering
- Indsamling af RSS-data fra +100* kilder dagligt.
- Kompilering og udsending af e-mails til +100.000* kunder hver dag, fordelt på 3-5 bursts.
- Levere/modtage data til front-end website på anmodning (både kunde-info og RSS-items)**.

(*) Dette er naturligvis ikke startbelastning, men det er essentielt at vi fra start står med et system der kan kan opskaleres til at håndtere store mængder databearbejdning og e-mailkompilering/afsendelse hver dag! Mht. serverløsning vælger vi efterfølgende den der passer bedst til systemets struktur.
(**) Antal daglige views endnu ikke kendt, men gå ud fra +5.000.

Så nu er spørgsmålet. Med hvilken løsning står vi bedst - kompileret eller fortolket kode?

Har I brug for mere information til at kunne komme med Jeres bud, skriver I naturligvis bare og så vil jeg forsøge at besvare efter bedste evne.

NB: Der gives kun point til kompetente og velbegrundede svar.


På forhånd, mange tak!
Palle Ladbye-Hansen
Avatar billede arne_v Ekspert
07. september 2010 - 19:44 #1
Lad of foerst slaa fast at ASP har  vaeret foraeldet siden 2002 hvor ASP.NET kom paa banen, saa det boer udelukkes med det samme.

C og for den sags skyld ogsaa C++ er nok for dyrt til disse generelle business app opgaver.

De mest relevante teknologier maa vaere:

compiled - Java, C#/VB.NET
fortolket - PHP, Python, Ruby

Alle disse sprog kan formentligt loese opgaven fint og kvaliteten af en loesning vil afhaenge mere af udviklerens evner end af sproget.

Jeg ville nok haelde lidt mode Java, C#/VB.NET og PHP fordi det er nemmere at skaffe folk med ekspertise i disse end Python og Ruby.

Compilet versus fortolket betyder formentligt ikke ret meget for den samlede performance.

Det er mest et argument som begyndere med praeferancer for et compilet sprog bruger.

Det er rigtigt at fortolket er mindst 10 gange langsommere end compilet, men det har sjaeldent den store betydning for business apps.

Det haenger sammen med at fortolkede sprog i virkelighen ikke er saa fortolkede igen.

En typisk business app vil have en fordeling af CPU forbrug som:

high level business logic - 1%
sprogets runtime library - 49%
OS'ets runtime library og system calls - 50%

Og de to nederste lag er compilet for alle loesninger (PHP har C runtime library, Python og Ruby har enten C, Java eller C# runtime library).

Konsekvensen af at 1% af tiden tager lidt laengere tid er ikke saa stor.

Hvis jeg skulle pege paa et forslag til teknologi, saa ville det nok vaere PHP som udgangspunkt og saa lave lidt mere kraevende backend funktionalitet i Java, hvis man konstaterer at det er noedvendigt.

Se evt. http://www.eksperten.dk/guide/1344 for lidt inspiration.
Avatar billede ladbye Nybegynder
07. september 2010 - 19:54 #2
#arne_v

Mange tak for dit hurtige og fordybende svar (og interessante link)!

Som du selv er inde på og som vi også har fået indtrykket af, så er løsningen måske mere afhængig af hvem der udarbejder den end det reelle sprog det bliver gjort i.

Jeg har dog et punkt af interesse. Jeg har mht. eksekvering af batch-jobs (på daglig basis) fået at vide, at det vil være en langt mere besværlig løsning i PHP end hvis der lå en reel applikation og håndterede det.

Hvordan er din mening mht. til dette?

/Ladbye
Avatar billede arne_v Ekspert
07. september 2010 - 20:02 #3
Web containere (med undtagelse af Java EE) er ikke velegnede til schedulerede jobs.

Saa I skal ikke forsoege at koerede den slags via en PHP web applikation.

Men der er ikke noget til hinder for at i kan lade *nix cron eller Windows scheduler koerer et PHP script paa bestemte tidspunkter (PHP kommer med en command line utility for det samme).

Batch funktionaliteten er dog nok noget af det hvor der er stoerst sandsynlighed for at I kunne faa lyst til at omskrive til f.eks. Java.
Avatar billede -mundi- Nybegynder
07. september 2010 - 20:48 #4
Samme kunne løses med ASP.net, exe filer til schedulerede jobs og website til resten. Der er ikke nogen af opgaver du har beskrevet som ikke kan løses på begge platforme.
Er derudover helt enig i Arnes betragtninger omkring udelukkelse af diverse sprog.

Udsending af mails er dog en videnskab for sig, hvis altså du skal være sikker på de kommer frem. Selve fletningen af mails er ikke noget problem, men at levere 100000 mails om dagen, hvor måske 40% er hotmail eller gmail konti, kan godt være et issue.
Det lyder som om det er en vigtig del af jeres forretningskoncept, så der ville jeg ihvertfald ikke gå på kompromis med at finde en erfaren programmør.
Avatar billede ladbye Nybegynder
08. september 2010 - 12:24 #5
Mange tak for Jeres svar, begge to.

Har lige et sidste område af interesse. Hvordan står man mht. fejlhåndtering og stabilitet i de forskellige valg? Er vi her ude i at det helt og aldeles afhænger af udviklereren eller er der nogle sprog der er at foretrække?

På forhånd tak.

/Ladbye
Avatar billede arne_v Ekspert
08. september 2010 - 15:13 #6
udvikleren
Avatar billede ladbye Nybegynder
22. september 2010 - 11:23 #7
Hej Igen,

Mange tak for Jeres svar. Hvis I vil ligge et svar begge to, så fordeler jeg point efter Jeres svars indhold.

/Ladbye
Avatar billede -mundi- Nybegynder
22. september 2010 - 11:42 #8
Jeg springer over, bruger dem ikke til noget alligevel :-)
Avatar billede arne_v Ekspert
22. september 2010 - 14:51 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester