Permalänk
Medlem

Hur kodar man i python?

Hej! Jag är väldigt ny när det gäller kodning, men ha läst att python är typ de lättaste. Kan ni tipsa om nån hemsida eller bok?

Visa signatur

Specs
Grafikkort: MSI N580GTX Lightning Processor: i5 3570k 3.40ghz Nätaggregat: 420w (vet ej något om märket) Moderkort: Gigabyte GA-Z77-DS3H

Permalänk
Medlem

http://thenewboston.org är en väldigt bra sida. Han har guider på många olika kodspråk, bland annat på python.

Visa signatur

Speldator: i5 4670k stock | 8GB ram | Asus Z87-plus | Xonar Essence STX | SSD: Intel g2 , Samsung 830 256gb | R9 290 Tri-x | Define R4| Win 8 | Noctua nh-u12p | Qpad Mk-50
marinlik.wordpress.com/ Min blogg för nedbrytning av spel och diverse andra artiklar om NFL
500px.com/niclasbrundell

Permalänk
Visa signatur

(Asus Z87-A && i7-4770K && ASUS Strix GTX 970 && Fractal Design Define R4 && Corsair CX500M && Samsung 840 Evo 500GB && Noctua NH-U9B SE2 && (Arch Linux 4.2.3-1 || Windows 10 Pro))

Permalänk
Medlem
Permalänk
Hedersmedlem

Dive into Python är en klassisk Pythonguide som funnits länge. Det var det första jag läste om Python, och den har uppdaterats kontinuerligt genom åren. Den förutsätter i viss mån att man har programmerat något innan, så om det är programmering i sig du försöker lära sig så är det inte rätt introduktion.

Om du inte har programmerat alls innan så rekommenderar jag kanske primärt att du tittar på någon av de Youtubeföreläsningsserier från stora amerikanska universitet som finns utlagda. Stanfords kurs verkar väldigt bra med en karismatisk lärare. Den använder Java, men exakt språk spelar inte så stor roll när det gäller att lära sig programmeringsteknik.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Jubileumsmästare
Permalänk
Medlem

Gillar du spel tycker du kanske om den här: http://inventwithpython.com/

Visa signatur

AK47s for everyone! - Angry mob
Since NaN /= NaN, I think, we should decipher 'NaN' as 'Not a NaN' - Miguel Mitrofanov
(Varför är människan så benägen att tro på Gud?) Antagligen har det lönat sig och evolutionen har drivit fram sådana hjärnor. - Anon

Permalänk
Skrivet av heaglu:

Hej! Jag är väldigt ny när det gäller kodning, men ha läst att python är typ de lättaste. Kan ni tipsa om nån hemsida eller bok?

Jag tycker inte att python är ett bra språk att börja med. Visst är det enkelt, men jag tycker att språket lär ut en massa konstiga ovanor. Jag tycker att det är bättre att börja med Java eller C#. Python kommer du att växa ur väldigt snabbt, säg att du vill göra ett grafisk gränssnitt eller någonting i den stilen.

Varken Java eller C# är särskilt svårt att komma igång med. The new boston är bra, dessutom är han kul att lyssna på.

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2

Permalänk
Medlem
Skrivet av tomten_alle:

Python kommer du att växa ur väldigt snabbt.

Nej, detta gäller inte alls allmänt, ganska många stora företag (tex google) använder python till seriösa saker.

Visa signatur

Citera om du vill ha svar.

Permalänk
Skrivet av muppens:

Nej, detta gäller inte alls allmänt, ganska många stora företag (tex google) använder python till seriösa saker.

Absolut kan du använda python till det mesta. Jag tycker dock att python i dessa sammanhang mest blir i vägen. Observera att det här bara är min åsikt. Det finns lika många åsikter som det finns programmerare.

Visa signatur

6600K@4,5GHz 1,25V | EVGA 980Ti | Samsung 950 Pro m.2

Permalänk
Medlem

Jag tycker att MIT OpenCourseWare har en del väldigt bra kurser online.

Jag tror att du skulle kunna få ut rätt mycket av föreläsningarna och arbetsuppgifterna om du tar dig tid att göra dem ordentligt.

Introduction to computer science and programming

Visa signatur

