Subscribe to Jack of all Languages        RSS Feed
-----

Challenge Statement

Icon 19 Comments
I've never been one for learning new languages. Sure, I talk about it loads and dabble a bit, but when it comes to solving a real problem, I always turn to whatever I'm most familiar with. For the last 11 years, that has been Java. Before that it was different versions of BASIC.

So, I'm setting myself a challenge and I'm inviting you to join me. I've picked a bunch of languages and I'm going to learn them all. To begin with I'm going to do some simple programming 101 tutorials , completing each exercise in all of the languages. Maybe I won't master them but I'll surely become a jack of all trades.

Here are my language choices. If you are joining me in the challenge you can either use these or choose your own.

Ruby
I've fancied learning this for a while. Something about the syntax appeals to me. I've dabbled a bit but never really got my teeth in.

Python
Seems like a really good language for writing quick scripts. It's also widely used in bioinformatics which is my chosen field.

Haskell
Other languages here incorporate the functional paradigm, but if I write a Haskell solution I know it's functional. I've dabbled here before and given up at least twice.

Erlang
I hear this makes concurrent programming a doddle, even with its awkward syntax.

C
Always wanted to learn it. With most of these languages fully embracing OO, this will force me to write procedural code too.

C#
Might as well make myself more employable while I'm here!

Javascript
I last played with this in 2000 but browser incompatibilities put me off. I hear it has come a long way since then.

BASH
I've used it when necessary before, but never often enough to get familiar with it.

Smalltalk
I hear good things about this one from the OO world.


There are others that I would like to add to the list but I've got to draw a line somewhere.
One of the outcomes I'm hoping for is that I'll begin to see which languages give better solutions for various problems.

Thanks for reading. What do you think? Planning on joining me?

19 Comments On This Entry

Page 1 of 1

Dogstopper Icon

12 October 2011 - 06:35 AM
Sounds like a good Challenge! Good luck to you.
1

hookiethe1 Icon

12 October 2011 - 06:49 AM
I'd love to do something similar after I graduate when I have more spare time. Maybe even tackle "52 weeks of code." I've done a little functional programming in SML and it really beat me up. I've also tinkered with Smalltalk and it was pretty enjoyable, look for squeak, I believe that's the IDE of choice. Good luck!
1

Sergio Tapia Icon

12 October 2011 - 06:52 AM
Switch Haskell for Clojure and you have a good list. ;)

I've noticed that Haskell jobs are very unannounced. Not many people know the language because there are other good enough alternatives that don't require you to have a PhD in Computer Science.
1

master.bennett Icon

12 October 2011 - 08:48 AM
I definetly interested in joining this challenge. I have already spent more than 6 months with Haskell as apart of my 1st year and quite enjoyed it & and Im currently studying Javascript.

I'll be going for:

C#: employability, also learn about the .Net framework
Ruby: maybe for web apps in future?
C / Python : Im leaning towards Python cuz i've dabbled a bit in it but gave up
1

cfoley Icon

12 October 2011 - 08:54 AM
Aaah but I was born, raised, live in, went to university in, and went back to university in Glasgow. How could I resist Haskell?

Thanks for the rest of the suggestions. I'll take a look. The language list isn't finalised, and I'll add and remove them if I feel like it.

I'm part way through installing all the stuff I need. For now, I'm going to try and use Geany as my development environment as much as I can, but as I attempt increasingly complex tasks I'll be looking for more specific IDEs.
0

Curtis Rutland Icon

12 October 2011 - 11:21 AM
Well, as to IDEs, when you get to C#, stick with VS. It's as good as it gets for that kind of development. If you're desperate for cross-platform stuff, MonoDevelop isn't the worst thing ever, but it's still not a patch on C#.

Also, rather than just learning "C#" the language, I'd suggest picking a technology and going with that. For instance, ASP.NET MVC 3. It uses C#, but for a specific purpose. That way, you learn the language, but also something useful as well.
1

ishkabible Icon

12 October 2011 - 11:53 AM
cofely, add Lua :) it's pretty unique and far more simple than anything you currently have listed. metamethods are sexy, and allow you to do something no standard polymorphic system would allow
1

cfoley Icon

12 October 2011 - 03:02 PM
Curtis, sounds like good advice. I'll look into that one. To be honest though, C# is the language I'm least excited about. The main reason it's there because none of the other languages are likely to help much in finding a job, and I'm likely to be looking for a job within the next 6 months. That's not a slight against the language, it just doesn't scratch the same itch as the others.

ishkabible, Lua was on my shortlist. I originally had about 20 languages and narrowed it down to the ones above. Lua was one of the last to be cut and I have heard a lot of good things about it. Any chance you could give me a short and simple example of one of these metamethods in action?
0

Curtis Rutland Icon

