Programming Languages in Linux

Contribute code & patches
Forum rules
No support questions here please

Programming Languages in Linux

Postby TechGuyAndrew on Mon Nov 11, 2013 1:58 pm

What are the best programming languages to learn for programming in Mint, and GNU/Linux in general? I am a high school student with an interest in contributing code to Linux projects, so I'm wondering what languages (programming of course) I should become proficient in? Right now I know some Java, and am interested in learning more languages, just which ones? Right now I would like to become proficient in about three languages, which is about the most I think I could handle.

Thanks to all,
Andrew
--
Andrew
Administrator of 3 systems running Mint 16, Cinnamon 64-bit
Mint user since November 2013
NOTE: I only check this forum weekly, so you will have to give me some time to respond.
User avatar
TechGuyAndrew
Level 2
Level 2
 
Posts: 79
Joined: Thu Nov 07, 2013 2:10 pm
Location: Central Florida, USA

Linux Mint is funded by ads and donations.
 

Re: Programming Languages in Linux

Postby ninomrki on Mon Nov 11, 2013 2:04 pm

Python and C++ are what people generally use
Home is where the Wi-Fi is.

Registered Linux user #562302
User avatar
ninomrki
Level 2
Level 2
 
Posts: 90
Joined: Wed Jan 16, 2013 7:49 pm
Location: Zagreb, Croatia

Re: Programming Languages in Linux

Postby passerby on Mon Nov 11, 2013 5:58 pm

Mostly C, from the look of things. But it depends on what area you're interested in contributing to.
Cinnamon applets, for example, seem to be mainly (completely?) javascript.
MDM HTML themes are... well, HTML. And CSS/javascript.

fwiw, the transition from Java to C, C++ and/or javascript is fairly straightforward. No need to learn a completely new syntax.
Though header files and pointers may throw you at first :lol:
Home PC: Xubuntu 14.04 x64, Nvidia GTX650, i7 3770K, 16GB RAM, Asus Xonar DX
Work PC: Mint 13 x64 XFCE, Nvidia GT620, i5 3470, 8GB RAM
Laptop: System76 Kudu Pro, Xubuntu 14.04 x64

My HTML5 login themes + screenshots
User avatar
passerby
Level 6
Level 6
 
Posts: 1373
Joined: Sun Dec 16, 2012 7:29 pm

Re: Programming Languages in Linux

Postby xenopeek on Tue Nov 12, 2013 5:10 am

Linux kernel development is done in C. Probably majority of Gtk+ applications are also C. Majority of Qt applications are C++, and Qt has one of the best IDEs on Linux (Qt Creator). Qt has the benefit of being cross-platform, letting you develop applications that will also run on Windows, OS X, and mobile devices. Python is a good language to have under your belt also, as you can build Gtk+ and Qt applications with it and also easily write some console tools if you need them. All the Mint tools are written in Python (Software Manager, Update Manager, etc.).

Cinnamon/MATE/Xfce are primarily Gtk+ environments, and KDE primarily a Qt environment. But Gtk+ and Qt are just toolkits for writing graphical applications and they work on other desktop environments just as well. For example, VLC--a Qt application--is installed by default on Linux Mint Cinnamon/MATE/Xfce. More and more projects are shifting to Qt (like Ubuntu is shifting there, as is LXDE) so it may be worth your time to learn to work with Qt Creator.

If you want to write Cinnamon applets and the like, those are indeed all Javascript + CSS.

But don't limit yourself :) I've done programming for almost 30 years now and used to pick up a new programming language every one to two years. I've done everything from x86 Assembly to, well, a lot :) I've only programmed Java for a short time though; IMHO it's a horrible and verbose language. My personal favorite these days is Python, as it does just what I need.
User avatar
xenopeek
Level 21
Level 21
 
Posts: 14565
Joined: Wed Jul 06, 2011 3:58 am
Location: The Netherlands

