What Fun and Useful Programming Language Should I Learn?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Thu Jun 28, 2012 10:38 pm UTC

(Sorry in advance if this is a repeat thread. I tried searching but didn't get anything.)

So, I'm just your typical university CS student--I've got my basic toolbox of Java, C, C++, Python, and so on. What new programming language should I learn for fun this summer? Ideally, something that's interesting but not quite as unusable as, say, Piet or Whitespace.
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

EvanED
Posts: 4331
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby EvanED » Thu Jun 28, 2012 11:16 pm UTC

What functional languages do you know? Do you know Prolog or Datalog?

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Ben-oni » Fri Jun 29, 2012 12:22 am UTC

I recommend Scheme, via SICP. You know how when you were first learning to code you had trouble doing even the most basic things because the syntax kept getting in your way? That will never happen again.

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Fri Jun 29, 2012 5:51 pm UTC

Thanks for the suggestions!

EvanED wrote:What functional languages do you know?

I don't know any of them very well, but I'll be learning some in the coming school year (especially OCaml). I suppose I could get a head start with that--functional programming has always seemed very interesting to me. =)

EvanED wrote:Do you know Prolog or Datalog?

Nope. What's the difference between them?

Ben-oni wrote:I recommend Scheme, via SICP. You know how when you were first learning to code you had trouble doing even the most basic things because the syntax kept getting in your way? That will never happen again.

What do you mean?
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
headprogrammingczar
Posts: 3072
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: What Fun and Useful Programming Language Should I Learn?

Postby headprogrammingczar » Fri Jun 29, 2012 8:31 pm UTC

