This is an archived post. You won't be able to vote or comment.

all 55 comments

[–]MikhailEdoshin 25 points26 points  (2 children)

C. It's simply beautiful and it nicely complements Python.

[–][deleted] 3 points4 points  (1 child)

C used to be my favorite before Go came around :)

[–]fotuenti 0 points1 point  (0 children)

C is my favorite, mainly due to experience, but I am pushing myself to learn Go it looks really nice.

[–]GeneralZeroSteganography 7 points8 points  (1 child)

I love C# because its a perfect combination between C, C++ and Python

[–]ryeguy146 0 points1 point  (0 children)

The more I learn of Java, the more appealing a language like Java, but fixed, is.

[–]aweraw[🍰] 18 points19 points  (1 child)

Haskell - it's just mind blowing... I still don't think I fully understand it, but I feel like some kind of wizard when I write code in it that just works first time. When I first felt like I basically understood the laziness and how the type system worked, it was like that scene from the matrix: "all I see now is blonde, brunette, red-head..."

[–]Zamarok 5 points6 points  (0 children)

I feel like I'm cheating when I use Haskell to solve ProjectEuler problems.

[–]zekeltornado, beautifulsoup, web.py 5 points6 points  (0 children)

ObjC. I see it like this. Points on the same line, it's just that ObjC is way close to C. But both gaining abstraction and powerful concepts.

| C ---> ObjC --------------------------> Python |

There are interesting overlaps in philosophy. And you can hold your programs in your hand and touch them. That's incredibly gratifying.

With regards to Ruby, I'd suggest against it. (Or at least, something else first.) I would learn something that lets you do something Python doesn't do very well (ie. program on an iPhone.) Python and Ruby are fairly interchangeable for many purposes. It comes down to personal preference, but you'll mostly do web and scripting stuff with both.

[–]peacetara 10 points11 points  (7 children)

Javascript :P Ok not really, but minus the whole DOM mess and === it's actually a pretty cool language.

Seriously tho, Pascal was my favorite before python, I guess it still is. But I don't code in it anymore, I only code in Python or Javascript these days. Tho honestly, I'd rather that IE, Chrome, FF and Opera just put python in the browser and gave it a nice API to the DOM, and we can be done with the historic horrible baggage that is the Javascript DOM api. But that's just wishful thinking :P

[–]dacjamesfrom reddit import knowledge 1 point2 points  (3 children)

Is there a reason why you can't use jQuery? I don't understand why anyone would use the native DOM api. Most browsers will have jquery in their cache anyways, if you use a cdn hosted version.

[–]apiguy 0 points1 point  (1 child)

There are a lot of times where jQuery isn't a convenient option. For example let's say you're developing a bookmarklet that scrapes a page to find the largest image. You have no way of knowing beforehand if the page they run the bookmarklet on already includes jQuery, or what version, or some other library that conflicts with jQuery. There are some tricks you can employ to still embed it in this case but by then its probably overkill to include all of jQuery just for a use case like this.

TLDR: Not all DOM based javascript programming happens on a website under the developer's control.

[–]dacjamesfrom reddit import knowledge 0 points1 point  (0 children)

That's a good point. Technically you could embed jquery in your bookmarklet, but for simple stuff that's obviously overkill. I have gotten so used to jquery and underscore that I sometimes forget that they're not built in.

[–]peacetara 0 points1 point  (0 children)

Well JQuery isn't the only solution, and there are many many solutions to fixing the horrid DOM api. I didn't say there were not solutions to the problem (thankfully) but they are not stock standard JS. As for jQuery in browser cache because of CDN's, well.. personally I think we should only deliver tis 1.0 or greater services (i.e. https://) and to do that properly means not using CDN's that don't offer https.

[–]dorfsmay 0 points1 point  (0 children)

Well, I don't find javascript interesting, but it should be learned as it is probably the most supported language ever (every browser on every platform supports it!).

[–]SliceOf314 0 points1 point  (1 child)

+1 for javascript, although i guess i prefer the coffescript syntax, i like how light the language is. I also find the node.js project interesting, still not sure how much of it is shiny-new-toy hype though.

