Missförstå mig inte, Java är utmärkt när man med minsta möjliga arbetsinsats vill skapa ett program som fungerar på alla plattformar. Python underbart när man vill hacka ihop ett skript som gör någon jobbig och enformig uppgift. MATLAB är oslagbart på att hantera linjär algebra och lösa matematiska problem. C är en perfekt kompromiss mellan låg och högnivå för att koda till en microprocessor. Jag gillar att koda i alla språk du föreslår.
Däremot är de IMHO helt fel verktyg när man tillsammans med sin son vill pröva på att koda ett program som löser chiffer och förhoppningsvis få sonen intresserad av programmering på köpet. Där anser jag att Microsofts utmärkta Visual Studio tillsammans med .NET och Windows Forms passar mycket bättre för att komma igång fort och få ett proffsigt resultat.
För ett tag sedan efterfrågade TomasL en checksum beräknare för IP headers, hade inget bättre för mig just då så jag hackade ihop denna:
Det tog ca 30 s att rita upp gränssnittet och sedan gick det åt 40 rader kod (varav 20 som innehåller instruktioner) för att få den att fungera. Visa mig gärna hur man gör detta i C, Python, MATLAB eller ens Java vilket förmodligen kommer närmast. Nu skulle det säkert ta lite längre tid för en nybörjare som följer en tutorial, men det är inga problem att få ihop ett sånt program på en kväll även som helt grön.
Hur programmerar man på en modern PC? (jmfr ABC800)
Re: Hur programmerar man på en modern PC? (jmfr ABC800)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur programmerar man på en modern PC? (jmfr ABC800)
Ja det var en liten användbar app, tack Helge
Re: Hur programmerar man på en modern PC? (jmfr ABC800)
Det som kanske glöms bort i den är diskussionen är att det som presenteras här är 'vuxnas lösning' där fokus är effektivitet och snabbt får fram en lösning med minsta möjliga arbetsinsats.
Barn och tonåringar drivs av en annan sak och det är av nyfikenhet - idag mycket väl betalda programmerare började ofta sin bana av en tom svart/vit skärm på en VIC20/VIC64/Amiga/Atair med en enkel prompt i övre vänstra hörnet som bara skrek "utforska mig, lär dig min världs regler" - den analoga versionen är att undersöka förbjudna saker som grottor - i städer tunnlar mm. som är svårt och kanske lite riskfyllt att komma till - det skall vara lite motstånd om det skall vara intressant...
Hacker-scenen med demos på amigatiden har/hade samma lockelse där man med hårt jobb och tänkande verkligen skrämde skiten ur en standardiserad HW där alla regler var tillåtna utom att just förbättra HW med snabbare processorer, mer minne etc. och den visuella versionen är alla äventysspel som spelar på samma tema (även minecraft där folk har gjort helt otroliga lösningar med fungerande 'CPU' och logikgrindar av byggmaterial i stora anläggningar) - man lär dig reglerna under färden av egna misstagen och efter hårt jobb har åstadkommit något eget som man kan vara stolt över.
Därför är det inte alltid det bästa att i välmening vältra på ett stort grafiskt paket där nästan allting är färdigt och grafiskt och man flyttar runt 4 objekt för att lösa problemet - för liten utmaning och intresset svalnar...
Vad som är bäst för det här fallet känner nog bara TS till - men kan man få ett element där fader och son tävlar mot varandra på kanske två olika programeringsmiljöer som ingen kan och med skiffret som gemensam transportprotokoll mellan er så kan det bli en rolig utmaning för båda - och lärorikt då ni kommer att behöva hjälpa varandra och därmed få inblick i kanske olika språk. Är ni båda på nybörjanivå - ja destå bättre och som fader - räkna med att bli frånåkt och det ordentligt
.
Barn och tonåringar drivs av en annan sak och det är av nyfikenhet - idag mycket väl betalda programmerare började ofta sin bana av en tom svart/vit skärm på en VIC20/VIC64/Amiga/Atair med en enkel prompt i övre vänstra hörnet som bara skrek "utforska mig, lär dig min världs regler" - den analoga versionen är att undersöka förbjudna saker som grottor - i städer tunnlar mm. som är svårt och kanske lite riskfyllt att komma till - det skall vara lite motstånd om det skall vara intressant...
Hacker-scenen med demos på amigatiden har/hade samma lockelse där man med hårt jobb och tänkande verkligen skrämde skiten ur en standardiserad HW där alla regler var tillåtna utom att just förbättra HW med snabbare processorer, mer minne etc. och den visuella versionen är alla äventysspel som spelar på samma tema (även minecraft där folk har gjort helt otroliga lösningar med fungerande 'CPU' och logikgrindar av byggmaterial i stora anläggningar) - man lär dig reglerna under färden av egna misstagen och efter hårt jobb har åstadkommit något eget som man kan vara stolt över.
Därför är det inte alltid det bästa att i välmening vältra på ett stort grafiskt paket där nästan allting är färdigt och grafiskt och man flyttar runt 4 objekt för att lösa problemet - för liten utmaning och intresset svalnar...
Vad som är bäst för det här fallet känner nog bara TS till - men kan man få ett element där fader och son tävlar mot varandra på kanske två olika programeringsmiljöer som ingen kan och med skiffret som gemensam transportprotokoll mellan er så kan det bli en rolig utmaning för båda - och lärorikt då ni kommer att behöva hjälpa varandra och därmed få inblick i kanske olika språk. Är ni båda på nybörjanivå - ja destå bättre och som fader - räkna med att bli frånåkt och det ordentligt

