Please help me make up my mind!

Code junkies hangout here

Moderators: ChrisThornett, LXF moderators

Please help me make up my mind!

Postby blundakat » Sun Aug 19, 2012 2:03 am

Hello

I have always been interested in learning to program and as a result have flitted between many different languages without actually settling on one, resulting in a very basic knowledge of a few language but not enough to program anything. I would like to be able to master one then move onto the next one if needed. The languages in which I have dabbled are Java, Assembly, VB, VBsctript, C and SQL. When I say “dabbled” I mean I have read the first few chapters of a reference book, so if you were to show me a piece of code I could probably tell what it was programmed in but not what it does!  I realise this question is very subjective but I would like to know from your experience what language you would learn first? Bearing in mind my aim is to contribute to open source software. Any insight would be much appreciated!
blundakat
 
Posts: 13
Joined: Wed Jul 18, 2012 9:53 pm

Postby Dutch_Master » Sun Aug 19, 2012 4:26 am

Depending on your other skills, in order:
  • assembler
  • C++
  • Python
Or the exact reverse ;)
Dutch_Master
LXF regular
 
Posts: 2440
Joined: Tue Mar 27, 2007 1:49 am

Postby Bazza » Mon Aug 20, 2012 9:02 pm

1) Python 3.x.x.
2) ANSI C.
3) Shell programming.

Contrary to what DM says, FTTB steer clear of Assembly... ;o)
73...

Bazza, G0LCU...

Team AMIGA...
User avatar
Bazza
LXF regular
 
Posts: 1476
Joined: Sat Mar 21, 2009 11:16 am
Location: Loughborough

Postby einonm » Tue Aug 21, 2012 10:14 pm

I think the most important thing in learning a language is having the motivation. You mention that you're aiming to contribute to an OSS project, so I'd suggest finding one that you have an interest in ( e.g. if you're into photography, nudge wink, go for a photo editor), and learn the language used alongside trying to understand the project's code. That way, you also pick up useful domain knowledge which can be more complex than the language itself.

Contrary to what DM says again (soz), I'd stay clear of C++ as a first language, as everyone uses it in their own particular way which can be confusing for the beginner. IMHO Python would probably be your best bet, followed by C.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." --Brian Kernighan
einonm
 
Posts: 29
Joined: Fri Apr 20, 2012 10:19 am
Location: Cardiff, UK

Postby AndyBaxman » Wed Aug 22, 2012 3:50 pm

einonm wrote:I think the most important thing in learning a language is having the motivation.

I quite agree. Nothing worse than trudging through a load of dull examples that will never do anything useful (for you).

As to language. Personally I'd choose either Java or C#. These are rich, but strongly typed languages that run on virtual machines (freeing you from the the drudgery of memory management). I'd steer clear of scripting languages like Javascript (horrible object paradigm) or Perl (Where producing the most obscure code is seen as some kind of badge of honour). Python is good, but, IMHO, learning a language with "C" style syntax will give you knowledge that is portable to many more languages.

Personally having enormous fun coding Minecraft (Bukkit) extensions (in Java). The expression on the kid's faces when the chicken they hit explodes with the force of a small nuclear device is something to behold.........
Bomb #20: "Let there be light"
User avatar
AndyBaxman
LXF regular
 
Posts: 523
Joined: Tue Oct 04, 2005 8:47 am

Postby blundakat » Sun Aug 26, 2012 9:19 am

I do like gaming so maybe I could contribute in that area? Or am I being too ambitious?
blundakat
 
Posts: 13
Joined: Wed Jul 18, 2012 9:53 pm

Postby Dutch_Master » Sun Aug 26, 2012 12:23 pm

If you'd think you could develop a new gaming platform, then yes: too ambitious ;) But I'm sure developers would welcome your efforts in bug-finding (and -reporting!) to improve their games, or translate it into foreign languages.
Dutch_Master
LXF regular
 
Posts: 2440
Joined: Tue Mar 27, 2007 1:49 am

Postby leke » Sun Aug 26, 2012 2:06 pm

I think your first language should be suitable for the type of things you wish to code.

I love coding web apps with php because there's so much open source php code to reuse out there.
If you like making humble games, check out Löve, a game engine you can program with Lua code.
If you want to get into Android development, Java is good investment.

I'm a little like you, I can't keep mind focused on one language while being enticed by others. I'm currently being distracted by newLisp :roll:
User avatar
leke
LXF regular
 
Posts: 503
Joined: Mon Oct 22, 2007 5:45 pm
Location: Oulu, Finland

Postby AndyBaxman » Mon Aug 27, 2012 9:23 pm

blundakat wrote:I do like gaming so maybe I could contribute in that area? Or am I being too ambitious?


Quite the contrary. Writing bukkit server extensions is rather straightforward and you can get fun things happening really quickly.

Not actually "contributing", as such. There is a published API for extensions which can be used to modify the server to react to custom commands or handle events differently to standard.

See here for more info:-
http://wiki.bukkit.org/Plugin_Tutorial
Bomb #20: "Let there be light"
User avatar
AndyBaxman
LXF regular
 
Posts: 523
Joined: Tue Oct 04, 2005 8:47 am

Postby Bruno » Tue Aug 28, 2012 12:16 pm

Have a look at http://www.codecademy.com. It contains many exercises designed to take you from beginner onwards. It has quite a strong web slant (html, css, js, etc.), but has recently published a python track. It is free and I have been using it recently to update my html and css skills.
User avatar
Bruno
LXF regular
 
Posts: 139
Joined: Tue Sep 18, 2007 6:07 pm
Location: Cambridgeshire, UK

Postby Ram » Tue Aug 28, 2012 2:40 pm

Bruno wrote:Have a look at http://www.codecademy.com. It contains many exercises designed to take you from beginner onwards. It has quite a strong web slant (html, css, js, etc.), but has recently published a python track. It is free and I have been using it recently to update my html and css skills.


I'll second that, having just finished the current Python course.

There some good tutorials at http://www.tuxradar.com/code

lubuntu LXDE 13.10 running on AMD Phenom II*4; ASUS Crosshair III Formula MB; 4 GB Ram.....
User avatar
Ram
LXF regular
 
Posts: 1675
Joined: Thu Apr 07, 2005 9:44 pm
Location: Guisborough

Postby blundakat » Tue Aug 28, 2012 8:07 pm

Making some Minecraft plugins sounds pretty cool.

I think java is the language to learn for me then, will have to play minecraft first though! :)
blundakat
 