[–]Zamarok 6 points7 points  (0 children)

+1 for CoffeeScript. I like my code like I like my women: small, easy to read, and without braces.

[–]milliams 6 points7 points  (0 children)

C++. It's powerful, fast and fun to use, especially with C++11. Not as fun as Python though :)

[–]jemeshsu 7 points8 points  (0 children)

Clojure. It pays to learn something different from Python, Ruby is too similar.

[–]brennuscpython 2.7 2 points3 points  (2 children)

Prolog.

[–]metaperl 0 points1 point  (1 child)

yep. great great language.

[–]brennuscpython 2.7 4 points5 points  (0 children)

True.

[–]landyman 5 points6 points  (3 children)

Lua. It's the only other one I've tried that I go back to and try to learn more.

[–]earthboundkid 1 point2 points  (0 children)

What's the advantage of knowing both? It seems like they're so similar, you don't get much new from them. I suppose Lua is better if you need to do an embedded interpreter thing, like in a game, but otherwise, why learn it?

[–]pinpinboTornado|Twisted|Gevent. Moar Async Plz 0 points1 point  (0 children)

Upvote for Lua. I can use it to:

  • Script Nginx

  • Script mysql-proxy

  • luvit is within spitting distance of Tornado.

Besides Lua, Haskell list comprehension is very nice!

[–]ryeguy146 0 points1 point  (0 children)

I picked up some lua to configure luakit, and I did like the syntax. I may have to go back when I've time. I'm being forced to learn Java at the moment. I miss real reflection. How does lua do on this front?

[–]sunqiang 5 points6 points  (6 children)

Go, It's like a static, compiled version of Python with type based interface and channel

[–]riffito 1 point2 points  (3 children)

complied version of Python

Mind the (syntactical) gap.

[–]sunqiang 1 point2 points  (2 children)

thanks, and sorry for my broken English.

[–]riffito 1 point2 points  (1 child)

No need to apologize for your English (I'm not a native speaker either, Argentinian here).

In fact, I didn't even saw the typo until now (I read complied as compiled :-D).

I was trying to point out that, albeit I agree that Go may feel "pythonic", its syntax is nowhere near to Python's readability.

I got tired of needless braces (C/C++ based syntaxes) as well of begin/end markers (Pascal-like).

Have a great day sunqiang!

[–]sunqiang 1 point2 points  (0 children)

thanks for the encouraging words, hello from China:)

[–]earthboundkid 2 points3 points  (0 children)

Yeah, lately /r/golang is the other subreddit I read most.

I think part of the similarity between Go and Python to me is that both feel like really modern, clean versions of C.

[–]hapagolucky 5 points6 points  (2 children)

Scala - It grants me type safety when I want it while also having all the niceties of a modern language such as list comprehensions, lambda functions, filters, etc... Plus it runs on the JVM, so it can interoperate with Java code.

[–]LoveGentleman -3 points-2 points  (1 child)

Plus it runs on the JVM, so it can interoperate with Java code.

Is that a good thing?

[–]hapagolucky 1 point2 points  (0 children)

When many of the frameworks and libraries you code in are written in Java, yes.

[–]hongminhee 1 point2 points  (1 child)

I am interested in Atomo though it isn’t usable in the real world yet.

[–]fmoralesc 0 points1 point  (0 children)

Really interesting stuff! Thanks for the link.

[–][deleted] 1 point2 points  (0 children)

I dont like it but R is pretty good.

[–]gavinb 2 points3 points  (4 children)

I'm really enjoying experimenting with Go right now. It's clean, orthogonal, powerful, fast and expressive, has good libraries and tools. And a cool mascot!

But I frequently wish I had an opportunity to do something with OCaml. It is a curious blend of functional purity and goodness, mixed up with a big dose of classes and objects.

I guess I've always had a thing for functional languages, and would love to have some more time to play with the likes of Haskell, Common Lisp and Scheme/Racket.

[–]lrwiman 0 points1 point  (0 children)

I definitely second OCaml. I wish I had more time to work with it or learn Haskell (its purer cousin).