willaaaaaa wrote:(Sorry in advance if this is a repeat thread. I tried searching but didn't get anything.)

So, I'm just your typical university CS student--I've got my basic toolbox of Java, C, C++, Python, and so on. What new programming language should I learn for fun this summer? Ideally, something that's interesting but not quite as unusable as, say, Piet or Whitespace.

If you decide to learn some Haskell, you will never be a "typical university CS student" again. :D
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you

User avatar
jestingrabbit
Factoids are just Datas that haven't grown up yet
Posts: 5967
Joined: Tue Nov 28, 2006 9:50 pm UTC
Location: Sydney

Re: What Fun and Useful Programming Language Should I Learn?

Postby jestingrabbit » Sat Jun 30, 2012 12:07 pm UTC

headprogrammingczar wrote:
willaaaaaa wrote:(Sorry in advance if this is a repeat thread. I tried searching but didn't get anything.)

So, I'm just your typical university CS student--I've got my basic toolbox of Java, C, C++, Python, and so on. What new programming language should I learn for fun this summer? Ideally, something that's interesting but not quite as unusable as, say, Piet or Whitespace.

If you decide to learn some Haskell, you will never be a "typical university CS student" again. :D


The first year CS curriculum where I studied had us learning a functional language (miranda) right after learning the basics of a procedural language (modula 2, I shit you not). This was before OO was such a big deal though ('94 I think), so they didn't have to worry about that.
ameretrifle wrote:Magic space feudalism is therefore a viable idea.

User avatar
sourmìlk
If I can't complain, can I at least express my fear?
Posts: 6393
Joined: Mon Dec 22, 2008 10:53 pm UTC
Location: permanently in the wrong
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby sourmìlk » Sat Jun 30, 2012 6:47 pm UTC

My dad had colleagues in about '83 that decided to write an OS in an object oriented language. Their professor told them something along the lines of "Why are you using an object oriented language? Everybody knows that logic programming is the next big thing."

I then asked my dad what logic programming was :D
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Ben-oni » Sat Jun 30, 2012 8:01 pm UTC

sourmìlk wrote:I then asked my dad what logic programming was :D

It's functional programming in disguise.

User avatar
sourmìlk
If I can't complain, can I at least express my fear?
Posts: 6393
Joined: Mon Dec 22, 2008 10:53 pm UTC
Location: permanently in the wrong
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby sourmìlk » Sun Jul 01, 2012 4:18 am UTC

I've looked into it since then, but the point was the (at least from my perspective) the professor was laughably wrong. I'd want to go tell him but he's probably dead now.
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.

User avatar
headprogrammingczar
Posts: 3072
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: What Fun and Useful Programming Language Should I Learn?

Postby headprogrammingczar » Mon Jul 02, 2012 1:46 pm UTC

Prolog isn't even that great of a logic language. It's pretty much just the the type level of Haskell, with even wonkier syntax. It's even Turing-complete, so using it as a basis for formal proof is out of the question.
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you

korona
Posts: 495
Joined: Sun Jul 04, 2010 8:40 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby korona » Mon Jul 02, 2012 5:25 pm UTC

Logic programming is quite different from functional programming. When writing a functional program you are actually saying "here are the functions; now compute them". When doing logic programming you are saying "this is how a solution should look like; now prove a solution exists". When you're writing a logic program that computes 1+1 that statement is usually NOT guaranteed to take O(1) time.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Ben-oni » Mon Jul 02, 2012 7:43 pm UTC

korona wrote:Logic programming is quite different from functional programming. When writing a functional program you are actually saying "here are the functions; now compute them". When doing logic programming you are saying "this is how a solution should look like; now prove a solution exists".

There's actually a fairly straightforward isomorphism between functional and logical program construction. It's kinda similar to the relationship between combinatorial logic and lambda calculus. Once you see it, you can go back and forth all day long.

korona wrote:When you're writing a logic program that computes 1+1 that statement is usually NOT guaranteed to take O(1) time.

Only in the sense that it's not guaranteed in any language.

korona
Posts: 495
Joined: Sun Jul 04, 2010 8:40 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby korona » Mon Jul 02, 2012 9:31 pm UTC

Ben-oni wrote:
korona wrote:Logic programming is quite different from functional programming. When writing a functional program you are actually saying "here are the functions; now compute them". When doing logic programming you are saying "this is how a solution should look like; now prove a solution exists".

There's actually a fairly straightforward isomorphism between functional and logical program construction. It's kinda similar to the relationship between combinatorial logic and lambda calculus. Once you see it, you can go back and forth all day long.

Logic programming is much more expressive. How can I get from a set of horn clauses to a functional program that computes a refutation of those clauses without implementing a theorem prover?

Ben-oni wrote:
korona wrote:When you're writing a logic program that computes 1+1 that statement is usually NOT guaranteed to take O(1) time.

Only in the sense that it's not guaranteed in any language.

No. You have to trust the underlying theorem prover to do the correct unifications (or in the Prolog case: know about the order in which unifications are done). In C/C++ you know that int c = a + b will be translated to a single (or a few) machine instructions. A logic program has to compute a resolution refutation to obtain the same result.

Laguana
Posts: 49
Joined: Sat Jan 19, 2008 10:13 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Laguana » Tue Jul 03, 2012 4:35 am UTC

headprogrammingczar wrote:Prolog isn't even that great of a logic language. It's pretty much just the the type level of Haskell, with even wonkier syntax. It's even Turing-complete, so using it as a basis for formal proof is out of the question.


Why do you say that? There are even some very effective theorem provers written in prolog, such as ileanCoP.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Ben-oni » Tue Jul 03, 2012 6:33 am UTC

korona wrote:Logic programming is much more expressive. How can I get from a set of horn clauses to a functional program that computes a refutation of those clauses without implementing a theorem prover?

See The Reasoned Schemer, linked above. It's an easy read. Alternatively, you can try On Lisp, in which Paul Graham demonstrates how to compile a logic program into a functional one.

Haskell has very lovely methods for doing this using the MonadPlus typeclass.

korona wrote:No. You have to trust the underlying theorem prover to do the correct unifications (or in the Prolog case: know about the order in which unifications are done). In C/C++ you know that int c = a + b will be translated to a single (or a few) machine instructions. A logic program has to compute a resolution refutation to obtain the same result.

Oh, so you know how C will resolve the operation, and yet you don't know that there is a maximum time for Prolog to do so? Of course it can be malformed and take infinite time, but you can do that with any Turing complete language.

Laguana wrote:
headprogrammingczar wrote:Prolog isn't even that great of a logic language. It's pretty much just the the type level of Haskell, with even wonkier syntax. It's even Turing-complete, so using it as a basis for formal proof is out of the question.


Why do you say that? There are even some very effective theorem provers written in prolog, such as ileanCoP.

If you turn on all the Haskell language extensions (those concerning type classes, that is), then you get logic programming for free in that you can construct an infinite number of types by making statements about those types in order to describe arbitrary calculations. The syntax isn't great, but it's the gist of logic programming.

Now, the fact that you can write theorem provers in a language isn't evidence that it's a good for proving theorems. And while you can write theorems in Prolog, it doesn't prove any but the most trivial for you. You can write theorem provers in any language. The fact that it's been done for a particular language doesn't say anything.

And don't even get me started on the Law of Excluded Middle.

User avatar
freakish777
Posts: 354
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby freakish777 » Thu Jul 05, 2012 6:32 pm UTC

Some flavor of Scheme/LISP.


C#, PHP, or anything else web oriented (that's used heavily).

korona
Posts: 495
Joined: Sun Jul 04, 2010 8:40 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby korona » Sat Jul 07, 2012 12:55 pm UTC

Ben-oni wrote:See The Reasoned Schemer, linked above. It's an easy read. Alternatively, you can try On Lisp, in which Paul Graham demonstrates how to compile a logic program into a functional one.

I took a look at On Lisp. They basically implemented a horn logic solver with depth first unification in Lisp. Saying that this construction is a straight-forward isomorphism between functional and logic programming is like saying there is a straight-forward isomorphism between C++ and Lisp because you can write a Lisp compiler in C++ and use templates to get a similar syntax.

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Sat Jul 07, 2012 3:33 pm UTC

freakish777 wrote:Some flavor of Scheme/LISP.

C#, PHP, or anything else web oriented (that's used heavily).


I already know C# and PHP. I actually think C# is a very nicely planned out and pleasant-to-use language. :)

Scheme/LISP sounds like a promising choice (based on my 60 seconds on its Wikipedia page). Any suggestions on a dialect to choose?
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
headprogrammingczar
Posts: 3072
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: What Fun and Useful Programming Language Should I Learn?

Postby headprogrammingczar » Sat Jul 07, 2012 5:50 pm UTC

Definitely Scheme. It's arguably as deep as Haskell when you feel like getting down to tricky functional concepts, but until then you can almost write the same as you would in CL or another more imperative lisp.
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you

EvanED
Posts: 4331
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby EvanED » Sat Jul 07, 2012 6:45 pm UTC

headprogrammingczar wrote:Definitely Scheme. It's arguably as deep as Haskell when you feel like getting down to tricky functional concepts, but until then you can almost write the same as you would in CL or another more imperative lisp.

I'm not sure I agree with the second sentence, but I do agree with the first if your goal is to broaden your CS knowledge. There's a lot of material out there for helping to learn Scheme, but in particular there's SICP (an absolutely excellent textbook for an intro CS class) and videos from a course using SICP (technically these are videos from a course based on a course using SICP). Those videos are from 1985 and an older edition of the book, but there are others online, eg. from UC Berkeley: Spring 2012, Spring 2011, Spring 2010. (There are actually several others but they're all by the same guy as Spring 2011 and one of the ones listed for 2010.) Don't be off-put by the fact that these are for an intro CS class -- you'll learn an absolute ton. The guy teaching the last two classes I linked starts off both of them by saying that SICP is the best CS text ever written.

Alternatively, my favorite Lisp for actually doing stuff now is Clojure, hands down. It's less wild than Common Lisp, it's a Lisp-1 like Scheme, but it's more geared toward actual industrial use than Scheme is:
  • They've added things like first-class syntax for dictionaries ({"a" 1, "b" 2}) which aren't even in Common Lisp. This alone almost seals the deal. (Even the libraries you can use in other Lisps to get maps don't feel very Lispy because their APIs operate via mutation -- see SRFI 69; Clojure has reasonably efficient implementations of purely functional dictionaries as well as vectors in the form of an actually really neat and interesting data structure that has the interface of a hash table and performance characteristcs that are between hash tables and balanced binary trees.)
  • Clojure was designed and built with running on the JVM in mind, which means it has first-class interoperability with Java libraries -- which means that anything that you want to do that Java has a library for, you can use. I believe there's also a port to .Net if that's more your thing. (SISC is the closest thing I know -- it's a Scheme implementation that runs on the JVM. However, even with that the interop isn't clean: you have to convert types back and forth and stuff to call Java functions. Clojure's boundary doesn't always give you something that feels Lispy, but otherwise it is completely seamless, as Clojure types are Java types -- e.g. Clojure strings are JVM strings, you can call (.length "abc") if you really want to get the length of a string via a Java call. Finally, the same problem hits C FFI interop in other Lisps -- it's not a clean boundary.)
  • Finally, Clojure has ML-style immutability, which I'm a big proponent of, with an eye toward this being "the solution" to concurrency. That is, everything (well, everything in the Clojure world anyway) is immutable unless explicitly declared otherwise, and then there are explicit operations for retrieving and updating the current value. This gives many/most of the benefits of immutability (if I have a Clojure "hash table" I know it's not going to change behind my back) but still gives an escape hatch to the mutable world relative to something like Haskell. (Common Lisp doesn't try very hard at all of being pure functional. Scheme tries harder but still falls fall short -- not only is there set!, but you also get set-car! and set-cdr!, not to mention the typical APIs for working with non-list data structures which are usually based around mutation.)
The main drawback to Clojure seems to be documentation. Because it's a far newer language there's not as much out there as there is for Common Lisp and Scheme. Furthermore, for some reason I find navigating around and using the offical docs as a sometimes rather frustrating experience. I can't really put my finger on why though.

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Sun Jul 08, 2012 10:22 pm UTC

Thanks for the thoughtful answers :) By the way, this thread inspired me to draw this comic:

http://www.willa.me/2012/07/new-programming-language.html
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
sourmìlk
If I can't complain, can I at least express my fear?
Posts: 6393
Joined: Mon Dec 22, 2008 10:53 pm UTC
Location: permanently in the wrong
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby sourmìlk » Tue Jul 10, 2012 12:10 pm UTC

willaaaaaa wrote:Thanks for the thoughtful answers :) By the way, this thread inspired me to draw this comic:

http://www.willa.me/2012/07/new-programming-language.html

I giggled.

EDIT: I read all of your comics, and I quite liked some of them (e.g. Highbrow and Linsanity), but some 404'd. I have two questions: first, what 12-year-old has facial stubble? I didn't have any until I was 16. And second, what university do you go to again?
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Tue Jul 10, 2012 11:20 pm UTC

sourmìlk wrote:
willaaaaaa wrote:Thanks for the thoughtful answers :) By the way, this thread inspired me to draw this comic:

http://www.willa.me/2012/07/new-programming-language.html

I giggled.

EDIT: I read all of your comics, and I quite liked some of them (e.g. Highbrow and Linsanity), but some 404'd. I have two questions: first, what 12-year-old has facial stubble? I didn't have any until I was 16. And second, what university do you go to again?


Haha, thanks for reading and (sometimes) appreciating. :)

