Python, bra eller mediokert ?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Hobbyisten
Inlägg: 2531
Blev medlem: 3 december 2017, 22:55:25

Re: Python, bra eller mediokert ?

Inlägg av Hobbyisten »

Följer med intresse tråden. Jag vet att min fråga var ospecifk, men ville ha massa synpunkter som jag nu fått :)
agehall
Inlägg: 418
Blev medlem: 12 augusti 2020, 19:27:54

Re: Python, bra eller mediokert ?

Inlägg av agehall »

pi314 skrev: 14 oktober 2022, 09:12:12 "Familljen" C, C++ och C# har stora styrkor, men även en del svagheter. Som t.ex. varför kan dom inte vara ett språk? Som språk betraktade har dom inslag av att vara "assembler på bredden". Inte så "vackra" som högnivåspråk som t.ex. Pascal, Ada eller Java.
C och C++ har en hel del gemensamma drag men C# är den avlägsne kusinens svåger. C och C++ är ju båda ganska nära hårdvaran - även om det finns en hel del bibliotek som gör att man enkelt abstraherar bort saker och ting så går ju hela tanken ut på att man mer eller mindre direkt kan manipulera register med väldigt stor precision. C# är helt klart ett högnivåspråk och vi kommer nog aldrig att se det användas i någon större utsträckning när det gäller mikroprocessorer eller liknande.

Det alla ”C-språk” har gemensamt är den grundläggande syntaxen. Det finns en hel del saker som gör att om man kan ett av språken kan man relativt enkelt läsa kod skrivet i ett annat ”C-språk” och förstå det mesta. Det är dock viktigt att man alltid är på sin vakt - framförallt så kan C och C++ se förvillande likt ut men ha helt olika innebörd. C++ med templates kan också vara ett rent h-vete att förstå sig på om man inte har god förståelse för C++.

Själv skulle jag definitivt säga att C# är minst lika vackert som Pascal och Ada. (Java är bland det värsta jag vet så det förtjänar inte att omnämnas i samma skala ens!)
Bo.Siltberg
Inlägg: 357
Blev medlem: 30 juli 2018, 06:46:13

Re: Python, bra eller mediokert ?

Inlägg av Bo.Siltberg »

agehall skrev: 14 oktober 2022, 07:46:29 Så bra att du aldrig upplevt något problem - det betyder inte att problemet inte finns, bara att du inte råkat ut för det eller är ignorant nog att inte förstå det.

Det är just att kunna strukturera kod läsbart som är problemet - jag vill kunna formatera koden som jag vill, inte pga att en dator kräver det. Såsom Python gör det saknas information för att kunna avgöra var ett block slutar och det är helt värdelöst.
Du får skilja mellan formatera och indentera. Indenteringen är absolut inga problem i Emacs.
Indenteringen är tydlig, man ser tydligt var ett block slutar. Gör man inte det, så har man för stora block.
Många personer har inte sinne för att själv indentera kod korrekt.
Indenteringsnivån ska givetvis vara likadan i hela filen.
Icecap skrev: 14 oktober 2022, 08:20:48Jag håller med om att TAB-indenteringen är... besvärlig.
Om det fattas ett/är ett extra mellanslag får man fel på att indenteringen inte är korrekt eller bara ett fel.
Tänk att indenteringen inte är exakt 8 mellanslag men 7 eller 9. Ganska svårt att se.

Man använder TAB för att indentera, i alla vettiga editorer. Man använder aldrig spacetangenten.
Python tillåter en indenteringsnivå på 7, 8, 9 eller vad som helst, bara den är lika inom blocket.
agehall
Inlägg: 418
Blev medlem: 12 augusti 2020, 19:27:54

Re: Python, bra eller mediokert ?

Inlägg av agehall »

Att trycka tab är inte ett problem i någon editor, oavsett om man föredrar vi, Emacs, Notepad eller Visual Studio. Problemet är att det inte finns något sätt att markera slutet på ett block så att det är tydligt. Det gör att det är väldigt lätt att det uppstår problem när man försöker strukturera koden för läsbarhet. I nästan alla andra språk finns något sätt att beskriva block, tex { och } i C-språken. Genom att bara låta indenteringen styra detta skapar man en otydlighet som kan vara väldigt svår att se.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python, bra eller mediokert ?

Inlägg av guckrum »

