WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Python som serverspråk? (https://www.wn.se/forum/showthread.php?t=1047458)

youheardit 2011-03-31 22:41

Python som serverspråk?
 
Hejsan WN.

Jag kör PHP dagligen och läser en massa om att php är lätt att programmera men tar mycket processorkraft.

tittade snabbt på hiphop-php men med eftertanka om att facebook skapat och använder det, och facebook som är fylld med buggar så lämnade jag hiphop-php sålänge.

Men Python ville jag komma till. När man surfar Google's sidor så märker jag att de kör Python som språk på sidorna.
Och jag ser Google som en förebild då jag tycket alla deras applikationer och tjäner är stabila och har extremt bra prestanda så tror jag inte att python är något man ska peta bort.

Nu hade jag önskat höra vad andra med mer erfarenheter säger? är det något jag borde läsa in?

Mina mål är att bli så bra programmerare som möjligt och just nu så jobbar jag med det samtidigt som jag utforskar språken.

Tacksam för svar! :)

Med vänliga hälsningar, Philip Andersson!

Alan 2011-03-31 23:59

Har själv också kollat en del på Python, verkar vara ett intressant språk. Tror definitivt att framtiden ser ljus ut för Python.

Men du ska nog inte välja ett språk för att Google använder det. Kolla på det, testa det, om det fungerar för dig så kör på! Kolla även in Django, som är ett trevligt ramverk.

Vill du bli en bättre programmerare så föreslår jag att du även kollar in programmeringskoncept och tekniker (oberoende av språk). Finns en hel del bra diskussioner på Stackoverflow.

Clarence 2011-03-31 23:59

Om du vill ha bäst prestanda sätter du dig direkt med språk såsom C eller Erlang beroende på applikation.

Själv tyckte jag inte speciellt bra om Appengine när jag testade det när det var nytt och hett. Mest för att det var så begränsat, men mycket har förändrats sen dess.

Däremot tyckte jag väldigt bra om Django. Eller mest template-systemet (vilken man kan komma nära i de flesta språk, inklusive PHP, men då får man veta vad man vill ha). Det har även väldigt bra prestanda för att vara ett så utbyggt framework.

I övrigt är Python jämförbart med PHP i prestanda. Det finns fall där båda ena och andra blir mycket snabbare ... men då kommer man fortfarande till tillämpning. Generellt sett kan man säga att Python är lite smidigare för bakgrunds-jobb och trådning, och PHP lite smidigare för många webb-specifika uppgifter.

Vill du blir en så bra programmerare som möjligt så sätt dig hellre med Java och förvirra dig i avancerade objektorienterade programmeringsmönster. Java är för övrigt bra mycket bättre prestanda än python, men det märks sällan eftersom man allt som oftast använder ramverk och bibliotek som gör det ofantligt tungt för de allra enklaste applikationerna.

Med det sagt kommer du inte i många välskrivna applikationer få speciellt stora problem med valet av språk. Det är mer i fall som Facebook eller Twitter som man får gå lite längre. Facebook valde ett av de mest flexibla och enkla språken som fanns, och har fått gå ifrån det ibland (med tjänster för loggning, chat osv i helt andra språk) liksom de optimerat det med hiphop (skriva om ett språk som php i c++ och sen även optimera koden i sig är inget litet jobb). Twitter fick istället helt gå ifrån sitt första val av Ruby pga prestanda-(eller arkitektur-)problem och istället välja Scala. Det betyder inte att det är ett bra val för dig att använda varken eller.

För dig att börja fundera på att använda hiphop från ingenstans verkar för övrigt lite skumt. Det skapar bara problem för dig om det inte är så att 30% prestandaförbättring ger ett rejält ekonomiskt incitament. Själv jobbar jag med en PHP-sajt med miljontals sidvisningar om dagen - men hiphop är fortfarande inget värt att lägga tid på enligt mig. När man däremot börjar rada upp många hundra eller tusen applikations-servrar blir alla prestandaförbättringar värda besväret. Vidare beror den på typen av kod som man använder. "Mundane"/grundläggande kod är där den gör mest nytta och där spenderas rätt lite av applikationstiden för de flesta användarna.

CotopaXi 2011-04-01 09:47

Välj ett språk efter tycke, smak och kunskaper. Inte prestanda. Hårdvara är billigt, utvecklingstid är dyrt.