Re: Programming Languages in Linux

Postby TechGuyAndrew on Thu Nov 14, 2013 2:11 pm

Okay. So what do you recommend a "newbie" should start working on/contributing to first, regarding Mint? I am eager to participate and be active in Mint's development, I just don't know enough languages yet.

Also, could someone throw out some good resources for learning these languages with?

Thanks,
Andrew
User avatar
TechGuyAndrew
Level 2
Level 2
 
Posts: 79
Joined: Thu Nov 07, 2013 2:10 pm
Location: Central Florida, USA

Re: Programming Languages in Linux

Postby xenopeek on Thu Nov 14, 2013 3:51 pm

If you want to contribute to Linux Mint development, here are a some ways you could approach that:

(1) You could contribute to Cinnamon by developing applets, desklets, or extensions.
These are all done in JavaScript and CSS (at least applets and desklets, not sure about extensions). You can download those that others made to learn from, as they are open source. Find them here (and click on desklets or extensions to see those): http://cinnamon-spices.linuxmint.com/applets. There is a bundle of reference material for applets, desklets and extensions on the Cinnamon Wiki: https://github.com/linuxmint/Cinnamon/wiki. The SegFault developer blog would also be interesting and has many posts with regards to new APIs introduced and examples how to use them: http://segfault.linuxmint.com/.

As for learning JavaScript and CSS, erm, I wouldn't know a good source to learn these today but I think there are plenty of good tutorials and sites to find. Perhaps W3Schools is a good one? http://www.w3schools.com/. One very handy website would be DocHub, which has a quickly browsable reference for various languages (including JavaScript and CSS): http://dochub.io/. I've used that a lot in the past, but it's not very helpful to start learning a new language--but a good reference to have once you start finding your way.

Most JavaScript and CSS sites will focus on web development, and of course won't have documentation for the APIs that Cinnamon adds (the aforementioned Wiki and blog do cover those), so I think you will really want to look at some of the work done by others to make things click for you :)

(2) You could contribute to Mint tools by doing bug triaging and fixing.
The various Mint tools can be found on https://github.com/linuxmint. At the right edge of the screen you can see what language each project there is in. So, if you want to focus on Python, the Mint tools are for you :) Major ones would be mintinstall (Software Manager), mintupdate (Update Manager), mintsources (Software Sources), mintwelcome (Welcome Screen), and I'd say mintbackup (Backup Tool), though as you can see there are a few more.

You'll need a GitHub account and learn your way around GitHub and git--as for triaging and fixing bugs you will want to run the development version of the Mint tools. GitHub have a great interactive 15 minute training to learn the basics: http://try.github.io/levels/1/challenges/1. Perhaps also the walkthrough of the features on the website would be useful: https://github.com/features

Basically for this you would look at the list of issues for a Mint tool, pick one, and see if you can reproduce the issue. If you can't reproduce the issue at the development version of the Mint tool, comment! Be concise but descriptive of the steps you took to try and reproduce the issue. Perhaps the original poster of the issue, or others affected by the issue, will come forward with more information. But if you can reproduce the issue, fork the Mint tool (that is, click the "Fork" button in the top right of the Mint tool's GitHub page--so you get a personal copy of the development files) and you can now try and work on the code to fix the issue. If you manage to fix an issue in your tests (great :D), do a pull request (that is, use the button for that on your own GitHub page's copy of the development files, to ask for your changes to be reviewed by the Linux Mint developers and be merged back to the development version of the Mint tool).

Now, before you pitch in, it's a good idea to seek alignment with the development team on what they are doing (perhaps they are thinking about doing a rewrite for a Mint tool, making your efforts not timely). To do so, join the #linuxmint-dev IRC channel. At least come say hi to the Linux Mint developers and other contributors :D To join, just open XChat from your menu to join various Linux Mint chat and help IRC channels automatically and then in any type /join #linuxmint-dev to join the developer IRC channel. Good idea to also browse the issues for a Mint tool on GitHub first and look at who has do commits to the code, so you know which developers are the ones you might want to try and catch on IRC.

Finally, for learning Python... The Mint tools are, currently, all written in Python 2.7. There is also a Python 3 version, which isn't fully compatible with Python 2. So be clear you are trying to learn Python 2.7--though I'd say most of what you'll learn will easily be usable in Python 3 also, with a few adjustments for specific differences introduced in Python 3 (http://docs.python.org/3/whatsnew/3.0.html). I'd say for learning Python there are a few good places:
(3) You could contribute to Mint tools by implementing new features.
Everybody of course wants to implement new features :) IMHO it's a good idea to get a good feeling for the code base by first doing some bug triaging and fixing. Anyway, the issues list on GitHub may also have feature requests or you may spot something on Linux Mint's "TODO" list: https://github.com/linuxmint/Roadmap. For both I'd say here you should even closer align with the developers on IRC, so you're not duplicating effort by spending time on some major new feature that somebody else may already be working on. Or implement something that doesn't align with the vision of Linux Mint :(

