I use a programmer that came, well the PCB did, with the Myke Predko's book Programming and Customizing the PIC Microcontroller. Can't recommend the book but it was cheap (well mine was) and with a downloaded copy of MPLAB and the C18 compiler I've been programming away in C happily. I've always thought C a better language to program hardware in than Basic (discuss*) but each to their own.

Unless you are happy as a pig in sh*t with a soldering iron and a scope (which, sadly, I am) I'd buy the PicKit or one of the other proprietary tools.

:)


*The main advantage for me - non-CNC related - is that there are a lot of C libraries out there for CANBus, TCP/IP stacks and on the latest PICs USB interfacing, all of which I have used - none of which are easy program in Basic. For the un-initiated CANBus is the network that talks to the engine management system on most modern cars... I did some projects linking that to a laptop via a wireless connection to monitor and adjust engine management parameters in real-time.