5900X and RTX3090

Permalänk
Datavetare
Skrivet av muppens:

Nej, detta gäller inte alls allmänt, ganska många stora företag (tex google) använder python till seriösa saker.

Fast Google verkar inse att Python har en rad begränsningar och en av anledningarna till att man utvecklade Go var för att man ville ha känslan av Pythons "duck typing", fast med prestanda och skalbarhet som är lika bra eller bättre än C++/Java (som också används flitigt inom Google, men även här vill man försöka gå mot Go).

Citat från Collin Winter som jobbar på Google och är en av "core" utvecklarna för Python

Citat:

Well, simple common sense is going to limit Python's applicability when operating at Google's scale: it's not as fast as Java or C++, threading sucks, memory usage is higher, etc. One of the design constraints we face when designing any new system is, "what happens when the load goes up by 10x or 100x? What happens if the whole planet thinks your new service is awesome?" Any technology that makes satisfying that constraint harder -- and I think Python falls into this category -- should be discouraged if it doesn't have a very strong case made in its favor on other merits. You have to balance Python's strengths with its weaknesses: your engineers may be more productive using Python, but if they have to work around more platform-level performance/scaling limitations as volume increases, do you come out ahead? etc.

Länk

I.e. Python är OK för enklare saker där du inte förväntar dig att du ska serva en massiv mängd användare.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Yoshman:

I.e. Python är OK för enklare saker där du inte förväntar dig att du ska serva en massiv mängd användare.

Jag håller inte med dig där. Tror du underskattar Python gällande prestanda.
Att Python klarar "high-load" finns det ju flera exempel på, ta t.ex. Youtube som åtminstonde innan använde sig av Python. Finns flera andra exempel på stora sajter som drivs med Django.

Bottlenecken brukar för det mesta vara databasens hastighet, I/O helt enkelt, inte hur snabbt programspråket är. Ja C++ kommer nog alltid vara snabbare och kräva mindre minne än Python, men att säga att Python bara funkar för enklare saker är inte rättvist.

Det är i extrema fall som ev. Googles största sajter som det kan löna sig att utveckla i t.ex. C++. Men det är alltså i de verkligt extrema fallen jag ser det så.

Vad som däremot talar för Python är att när man utvecklar applikationer så är utvecklings- och underhållskostnaden för i de allra flesta fall mycket större än serverkostnaderna. Servers är generellt sett "billiga", utvecklare är dyra. Och att skriva korrekt och bra Python-kod är enklare, och mindre tidskrävande, än att göra detsamma i C++.

EDIT: Tog här upp exempel där Python fungerar som back-end, då det är det scenariot jag såg framför mig med "massiv mängd användare". Självklart passar Python inte in överallt. T.ex. hade jag nog inte försökt skriva en grafikmotor eller liknande i Python. Men språket i sig klarar av, om programmeraren vet vad han gör, hög trafik.

Permalänk
Hedersmedlem
Skrivet av Spleak:

Jag håller inte med dig där. Tror du underskattar Python gällande prestanda.
Att Python klarar "high-load" finns det ju flera exempel på, ta t.ex. Youtube som åtminstonde innan använde sig av Python. Finns flera andra exempel på stora sajter som drivs med Django.

Bottlenecken brukar för det mesta vara databasens hastighet, I/O helt enkelt, inte hur snabbt programspråket är. Ja C++ kommer nog alltid vara snabbare och kräva mindre minne än Python, men att säga att Python bara funkar för enklare saker är inte rättvist.

Det är i extrema fall som ev. Googles största sajter som det kan löna sig att utveckla i t.ex. C++. Men det är alltså i de verkligt extrema fallen jag ser det så.

Vad som däremot talar för Python är att när man utvecklar applikationer så är utvecklings- och underhållskostnaden för i de allra flesta fall mycket större än serverkostnaderna. Servers är generellt sett "billiga", utvecklare är dyra. Och att skriva korrekt och bra Python-kod är enklare, och mindre tidskrävande, än att göra detsamma i C++.

EDIT: Tog här upp exempel där Python fungerar som back-end, då det är det scenariot jag såg framför mig med "massiv mängd användare". Självklart passar Python inte in överallt. T.ex. hade jag nog inte försökt skriva en grafikmotor eller liknande i Python. Men språket i sig klarar av, om programmeraren vet vad han gör, hög trafik.

