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.
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?
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.
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

hookiethe1
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!

Sergio Tapia
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.

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.

master.bennett
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
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

Curtis Rutland
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.
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.

ishkabible
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


Curtis Rutland
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.
Hope you enjoy it.

fromTheSprawl
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,


fromTheSprawl
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"?

ishkabible
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())

ishkabible
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

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


fromTheSprawl
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.

jon.kiparsky
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.
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.
Page 1 of 1
Trackbacks for this entry [ Trackback URL ]
← March 2021 →
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
My Blog Links
Recent Entries
Recent Comments
Search My Blog
0 user(s) viewing
0 Guests
0 member(s)
0 anonymous member(s)
0 member(s)
0 anonymous member(s)