Posts: 13
Joined: Wed Jul 18, 2012 9:53 pm

Postby guy » Tue Aug 28, 2012 8:49 pm

Wrong question.

Ask what Open Source software project grabs your hormones. After that, go find out what language it's written in.

Writing code for something that doesn't get you out of bed is just a yawn.
Cheers,
Guy
The eternal help vampire
User avatar
guy
LXF regular
 
Posts: 1071
Joined: Thu Apr 07, 2005 12:07 pm
Location: Worcestershire

Postby tweetiepooh » Fri Sep 28, 2012 5:02 pm

I like Perl and you don't have to programme in an obscure manner. That said what I think is a strength some look as a weakness and that is the Perl philosophy of "More that one way to do it".

There is a wealth of learning material out there and the O'Reilly books are excellent. "Learning Perl" is a really good way to get programming quickly and being untyped and unstructured means you can get doing the stuff straight away. I remember looking at Java and having to write loads of code for "Hello world!" I found off putting.
Others would look at this another way in that having structure and typing forced on you encourages you to programme better.
User avatar
tweetiepooh
 
Posts: 10
Joined: Fri Jun 30, 2006 4:02 pm

Postby Crispy » Thu Oct 18, 2012 1:05 pm

I agree that its probably best for you to find a project your interested in and then learn the language that is used in that project.

However, if you just want to learn a language with no real project in mind then I would say it depends on what you want to learn, or what you want to do? For example, if your not too worried about some of the lower level stuff, but would rather create nice GUIs then C# or Java (maybe C++) would probably be the best place to start.

Having said that, I found C++ a complete mess when I first started; I didn't really understand what was happening. But having started to learn C, C++ seems to make more sense and so sometimes learning the lower level stuff can be beneficial. As for C# / Java, I found that they were very easy to use but weren't that flexible sometimes, largely due to the lack of pointers. Hence I found that I was often writing a lot more code than I would have in C or C++ to accomplish a particular task. However, that is definitely task dependent. I also found that with C# / Java I didn't feel I "learnt programming", most likely because they are high level languages, I think. So it does completely depend on what you want to learn/do.

In terms of languages like Perl or Python, I believe they are more scripting languages than programming languages, as I don't believe they use a compiler, they just use an interpreter? But I am unsure so perhaps someone else can clarify that - I've never learnt Perl or Python. If I'm right, then I would say if you want to learn programming, a scripting language probably wouldn't the best place to start.
Crispy
 
Posts: 57
Joined: Mon May 31, 2010 6:35 pm


Return to Programming

Who is online

Users browsing this forum: Google [Bot] and 2 guests