the environment for think like programmer