Håller med.

Vad gäller prestanda så är det också vanligt med en profilering som påvisar långa exekveringstider i vissa specifika moment, snarare än jämn belastning över hela koden. I Python kan man enkelt integrera delar skrivna i C/C++, så ett använt mönster i högprestandaberäkningar är att initialt koda allt i Python, och efter profilering migrera de "tunga bitarna" till C/C++. Detta gör att man får Pythons (stora!) fördelar vad gäller tydlighet, underhåll, etc., samtidigt som man kan ha prestandan hos kompilerad kod där den behövs. Dessutom finns Cython och andra liknande projekt som gör att Pythons prestandagräns är långt längre bort än man först kan tro.

Jag säger inte att Python är svaret på alla programmeringsproblem (tror man det om något språk så har man fel, helt enkelt ), men att avfärda det av prestandaanledningar är inkomplett. Faktum är att många stora vetenskapliga experiment använder just Python som basspråk för sina beräkningar av ovanstående anledningar (inte minst CERN uppmuntrar Python som ett av få "godkända" språk). Kort sagt: bara för att C är snabbast så behöver det inte betyda att man vill skriva gränssnitt och andra icke-prestanda-begränsade delar i C.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Datavetare
Skrivet av Spleak:

Jag håller inte med dig där. Tror du underskattar Python gällande prestanda.
Att Python klarar "high-load" finns det ju flera exempel på, ta t.ex. Youtube som åtminstonde innan använde sig av Python. Finns flera andra exempel på stora sajter som drivs med Django.

Bottlenecken brukar för det mesta vara databasens hastighet, I/O helt enkelt, inte hur snabbt programspråket är. Ja C++ kommer nog alltid vara snabbare och kräva mindre minne än Python, men att säga att Python bara funkar för enklare saker är inte rättvist.

Det är i extrema fall som ev. Googles största sajter som det kan löna sig att utveckla i t.ex. C++. Men det är alltså i de verkligt extrema fallen jag ser det så.

Vad som däremot talar för Python är att när man utvecklar applikationer så är utvecklings- och underhållskostnaden för i de allra flesta fall mycket större än serverkostnaderna. Servers är generellt sett "billiga", utvecklare är dyra. Och att skriva korrekt och bra Python-kod är enklare, och mindre tidskrävande, än att göra detsamma i C++.

EDIT: Tog här upp exempel där Python fungerar som back-end, då det är det scenariot jag såg framför mig med "massiv mängd användare". Självklart passar Python inte in överallt. T.ex. hade jag nog inte försökt skriva en grafikmotor eller liknande i Python. Men språket i sig klarar av, om programmeraren vet vad han gör, hög trafik.

Först ska jag säga att jag verkligen gillar Python, vi använder det en hel del på jobbet där det är vettigt då det går betydligt fortare att utveckla saker i Python än C som vi normalt använder. Men precis som Google så använder vi det inte i något som är prestandakritiskt, utan det är mest till saker vi automatiserar.

Vi verkar vara överens om att Python är värdelöst på allt som är CPU-bundet, men saken är att Python även är nära nog värdelöst även på sådant som är I/O-bundet då det inte finns något vettigt att utföra "concurrent programming" i Python. Dels är trådstödet hopplöst då Pythons kärna inte alls skalar bra till många CPU-kärnor, men ett större problem är att Python saknar något mer lättviktigt än en OS-tråd och stödet för non-blocking/asynkron I/O är allt annat än bra. I.e. skriver man back-end system på Python i lägen där man inte är helt säker på att systemet aldrig ska server speciellt många användare så gör man totalt fel.

Nu är även stödet för "concurrent programming" i C++ och Java ganska dåligt. Anledningen att Google började jobba på Go var just för att man såg behovet av ett språk med väldigt starkt "concurrent programming" stöd, C-lik prestanda men man ville ändå behålla saker som är riktigt bra i Python, som "duck typing" och sättet man kan hantera listor/arrayer (slicing). Go stödjer därför allt detta. I Go kan man utan problem ha hundratusentals enkla "go-routiner" som var och en hanterar en klient, programmeringsmodellen blir då riktigt enkelt då man kan skriva helt vanliga program med blockande semantik, något som är mycket lättare än att använda non-blocking I/O som man måste hålla på med i Java/C++ (går även att jobba så i Python, men då är man i praktiken nere på att anropa C-APIet för I/O direkt så det blir ingen fördel att använda Python).

