3 ms·
Architecture heavily depends on the language. You have to make different choices for C++ than for Java, not mentioning Haskell. Also, I think that comma before
by thesz 15y ago
Architecture heavily depends on the language. You have to make different choices for C++ than for Java, not mentioning Haskell.
Also, I think that comma before "the right" in Norvig statements means logical AND. If we rewrite that statement it will look like that: if you have the right overall architecture AND the right team of programmers AND the right development process that allows for rapid development with continuous improvement, then many languages will work for you.
I think it is too many AND's here. In most realistic situations you cannot have such luxury.
Also, choice of Haskell (or similar language) allows you to address at least two points from Norvig statement: the right team and right development process.
Those who learned and applied Haskell almost cannot form the wrong team. Almost - as we cannot rule out failure completely.
The right development process is almost ensured by strong type system. Type systems like Haskell's can be viewed as a tool to spread requirement changes through complete program.
(that's why it is seemed hard to introduce or change a constructor in a data type)
So all in all I think that languages make a difference here. For many languages you should fulfill those three points, for some languages those points fulfill themselves.
- eru 15y agoAs much as I loath Java and co, I have to give them that their mature development tools make up a bit for their weakness. I.e. in Haskell you make a change to a type and propagate it, until the compiler stops complaining. In Java you click some `refactor' button in your IDE, and your changes will propagate through the code base automatically. That's less of a comment on the languages, since Haskell will probably grow better tools some day, but more a comment on the relative stages of maturity.