What programming languages should I learn to become an Ubuntu developer? [closed]
Although I have used NetBeans once for a project, what languages do I need to learn to become a full-fledged Ubuntu developer?
My project in NetBeans (Java only) was to design a calculator (relatively easy). Moreover, how do we learn to make image viewers, browsers, etc.?
Also, what would be the best language for certain applications?
The answer is simple and not really helpful. Whichever language is needed. Ubuntu is a ton of software, some of it written in C, some C++, some in Python, Perl, bash... and others. You should definitely learn scripting with bash, and you should pick a language like Perl or Python, possibly the latter. Furthermore, learning good old fashioned C never hurt anyone -- you learn more about how programs work, what are libraries, lots of stuff on other tools.
Otherwise -- first find a task, a niche, something that needs to be worked on or something that is missing or something that is just fascinating and you would like to work on it. And then find out what language will be good for that purpose.
If you are intending to write applications for Ubuntu that can run on multiple devices and form factors (desktop, phone, tablet, TV...), I'd recommend to learn QML and JavaScript. Essentially:
- Use QML to write convergent Ubuntu apps that run across form factors and devices
- Use JavaScript to complement QML when writing Ubuntu apps and to write Ubuntu webapps
You should learn:
- JavaScript: as most UI frameworks/env. are/will be based on JavaScript; you will need it anyway some day or other.
Then for all the rest you will need something else:
- C++/C
- pros: amazingly fast, access to low level features
- cons: lots of time to learn how to write something stable, awful community
- Ruby:
- pros: easy to learn, really pleasing to write, great community
- cons: might be slow for some task (really)
- Python:
- pros: lots of packages are in python, great community, fast, etc.
- cons: python 3 (just kindin')
But there are still many other languages such as Java, etc., however, the above mentioned may be the easier for a start, except C/C++ but which worth learning as you will be able to use it with many other languages (e.g extend python, ruby, etc.)
Programming work consists of both the actual code, and the mental model below it.
Teaching yourself a programming language is easy as long as you have the basic concepts of how computers work, however in order to make useful contributions to a project, you also need to understand the design behind it.
My suggestion is thus to join a project that you take personal interest in and use often, and then start out with quality assurance work:
- if there is a bug report that is somewhat vague, try to replicate the problem, and improve the description. Bonus points for an automated test.
- if there is an old bug that hasn't had any attention for a while, try to see whether it still exists, and update the bug report
- if there are testsuite failures, try to find out what is happening in order that causes this test to fail
This will allow you to learn about the difficult, conceptual part of the project on a manageable learning curve, while keeping your interest (because it is a project you care about) and giving you access to the community around the project. The actual programming language (whichever is used in the project) is something you can pick up on the fly.
For an example of a somewhat gradual entry, look at my contributions to the Beignet project. Knowledge of the programming language (C/C++ in that instance) is certainly not the limiting factor here.