Jag tänkte precis som du innan jag började använda Python.
Jag kan bara säga att jag tänkte fel, mina farhågor besannades
inte. Jag ser inget problem i praktiken om man inte aktivt jobbar
på att ställa till det för sig. Möjligen i de fall då man kopierar en
snutt kod från ett ställe till ett annat och missar att indenteringen
är annorlunda, men som vanligt vid kodning så är det bra om
man vet vad man håller på med. Bara min åsikt.
Användarvisningsbild
pi314
Inlägg: 5680
Blev medlem: 23 oktober 2021, 19:22:37
Ort: Stockholm

Re: Python, bra eller mediokert ?

Inlägg av pi314 »

Objektorientering
Kan man ha en tråd om hur bra ett programmeringsspråk är utan att nämna objektorientering?
Först då, hur bra är objektoerientering? Ett måste, hajpat eller onödigt?
En sammanfattning kanske är att det finns inslag av alla tre? Bl.a. beroende på sammanhanget.

Jag stötte själv på objektorientering först i C++, men mer på allvar i Java. Jag har alldeles för lite erfarenhet av Python för att ha någon åsikt om hur bra Python är för objektorientering. Boken Objects First, som är baserad på Java, tycker jag är en bra OOP (Object Orineted Programming) intro.

Någon här som har mer erfarenhet och kan skriva något om OOP och Python?

/Pi
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python, bra eller mediokert ?

Inlägg av guckrum »

Hajpat vet jag inte, men för vissa tillfällen är det bra och andra mindre bra:-)
Kör man Python jobbar man ju på hög nivå och har gett upp allt som har med
klockcykler, minnesallokering och sådant att göra, och då är väl OOP i princip
alltid ett bra val, lite beroende på vilket problem man vill lösa.
Något speciellt du funderar över?
kodar-holger
EF Sponsor
Inlägg: 916
Blev medlem: 26 maj 2014, 12:54:35
Ort: Karlskoga

Re: Python, bra eller mediokert ?

Inlägg av kodar-holger »

Jag har ingen aning om vad som finns i pyton, men en talangfull programmerare kan skriva fortran i vilket programspråk som helst.

Samma sak med objektorientering. Det går bra att köra objektorientering i vilket språk som helst. De OO-konstruktioner som finns i de flesta språk har ändå inte mycket med objektorientering att göra. Visst, det finns ett klass-begrepp i språk som C++ och VB men absolut noll stöd för ex.vis associationer annat än pekare och då kan man lika gärna programmera i assembler.

Jag vet inte om jag längre skulle klara att göra något i programmeringsväg större än ett hellorld-program utan att först göra en riktig objektorienterad analys där klasser, associationer, och tillståndsövergångar m.m. stöts och blöts en bra stund först. Papper och penna är bra verktyg. Whiteboard ibland bättre och argouml/papyrus/bridgepoint andra alternativ för den som är rädd att lämna tangentbordet.
agehall
Inlägg: 418
Blev medlem: 12 augusti 2020, 19:27:54

Re: Python, bra eller mediokert ?

Inlägg av agehall »

Python är strikt taget inte OO. Det går dock utmärkt att skriva OO i det om man inte kräver att allt ska fungera exakt så som det gör i ett språk som är designat för OO - i praktiken är det sällan ett problem om man inte verkligen går in för att bryta illusionen i Python.
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Python, bra eller mediokert ?

Inlägg av Mr Andersson »

Python är tvingande OO, allt är klasser eller klassinstanser. Skriv t.ex. dir(1) om ni trodde att en så enkel typ som int är 'native'. Massvis med fält och klassmetoder.

Python är trevligt om man snabbt behöver något enkelt program men jag hade inte valt det för större projekt. För mycket konstigheter och specialfall att hålla reda på, t.ex += som inte beter sig som += i andra språk.
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python, bra eller mediokert ?

Inlägg av guckrum »

Det finns inget perfekt språk eller språk som alla är överens om saknar "konstigheter och specialfall" vad jag vet. Hur man löser en uppgift handlar mycket om metodik medan språket är ett verktyg. Det är olika saker.