1) As a girl, I went through puberty at 11--guess I forgot that guys are so slow to mature. =P
2) Princeton. A lot of the comics were very Princeton-specific because they were for my school newspaper.
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
sourmìlk
If I can't complain, can I at least express my fear?
Posts: 6393
Joined: Mon Dec 22, 2008 10:53 pm UTC
Location: permanently in the wrong
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby sourmìlk » Wed Jul 11, 2012 1:57 am UTC

I was joking about the university question: it was extremely obvious. I was poking fun at your constant mentioning of it.
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.

User avatar
Shivahn
Posts: 2200
Joined: Tue Jan 06, 2009 6:17 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Shivahn » Wed Jul 11, 2012 5:05 am UTC

willaaaaaa wrote:1) As a girl, I went through puberty at 11--guess I forgot that guys are so slow to mature. =P
2) Princeton. A lot of the comics were very Princeton-specific because they were for my school newspaper.


Puberty's a pretty slow event, really. And beards growing in doesn't happen very fast.

I know plenty of guys who have really obvious and specific starts to puberty who get balding before the beard looks appreciable.

Spoiler:
Second puberties are best puberties. But anyway, yeah, the effects of hormones are weird and often really slow.

User avatar
sourmìlk
If I can't complain, can I at least express my fear?
Posts: 6393
Joined: Mon Dec 22, 2008 10:53 pm UTC
Location: permanently in the wrong
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby sourmìlk » Wed Jul 11, 2012 6:13 am UTC

