There is no such thing as true freedom. This is probably a true realization. In my understanding, freedom means, minimizing the level of dependence. As a programmer, we used to think we have a true freedom in computer stuff, as it seems we can do whatever we want to do. It is true, in fact, at least in theory, but in practice we simply cannot do. We think about a problem and make a conceptual design in our head to solve that particular problem, and then select a programming language to implement. This is a typical scenario.
But the problem is to map our conceptual model into a programming language. This is not an easy task to do as we are heavily dependent on programming infrastructure. Sometimes we have to wait for the language designer to update certain things (we used to joke about Java updates), and if we require additional power from the IDE, we must wait for IDE vendor. Most importantly programming language has simple and few notations that can be expressed in comparison with our natural language. Most of the cases we the programmers spent our time to find ways to express our conceptual model in terms of programming level abstractions which is difficult and not creative and more or less waste of time.
So where’s our freedom? Are we not locked in some ways.