Well, here's my braindump. I hope you pick up on a few of these tips and find your way to do some programming! I'd say start with something small to find your bearing, and get more involved with bigger tasks if you enjoy it. And don't be hesitant to ask for help! Age shouldn't hold you back either, there have been various younger people contributing actively to the various projects (the youngest was esteban1uy, fixing a critical Cinnamon bug at age 13).

Clem on most of his blog posts invites new people to not hesitate to join the development, so I can't stress joining the developer IRC channel enough, as also when you get stuck with using git or GitHub you'll usually find somebody friendly there that will be willing to help you.

Edit: upcoming soon, expecting within 1-2 weeks, the Linux Mint 16 release candidate will be out. Issues people have will be commented on the blog post (http://blog.linuxmint.com/) with the announcement of the release candidate. That might also be a good opportunity to get started a bit. And I forgot to mention, but having another Linux Mint installation running as a virtual machine on VirtualBox might be a good idea. VirtualBox is easy to set up a new virtual machine with, and that way any experimenting you do will never risk you damaging your primary Linux Mint installation.
User avatar
xenopeek
Level 21
Level 21
 
Posts: 14565
Joined: Wed Jul 06, 2011 3:58 am
Location: The Netherlands

Re: Programming Languages in Linux

Postby passerby on Thu Nov 14, 2013 6:14 pm

Good source for programming tutorials: http://thenewboston.org/tutorials.php
Depends on the speaker though; not all of the videos were done by the same person.
Home PC: Xubuntu 14.04 x64, Nvidia GTX650, i7 3770K, 16GB RAM, Asus Xonar DX
Work PC: Mint 13 x64 XFCE, Nvidia GT620, i5 3470, 8GB RAM
Laptop: System76 Kudu Pro, Xubuntu 14.04 x64

My HTML5 login themes + screenshots
User avatar
passerby
Level 6
Level 6
 
Posts: 1373
Joined: Sun Dec 16, 2012 7:29 pm

Re: Programming Languages in Linux

Postby TechGuyAndrew on Fri Nov 15, 2013 10:37 am

Okay, so now I signed up for github, joined the linux mint community, and am starting a course in python programming. One further question I have is about the irc-dev channel. I don't really understand how to get on/ or get signed up for that. Other than that, I hope to start contributing to the Mint project in a few months.

Also, as kind of a side note, does Mint have any annual developer meetings. I know Ubuntu does, so I was just wondering if Mint did.

Thank you all. I really appreciate everyone's time.
--
Andrew
Administrator of 3 systems running Mint 16, Cinnamon 64-bit
Mint user since November 2013
NOTE: I only check this forum weekly, so you will have to give me some time to respond.
User avatar
TechGuyAndrew
Level 2
Level 2
 
Posts: 79
Joined: Thu Nov 07, 2013 2:10 pm
Location: Central Florida, USA

Re: Programming Languages in Linux

Postby xenopeek on Fri Nov 15, 2013 11:28 am

Linux Mint doesn't have annual developer meetings. It's a smaller scale project as compared to Ubuntu or Debian. There have been regular meetings on Mondays in the IRC, and one-on-one Skype is sometimes used.

As for IRC, just open XChat from your menu (or Konversation on KDE). You should automatically join to the channels #linuxmint-chat and #linuxmint-help (see the tabs at the bottom of the window). In either tab, you can type the command /join #linuxmint-dev (so in the same text line at the bottom where you can type messages) and a new tab will open with the #linuxmint-dev channel.

If you go to the XChat menu, you can select Network List from there. Click the Edit button with Linux Mint selected in the list. You see there your "Favorite channels" and can also add #linuxmint-dev to that list, so it automatically opens when you open XChat. If you have registered a nick, put your password in "Nickserv password" field here, and on the Network List dialog (so after you close the Edit Linux Mint Server dialog again) then also fill that nick there on the user information. That way when you open XChat it will also automatically set your registered nick.

To register a nick, do the following. Set your nick first with the following command, replacing username with your desired username to use on IRC:
Code: Select all
/nick username

Then request to register it to you. Replace password with the password you want and email with your email addres:
Code: Select all
/msg NickServ REGISTER password email
User avatar
xenopeek
Level 21
Level 21
 
Posts: 14565
Joined: Wed Jul 06, 2011 3:58 am
Location: The Netherlands

Re: Programming Languages in Linux

Postby passerby on Tue Mar 18, 2014 2:02 am

tairoylance112 wrote:I want to learn a new programming language, just for something to do. I'm building a Linux rig pretty quick here, so what's a good language to learn? I want something that's not brutally complicated, but is still useful. Thanks :)


Python is a good language for beginners. It's lax in regards to syntax, and you don't have to worry about a lot of the nitty-gritty stuff present in other languages.
Despite being easy, it's without a doubt useful. Some of the Mint tools are written in python (eg. mintMenu).
Grab a good python book/tutorial, a text editor with syntax highlighting (eg. geany) and you're ready to go.
Home PC: Xubuntu 14.04 x64, Nvidia GTX650, i7 3770K, 16GB RAM, Asus Xonar DX
Work PC: Mint 13 x64 XFCE, Nvidia GT620, i5 3470, 8GB RAM
Laptop: System76 Kudu Pro, Xubuntu 14.04 x64

My HTML5 login themes + screenshots
User avatar
passerby
Level 6
Level 6
 
Posts: 1373
Joined: Sun Dec 16, 2012 7:29 pm

Re: Programming Languages in Linux

Postby var on Thu Jul 24, 2014 10:08 am

TechGuyAndrew wrote:Okay. So what do you recommend a "newbie" should start working on/contributing to first, regarding Mint? I am eager to participate and be active in Mint's development, I just don't know enough languages yet.

Also, could someone throw out some good resources for learning these languages with?

Thanks,
Andrew


Either start small with C or start a GUI app in Python using PyGTK or QT. C is not difficult, but a lot of people make it look horrible by poorly coding in C.
var
Level 1
Level 1
 
Posts: 33
Joined: Mon Jul 14, 2014 1:29 am

Re: Programming Languages in Linux

Postby killer de bug on Sat Jul 26, 2014 7:50 am

At the moment, Python is a really good choice. Most of the tool from Mint are written in Python.
If I have seen further it is by standing on the shoulders of giants. [Isaac Newton]
User avatar
killer de bug
Level 7
Level 7
 
Posts: 1613
Joined: Tue Jul 08, 2008 1:49 pm
Location: Austria

Linux Mint is funded by ads and donations.
 

Return to Code & Patches

Who is online

Users browsing this forum: No registered users and 2 guests