My dad couldn't grow a full beard until about 22. Also I have a cousin who started balding at about 18, which I think is before he could grow a reasonable beard.
Terry Pratchett wrote:The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Sun Jul 15, 2012 1:10 am UTC

sourmìlk wrote:I was joking about the university question: it was extremely obvious. I was poking fun at your constant mentioning of it.


Haha, okay. =) Like I said, they were for my school paper, so the school-relevance was encouraged.
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
Jplus
Posts: 1721
Joined: Wed Apr 21, 2010 12:29 pm UTC
Location: Netherlands

Re: What Fun and Useful Programming Language Should I Learn?

Postby Jplus » Sun Jul 22, 2012 6:41 pm UTC

To return on topic, and to go in a totally different direction at the same time: while it's a Really Good Idea to study something functional like Haskell/OCaml/Scheme/Common Lisp/Clojure if you haven't done so before, given that you've visited only the "liberal procedural" corner, there are more options if you're looking for a "fun and useful programming language" (in order to broaden your horizon). You could, for example, go with Forth, Smalltalk, Lua or Erlang (the latter is also functional, with syntax similar to Prolog, but the emphasis is quite different from the declarative languages that have been mentioned so far).

That said, Racket is an interesting Scheme dialect that hasn't been mentioned before.
"There are only two hard problems in computer science: cache coherence, naming things, and off-by-one errors." (Phil Karlton and Leon Bambrick)

