later edit: Ok, I misread your original message.
What programmer do you have ?
For PICs, get MPLAB X from microchip :
http://www.microchip.com/pagehandler/en-us/family/mplabx/ It has several compilers built in, you just start a project, write code, select a compiler, compile the code, program the chip. If you have a pickit 3, you can select it as a programmer from the interface and simply program the chip from the interface.
--------
If you want to go the PIC route, the programmer is pickit 3.
You can buy it from Microchip, Farnell, Digikey, anywhere pretty much, but it costs about 45$:
Details :
http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=PG164130Stores:
http://www.microchipdirect.com/ProductSearch.aspx?Keywords=PG164130http://uk.farnell.com/microchip/pg164130/debugger-pickit-3-icd-dspic-usb/dp/1771323http://www.digikey.com/product-search/en?x=0&y=0&lang=en&site=us&KeyWords=PG164130You can also get the programmer with a pcb that has a PIC18 built in and a small prototyping space to put parts on :
http://uk.farnell.com/microchip/dv164131/debug-express-pickit-3-pic-dspic/dp/1686530http://www.digikey.com/product-search/en?x=0&y=0&lang=en&site=us&KeyWords=DV164131+You write the code in MPLAB X (a ide) and hit compile and you get the hex files and also write the hex directly from MPLAB X into the chips, no need to worry about selecting hex files manually.
With Atmel chips (attiny atmega328 etc) you can find cheaper programmers, third party programmers etc, you could also make your own... that's where you may have to learn how to use hex files.
Arduino boards can be programmed through usb because the arduino board has a small bootloader code in the chip which allows the chip to receive your code through usb and program itself with the new code. This way you don't need a special programmer.
However, if you want to make smaller boards or just buy chips for less than a dollar and want to program them, you will need a standalone programmer.