Permalänk
Inaktiv

Funktionsprogrammering

Skrivet av KeyPakt:

Absolut. Eller kanske inte. Beror ju på om man vill skapa något själv eller bara använda något som någon annan gjort. Vet i och för sig inte vilka språk du syftar på. Oavsett vet jag inte om ditt inlägg var särskilt informativt för TS. Men om du påstår att det är vanligt med program som inte baseras på val (if), mellanlagring (variabel) och iterationer (loopar) så får du gärna utveckla det för att bidra i tråden.

Du kan exempelvis använda dig av funktionsprogrammering.

Exempelvis haskell (http://www.haskell.org/haskellwiki/Haskell) Det finns flera andra liknande språk

Här kommer ett exempel som gör det ganska tydligt:
Quickorst i Haskell

quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (< p) xs greater = filter (>= p) xs

Som du ser så finns där inga loopar, ifsatser eller något annat som kan liknas med det. Ibland är det ganska smidigt med såna språk, se så får och glada rader det blir

Quicksort i C

void qsort(int a[], int lo, int hi) { int h, l, p, t; if (lo < hi) { l = lo; h = hi; p = a[hi]; do { while ((l < h) && (a[l] <= p)) l = l+1; while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l < h); a[hi] = a[l]; a[l] = p; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } }

Men det är ju vanligare med sekventiell programmering. Där varje rad sker för sig. Grunden för sådana språk är som KeyPakt säger ofta lite if-satser och några loopar. Men det finns även mycket mer som datatyper, rekursion, klasser, multithreading, typer, reflections etc.

Fler bokstäver!
Permalänk
Medlem

börja med något objektorienterat, c#.NET typ

Visa signatur

pro

Permalänk
Medlem

Hitta en kamrat att lära dig tillsammans med först Det önskar jag att jag hade gjort.

Visa signatur
Permalänk
Medlem
Skrivet av KeyPakt:

Absolut. Eller kanske inte. Beror ju på om man vill skapa något själv eller bara använda något som någon annan gjort.

Vad menar du egentligen? Väldigt oklart. Jag gissar på att du menar att om man använder något språk med en högre abstraktionsnivå än C så gör man inget själv. Om det var det du menade så var det dumt sagt tycker jag.

Skrivet av KeyPakt:

Vet i och för sig inte vilka språk du syftar på. Oavsett vet jag inte om ditt inlägg var särskilt informativt för TS.

Du menar till skillnad från ditt inlägg som är fyllt till bredden med värdefull information? Du skrev mycket, men jag tycker det mesta stämmer väldigt dåligt i allmänhet. Att säga att grunderna i programmering är if-satser, variabler och loopar är som att säga att grunderna i fotboll är att ha 5 domare och att spela på gräs -- det förklarar ingenting och det är inte ens sant.

Skrivet av KeyPakt:

Men om du påstår att det är vanligt med program som inte baseras på val (if), mellanlagring (variabel) och iterationer (loopar) så får du gärna utveckla det för att bidra i tråden.

Variabler kan ersättas med konstanter, dvs de byter inte värde när de väl fått ett. Det beror iofs på vad man menar med variabler. Om man tänker sig en matematisk variabel så lagras ju inget i den, utan det är bara en bokstav. Och man brukar ibland kalla formella argument för bundna variabler. Men man kan definitivt programmera utan C-style-variabler. Loopar kan ersättas med rekursion. If-satser kan ersättas med polymorphism eller pattern matching, som man kanske kan säga är en typ av val.

Men om man tar ett deklarativt programmeringsspråk, tex SQL eller Prolog, så kan man skriva program utan rekursion, loopar, mellanlagring, eller val (av typ "om A så B annars C") överhuvudtaget.

Loopar, variabler och if-satser bör man också undvika i så stor utsträckning som möjligt. Ju fler if-satser desto fler grenar i programflödet att tänka på. Variabler bör man undvika för det är lättare om så mycket som möjligt är konstant. Loopar bör också ersättas med enklare funktioner i så stor utsträckning som möjligt.

Permalänk
Medlem
Skrivet av tufflax:

Vad menar du egentligen? Väldigt oklart. Jag gissar på att du menar att om man använder något språk med en högre abstraktionsnivå än C så gör man inget själv. Om det var det du menade så var det dumt sagt tycker jag.

Vad jag menade var att det, beroende på programspråk, kan finnas väldigt mycket färdig funktionalitet som gör det mesta åt programmeraren, jag talar inte om att rita GUI. Att börja programmera genom att göra det så enkelt för sig som möjligt hjälper knappast programmeraren att förstå särskilt mycket, speciellt inte när det inte fungerar som det ska. Därför anser jag att det är bättre att först skapa en grund att stå på och då tycker jag att man ska börja med något av de mer traditionella språken.

Skrivet av tufflax:

Du menar till skillnad från ditt inlägg som är fyllt till bredden med värdefull information? Du skrev mycket, men jag tycker det mesta stämmer väldigt dåligt i allmänhet. Att säga att grunderna i programmering är if-satser, variabler och loopar är som att säga att grunderna i fotboll är att ha 5 domare och att spela på gräs -- det förklarar ingenting och det är inte ens sant.

Ganska kul skrivet. TS ville inte bara intresserad av att få tipps om programspråk och böcker, han var också intresserad av att får reda på lite bakgrund om den som skrev inlägget, därför blev mitt inlägg lite längre.

Skrivet av tufflax:

Variabler kan ersättas med konstanter, dvs de byter inte värde när de väl fått ett. Det beror iofs på vad man menar med variabler. Om man tänker sig en matematisk variabel så lagras ju inget i den, utan det är bara en bokstav. Och man brukar ibland kalla formella argument för bundna variabler. Men man kan definitivt programmera utan C-style-variabler. Loopar kan ersättas med rekursion. If-satser kan ersättas med polymorphism eller pattern matching, som man kanske kan säga är en typ av val.

En konstant är bra om man vet att något alltid kommer vara på ett visst sätt, dock är det väldigt sällan som något är konstant i de program som jag skrivit då jag ofta eftersträvar dynamik och låter programmet styras av input från databas. Rekursion kan vara användbart om man förstår sig på det, något som jag fick erfara att de flesta av mina studiekamrater inte gjorde. Ibland använder jag rekursion, ibland inte vilket helt beror på vad jag ska göra. Polymorfism är också bra när det lämpar sig att lösa en viss uppgift på det sättet men jag skulle nog inte dra det så långt att det helt ersätter if-satser.

Skrivet av tufflax:

Men om man tar ett deklarativt programmeringsspråk, tex SQL eller Prolog, så kan man skriva program utan rekursion, loopar, mellanlagring, eller val (av typ "om A så B annars C") överhuvudtaget.

Kan inte Prolog. SQL skulle jag knappast säga att det är komplett utan loopar, speciellt inte när man behöver skriva mer komplexa Stored Procedures.

Skrivet av tufflax:

Loopar, variabler och if-satser bör man också undvika i så stor utsträckning som möjligt. Ju fler if-satser desto fler grenar i programflödet att tänka på. Variabler bör man undvika för det är lättare om så mycket som möjligt är konstant. Loopar bör också ersättas med enklare funktioner i så stor utsträckning som möjligt.

Jag förstår vad du säger, dock tror jag inte att TS riktigt har kommit till den nivå där han har lärt sig vad abstraktionsnivå, polymorfism, rekursion etc innebär. Att ha många grenar med if-satser kan givetvis bli svårt att överblicka, dock kan jag inte minnas att jag någonstans skrivit att man ska försöka ha många nivåer med if-satser, många variabler eller många loopar. Visst ska man använda en konstant när så är möjligt.

En variabel för mig kan vara typad eller inte. Jag arbetar i princip uteslutande med data hämtat från en databas. Oftast lagras önskad data i variabler, antingen egendefinierade typer eller färdiga, för att senare kunna erhålla önskad data utan att behöva accessa databasen alltför mycket och alltför ofta. Vissa delar utnyttjar polymorfism, andra rekursion, if-sats osv helt beroende på vad som programmmet ska göra i en viss situation. Ofta är det även Client-Server utveckling och då måste klienten kunna lagra svaret från servern. Eftersom svaret från servern alltid är okänt så kan jag givetivis inte spara detta i en konstant utan någon typ av variabel/kontrol måste användas. Om du har en bättre lösning på det så får du gärna dela med dig av den då jag alltid är öppen för nya lösningar.

Visa signatur

ASUS ROG Strix X570-F, AMD Ryzen 9 5900X, ASUS GTX 1080 Ti Strix Gaming OC, 32GB G.Skill Trident Z Neo CL16 3600MHz, Arctic Freezer II 240, Seasonic Prime Titanium 850W, Phanteks Enthoo Evolv X, 2x Samsung 970 EVO Plus 1TB, Seagate Firecuda 2TB, Seagate Ironwolf 4TB, ASUS PG278Q

ASUS ROG Crosshair VI Hero, AMD Ryzen 9 3900X, ASUS RTX 2060 Dual OC, 16GB G.Skill Flare X CL14 3200 MHz @3200 MHz, Arctic Freezer 240, Seasonic Prime Titanium 850W, Phanteks Eclipse P400S Glass, Samsung 960 Pro 512GB, Samsung 850 Pro 512GB, Seagate Ironwolf 4TB, ASUS PG278Q

Permalänk
Medlem
Skrivet av KeyPakt:

Ofta är det även Client-Server utveckling och då måste klienten kunna lagra svaret från servern. Eftersom svaret från servern alltid är okänt så kan jag givetivis inte spara detta i en konstant utan någon typ av variabel/kontrol måste användas. Om du har en bättre lösning på det så får du gärna dela med dig av den då jag alltid är öppen för nya lösningar.

Jag fattar inte riktigt vad du menar med texten ovan, men denna video är relevant och mycket bara. http://www.infoq.com/presentations/Value-Values

Permalänk

Podcasten Programmering med Noviserna

Hej!

Jag (Fredrik) och min kompis Olle kände på samma sätt.

Vi valde udacity.com och CS101. Det betyder att vi börjar med Python.

Nu har vi skapat en podcast för de som är intresserade att följa med oss genom denna utbildning. Du hittar den på:
iTunes: http://itun.es/us/bCv_H
RSS: http://noviserna.libsyn.com/rss
Facebook: http://Facebook.com/noviserna

Permalänk

Har man någon chans att komma in på vettiga utbildningar eller studier för att lära sig programmera utan slutbetyg från gymnasiet, eller är man körd?

Sen undrar jag vad skillnaden på C# och F# är utav ren nyfikenhet, om någon kan förklara.

Visa signatur

Du har redan tackat ja!

Permalänk
Medlem
Skrivet av dysenteri:

Har man någon chans att komma in på vettiga utbildningar eller studier för att lära sig programmera utan slutbetyg från gymnasiet, eller är man körd?

Sen undrar jag vad skillnaden på C# och F# är utav ren nyfikenhet, om någon kan förklara.

Ja det är väl om du ska gå komvux och plugga gymnasie programmering. Men det är inte mkt man lär sig där. Går på HGO på gotland och många i min klass har redan programmerat sen gymnasiet och säger att allt de lärt sig på gymnasiet gick vi igenom på en - två veckor.

Själv så har jag programmerat sen länge - Och har nog hittat intresse för programmering på samma sätt som andra har. Pillat på open-source spel

Antingen så pluggar du upp det själv. Köper några böcker och läser en hel del på internet.
Om du inte har slut betyg ifrån gymnasiet kan du inte studera på universitet. :/

Företagen anställer efter kompetens, man brukar få göra en del kodexempel vid en anställning alt så får man lösa påskägg som blocket gjorde
http://www.idg.se/2.1085/1.478381/han-vann-blockets-programme...

Visa signatur

~. Citera så jag hittar tillbaka .~

Permalänk
Medlem

om du vill ha lite lära dig lite grunder och få lite inblick rekommenderar jag http://www.codecademy.com

Permalänk
Medlem

https://www.youtube.com/user/mr1buying?feature=results_main

Bra videos med diverse språk! Dock kommer han snart tyvärr att lägga ner kanalen.

Permalänk
Skrivet av SexMachine:

https://www.youtube.com/user/mr1buying?feature=results_main

Bra videos med diverse språk! Dock kommer han snart tyvärr att lägga ner kanalen.

Synd, har haft användning av hans tutorials.
Vet du mer varför han tänker lägga ned? Kommer materialet finnas kvar eller tar han bort allt....

Visa signatur

Chassi: Phanteks XT Pro Ultra Svart | CPU: AMD Ryzen 9 7900X 4.7 GHz 76MB | Moderkort: MSI B650 Gaming Plus WIFI | Nätagg: Corsair RM850x 850W v3 | RAM: Kingston 64GB (2x32GB) DDR5 6000MHz CL30 FURY Be | HDD: Kingston Fury Renegade M. 2 NVMe SSD Gen 4 2TB | CPUkylning: Thermalright Phantom Spirit 120 SE

Permalänk
Skrivet av KeVVa:

Ja det är väl om du ska gå komvux och plugga gymnasie programmering. Men det är inte mkt man lär sig där. Går på HGO på gotland och många i min klass har redan programmerat sen gymnasiet och säger att allt de lärt sig på gymnasiet gick vi igenom på en - två veckor.

Själv så har jag programmerat sen länge - Och har nog hittat intresse för programmering på samma sätt som andra har. Pillat på open-source spel

Antingen så pluggar du upp det själv. Köper några böcker och läser en hel del på internet.
Om du inte har slut betyg ifrån gymnasiet kan du inte studera på universitet. :/

Företagen anställer efter kompetens, man brukar få göra en del kodexempel vid en anställning alt så får man lösa påskägg som blocket gjorde
http://www.idg.se/2.1085/1.478381/han-vann-blockets-programme...

Det är inga problem att plugga och lära mig själv. Jag tänkte mest på att det skulle vara bra att ha lite dokumentation på att man har gjort en schysst utbildning och så vidare. Som en utvecklare på jobbet sade så kan det aldrig skada att köra en kurs på universitetet.

Problemet jag har är att jag blir "skoltrött" så fort jag måste göra uppgifter eller studera ämnen som är helt ointressanta för mig. Ett praktexempel på detta är i Svenskan när man måste skriva om kärlek eller något annat idiotiskt.

Vore helt enkelt skönt om man kunde smita förbi dessa avskyvärda gymnasiestudier och gå rakt på sak. Matte är dock något jag kan tänka mig läsa om igen, då det faktiskt vore jävligt kul att kunna.

Visa signatur

Du har redan tackat ja!

Permalänk
Medlem

Kolla på detta:
http://programming-motherfucker.com/become.html
http://learnpythonthehardway.org/

Det är en s.k. learning by doing guide till programmering. Inte testat det själv, men funderar på att kanske ta Ruby delen nån gång i framtiden.

Visa signatur

AMD 5700X@Vatten | asus prime x370pro | Pny 4070ti Super @ Bykski vatten | 2x16GB Kingston Fury Renegade RGB DDR4 3.6GHZ | Lian Li O11d EVO + 2x360 EKWB RAD + 6 Lian Li AL120 | Seasonic 1300w Gold | NVME 2TB Seagate Firecuda 510 + NVME 1TB WD BLACK + 3 SSD | Philips 49" 8900L | DELL 2713HM | Keychron Q2 Max | Logitech G502 2016.

Permalänk
Medlem
Skrivet av dysenteri:

Det är inga problem att plugga och lära mig själv. Jag tänkte mest på att det skulle vara bra att ha lite dokumentation på att man har gjort en schysst utbildning och så vidare. Som en utvecklare på jobbet sade så kan det aldrig skada att köra en kurs på universitetet.

Problemet jag har är att jag blir "skoltrött" så fort jag måste göra uppgifter eller studera ämnen som är helt ointressanta för mig. Ett praktexempel på detta är i Svenskan när man måste skriva om kärlek eller något annat idiotiskt.

Vore helt enkelt skönt om man kunde smita förbi dessa avskyvärda gymnasiestudier och gå rakt på sak. Matte är dock något jag kan tänka mig läsa om igen, då det faktiskt vore jävligt kul att kunna.

jo visst är det alltid något att visa upp i ett cv.
men tyvärr så måste man ha behörighet för att dtudera på universitet.

väl på universitet så är det mycket roligare, man studerar bara det man tycker om. diskret matematik kanske inte är det roligaste
men det håller inom samma tema om man ser programmering som kärna

Tror nog du får ta det sura äpplet och studera upp komvux om du vill ha en examination i programmering

Visa signatur

~. Citera så jag hittar tillbaka .~

Permalänk
Skrivet av DeluxXxe:

Kolla på detta:
http://programming-motherfucker.com/become.html
http://learnpythonthehardway.org/

Det är en s.k. learning by doing guide till programmering. Inte testat det själv, men funderar på att kanske ta Ruby delen nån gång i framtiden.

Intressant. Får kika på det där när jag har läst klart mina nybörjarböcker.

Skrivet av KeVVa:

jo visst är det alltid något att visa upp i ett cv.
men tyvärr så måste man ha behörighet för att dtudera på universitet.

väl på universitet så är det mycket roligare, man studerar bara det man tycker om. diskret matematik kanske inte är det roligaste
men det håller inom samma tema om man ser programmering som kärna

Tror nog du får ta det sura äpplet och studera upp komvux om du vill ha en examination i programmering

Det är precis så jag vill ha det. Men jag var rädd för att det skulle bli komvux i slutändan ändå. Bara att köra på när tiden är rätt antar jag

Visa signatur

Du har redan tackat ja!