3 ms·
Thank you for your response. From my experience, you're very right about resources to learn Python being very beginner-friendly. I believe I can build the proto
by scobar 12y ago
Thank you for your response. From my experience, you're very right about resources to learn Python being very beginner-friendly. I believe I can build the prototype faster in Python, so that's what I'll do.
I don't care how my resume may be affected, so that's irrelevant to my decision. The idea of a language that evolves with the project is too tantalizing to ignore. So, I'll learn Clojure by writing fun side-project programs with it. From what I've read, learning both languages well will make me a better programmer anyway.
- brudgers 12y agoFor side projects, have you considered Racket? Like Python there's a beginner friendly ecosystem - it might be argued that it has a better one based on Racket being the product of several decades of research into the problem of teaching programming languages. Being a Lisp, it doesn't have the backwards/forwards compatability issues of Python 2/3 and of course has the Lisp goodness of Clojure [1]. Unlike Python, the community tends to row in the same direction because the active development community is strongly rooted in academia. This also means that just about every software theory gets rolled into the ecosystem as someone's graduate thesis or a professor's publish or perish publication. Yes, I'm a fanboy (but if it's any excuse it's because I'm a Lisp fanboy). Another option for learning FP is Scala and Functional Programming Principles in Scala by Martin Odersky just started on Coursera [Odersky designed Scala]. Like Clojure, Scala runs on the Java Platform, and is designed to address some of the same programming issues. Racket: http://docs.racket-lang.org http://docs.racket-lang.org A long but great presentation on Scala: https://www.youtube.com/watch?v=LH75sJAR0hc https://www.youtube.com/watch?v=LH75sJAR0hc Odersky's Course: https://www.coursera.org/course/progfun https://www.coursera.org/course/progfun [2] [1] And you can tell your friends that you are using the same programming stack as was used by PG for Hacker News even if it's a bit of a stretch it does have some snob appeal. [2] Odersky's course is loosely based on SICP but using Scala.
- scobar 12y agoI hadn't considered Racket nor Scala. The first I'd heard of Racket was while reading about Arc. Thank you very much for the suggestions, and for the links to get started. It's off topic from my original question, but what's your opinion of Arc? Is it a good idea to try to learn it as my first FP/Lisp language, or learn another first and explore Arc afterward?
- brudgers 12y agoMany of the issues PG addresses with Arc are those he encountered as a professional programmer in Common Lisp - the project is more analogous to Clojure or Scala than Racket in that way. That's not to say that you can't use it. People have worked through SICP in Arc. The question is what makes this better than MIT Scheme or Racket? I've read through PG's tutorial. It claims to be for anyone, but there's a lot of discussion about fairly specific Lisp idioms - I don't think it's all too beginner friendly. In fairness, introductory tutorials where the messy interwoven details of the real world are left out doesn't seem to be consistent with PG's thinking, I don't think he's a big fan of dumbing things down, but I could be wrong. Unlike Racket, Arc is very much batteries not included. And there aren't libraries full of them. Almost anything you want, you will need to build yourself. It's the hard way that's harder than Zed Shaw. Think On Lisp sort of programming. http://www.paulgraham.com/onlisp.html http://www.paulgraham.com/onlisp.html --- Edit --- What the hell, I'll just go all in. If you're serious about Functional Programming, then why not Haskell? The documentation and community is pretty strong and it forces you to think about side effects and use strong static typing. I don't like Python. I've tried and I've tried. Parenthesis may be visually unappealing, syntactic white space is mentally unappealing. And the whole 2/3 incompatibility suggests IE 6 and Cobol [which I find Cobol actually interesting with it's focus on data and emphasis on readabiilty]. Maybe if I was doing scientific computing, I'd use Python, but only if I could not afford Mathematica. To me, and one of the reasons I wanted to like Python is that I grew up watching Flying Circus in the 70's, turned my son on to Holy Grail when he was five [thereby giving him an excuse to blame me for his adult problems], and have the 16 Ton DVD's. But my snarky conclusion is that Python needs the gimmick to distract attention from it's warts. It just doesn't work for me, though. Spam and eggs is cute, but it the effort might have been better spent. Python is better designed than JavaScript. But JavaScript is unapologetically kludgy as to merit respect. I do like Ruby. It's design is elegant and for general scripting, it's going to be just as fast. Mix in mixins for objects and blocks for higher level function passing and it's got a lot going for it. One of the big things for me that it has over Python is explicit `end` statements for blocks - Python ends blocks by indentation which means that formatting errors can give GOTOfail type errors. Coming back to Scala, it reminds me of ML. It has the same sort of light syntax. The only reason I wouldn't use it over Python is the overhead of the Java platform - if you've got Java's libraries, you probably don't need Python's. If you're on Windows, then C# and F# and TypeScript make a lot of sense. Lot's of documentation, lots of libraries, solid IDE, and the equivalent of the JVM you get for free. Prolog is pretty cool. I here Smalltalk changes the way people think about programming, and I've toyed with learning Drakon. http://drakon-editor.sourceforge.net/ http://drakon-editor.sourceforge.net/