Så Python är ett riktigt bra språk i de lägen där det passar och skulle också säga att det är ett ypperligt språk att lära sig programmera på. Men det är inget språk man ska använda om prestanda överhuvudtaget är med på kravlistan.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Datavetare
Skrivet av phz:

Håller med.

Vad gäller prestanda så är det också vanligt med en profilering som påvisar långa exekveringstider i vissa specifika moment, snarare än jämn belastning över hela koden. I Python kan man enkelt integrera delar skrivna i C/C++, så ett använt mönster i högprestandaberäkningar är att initialt koda allt i Python, och efter profilering migrera de "tunga bitarna" till C/C++. Detta gör att man får Pythons (stora!) fördelar vad gäller tydlighet, underhåll, etc., samtidigt som man kan ha prestandan hos kompilerad kod där den behövs. Dessutom finns Cython och andra liknande projekt som gör att Pythons prestandagräns är långt längre bort än man först kan tro.

Jag säger inte att Python är svaret på alla programmeringsproblem (tror man det om något språk så har man fel, helt enkelt ), men att avfärda det av prestandaanledningar är inkomplett. Faktum är att många stora vetenskapliga experiment använder just Python som basspråk för sina beräkningar av ovanstående anledningar (inte minst CERN uppmuntrar Python som ett av få "godkända" språk). Kort sagt: bara för att C är snabbast så behöver det inte betyda att man vill skriva gränssnitt och andra icke-prestanda-begränsade delar i C.

Jobbar med att skriva extremt prestandakritiska program och kan säga att i dessa är det bara rena nybörjarmisstag som leder till att vissa specifika moment drar >90% av tiden, så det är bara en utopi att det skulle gå att skriva de "tunga bitarna" i C/C++.
Vidare gör Pythons hopplösa design med ett "Global Interpreter Lock" att skalbarheten för ett Python-program är enormt begränsad på multicore maskiner. Möjligen kan man fixa detta, men siktar man på program för många CPU-kärnor borde man rimligt använda något som Clojure eller Go som designats från start att hantera sådana miljöer.

Nu kan jag inte uttala mig om CERN, men en gång i tiden jobbade jag med kvantkemiska beräkningar (tidkomplexiteten är N^4 på antalet elektroner man tar med, blir ett rätt stort tal på protein...) och där använde vi Python rätt frekvent, bl.a. till just beräkningar och visualiseringsprogram.

Men det var till beräkningar där prestanda inte var speciellt viktigt, de saker man körde på dyra arbetsstationer (DEC Alpha) eller superdatorer var nästan alltid skrivet i Fortran eller i undantagsfall i C, som inte är lika snabbt som Fortran om du kan beskriva dina beräkningar som matriser, i alla fall inte då. Idag har Intel tillägg till C som gör det möjligt att beskriva vektorer och matriser på ett sätt som gör det möjligt för kompilatorn att effektivt använda SSE/AVX, så möjligen är C ett bra alternativ idag.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Hedersmedlem
Skrivet av Yoshman:

Jobbar med att skriva extremt prestandakritiska program och kan säga att i dessa är det bara rena nybörjarmisstag som leder till att vissa specifika moment drar >90% av tiden, så det är bara en utopi att det skulle gå att skriva de "tunga bitarna" i C/C++.

Vidare gör Pythons hopplösa design med ett "Global Interpreter Lock" att skalbarheten för ett Python-program är enormt begränsad på multicore maskiner. Möjligen kan man fixa detta, men siktar man på program för många CPU-kärnor borde man rimligt använda något som Clojure eller Go som designats från start att hantera sådana miljöer.