12 October 2011 - 03:51 PM
Well, hopefully once you get into C#, you'll discover how much fun it can be. It's like Java, if Java were allowed to grow at a faster pace. As in, we have a lot of functional elements that Java lacks, as well as a better Generics system.

Hope you enjoy it.
1

fromTheSprawl Icon

12 October 2011 - 05:19 PM
Nice challenge! I've tried a little bit of Python and I really like it. Maybe I'll do this challenge too, ^^
1

fromTheSprawl Icon

12 October 2011 - 05:20 PM
There is a problem with writing basic tutorials though, is it okay to do one even if the same topic has been covered? For example: "Loops in Python"?
1

cfoley Icon

12 October 2011 - 05:29 PM
When I said "do a tutorial", I meant find some tutorial questions on the net and write solutions in each of my chosen languages. :)
0

ishkabible Icon

12 October 2011 - 06:15 PM
cofely, here is a quick example of meta-methods and meta-tables. this isn't the coolest thing i have seen done with meta-methods but it shows that Lua gives you full control over how your objects work. basically each table can have 1 meta-table. depending on which operation is preformed a different meta-method from the meta-table is called, it doesn't sound like much but it can do some really cool stuff.

local Square = {}              --the "class" Square so to speak, Lua can emulate classes very well but dosn't actully support them
Square.mt = {__index = Square}  --store the metatable
local Triangle  = {}           --the "class" Triangle
Triangle.mt = {__index = Triangle} --store the metatable

function Square:area() --fancy syntax for Square["area"] = function(self) a "method" if you will
	return self.l * self.w
end

function Square.new(t) --a constructor
	return setmetatable(t, Square.mt)
end

function Triangle:area()  --"method" notice they are the same, this allows us to emulate polymorphism
	return self.l * self.w / 2
end

function Triangle.new(t) --a constructor
	return setmetatable(t, Triangle.mt)
end

local test = Square.new({l = 10, w = 10}) --construct a new square
print(test:area()) --use ':' fancy syntax for test["area"](test)

setmetatable(test, Triangle.mt) --now it's a triaglnle, it's like changing the v-table dynamicly

print(test:area()) --now it calls the triangle area method

setmetatable(test, Square.mt) --now it's a square again

print(test:area())
1

ishkabible Icon

12 October 2011 - 06:17 PM
O, and i forgot to mention. becuase meta tables are themselves tables, they too can have meta-tables and as such meta-methods, this can be used to implement inheritance or something else like quickly "merging" a small number of tables
1

fromTheSprawl Icon

12 October 2011 - 06:56 PM
That's clearer. Hope you succeed! I'll try too, lets both do our best! ^^
1

cfoley Icon

13 October 2011 - 01:16 AM
Looks interesting. Think I will add Lua after all.

fromTheSprawl, it's good to have a companion. Are you choosing your own languages or using my list?
0

fromTheSprawl Icon

13 October 2011 - 07:34 PM
I'll do your list, since I've already started learning some Python and I'm interested with Lua too. Plus my other machine has Visual Studio installed, I'll learn C and C# while I'm at it. Smalltalk, Erlang and BASH I'm unfamiliar with, and functional programming I haven't tried. This will be fun! My only problem would be the amount of time for me to learn these languages, since the only PC I have is the one on my workstation. So I guess I'll sneak the learning once I'm in idle time.
1

cfoley Icon

14 October 2011 - 03:32 AM
I guess there is no hurry in learning these. If you didn't join in, you would only be learning Python. There is no rule saying you have to stick to all these languages. If it gets too much for me, I know I am going to lose a few and if one of them starts to bore me, I have a long list of alternatives I'd like to try!
0

jon.kiparsky Icon

27 April 2012 - 10:42 PM
I suppose I'm an inadvertant fellow traveller on this challenge. I've been working in javascript for my job and returned to C for a private project that's caught my attention, and there's also some dorking around in python lately. Ruby has been sitting out there for a while, and Haskell is something I feel I ought to learn just for self-defense against the pretentious Haskell snots you run into from time to time. I might not learn the whole list, but it's a good list to know.

So at the moment, I have C and javascript in active development, and there's a few python ideas waiting in the wings.

For what it's worth, one of my favorite exercises for early language learning is the old Basic game Hamurabi. It's not difficult in any language, but it does exercise certain basic structures and functions, and there's enough to it to make you sharply aware of the differences between language paradigms. Certainly an implementation in Java looks nothing like an implementation in Lisp, and that's a good thing for this purpose.
0
Page 1 of 1

Trackbacks for this entry [ Trackback URL ]

There are no Trackbacks for this entry

July 2014

S M T W T F S
  12345
6789101112
13141516171819
2021222324 25 26
2728293031  

Tags

    Recent Entries

    Recent Comments

    Search My Blog

    0 user(s) viewing

    0 Guests
    0 member(s)
    0 anonymous member(s)

    Categories