Re: Hur programmerar man på en modern PC? (jmfr ABC800)
Det är nog mycket roligare att lära sig C i *NIX än i Windows, iaf vad gäller den underliggande förståelsen för t.ex. pekare, minnesallokering och nätverksprotokoll. Bara kompilera och köra i konsolen. Makefiles är ett bra verktyg för att automatisera byggprocessen och bibliotekshanteringen.
Ta t.ex. KUbuntu och du har en fullständig C/C++-toolchain (+ Java, Python och Perl) färdigt installerad. Qt och GTK för grafiska gränssnitt.
PHP är också användbart för mycket, inte bara webtillämpningar... t.ex. databasgränssnitten gör det enkelt att scripta rutinmässiga databasstädningar osv.
Ta t.ex. KUbuntu och du har en fullständig C/C++-toolchain (+ Java, Python och Perl) färdigt installerad. Qt och GTK för grafiska gränssnitt.
PHP är också användbart för mycket, inte bara webtillämpningar... t.ex. databasgränssnitten gör det enkelt att scripta rutinmässiga databasstädningar osv.
Re: Hur programmerar man på en modern PC? (jmfr ABC800)
LHelge:
Sidospår: Var hittade du specen för hur checksumman ska räknas ut? Jag hävdar med bestämdhet att (ifall inget ändrats på länge) det inte står i RFC'n, antagligen för att den som skrev RFC'n inte riktigt hade koll på just den grejen (fullt förståeligt, det är ju rätt olika saker att skapa/dokumentera robusta protokoll och begripa matte)...
xxargs:
Medhåll++, fast intersset gäller väl liksom bara vad som verkar intressant. Om man måste läsa en halv bok om analogteknik för att få videosignalen från datorn till skärmen/tv'n så kan nog intresset dala, för att ta ett halvdåligt exempel.
Det jag tror var fördelen med 80-talets hemdatorer var att det var så otroligt lätt att göra "hello world" men samtidigt var det rejält krävande att göra de riktigt avancerade grejerna.
Jag är dock högst tveksam till om det fanns nån som helst fördel med att folk programmerade direkt i en maskinkodsmonitor istället för med en riktig assemblator. Jag förstod konceptet med assembler och skrev korta snuttar delvis på papper på VIC-20/C64-tiden, men på Amigan tog det verkligen fart för min del, trots den ruttna K-Seka 1.6 eller vad jag nu fick tag på först, som bara visade typ 11 rader assemblerkällkod i taget med halva skärmen bortkastad i onödan... Visst, 68k-assembler är klart lättare än 6502-assembler, men jag skulle nog vilja säga att verktyget gjorde mer skillnad än processorn,
JanErik:
Vad skulle skillnaden mellan Windows och Unix vara ur den synpunkten?
Alla de vanliga standardlibbarna för minnesallokering är samma, pekare fungerar givetvis likadant och winsock-API'et för nätverk är i princip identiskt med socket-API'et i Unix.
Sidospår: Jag skulle vilja se forskning på vilka förutsättningarna är för att inte tycka åtminstone lite illa om allt arbete runt omkring makefiler och allmänt byggmiljöer. Det kan vara en onödig tröskel för nybörjare. Likaså kan en debugger med onödigt hög inlärningströskel också avskräcka nybörjare. Debuggern i Visual Studio (som ingår i Express-versionen) är helt okej. Man behöver i princip bara kunna två "knappar". Bläddra i källkoden och sätt eller ta bort breakpoints med F9 (ger en röd prick till vänster om raden), och starta / kör vidare med F5. Nån ytterligare knapp (alla dessa avslöjas i Debug-menyn) enkelstegar och det finns också nån för att köra ett funktionsanrop och när det returnerat fortsätta enkelstega, men om man inte ids komma ihåg dessa så kan man sätta in breakpoints på varje intressant rad och "enkelstega" med "kör vidare"-F5...
Problemet med att lära sig att programmera GUI i *ix är att när man lärt sig så kommer man till nästa projekt där helt andra förutsättningar gäller (t.ex. qt ena gången och något annat en annan gång, och krav på att look-and-feel ska passa ett specifikt gui). Iofs gäller det delvis även i Windows med "ren" windowsprogrammering, MFC och .NET, men inte riktigt i samma utsträckning eftersom utseendereglerna alltid är i princip desamma.
Jag håller med om att php är bra för allt möjligt! En slags krumelurparantesernas universalscriptspråk. Som "krumelurparanteslärd" så föredrar jag php före perl och än värre shellscripten som använder de mer eller minder kryptiska sed, awk, find o.s.v....
Sidospår: Var hittade du specen för hur checksumman ska räknas ut? Jag hävdar med bestämdhet att (ifall inget ändrats på länge) det inte står i RFC'n, antagligen för att den som skrev RFC'n inte riktigt hade koll på just den grejen (fullt förståeligt, det är ju rätt olika saker att skapa/dokumentera robusta protokoll och begripa matte)...
xxargs:
Medhåll++, fast intersset gäller väl liksom bara vad som verkar intressant. Om man måste läsa en halv bok om analogteknik för att få videosignalen från datorn till skärmen/tv'n så kan nog intresset dala, för att ta ett halvdåligt exempel.
Det jag tror var fördelen med 80-talets hemdatorer var att det var så otroligt lätt att göra "hello world" men samtidigt var det rejält krävande att göra de riktigt avancerade grejerna.
Jag är dock högst tveksam till om det fanns nån som helst fördel med att folk programmerade direkt i en maskinkodsmonitor istället för med en riktig assemblator. Jag förstod konceptet med assembler och skrev korta snuttar delvis på papper på VIC-20/C64-tiden, men på Amigan tog det verkligen fart för min del, trots den ruttna K-Seka 1.6 eller vad jag nu fick tag på först, som bara visade typ 11 rader assemblerkällkod i taget med halva skärmen bortkastad i onödan... Visst, 68k-assembler är klart lättare än 6502-assembler, men jag skulle nog vilja säga att verktyget gjorde mer skillnad än processorn,
JanErik:
Vad skulle skillnaden mellan Windows och Unix vara ur den synpunkten?
Alla de vanliga standardlibbarna för minnesallokering är samma, pekare fungerar givetvis likadant och winsock-API'et för nätverk är i princip identiskt med socket-API'et i Unix.
Sidospår: Jag skulle vilja se forskning på vilka förutsättningarna är för att inte tycka åtminstone lite illa om allt arbete runt omkring makefiler och allmänt byggmiljöer. Det kan vara en onödig tröskel för nybörjare. Likaså kan en debugger med onödigt hög inlärningströskel också avskräcka nybörjare. Debuggern i Visual Studio (som ingår i Express-versionen) är helt okej. Man behöver i princip bara kunna två "knappar". Bläddra i källkoden och sätt eller ta bort breakpoints med F9 (ger en röd prick till vänster om raden), och starta / kör vidare med F5. Nån ytterligare knapp (alla dessa avslöjas i Debug-menyn) enkelstegar och det finns också nån för att köra ett funktionsanrop och när det returnerat fortsätta enkelstega, men om man inte ids komma ihåg dessa så kan man sätta in breakpoints på varje intressant rad och "enkelstega" med "kör vidare"-F5...
Problemet med att lära sig att programmera GUI i *ix är att när man lärt sig så kommer man till nästa projekt där helt andra förutsättningar gäller (t.ex. qt ena gången och något annat en annan gång, och krav på att look-and-feel ska passa ett specifikt gui). Iofs gäller det delvis även i Windows med "ren" windowsprogrammering, MFC och .NET, men inte riktigt i samma utsträckning eftersom utseendereglerna alltid är i princip desamma.
Jag håller med om att php är bra för allt möjligt! En slags krumelurparantesernas universalscriptspråk. Som "krumelurparanteslärd" så föredrar jag php före perl och än värre shellscripten som använder de mer eller minder kryptiska sed, awk, find o.s.v....
Re: Hur programmerar man på en modern PC? (jmfr ABC800)
Miam, checksumman är beskriven i bl.a. RFC793 samt RFC1071