
On 05/05/2013 11:41 AM, Adrian May wrote:
Half a decade is nothing to most programming cultures. A newbie looks for sample code and blames himself if he can't get it working.
I ran into this kind of trouble when I was starting to learn Haskell. I had error messages like that : test.hs:1:8: Could not find module `List' It is a member of the hidden package `haskell98-2.0.0.2'. Use -v to see a list of the files searched for. I then proceeded to figure how to include this haskell98 package, and later ran into other problems. Perhaps this message could be hard coded to tell the user that this is deprecated code, and he should use Data.List instead. This certainly would be friendlier, but I am unsure it would change anything about adoption: * all major tutorials are up to date * almost everyone understands the concept of bit rot, and, as it has been demonstrated, it is much more manageable than with other "production ready" languages * google works fairly well Everything changes all the time in the javascript and ruby world, but this doesn't seem to reduce adoption. There have been several people pointing out the case of PHP. I would say that with an ageing codebase, you can't upgrade your distribution because the little things that change will break your code in places you don't even imagine. With a 10 years old Haskell program, you can choose to upgrade the codebase, or you can stick with your old binary.
it would be cool if people could tell the compiler to behave as it did half a decade ago when the code was written so people could prove to themselves that the code works in principle, then they could clock the compiler forward little by little, reading its release notes along the way.
But how would that work ? You would need some archaeologist to tell you how old the code is so that you could give the proper flags to the compiler. But if you know how to do that, then you know exactly how to fix the code. But you already can do this all by yourself : just install every compilers.