coding and xkcd combined

(Julian/Julian's)

webzter_again
Posts: 119
Joined: Sun May 27, 2012 4:37 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby webzter_again » Wed Aug 08, 2012 7:21 pm UTC

I'll second Clojure

if you want to stick around the .net space a bit, I'd also recommend Nemerle http://nemerle.org/About/ for funsies.

User avatar
thoughtfully
Posts: 2253
Joined: Thu Nov 01, 2007 12:25 am UTC
Location: Minneapolis, MN
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby thoughtfully » Wed Aug 08, 2012 10:05 pm UTC

Rather than Forth, I'd go with a more modern stack oriented (or concatenative) language, such as Factor.

To keep us language pedants happy, I do need to point out that the stack-oriented languages and concatenative languages are not not exactly the same thing, although the overlap is considerable, depending on which definitions you use.
Image
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
-- Antoine de Saint-Exupery

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Thu Aug 30, 2012 6:50 pm UTC

What kind of sample programs would be appropriate to write for these functional programming languages? I started learning OCaml the other day and was playing with its Graphics package (first program generated a golden rectangle fractal; second was the beginnings of a ray tracer for spheres). I'm not really sure that these examples exploit the strengths of functional programming languages, though.

Also, I might try Haskell just because this tutorial looks like so much fun.
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

tomCar
Posts: 2
Joined: Tue Aug 14, 2012 6:14 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby tomCar » Thu Aug 30, 2012 11:34 pm UTC

Can't sat I've ever finished a Haskell tutorial...but Real World Haskell is my preference as a reference.

If you're interested in GUI stuff, Haskell's GTK+ bindings are easy to use (much more so than C.)

User avatar
headprogrammingczar
Posts: 3072
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: What Fun and Useful Programming Language Should I Learn?

Postby headprogrammingczar » Fri Aug 31, 2012 12:39 am UTC

A website can be a good place to start. It has many entry points, so you tend to notice more quickly when one thing is working out better than another. Your browser is also a zero-dependency GUI, so it's really easy to make things that look impressive (even if they aren't).
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you

willaaaaaa
Posts: 79
Joined: Thu Jun 21, 2012 5:09 pm UTC
Contact:

Re: What Fun and Useful Programming Language Should I Learn?

Postby willaaaaaa » Fri Aug 31, 2012 7:23 am UTC

I got a bit more than halfway through the Haskell tutorial today, and it's really a neat language! I've been trying some Project Euler in Haskell. The mathematical nature of these problems really seems to jibe well with functional programming (although I am running into the same performance roadblocks that came up for certain puzzles with Java or Python...need to think a bit more cleverly!).

