Chefen meddelar dig att du måste helt klart bli bättre på huvudräkning. I uppgift får du att lära dig 20 decimaler på Pi och skall lyckas med det på måndag. Givetvis är du bra mycket bättre att hålla reda på fler siffor än 20 men problemet är att du behöver ett litet program som skriver ut detta enkelt. Otestat men visar principen för hur jag skulle göra om jag måste skriva ett program. Det är ju ett tämligen välkänt problem, så om man inte ska ha en helt färdig lösning så ger en sökning på nätet förmodligen en lång rad snabba algoritmer. Att få rätt antal decimaler är ju tämligen enkelt; använd en tillräckligt stor datatyp (ex. GMP som Martin), och kör typ: <b>Hur snabbt kan du generera 500 decimaler på Pi och hur skriver du koden?</b> Håller nog på PP här. "Du är inte säker på hur många decimaler som skall skrivas så därför har du en rutin där du matar in fritt antal decimaler." antyder ju att man faktisk måste generera ett antal decimaler. Att sedan någon någonsin skulle behöva fler än 15 är ju ganska osannolikt. Det beror ju på hur du vill ha dem genererade. Jo Niklas, som jag sa kan man säkert tolka in detta önskemål från Pelle. <b>PP, specifikationen stämmer inte överrens med din kod ;)</b> Klanka ner gör man inte när man skriver ;) i slutet på meningen. Intressant frågeställning Pelle! En annan fråga är hur ofta beställaren själv vet vad han egentligen vill ha? Jag tror nog att otydliga specar är största orsaken till att beställare inte får vad de önskar. Å frågan går tillbaks - vem är det som gör fel? Är det programmeraren som gissar eller beställaren som är för otydlig? Vart möts dessa parter för att få till det bra? Projektledare som är duktiga tillsammans med dynamiska utvecklare är den avgörande faktorn för att få ihop det. Enligt min erfarenhet så är beställarens produkter undermåliga för att den som specificerar inte förstår beställarens behov, i de fall beställaren själv specificerar så är specarna är undermåliga. Man får inte glömma att förklara för beställaren att det som är självklarheter för honom / henne är inte det för utvecklarna. Jag har alltid bett mina beställare förklara hela sitt behov på samma sätt som om han nyss anställt en femåring och ska lära den jobbet när det är dokumenterat och klart så frågar jag ut honom om vilka avvikelser som kan tänkas förekomma, när det är klart så kan man anta att runt 75-80% av hans egentliga kravspec är beskriven. Det är organisationen/personen som ska utveckla något som har det yttersta ansvaret för att kravspecifikationen blir ordentligt gjord. På ett par av mina jobb har jag fått känslan att jag uppfattats som jobbig när jag önskat tydligare specifikationer. Då drar man sig snart för att fråga, med stor risk att det blir fel. En intressant parallell till detta är på hur olika sätt vi kvinnor och män ibland kommunicerar. Rent tekniskt så har du inte en rutin som genererar dina decimaler, där avviker du från specen... Vad menas med att generera? Jag tror Pontus syftar på ordet "rutin" i Pelle's rad: I det här fallet var det sistnämnda jag syftade på - dvs att ange exempelvis 30 och således få ut 30 decimaler. >På ett par av mina jobb har jag fått känslan att jag uppfattats som jobbig när jag önskat tydligare ( telefonorder till Specifikations Specialisten) <b>Om du behandlar specar på jobb likadant som du gjorde i denna tråden så förstår jag helt klart varför du inte jobbar där längre.</b> därför att du fick känslan av att uppfattats som jobbig när du önskade tydligare specifikationer? <b>I think there's a lesson in there for all of us!</b>Utmaningen vecka 26
Du är inte säker på hur många decimaler som skall skrivas så därför har du en rutin där du matar in fritt antal decimaler. Olle kommer förbi och ser detta program och blir mäkta imponerad. Då säger Olle, jag kan skriva 500 decimaler fortare än du och springer iväg på sitt rum. Hur snabbt kan du generera 500 decimaler på Pi och hur skriver du koden?Sv: Utmaningen vecka 26
(dvs hitta ett kodbibliotek som har de funktioner som behövs)
#include <stdio.h>
#include "gmp.h"
#include "mpfr.h"
int main() {
int decimaler;
mpfr_t pi;
printf("Ange antalet decimaler");
scanf("%d", &decimaler);
mpfr_init2(pi, decimaler * 4);
mpfr_cosnst_pi(pi, GMP_RNDN);
mpfr_out_str(stdout, 10, decimaler, pi, GMP_RNDN);
}
Sv:Utmaningen vecka 26
superdouble pi = start_point;
while(d < 1e-(antaldecimaler)){
d = get_diff(pi);
pi += d;
}
Enklaste måste väl vara att använda någon serie som konvergerar mot någon slags funktion av pi.
Sv: Utmaningen vecka 26
main()
{
puts("3.141592653589793238462643383279502884197169399375105820974944592307
816406286208998628034825342117067982148086513282306647093844609550582231
725359408128481117450284102701938521105559644622948954930381964428810975
665933446128475648233786783165271201909145648566923460348610454326648213
393607260249141273724587006606315588174881520920962829254091715364367892
590360011330530548820466521384146951941511609433057270365759591953092186
11738193261179310511854807446237996274956735188575272489122793818301194912");
}
Sv: Utmaningen vecka 26
Den enda konkreta spec:en jag såg va:
"Hur snabbt kan du generera 500 decimaler på Pi och hur skriver du koden?"
Även om man kan ana en antydan till en annan innebörd från dig beträffande spec:en,
så måste syllogistisk tydlighet råda i dessa "Logiska Kretsar" som vi tillsammans rör oss i.
(who'm I kidding?)Sv:Utmaningen vecka 26
Sv: Utmaningen vecka 26
Vill du ha dem i den decimal eller i en sträng?
För decimal:
double pi = Math.Pi;
double rounded = Math.Rounded(pi, 10);
för sträng:
double pi = Math.Pi;
int precision = 2;
string s = d.ToString ("n" + precision)Sv: Utmaningen vecka 26
Jag anser dock att den som skapar en tråd skall vara så tydlig att ev. följdfrågor
blir överflödiga. Tyvärr är många inlägg tvetydiga vilket ofta bottnar
i tillkortakommanden hos textförfattaren.
Inget hindrar väl att man svarar på den enda frågan i tråden:
Hur snabbt kan du generera 500 decimaler på Pi och hur skriver du koden?
samtidigt som de tidigare radernas fabulerande oxå kan råda?
(dvs att man skrivit nåt prog tidigare samt snackat med chefen)
Så när Pelle klankar ned på PP's förmåga att läsa Spec:en, så kan jag inte
bara låta det bero.
Det är väl uppdragsgivaren som skall vara tydlig med sin spec?
Läs noga och tänk logiskt. You Go PP !
;)Sv: Utmaningen vecka 26
På vilket sätt stämmer specifikationen (som citerad nedan) och min kod inte överens?
<b>Hur snabbt kan du generera 500 decimaler på Pi och hur skriver du koden?</b>Sv:Utmaningen vecka 26
Men ämnet är intressant att ta upp. Hur många % rätt gör en utvecklare ett uppdrag från ett användarfall som skall programmeras i snitt tro? Sv: Utmaningen vecka 26
Sv:Utmaningen vecka 26
Sv: Utmaningen vecka 26
För att förbättra processen så tror jag även utvecklarna skall vara med mycket tidigare så de får en bild av vad som skall uppnås. I vårt senaste projekt har vi jobbat väldigt tätt och utvecklarna har varit med tidigt i processen- det har gett mycket gott resultat också.Sv:Utmaningen vecka 26
Sv: Utmaningen vecka 26
Tyvärr är det alltför ofta som kunden "vet vad han vill ha när han ser det". Det ger inte mycket att gå på om det sägs till exempel att "här är gamla databasen, gör om den till det bättre och skapa ett webbgränssnitt till den" ;)Sv:Utmaningen vecka 26
Och jag har ännu inte fått en förklaring av hur min implementation inte följer specifikation, Pelle. Är det så att den inte gör vad du hade tänkt dig, och som jag borde ha förstått trots att du inte skrev det? Skall man kunna läsa något som står "mellan raderna" och i andra färger än "svart på vitt"?Sv: Utmaningen vecka 26
Det låter ofta väldigt logiskt fel i mina öron när min fru diskuterar något med nån vännina.
Som tur va så kör dom med samma (för mig högst ologiska protokoll) och kan
på kort tid uppnå fantastiskt effektiv kommunikation! Who said two wrongs doesn't
make a right?
Tyvärr leder deras kommunikationsteknik ibland till rejäla missförstånd.
Jag tror man får inse att vi alla kör med olika protokoll och då blir det än viktigare
att man själv vet vad det är man vill få sagt.Sv: Utmaningen vecka 26
Sv:Utmaningen vecka 26
Googlade på 'generera'. Första svaret var http://www.cs.chalmers.se/Cs/Grundutb/Kurser/d1pt/d1pta-98/gentest/gentest.html
Där står: "Det enklaste sättet att generera en lista är att räkna upp dess element."
Detta är precis vad jag gjorde.Sv: Utmaningen vecka 26
"Du är inte säker på hur många decimaler som skall skrivas så därför har du en rutin där du matar in fritt antal decimaler."
Detta är ju den fabulerande delen av tråden, som vissa tydligen tycker ska ingå i uppdraget.
Om man nu väljer att bortse från bristen på Aristotelsk Syllogism (bonnvett) och väljer att tolka in detta
som ett kriterium i uppdraget från Pelle, så kan man om man vill vara skämtsam och tvetydig säga:
Du saknar argument Per! ...du med din rutin ;)
skämtåsido, Nu håller jag ju på dig här Per, och skiljer gärna den fabulerande delen från uppdraget.
Det är så illa med mitt ortodoxa perspektiv på vad som egentligen sägs i denna "spec" att jag kan
irritera mig på delar som "..... rutin där du matar in fritt antal decimaler."
ska jag verkligen mata in decimaler Pelle?
eller menar du typ :
ett heltalsvärde som returnerar rätt antal önskvärda decimaler?
(I'm sick though!)Sv:Utmaningen vecka 26
Sv: Utmaningen vecka 26
>specifikationer. Då drar man sig snart för att fråga, med stor risk att det blir fel.
Om du behandlar specar på jobb likadant som du gjorde i denna tråden så förstår jag helt klart varför du inte jobbar där längre.Sv:Utmaningen vecka 26
- jag skulle behöva en spec !
- jaså, kan du vara lite mer specifik.Sv:Utmaningen vecka 26
Du förstår alltså varför jag sa upp mig?veckans chansning
I think there's a lesson in there for all of us!Sv: veckans chansning
Japp, hitta ett jobb där de som bestämmer vet vad de vill ha. Det gjorde jag.