I analysmjukvara för vetenskapliga experiment så är de flesta applikationer jag sett just av typen att det finns någon inre loop någonstans som kör hårda beräkningar för att populera en datastruktur med resultaten, vilken sedan kan återanvändas för att plotta, etc., men den tunga beräkningsmässiga biten körs ofta en gång per datamängd och "aldrig mer", även om analysen kan pågå i år därefter. Alternativt är det någon viss del som löser ett stort ekvationssystem eller en diffekvation eller något.

Kan främst prata om just fysikapplikationer, både experimentellt (stora mängder indata som behöver analyseras, sorteras, värderas) och teoretiskt (numeriska lösningar av diffekvationer och annat). I dessa applikationer så lämpar det sig väl att lägga ut dessa tunga one-off-bitar på prestandaspråk. I andra områden är det säkert annorlunda.

Skrivet av Yoshman:

Men det var till beräkningar där prestanda inte var speciellt viktigt, de saker man körde på dyra arbetsstationer (DEC Alpha) eller superdatorer var nästan alltid skrivet i Fortran eller i undantagsfall i C, som inte är lika snabbt som Fortran om du kan beskriva dina beräkningar som matriser, i alla fall inte då. Idag har Intel tillägg till C som gör det möjligt att beskriva vektorer och matriser på ett sätt som gör det möjligt för kompilatorn att effektivt använda SSE/AVX, så möjligen är C ett bra alternativ idag.

I åtminstone den akademiska fysikvärlden så används dels fortfarande Fortran av ren rörelsemängd, men CERNs standardramverk (i samarbete med övriga stora institutioner i världen) sedan ~10 år är det namnmässigt svårgooglade ROOT-ramverket, som består av C++-moduler med vanligen använda funktioner, datastrukturer och visualiseringsverktyg.

Det finns även välanvända Pythonbindningar till detta (och andra liknande) ramverk. ROOT-manualens avsnitt om PyROOT [PDF] säger (CINT är en interaktiv C/C++-tolk som är standardgränssnittet mot ROOT (ifall någon undrar, så nej: C++ är inte så smidigt som interaktivt språk )):

Skrivet av CERN:

The performance of PyROOT when programming with ROOT in Python is similar to that of CINT. Differences occur mainly because of differences in the respective languages: C++ is much harder to parse, but once parsed, it is much easier to optimize. Consequently, individual calls to ROOT are typically faster from PyROOT, whereas loops are typically slower.

When programming in Python, the modus operandi is to consider performance generally "good enough" on the outset, and when it turns out that, it is not good enough; the performance critical part is converted into C/C++ in an extension module. The school of thought where pre-mature optimization is the root of all evil should find this way of working very satisfying. In addition, if you look at their history, you will see that many of the standard Python modules have followed this path.

Men ja, ingen argumenterar för att Python ska rivalisera kompilerade språk i råprestanda. Som du avslutade i inlägget ovanför det jag citerade tidigare:

Skrivet av Yoshman:

Så Python är ett riktigt bra språk i de lägen där det passar och skulle också säga att det är ett ypperligt språk att lära sig programmera på. Men det är inget språk man ska använda om prestanda överhuvudtaget är med på kravlistan.

…med åsiktsskillnaden att Python i sig kan vara närvarande vid högprestandaberäkningar, om än det efter optimeringar snarare agerar som "lim" mellan olika moduler som kan skrivas i andra språk. Men det är kanske främst en semantisk skillnad.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Avstängd

Jag tror knappast att TS med sin fråga, kommer att ställas inför att serva 10.000 tals användare i en backenda som Google. Mao, så duger Python utmärkt för att lära sig ett språk. Allt prat om att det inte skalar är helt irrelevant för en nybörjare. Det är endast duktiga programmerare som får jobba med stora backends som servar många användare, och det tar flera år att bli så duktig. Mao, såna saker är inga problem för en nybörjare. Börja med Python och när du börjat bli riktigt duktig så kan du titta på annat. Men Python är ett jättebra språk att börja med. T.ex. stora delar av Spotifys server är gjord i Python.

Permalänk
Medlem

Kan halla med dar, gav mg pa denna innan jag var tvungen att hoppa over till Java p.g.a. studier.

Men The New boston som andra har namnt ar ocksa grymt bra!
Han ar ganska underhallande pa sitt satt att bara vara chill o koda.

Lycka tll

Visa signatur

Citera för svar!