Thanks again for all the ideas, guys :)
"If you can't control your peanut butter, you can't expect to control your life." - Bill Watterson

User avatar
Laserdan
Posts: 162
Joined: Tue Dec 27, 2011 3:12 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby Laserdan » Fri Aug 31, 2012 10:35 am UTC

webzter_again wrote:I'll second Clojure

if you want to stick around the .net space a bit, I'd also recommend Nemerle http://nemerle.org/About/ for funsies.


Why thank you sir for the link, didn't know it before. Looks like a great idea, and it has integration with VS (only 2008 so far, unfortunately).
"Sobriety is a crutch for people who can't cope with drugs."

User avatar
MHD
Posts: 630
Joined: Fri Mar 20, 2009 8:21 pm UTC
Location: Denmark

Re: What Fun and Useful Programming Language Should I Learn?

Postby MHD » Fri Sep 07, 2012 12:48 pm UTC

Many of these have already been mentioned.

LISPs: Compile time code generation like no other.
Common Lisp - Maximalist standard library. Productivity wise some of the best you can get. Been around forever, very battle tested.
Clojure - JVM based.
Scheme - Minimalist, good for scripting.

ML family: Program correctness like no other.
Haskell - Hard on the brain, go borrow a textbook on Abstract Algebra and Category Theory for the full experience.
OCaml - Easier on the brain than Haskell, good for production code.
Scala - JVM based.
F# mono - .NET based.

ALGOL-likes:
D - Systems programming done right (C++ did it wrong).
Rust - Mozilla disguising a ML family member as an ALGOL-like.
Go - Google's rather intelligent object oriented, concurrency-centric language.

Other:
Factor - Lisp in reverse.
Smalltalk - The canonical Object/message-centric language.
Io - Inspired by Smalltalk, tastes like Lua. Minimalist scripting language.
Self - Object-centric but without classes.
EvanED wrote:be aware that when most people say "regular expression" they really mean "something that is almost, but not quite, entirely unlike a regular expression"

D-503
Posts: 84
Joined: Sun Apr 15, 2012 11:35 pm UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby D-503 » Sun Sep 09, 2012 6:26 pm UTC

I suggest JavaScript. There are some really amazing tools coming out for doing JavaScript web development. For starters check out meteor. It makes it incredibly easy to put together real time web applications. It has an interesting way of structuring programs where you put most of your UI logic in templates that are hooked up to database queries so they automatically update as the database is updated.
Here's something I was able to put together with it: http://interopticon.meteor.com/

Also check out cloud9, it's an online IDE with some really awesome capabilities. For example, you can run a node.js server from it (for testing purposes), and if you get a free database instance from mongoHQ you can test your persistent storage as well.

If you don't like the JavaScript syntax, check out coffee script, which complies to JavaScript. It's more pythonic and object inheritance is must easier to deal with.

User avatar
sam_i_am
Posts: 624
Joined: Mon Jun 18, 2012 3:38 pm UTC
Location: Urbana, Illinois, USA

Re: What Fun and Useful Programming Language Should I Learn?

Postby sam_i_am » Fri Sep 14, 2012 9:15 pm UTC

learn APL

scipi0
Posts: 3
Joined: Thu Sep 20, 2012 3:23 am UTC

Re: What Fun and Useful Programming Language Should I Learn?

Postby scipi0 » Wed Oct 24, 2012 12:47 am UTC

Learn ruby. It is easy to learn, useful, and all over the web. try http://tryruby.org.

troyp
Posts: 557
Joined: Thu May 22, 2008 9:20 pm UTC
Location: Lismore, NSW

Re: What Fun and Useful Programming Language Should I Learn?

Postby troyp » Wed Oct 24, 2012 9:41 pm UTC

sam_i_am wrote:learn APL

I'd probably recommend J over APL. It's open-source now, has the convenience of ASCII operators, benefits from the lessons Iverson learned from APL and is being actively developed.

Alternatively, another (less terse) vector language is the statistical language R, which is actually quite awesome.

Both these languages are useful, but not so much as general PLs. They're aimed at numerical applications that process whole tables of data at once and are often used interactively.


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 12 guests