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.