At what point do you "know" a programming language, you ask?
Unfortunately this is a little bit subjective because programming encompasses a lot of different aspects, with varying levels of expertise, skill and experience.
However we won't go into too much detail and instead skip the fine points and rather generalize a little bit. I would say that most of you knowledge of a programming language is dictated by your ability to solve problems using that language, however this isn't entirely part of the whole picture. Of course you must know the programming fundamentals, and also the basics and intrinsic of how your chosen programming language works (this means things like syntax, object-oriented concepts, functional concepts, etc).
Because there are often so many different ways that you can solve a particular problem (both with any language *and* with the same language), this sort of thing is often hard to answer. Specifics like function parameters are not really applicable to this situation as they are not part of the actual programming language itself, but rather for the end result (for example you may know the C language, however you may not know how to use Win32 COM. Does not knowing how to use COM mean you don't know C, no - of course not!). These things are of course necessary to solving some problems so there is a little bit of a fine line. But for the moment, we need to take helper libraries and APIs out of the picture because it clouds our vision a little bit (how's that for a mixed metaphor!).
In my opinion, if you are comfortable with solving a problem with writing code straight out (i.e. not sourcing it elsewhere, and not copying it), then I believe you have sufficient knowledge of a programming language. It is the knowledge of the
concept that is important here - the building blocks of your chosen language and knowing how to piece them together is of critical importance when answering your question.
Hopefully that helps..