Själv använder jag olika språk till olika saker. Till exempel Python till all data science och machine learning, för att det finns ett enormt open source community där. Sedan mixar jag Python med C där det behövs för att flaskhalsar skall exekvera fort, så C för exekveringshastighet och Python för utvecklingshastighet och enkelt underhåll. (Det går kanske 50 rader C på en rad Python, kan vara både mer och mindre.) Vidare shell script i zsh eller bash beroende på kompabilitet, oneliners med awk, sed, sort o company för snabba filfixar och enklare analyser. Aldrig mera Perl. VHDL eller möjligen Verilog för digital hårdvara, Octave för snabba mattetest, LISP för att kofigurera min editor, LUA för att konfigurera min fönsterhanterare. Och så vidare. Det är "konstigheter" och "specialfall" överallt, men det är inget problem.

+= i Python adderar till intar och floats precis som i alla fall jag förväntar mig, och läser man manualen vet man att den kör object.__iadd__(), så att man kan få den att göra precis vadsomhelst om man vill. Till exempel på listor har man valt att använda den för att enkelt konkatenera med en annan lista. Varför inte? Jag tror att oavsett vilket språk man använder så kommer man att bli ordentligt överraskad emellanåt om man inte har läst på hur det fungerar utan utgår från att olika språk skulle fungera på samma sätt bara för att delar av syntaxen är samma.
Användarvisningsbild
Icecap
Inlägg: 26106
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Python, bra eller mediokert ?

Inlägg av Icecap »

Alla språk har olika för- och nackdelar.

Det finns inget "universellt & perfekt" programmeringsspråk för alla applikationer.

Att jag föredrar C betyder inte att jag inte vill använda annat. Python gör jobbet jag utför just nu alldeles OK fastän jag inte är kompis med indenteringen.

Om man letar efter ett perfekt språk betyder det ofta - i min erfarenhet - att man har dåligt koll på hur en uppgift ska lösas, alltså förmågan att dela upp en uppgift o lösa den del för del.

Ska man skriva en meddelanden på skärmen finns den funktion ganska säkert i alla språk. Det kan heta olika, det är skillnad i prarmeter osv. men i grunden finns funktioner som är ganska lika i alla högnivåspråk.
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Python, bra eller mediokert ?

Inlägg av BJ »

Och vi som inte föredrar +=, ++ och --
skriver t.ex. a = a + 1 eller a = a + b i stället.
Mycket lättare att läsa. :)
guckrum
Inlägg: 1671
Blev medlem: 19 juni 2012, 09:04:27
Ort: Lund

Re: Python, bra eller mediokert ?

Inlägg av guckrum »

I Python behöver inte formen "a = a + 1" betyda samma sak som "a += 1".
Ett exempel är en lista. Om jag skriver

Kod: Markera allt

a = [1, 2, 3, 4]
a += [5]
så adderas elementet "5" sist till listan i existerande objekt "a". Men om jag skriver

Kod: Markera allt

a = [1, 2, 3, 4]
a = a + [5]
så skapas ett helt nytt objekt "a" (fast innehållsmässigt ser det likadant
ut som i förra exemplet). Detta har flera implikationer, bland annat på prestanda.

Vid första anblicken kan detta konfundera, men det är fundamentala
skillnader mellan tex C och Python, och hur Python jobbar med objekt tas
upp redan i de första kapitlen i introduktionsböckerna, så man har så att
säga blivit underrättad:-)
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Python, bra eller mediokert ?

Inlägg av Mr Andersson »

Kod: Markera allt

>>> print(a)
(['hello'],)

>>> try:
...   a[0] += ["world"]
... except Exception as e:
...   print(f"Error: {e}")
En lista i en tuple. Vad händer om man kör += på första elementet? Logiken säger att listan borde ändras eftersom += refererar till a[0] och inte a.

Kod: Markera allt

Error: 'tuple' object does not support item assignment
Jaha. Python försöker ändra på tuplen, som är read only. Då borde väl ingenting ha hänt med listan?

Kod: Markera allt

>>> print(a)
(['hello', 'world'],)
... python försöker pilla i både inre och yttre container.
Eller

Kod: Markera allt

>>> a = 200
>>> a is 200
True
>>> a = 300
>>> a is 300
False
:tumupp:
Jag kan väl inte säga att jag är "ordentligt överraskad" då jag vet exakt hur det fungerar i bägge fallen.
Förvåningen kommer ifrån att folk verkar tycka att det här är bra språkdesign.
Skriv svar