adi06; Well, well ...
Programming in general is using what you are accustomed to using. Linux is very liberal with your choice.
Keep in mind though that in linux, there is the kernel, and all is added to this kernel as a module. How you make and attach that module varies widely with the application in particular to what it's end function may be. Editing an existing module, you are going to be working with that source code, in what ever language/prolog that was used originally, prior to (re-)compiling. There is no better teacher than reading and understanding some one else's code.
For ubuntu, you can never go wrong learning - as you now know - some flavor of "C", and python. But one warning I have learned the hard way, If you want to be proficient in "C" have a good understanding of assembly. As one instance; pointers in "C" are difficult to grasp if you do not know assembly; and what is actually going on at the hardware level. It is all a matter of addressing and moving data about.
"C" Has been around for many many years while many others have fallen out of favor. The reason "C" is still prevalent ? .. Because it works and is versatile, applicable to any condition.
If you can think in "C" you can do anything you can imagine, however, other tools might make the chore somewhat easier ... as in python with it's libraries of support.
This is just my opinion, and it is prejudiced as I prefer "C", That was also the 1st high level language I learned ! That foundation has served me well.
Programming is learned by programming -> learning what tools suites you best for a given objective.
any start is better than no start