Ask HN: In which modern language/environment/framework is programming a joy?
Later, I purchased an Amiga and was full of excitement and joy when I learned how to use AMOS BASIC. It was more powerful than Apple BASIC, and I could use a mouse and graphics utilities such as Digi Paint to create bitmaps for sprites.
In recent years there have been few programming experiences that rival those early days. Ruby on Rails was a joy to discover after Perl and PHP. But as it evolves, I find keeping up with new features and best practices tiresome.
Yesterday I downloaded the Android SDK and followed the "hello world" tutorial. After completing it I had almost no desire to continue developing on that platform. The emulator took several minutes to load and many of the instructions on the developer site were confusing or plain wrong.
Are there any modern programming environments that are simple, fun, and a joy to use? It seems strange to me that as computer hardware has grown increasingly powerful and software tools more sophisticated, making programs that take advantage of these advances has not become easier or more enjoyable. On the contrary, programming seems to become more frustrating as it advances, like always trying to keep up with a frantically moving target. Am I missing something that can bring back my early joy or discovery, or am I just being nostalgic?
93 comments
[ 2.8 ms ] story [ 150 ms ] threadIt sounds like you might like Smalltalk or even XCode and Cocoa (Interface Builder, etc.).
Erlang/OTP and Erlang web stacks (Mnesia/CouchDB, Yaws/MochiWeb) are a lot of fun.
http://www.youtube.com/watch?v=-VGM_jAzPj8
I'm also trying Pygame and Pyglet and for a hobbyist game programmer it's very enjoyable not having to deal with C/C++ memory management crap.
PS: I think most programmer still have a fondness for their first coding environment because when your young everything is awesome, especially computers :) I have good memories of writing an adventure game using QBasic.
Yeah, not as fun.
- Already installed on the Windows 3.1 machines.
- Whitespace isn't significant. It's obvious to me how a program should be indented, but it's not to a beginner. Missing ENDFOR is much clearer than Incorrect Indentation.
- No modules. Anything I have to explain as "it's magic" is a potential source of problem.
- LINE (30,40)-(100,50), BF to draw a rectangle. The Pygame equivalent is somewhat longer, mostly due to having to setup a window.
- The IDE was better. The help facility, in particular, was positively wonderful compared to what you get with help(...)
Once these hurdles are overcome, Python does provide better capabilities, but it's not quite the perfect beginner language that I expected it to be.
Of course, once a person feels comfortable with virtually any LISP dialect, they usually LOVE it.
Really! Flash got me hooked on programming. In school everyone else was bored making loops in Java and I was making a Ball bounce around the screen. Draw, code, play, repeat. Plus it runs everywhere! Personally, I suggest skipping the IDE and compile it directly from classes for free.
http://www.senocular.com/flash/tutorials/as3withmxmlc/
the type system is divine, its hard at first put 'real world haskell' can really help with that.
others that i've had great joy with recently...
smalltalk - now using everyday and loving it ( might not meet the modern criteria ) clojure - purr
if you are looking to do web dev, give the smalltalk framework seaside a look.
For web frameworks, Rails for me is still awesome. Merb is also nice (even though I've used it less since the news it's being merged into rails), as is sinatra.
What to develop for the clientside and serverside? What about Firefox? maybe a desktop application? I have recently become obsessed with learning this wonderful language that has so much potential.
To measure this properly, perhaps we could look at the eagerness with which children learn programming now as compared to fifteen or twenty years ago.
(Not general purpose, admittedly, but very very satisfying.)
That combo makes it crazy easy to maintain a bunch of web apps and explore/publish different ideas.
Long-term, I want to drop Ruby and go to Factor (http://factorcode.org/). You can do some amazing cool stuff in Factor that is next-to-impossible in Ruby/Python/Java/etc. It's hard to find a blog post or a screencast that shows you stuff like parsing functions and macros that let you mold the language to your needs. (The documentation on them is pretty straightforward after you learn the basics.)
Then there's the postfix notation. Most people think that's Satan's love child. It takes some time to get used to.
In Ruby:
In Factor:[EDIT] earlier today I cleaned out several bookshelves. I tossed about 100 old tech manuals...I kept all the Smalltalk/V books ;)
http://shoooes.net/
(Writing SBCL instead of clojure was also nice, but ultimately the cruft of common lisp made it difficult to continue.)
Paredit mode makes it even prettier. Paredit mode makes sure that a) the buffer contents are always a balanced sexp and b) you can mostly use the same keystrokes as normal editing.
the cruft of common lisp made it difficult to continue
What, specifically? Perhaps I've simply adapted to not noticing it, because apart from its relative verbosity (for a Lisp) I find CL quite nice.
Clojure's error messages reminded of Microsoft C: "syntax error".
In an ideal world, what kind of programming would you want to do? That might point you in a direction.
None of them.
http://www.loper-os.org/?p=16
http://www.reddit.com/r/programming/comments/64g7p/old_basic...
The disease is systemic. It pervades all modern computing systems. The name of the disease is ratcheting accidental complexity. The only cure is a from-bare-silicon reboot of all of computing.
> On the contrary, programming seems to become more frustrating as it advances
This is because it is not actually advancing. Incompetently and half-heartedly cribbing feature after feature from Common Lisp is not advancement.
> Am I missing something that can bring back my early joy or discovery
What you are missing is (was?) very real. There once was a time when computer technology was actually advancing in meaningful, qualitative ways. And when the future seemed alive with infinite possibilities. Don't let anyone convince you that all of it never existed.
Sufficiently Lispy to not feel like a straightjacket; integrated documentation with worked examples for literally every language feature; vector/bitmap graphics, audio, as first-class data types; pattern rewrites as a superior form of macro system; higher-order programming of every kind (if you like Haskell, you can "write it" in Mathematica); the ability to execute individual lines of code and see immediate feedback; a parsing system which obsoletes regexps; syntax which never leads to tears (Perl, I'm looking at you); a library of curated data on almost every topic; seamless file and www i/o; debugging facilities unmatched by anything short of Symbolics Genera. I also ought to add that I have been programming in Mathematica full-time for almost half a year, and have never needed to use an external library of any kind.
This is only a small subset of the useful aspects. The biggest downside, however, is that Mathematica is proprietary and expensive. On top of that, it is also rather slow.
All of the features I've listed should be expected as basic and factory-standard on every computer. The fact that our expectations are as low as they are shows just how little actual progress has taken place in the industry at large in the past two decades.
1- http://coding.derkeiler.com/Archive/Lisp/comp.lang.lisp/2004...
2- http://www.cs.berkeley.edu/~fateman/papers/mma.review.pdf
I don't think that can practically happen. If you're using some not-too-powerful language to do it, it will take too long and you'll never catch up. If you're using a language powerful enough to actually accomplish it, you'll never develop a community or a culture of libraries, because the number of people who feel they can just build what they need faster than learning and using someone else's library will be high enough that libraries never get enough attention, and you'll end up with an archipelago instead of a continent of libraries. That's pretty much what happened to the lisps.
i like dumb, old power tools that don't get in my way -> unix+vim+lisp