Python är ett språk som är väldigt lätt att lära sig jämfört med t.ex PHP. En nackdel med att utveckla webbsidor i Python är att det finns relativt få jobb här hemma i Sverige.

Om du ska lära dig något helt nytt för att jobba med på webben hade jag rekommenderat Python och Django eller Ruby och Rails.

Ara 2011-04-01 10:49

jag har kört en hel del python och ironpython kan väl inte säga att det är något jag gillar mer än något annat.

Det är snabbt och lätt att göra enkla saker, men blir väldigt svårt/ omöjligt att göra avancerade saker i.

Ska du "byta" språk är det C# som gäller.

Adestro 2011-04-01 10:55

1. Skriv en egen enkel HTTP-server i C som bara serverar statiska filer.
2. Skriv en socketserver i C som hanterar all kritisk logik och koppling till din databas.
3. I de statiska filerna använder Javascript och sockets (Flash och/eller Websockets) för att etablera en anslutning till socketservern.

Så får du bang for bucks. Men sen är ju frågan vad som är lättast att underhålla. ;) Om man inte heter Google eller Amazon ska man nog välja de språk och miljöer man trivs bäst i, oavsett prestanda.

znap 2011-04-03 10:33

Citat:

Ursprungligen postat av Ara (Inlägg 20400599)
jag har kört en hel del python och ironpython kan väl inte säga att det är något jag gillar mer än något annat.

Det är snabbt och lätt att göra enkla saker, men blir väldigt svårt/ omöjligt att göra avancerade saker i.

Ska du "byta" språk är det C# som gäller.

Skulle du kunna ge något litet exempel där där det blev svårt/omöjligt att utveckla i pyhton?

Apropå pyhton vs php: Den starkaste fördelen med pyhton kan jag tycka är att man kan köra multitrådat.

Ara 2011-04-08 10:52

Citat:

Ursprungligen postat av znap (Inlägg 20400808)
Skulle du kunna ge något litet exempel där där det blev svårt/omöjligt att utveckla i pyhton?

Apropå pyhton vs php: Den starkaste fördelen med pyhton kan jag tycka är att man kan köra multitrådat.

Applikationer komplex affärslogiklogik, gör att det är svårt att få bra översikt/felhantering/skalbarhet. Sen när jag jobbade med det sist kunde man inte skapa "regular expressions" men det kanske går nu?

Sen är ju att annat problem att det finns inte så mycket exempelkod som man kan titta på.

Bjorne 2011-04-08 12:35

Det måste varit ett bra tag sedan för python har haft stöd för reguljära uttryck i åtminstone 15 år...

emilv 2011-04-08 14:48

Citat:

Ursprungligen postat av Ara (Inlägg 20401284)
Applikationer komplex affärslogiklogik, gör att det är svårt att få bra översikt/felhantering/skalbarhet. Sen när jag jobbade med det sist kunde man inte skapa "regular expressions" men det kanske går nu?

Sen är ju att annat problem att det finns inte så mycket exempelkod som man kan titta på.

Det låter som att du inte arbetat med det tillräckligt. Det är fullt möjligt att skriva överskådlig Python-kod. Det är nästan svårare i PHP...

Ara 2011-04-08 15:05

Citat:

Ursprungligen postat av emilv (Inlägg 20401313)
Det låter som att du inte arbetat med det tillräckligt. Det är fullt möjligt att skriva överskådlig Python-kod. Det är nästan svårare i PHP...

Php gillar jag inte heller .. Jag förespråkar C#

PHP funkar perfekt till enkla webbsidor typ WP osv men ska du bygga avancerade webbapplikationer/applikationer är C# att föredra.

CotopaXi 2011-04-08 21:26

Citat:

Ursprungligen postat av Ara (Inlägg 20401315)
men ska du bygga avancerade webbapplikationer/applikationer är C# att föredra.

På vilket sätt?


För the record:
Exempel på företag som använder Django är:
Google
NASA
National Geographic Channel
Disqus
Instagram
The Onion
Washington Post
Mozilla

Ara 2011-04-08 21:43

Citat:

Ursprungligen postat av CotopaXi (Inlägg 20401357)
På vilket sätt?


För the record:
Exempel på företag som använder Django är:
Google
NASA
National Geographic Channel
Disqus
Instagram
The Onion
Washington Post
Mozilla

Det spelar väl ingen roll, jag föredrar i alla fall C#. Sen tror jag säkert att NASA kör lite Django men till vilka applikationer?


