User loginNavigation |
expressivity of "idiomatic C++"The April issue of C/C++ Users Journal has an article called A New Solution To an Old Problem by Andrew Koenig and Barbara E. Moo. In it, they revisit the Hamming numbers problem from Dijkstra's A Discipline of Programming. They examine four different solutions:
The Haskell solution is the following scale n (x:xs) = (n * x) : (scale n xs) merge xs [] = xs merge [] ys = ys merge (x:xs) (y:ys) = if x == y then x : (merge xs ys) else if x < y then x : (merge xs (y:ys)) else y : (merge (x:xs) ys) seq = 1 : (merge (scale 2 seq) (merge (scale 3 seq) (scale 5 seq))) Their "idiomatic C++" solution uses ordered sets: set<int> seq; seq.insert(1); set<int>::const_iterator it = seq.begin(); int val = *it; seq.insert(val * 2); seq.insert(val * 3); seq.insert(val * 5); it++; In conclusion, they have this to say (emphasis mine),
I may be reading too much into this quote, but it sounds to me like Koenig and Moo consider it a bad thing to require a "totally different way of thinking about programming". P.S. While googling for Hamming numbers, I came across this related paper: Expressivity of Functional-Logic Languages and Their Implementation by Juan José Moreno Navarro. By el-vadimo at 2005-03-29 15:22 | LtU Forum | previous forum topic | next forum topic | other blogs | 80843 reads
|
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
22 weeks 6 days ago
22 weeks 6 days ago
45 weeks 21 hours ago
49 weeks 2 days ago
51 weeks 45 min ago
51 weeks 49 min ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago