Critical Programming Toward A Philosophy Of Computing