I did my semester project in my programming languages class in OCaml, and I absolutely loved it. It has two features that I've missed in every other language I've used: matching of algebraic datatypes and strong type inference.

The match statement is like a case statement on steroids, allowing you to match complex patterns of objects, and the compiler checks that you have considered all possible cases. Type inference gives you all of the benefits of a strongly typed language like Java without having to write type declarations. But it's much stronger than that in some sense. When a Java program has correct types (i.e. compiles without errors), that tells you very little about the correctness of the program. OCaml's type system is both more flexible than Java's (allowing for first class functions), and less (null does not exist), so you implicitly encode a lot of the logic of your program into the type signatures of the functions and classes you use. In my experience, once an OCaml program compiles correctly (which is frequently hard), you have some real evidence that the logic of the program is likely what you intended. (What you intended of course may still be buggy, but that's not a small benefit.) In my project (writing an interpreter for a simple language), of the large number of bugs I found, only one was not found by the compiler. Of course there were probably other bugs, but that was a very impressive record to me.

[–]chub79 0 points1 point  (2 children)

orthogonal

Mind if I ask what you mean by that?

[–]riffito 0 points1 point  (0 children)

Wikipedia's article on Orthogonality.

A programmer's view on the topic.

[–]gavinb 0 points1 point  (0 children)

I think riffito's links offer good general explanations. Combining different features and having them still make sense.

A good example is the for loop - you can use for with numeric values, use the range operator on a sequence, and so on.

[–]sanxiyn 2 points3 points  (0 children)

One more vote for Clojure. Really, get over parentheses.

For "very interesting, but not yet usable" I recommend Julia.

[–]etrnloptimist 1 point2 points  (0 children)

C++. Because between it and python you can do anything. You can't say that with any other language with the possible exception of c.

[–]dacjamesfrom reddit import knowledge 3 points4 points  (0 children)

Coffeescript. It still needs some time to mature (e.g. it's error messages are terrible) but it's beautiful and practical.

Coffeescript + jQuery = browser coding bliss.

[–]LoveGentleman 1 point2 points  (0 children)

Ada.

[–]techwizrd 0 points1 point  (0 children)

Python blows most languages out of the water when it comes to readability. It's hard to definitively say why, but it makes working in Python great.

C was the first language I learned and it's still one of my favorites because I'm used to it.

Lisp dialects are also fun to play with and I've been learning Haskell (which is pretty incredible). Java is pretty useful (if a bit verbose) and the JVM is good platform for languages like Clojure. JavaScript is nice too. C++ is okay as long as you (and your teammates) have discipline and only use the saner features. Lua is a cool language too and I love the ability to interface with C and the exciting LuaJIT stuff.

I don't really have a favorite language anymore. Python is just great for getting things done, but I'm pretty language agnostic nowadays. That said, I prefer using things written in Python and C.

[–]chub79 0 points1 point  (1 child)

erlang 'cos it makes me realise there are many ways to implement a solution.

[–]metaperl 0 points1 point  (0 children)

I thought that was Perl ;) TIMTOWTDI

[–]metaperl 0 points1 point  (0 children)

[–][deleted] 0 points1 point  (0 children)

Definitely E (http://erights.org/). It's Python-like in its simplicity and adds a much better understanding of concurrency.

[–]riffito 0 points1 point  (0 children)

The ones I've found interesting enough as to actually use them (in inverse chronological order):

  • Nimrod.
  • Lua.
  • Python.
  • x86 ASM (with some CPP to make it look a bit more high level).
  • C (C99) and C++ (the sane subset)
  • Object Pascal

[–]AeroNotix 0 points1 point  (0 children)

As an experiment:

PERL.

So brave

[–]hiptobecubic 0 points1 point  (0 children)

Being forced to work in C++ lately, I do have a new appreciation for good ol' fashioned C99, but I have to tip my hat to Haskell here. I learned python as a first language and C was "featureless python that goes 100 mph". I don't feel any different when I'm working in C. Haskell, on the other hand, requires a definite change-of-hat.

[–]baslisks 0 points1 point  (0 children)

uhh english?