21. september 2001 - 01:04
#2
Algoritmeforståelse har ikke noget med det ene eller det andet programmeringssprog at gøre, det er mer noget med metodik og selvdisciplin.
Sprogene kommer så ind i anden række når man skal vælge imellem flere mulige algoritmer til løsning af samme problem.
eksempel.
problemet: At spise en skålfuld havregrød.
mulige algoritmer er så (der er sikkert flere)
sekventielt.
spis skefuld efter skefuld indtil skålen er tom.
rekursivt.
spis en skefuld og spis så restan af hvad der er i skålen.
concurrent.
hvis der ikke er mere i skålen en der kan være på en ske så spis det.
ellers
opdel skålen i to og genstart denne process for hver halvdel.
alle 3 algoritmer får grøden spist. Du skal så vælge den der er \'bedst\' udfra diverse kriterier, såsom hvilket sprog der skal bruges, hvad slags computer det skal køre på, osv osv.
i pascal, c, c++ vil man som regel vælge den sekventielle, den passer til sprogets måde at tænke på.
i Java vil man kikke på andre kriterer for at vælge mellem den sekventielle og den concurrent.
i Lisp, Prolog og Forth er man nærmest nødt til at vælge den rekursive algoritme.
på en multi-CPU vil man prøve at vælge den concurrent, og nok gøre det i Java og C++.
mvh JakobA
ps: jeg skal nok komme med et par links.
21. september 2001 - 01:28
#4
jakoba:
Jeg tager hatten af for dit eksempel!!
Efter min mening er det ikke så meget computer eller sprog der afgør hvilken algoritme man benytter. Det er ofte problemet man har der afgør hvilken algoritme man bør bruge.
Fx hvis man gerne vil sortere n tal kan man gøre det (i næsten alle sprog) sekventielt (i.e. bubble sort).
Det tager n*n operationer (sammenligninger af tal) - også kaldet O(n*n). Hvis man er smart kan man gøre det O(n*log(n)) i næsten alle sprog med en Devide And Conquer algoritme (det jakob kalder concurrent) (i.e. quick sort).