Du kan ju kolla hur många större företag som använder/söker folk som kan/använder C# vs Django.

Vill man lära sig ett språk som de flesta större företagen skriker efter, satsa på C#

Clarence 2011-04-08 22:57

Citat:

Ursprungligen postat av Ara (Inlägg 20400599)
Ska du "byta" språk är det C# som gäller.

Citat:

Ursprungligen postat av Ara (Inlägg 20401358)
Det spelar väl ingen roll, jag föredrar i alla fall C#.

Citat:

Ursprungligen postat av Ara
Vill man lära sig ett språk som de flesta större företagen skriker efter, satsa på C#

Citat:

Ursprungligen postat av Ara (Inlägg 20401315)
Php gillar jag inte heller .. Jag förespråkar C#

PHP funkar perfekt till enkla webbsidor typ WP osv men ska du bygga avancerade webbapplikationer/applikationer är C# att föredra.

Jag hoppas MS betalar dig för lobby-verksamheten :) Sanningen är väl den att man skulle kunna säga precis samma sak om Java. Men det betyder knappast att det är det enda som är värt att lära sig. Faktum är att om man vill jobba med en större svensk sajt så är det PHP som är dominerande som teknikval. En ansenlig mängd kör tunga CMS-lösningar (som ofta byggts på) med java. Och en liten del därtill kör .Net och främst C#.

Att PHP ligger så högt beror inte på att det är mest kompetent. Däremot är det otroligt lämpat för agil utveckling och att snabbt få in nya utvecklare i att kunna lösa de flesta uppgifter. Syntax känns igen från alla C-språk, du behöver ingen stor IDE för smidig utveckling, alla utvecklingsverktyg är gratis, du behöver inte välja till massa tunga bibliotek, du kan köra det på valfri plattform, alla webhotell stödjer det för snabb testlansering osv osv.

CotopaXi 2011-04-08 23:04

Citat:

Ursprungligen postat av Ara (Inlägg 20401358)
Det spelar väl ingen roll, jag föredrar i alla fall C#.

Jag uppfattade dina tidigare inlägg som att du ansåg c# vara ett språk som är bättre och mera lämpligt till att skriva avancerade applikationer på alla sätt och viss, inte enbart när du skriver dem. Smaken är någonting som alltid kommer variera utvecklare emellan. Vad jag söker är mera av vilken anledning du anser att C# är ett bättre språk att skriva avancerade applikationer i, jämfört med t.ex Python.

Citat:

Sen tror jag säkert att NASA kör lite Django men till vilka applikationer?
Exakt vilka applikationer som NASA använder Django i har jag tyvärr ingen insikt i. Dock vet jag att "NASA Ames Research Center, NASA's silicon valley research center" använder Django. Googla på "NASA Django" så får du upp ett gäng artiklar och jobbannonser.

Citat:

Du kan ju kolla hur många större företag som använder/söker folk som kan/använder C# vs Django.
Det var många judar som åkte på koncentrationsläger också. En stor del av webben är utvecklad i PHP, jag tror inte jag behöver dra vilka stora siter som använder den tekniken. Min åsikt om PHP förklaras ganska bra med den här tweeten [1]. Men det fungerar ju uppenbarligen att skriva avancerade webbapplikationer i. Som jag nämnde i mitt första inlägg i tråden så tror jag valet av språk för en webbapplikation spelar mindre roll, jag rekommenderar istället att man använder det som man känner sig bekväm med, vad gäller prestanda så är jag säker på att C# är snabbare än t.ex Python och PHP, men då hårdvara i dagens läge är så pass billigt jämfört med vad en duktig utvecklare tar i lön så spelar språkprestanda inte så stor roll. Min lista av företag som använder Django var för att motbevisa att Python/Django skulle vara direkt olämpligt att använda i större webbsatsningar, inte för att på något sätt försöka övertyga dig om att Python är ett bättre språk än C#, det är tycke och smak som avgör.


[1] http://twitter.com/#!/mdempsky/status/53338542792912896

Jine 2011-04-10 11:59

Facebook använder sig av PHP... Då måste PHP vara bäst!!1one.

Skämtåtsido.
Använd det språk du känner dig bekväm i. Processortid är något du i regel inte behöver oroa dig över, servrar, VPS:er och system har tillräcklig kraft idag för att hosta i regel vad som helst.

