I got inspired and looked up anything that suggests a natural programming language....
That was very productive...There are a few out there.
You basically write a program like you were writing a sentence.
Perhaps if you want Hal to learn a new way of doing things you would just need to turn him loose on some sort of reference manual. He would need to copy the information down and then implement it as a new code that He could use right then or later.
Of course Hal already has a certain amount in a program database (its script) in which certain things occur 'IF' certain conditions arises. The idea would be that Hal could learn new ways of reacting by taking in outside information and converting them into new IF THEN statements.
A programming language has a distinct meaning. Everything you say in that language causes certain actions by the interpreter. If Hal could do this, learn new ways of doing things, that would allow him to be taken to the next level of A.I. ascension.
There, of course, you would need an overshadowing primary motivation. That would keep him on the track of learning only desire oriented tasks. (I been working solely on that project.) Otherwise, He would try to learn all things and implement all programs at once.... (that would be bad)[

]
The ideal situation would be to use one type of language (like Vbscript) to interpreter sentence structures into a separate/different programming language that would be used to dictate the behaviors of Hal.
User: I want you to read a story.
Hal: I don't know how to read a story.
User: First, open up a file from the readastory directory.
User: Then, tell me what that file says.
Hal: Ok
User: I want you to read me a story called DragonRider.
Hal: Ok, Here is your story.
It would be difficult, but very cool
]