I'm thinking of learning a few new programming languages. At the moment, I'm considering Erlang, Fortran, Haskell, Mathematica, Matlab and Scala.
I currently know:
+ C
+ C++
+ Python
+ x86[_64] assembly language
as well as
+ Javascript
+ PHP
+ Bash/Sh
+ Perl
although I could not write anything more complex than a few useful shell scripts with Javascript, PHP, Bash/Sh or Perl. In PHP, for example, I am basically writing C code with dollar signs.
You know I would recommend Scala, but Haskell is great, too. If Scala didn't exist, Haskell would be the next language on my list. You might also consider Erlang. Also quite interesting and very powerful in doing things in parallel.
@L B
It's mostly because I didn't learn those languages properly. Javascript and Bash I picked up soley by reading and writing code, PHP and Perl I read about and wrote a very small amount of code in. If I had done both (read about and read/wrote code) I probably would be somewhat competent in those languages as well, but I don't care to learn them properly because all I need them for is writing basic scripts. Python and C/C++ suit every other purpose, and I only need to know assembly language because I'm interested in operating systems and bootloader code, which has to include a certain amount of assembly code.
Edit:
@xorebxebx,
Ok. I'll take a look at Erlang. I've also thought about Matlab; I've heard that it's often used on supercomputers because it parallelizes well.
@Kyon,
I actually was going to learn Lolcode at one point; but decided not to.
@helios,
I've bookmarked that tutorial already. As for the logo, it appears to say "Laskell" which is strange.
Lolcode is one of those languages that are fun to show off with; look what I made! HAI I CAN HAZ STDIO? But it's generally not really interesting. I have, however looked into some of the other esoteric languages, Befunge being one of them. I recently wrote this Befunge Script that will return a digit between 0 and 7 (inclusive), it works bitwise, too.
1 2 3 4 5 6 7 8 9 10
>v v#v# <
>?> >?>?>0v .
v v > 10v +
>?> 01 0v +
v v > 11 v *
>?>?> 0 0v 2
v > 10 1v \
>?> 01 v *
> 11 1v4
>>>>>>>>^
I currently know:
+ C
+ C++
+ Python
+ x86[_64] assembly language
as well as
+ Javascript
+ PHP
+ Bash/Sh
+ Perl
I like this skillset. I would consider going further in-depth with them rather than picking up something else just to lengthen the list. Is there a specific need that these technologies do not address?
@Return 0,
Ok. I'll add that to my list of considerations
@Duoas,
I heard Scheme was a functional language that was less "pure functional" than Haskell. I might learn that to make Haskell easier. As for TCL; I don't really know because I already know a few scripting languages.
@moorecm
I want to learn a functional programming language or two.
I'm developing one that is written more like a mark up language then anything if you want to learn that :O You'll have to wait several years until I get off my ass and actually finish it though.
; <- denotes a comment
<use> "/home/user/bi0/CLI.bi0" </use> ; pretty much include in c
<bi0> ; This is the entry point to the main program
<call>Echo("Sup, planet?", CLIOut)</call> ; calls function Echo without output CLIOut defined in CLI.bi0
<call>Pause(10)</call> ; Defined in the CLI.bi0, busy waits for 10 seconds.
</bi0> ; this is the end point of the main program
<def=Echo(input, output)> ; defines function prototype
input -> output ; places input into output, in the case of our program that is the class CLIOut which outputs directly to terminal
</def>
Output is:
/bin~$ bi0> Sup, planet? ...
/bin~$ bi0> 'Done'
is it cumbersome? you bet. Do I care? not even remotely. Originally it was just for the fun, but my prof is thinking about showing it to the CSC 141 (basically an html 101 class) instructor as a way to bridge the gap between static webpage design and programming for his students. By using a familiar syntax to learn the concepts of programming, it'll be easier to teach them more advanced languages such as PHP, Javascript, etc, things to make dynamic pages.