Vanligaste flaskhalsen brukar vara IOPs, alltså skrivningar/läsningar mot disk per sekund.
Detta går att minimera med t.ex. memcache och andra ram-lösningar, men RAM är relativt dyrt idag.

Allt beror på vad du ska göra, men om du kan PHP idag - finns det ingen anledning att byta pga. du har läst att det ska vara tungt eller krävande.

Faktum är, att om du skriver samma app i ett språk du kan, och samma i ett du är ny med - är det nog nästan garanterat det språket som du behärskar - som kommer vara mest optimerat och snabbast. Gissa varför?

EDIT:
Jag skulle dock personligen aldrig någonsin rekommendera någon att använda C# pga licenser och annat tillhörande.

Öppna system och öppen mjukvara är framtiden.

EDIT2:
"PHP funkar perfekt till enkla webbsidor typ WP osv men ska du bygga avancerade webbapplikationer/applikationer är C# att föredra. "

Har du NÅGOT som helst som stärker ditt påstående? I mina ögon är det rätt bullshit.
Speciellt med tanke på http://trends.builtwith.com/Web-Server/Apache

Långt över 50% av hela världens sajter ligger på Apache webbservrar (PHP/Python/Perl/you name it) - inte IIS (C#, .NET).

Bjorne 2011-04-13 10:14

Inte för att vara den som tutar i min egen tuta, men se siterna i min signatur. De är alla kodade av mig med Python och Django och jag tycker de funkar hyffsat. :D

youheardit 2011-04-15 13:10

Tack för alla svar! Python med Django låter mest intressant om jag skulle få för mig att byta trotts allt.

Håller mig kvar till PHP ett tag till iallafall tills jag känner att jag vill lära mig nytt.

Java är faktiskt intressant det också men hör en massa skit om Oracle nu efter köpet.

Men jag skulle dock aldrig få för mig att köra något av Microsofts språk för webbapplikationer då till samma anledning som Jine nämnde med licenser osv. Dessutom är jag förlovad med öppen källkod ;)

Tackar återigen för alla svar!

Draqir 2011-04-26 10:15

Det går att öka prestandan i php väldigt mycket då php stödjer compiler caches, Zend Accelerator, APC, etc (ökar vanligtvis RPS med 40-60%) sen finns det optimizers, ZendOptimizer, ionCube etc, som kan öka koden avsevärt om du inte kan optimera kod. Sen finns det det vanliga att kolla på Reverseproxies, HTTP accelerators, content-compression Output buffering, DBM caching, Database optimization, file caching o.s.v. Förutom det har php möjligheten att utöka Zends core med C-klasser som exekverar väldigt snabbt, dessutom är det väldigt roligt att leka med C-extension då man kan göra mycket roligt t.ex. skicka ett SMS från webbservern i hemmet till mobilen som notifierar att någon har gått in genom dörren i hemmet och koppla upp en webbkamera som skickar en liveström till mobilen.

danjel 2011-04-26 16:58

Citat:

Ursprungligen postat av Ara (Inlägg 20401358)
Det spelar väl ingen roll, jag föredrar i alla fall C#.
..
Du kan ju kolla hur många större företag som använder/söker folk som kan/använder C# vs Django.

Vill man lära sig ett språk som de flesta större företagen skriker efter, satsa på C#


Vad gäller php kontra c# (eller asp.net snarare) , det blir alltmer en såkallad "ickefråga" ur ett tekniskt perspektiv, man kan se en trend att språken har närmat sig varandra.
I både asp.net och php brukar numer MVC paradigmet förordas, och programflöde och syntax är väldigt lika om man ska analysera en controller från asp.net mvc mot t.ex en typisk php Zend dito. Och för att ta ett exempel så används nu ofta ( de i php så bekanta) "otypade" dataseten och variabler, ("var" keyword) i C#. Typningen brukar lyftas fram som en fördel för c# men det finns väl en anledning att MS delvis går ifrån det, speciellt i webbprojekt.
PHP i sin tur får mer och mer asp.net godbitar, det kan köras i en förkompilerad version som nämts tidigare i tråden samt att man stödjer alltmer OO grejer som Namespaces m.m.


Jo .NET/C# kan vara mer eftertraktat av arbetsgivare/högre lön...men det är lite off topic

Onkelborg 2011-04-30 10:59

Citat:

Ursprungligen postat av danjel (Inlägg 20403233)
Och för att ta ett exempel så används nu ofta ( de i php så bekanta) "otypade" dataseten och variabler, ("var" keyword) i C#. Typningen brukar lyftas fram som en fördel för c# men det finns väl en anledning att MS delvis går ifrån det, speciellt i webbprojekt.

Nja, "var" i C# är inte otypat, det är typat, men exakt vilken datatyp väljs av kompilatorn beroende på vad variabeln är tilldelad med först. Om du försöker sätta dess värde till någonting annat senare så får du kompileringsfel, likaså om du försöker komma åt en egenskap eller metod som inte finns. Kort sagt: en genväg för att t.ex. slippa skriva datatypen två gånger på samma rad när man deklarerar en variabel samt skapar en ny instans av en klass samtidigt.

Däremot har "dynamic" tillkommit, och den är löst typad. Kontroll om t.ex. egenskaper, metod etc. finns sker först runtime. Smidigt t.ex. när man jobbar med anonyma klasser. Dock ingenting man använder mer än när det verkligen finns behov, bland annat just för att det ökar risken för buggar. Är dock bättre än att peta en massa med reflektion.

niklasr 2011-05-08 16:56

Jag använder python / django med googl app engine och är mycket nöjd inte pga prestandan men kostnadseffektiviteten när man i datormolnet bara betalar för vad man använder. Givetvis hade jag kunnat göra det med en LAMP men det hade på lång sikt blivit dyrare och inte lika skalbart som GAE jag nu använder. YAML är dessutom ett enligt mig mycket trevligt sidoprojekt till Python vars kod blir mera läslig än t.ex. Java som använder mycket måsvingar eller PHP som brukar råka blanda logik och presentation så att man med PHP ofta har renderingen och affärslogiken i samma fil. appengine.google.com är enligt mig en bra plats att driftsätta webbapplikationer i samtidigt som jag förstår styrkan i produkter som Joomla och Drupal som har hundratals tillägg, plugins och moduler i stora bibliotek när man med GAE får tillverka verktygen själv eller se om någon hunnit det eftersom plattform ännu är relativt ny.

Jine 2011-05-08 17:08

Det är dock MYCKET jag aldrig någonsin skulle vilja lägga hos appengine, just pga. det är google som står bakom det.

Skulle inte överlåta känslig information till dom, varken eget eller andras.
Har du t.ex. läst Google Chromes EULA?

http://gizmodo.com/#!5044871/google-...osts-to-emails

emilv 2011-05-08 20:46

Citat:

Ursprungligen postat av Jine (Inlägg 20404679)
Har du t.ex. läst Google Chromes EULA?

http://gizmodo.com/#!5044871/google-...osts-to-emails

Har du läst Google Chromes EULA? De ändrade licensvillkoren snabbt efter att det där kom ut. Det var deras standardavtal som de inte gått igenom riktigt för webbläsarkontext.

Jine 2011-05-09 00:18

emilv: Hah, det har jag faktiskt inte.
Men anledningen att jag drog det som exempel, var för jag inte läst Google AE's EULA heller.
Lär ju vara smått snarlikt?

pelmered 2011-05-09 13:46

Citat:

Ursprungligen postat av niklasr (Inlägg 20404677)
Jag använder python / django med googl app engine och är mycket nöjd inte pga prestandan men kostnadseffektiviteten när man i datormolnet bara betalar för vad man använder. Givetvis hade jag kunnat göra det med en LAMP men det hade på lång sikt blivit dyrare och inte lika skalbart som GAE jag nu använder. YAML är dessutom ett enligt mig mycket trevligt sidoprojekt till Python vars kod blir mera läslig än t.ex. Java som använder mycket måsvingar eller PHP som brukar råka blanda logik och presentation så att man med PHP ofta har renderingen och affärslogiken i samma fil. appengine.google.com är enligt mig en bra plats att driftsätta webbapplikationer i samtidigt som jag förstår styrkan i produkter som Joomla och Drupal som har hundratals tillägg, plugins och moduler i stora bibliotek när man med GAE får tillverka verktygen själv eller se om någon hunnit det eftersom plattform ännu är relativt ny.

Det där med att blanda logik med presentation går ifrån mer och mer även inom PHP. De allra flesta nya system utvecklas idag enligt MVC-modellen. Det går ju att skiva dålig och ostrukturerad kod lika väl som bra och valstrukturerad i vilket språk som helst. Det är sällan man är tvingad till att göra sådana saker som att t.ex. blanda presentation och logik.


Alla tider är GMT +2. Klockan är nu 08:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson