

Ask HN: In which modern language/environment/framework is programming a joy? - reedlaw

When I was a boy, I learned BASIC on the Apple II+. It was a joy, because I could turn on the computer and instantly find myself in a programming environment that was easy to learn and fun. Granted, I had to plot sprites on graphing paper and then convert them to hex digits. Still images were created much like an etch-a-sketch, but using cursor movement keys instead of dials.<p>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.<p>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.<p>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.<p>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?
======
marcocampos
Python. Easy to learn, easy to use, easy to maintain.

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.

~~~
SwellJoe
Python has iPython going for it, which is drop dead awesome to tinker with.
I'm back to Perl, but the time I spent with Python was definitely made even
more fun by iPython.

~~~
pragmatic
IPython is fantastic. I'm working through project Euler with Python, IPython
and notepad++. I work with C#, asp.net during my day job. While C# is a great
language and the .net framework is the most sane API I've ever used, I was
able to do some of the Euler problems in one, easy to understand line.

------
da01
Ruby + Heroku + Git + Sinatra + Markaby

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:

    
    
       loop { print( eval( read ) ) }
    

In Factor:

    
    
       [ read eval print ] loop

~~~
colomon
Just learned about Factor from the HN story a couple of days ago, I've enjoyed
playing with it quite a bit. But then, Forth was my main programming language
for a few years back in the 80s.

------
asciilifeform
> In which modern language/environment/framework is programming a joy?

None of them.

<http://www.loper-os.org/?p=16>

[http://www.reddit.com/r/programming/comments/64g7p/old_basic...](http://www.reddit.com/r/programming/comments/64g7p/old_basic_used_to_be_on_every_computer_a_child/c02t3ky)

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.

~~~
randallsquared
_The only cure is a from-bare-silicon reboot of all of computing._

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.

~~~
jes5199
have you seen Alan Kay and company's "STEPS Toward The Reinvention of
Programming" ? They're doing almost exactly that -- making small, powerful
programming languages that make it easier to re-describe the fundamentals of
computing. There's a pdf: <http://www.vpri.org/pdf/tr2007008_steps.pdf>

------
yummyfajitas
I've recently started using Clojure. Writing Clojure in Emacs (using Slime) is
a joy. The integration is just fantastic; write code, send it to the repl,
then occasionally switch over directly to run commands.

(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.

~~~
herdrick
Clojure is pretty joyous, but I hated the error messages the last time I was
using it. They were rarely useful. Has anything changed recently?

~~~
mahmud
Seconded the error messages. I am used to restarts, M-., 'v', and other stuff
that has been jumping between backtrace and source code.

Clojure's error messages reminded of Microsoft C: "syntax error".

------
carpo
I've always found the joy comes from what I was building and not too much the
tools I was using. Perhaps if you found a new, exciting project that you
really wanted to build, you could use one of the languages you once enjoyed
and the joy would return?

------
strlen
Lisp + Emacs + Slime felt like a total joy to me. Python with its REPL and a
"batteries included" approach was a distant second, with Perl (with emacs'
cperl-mode integrated with perl's debugger as well as the extensive and easy
to use CPAN library) being a closed third.

I might also get branded heretic for saying this on HN, but lately I've been
also able to enjoy Java development: with git for revision control, maven for
project lifecycle management/pulling dependencies in an almost CPAN-esque
manner, IntelliJ for an IDE (which, I've been told comes close to the
capabilities that the Lisp machines had as far being an IDE goes) and jetty
(invoked through maven) for a servlet container (a breath of fresh air
compared to Apache as well as tomcat).

~~~
papaf
I'm enjoying my time with maven/jetty too. It was a steep learning curve but
once it works its very smooth. I also recently substituted Java for Scala and
can recommend that highly if you're doing the coding for the fun of it.

------
TomOfTTB
I'm going to take what is probably an extremely unpopular position here and
bring up .net (C# in paticular). I say this for two reasons...

1\. Visual Studio is still one of the if not the most powerful programming
enviornment out there. It's ability to predict what you are about to type and
fill in the blanks for you makes a lot of programming tasks fly by. I know
there are a lot of places where I could get by with less code if I was using a
language like Python but autocomplete more than makes up for it.

2\. If you're building a serious, business application that will have to serve
thousands of users than a technology like ASP.NET probably isn't for you. But
if you're building a smaller app the abstraction that ASP.NET Webforms provide
is a real time saver. You can literally just draw your interface and then fill
in the events. Again, it comes with a performance penalty for sure, but if
you're looking for joy there's nothing cooler than being able to whip up an
app in under an hour.

~~~
brl
I've never programmed in C# with Visual Studio but I have no trouble believing
that what you are saying is absolutely true.

For the last two years I've been programming exclusively in Java inside
Eclipse and the experience is far better than any other language/tool
combination I've worked with before.

Auto-completion and inline documentation is great, but the IDE features that
really have me sold are powerful navigation, painless refactoring, incremental
compilation, and adding imports with a single keystroke.

I don't have nearly as many complaints about Java as the rest of the world,
but I do admit that I've been getting pretty excited about Scala lately.

------
babyboy808
JavaScript.

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.

~~~
marcusbooster
I think Javascript is great but the tooling needs some work for development to
be a joy. I haven't found a decent Emacs mode for it yet and while I enjoy the
repl that Chrome and Firebug offer, it can be a pain to jump back and forth.
Here's hoping the future offers a little more integration.

~~~
sharkbrainguy
you don't like js2-mode? With mozrepl integration? I really like them...
(although at the moment I'm using vim mostly for javascript just for the raw
vim comfort)

------
spooneybarger
haskell.

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.

------
jay_kyburz
Might not be a popular suggestion, but I have been playing with Flash 10,
Action Script 3 and really enjoying it.

The beauty of JavaScript with a nice graphics library and a few other little
bonus.

Much improved over the early days of Flash.

------
mahmud
As an environment, I loved CMUCL, PC-FORTH, Self, and VGA programming with
Turbo C; none of them are "easy" for most beginners.

For the "woah" factor: Mozart/OZ, Prolog, Scheme and J. The first two days you
discover prolog I don't think you will be able to function socially; you might
need to miss a few phones calls. J will have you asking "WTF?" a lot.

Most _enjoyable_? if I said Perl I am afraid I will be chased out of this
place :-P

~~~
SwellJoe
_if I said Perl I am afraid I will be chased out of this place_

I would hope not, but one never knows. There does seem to be some bigotry
against Perl in some circles.

But, one can't argue with statistics, right?

[http://blog.doloreslabs.com/2009/05/the-programming-
language...](http://blog.doloreslabs.com/2009/05/the-programming-language-
with-the-happiest-users/)

Anyway, I also find Perl a _lot_ of fun to work with. I write fewer bugs in
Ruby (shockingly few, actually, despite never having spent much time with the
language), but Perl has the CPAN which makes almost any project like playing
with a really nice Lego set: You just plug lots of cool looking colorful
pieces together and at the end you've got a spaceship.

I've used Python heavily in the past, and enjoyed it, but I certainly haven't
experienced any pain going back to Perl. If I were starting a project from
scratch today, odds are at least even that it'd be in Perl (though new-fangled
stuff like Haskell has some appeal, just by virtue of being all new all the
time). JavaScript is probably also a strong contender for pretty much
anything...I'm pretty confident that JavaScript is going to be the worlds most
popular language both client and server side, and it's a language that I enjoy
working with.

------
coconutrandom
I <3 AS3

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/>

------
ice_man
PLT Scheme is hands down the most powerful programming environment in
existence. It's sort of like the McLaren F1...those who know, know. And those
who don't mistake it for a Mazda Miata.

~~~
antiismist
I'm getting into scheme for a project I'm working on. Sometimes I'm really
impressed by how much can be done with some tight coding. I've done some Arc
coding as well, and I think that it could have the edge if it matures and gets
some library support.

------
adw
Processing! <http://processing.org/>

(Not general purpose, admittedly, but very very satisfying.)

------
tremendo
Take a look at the Appcelerator/Titanium platform <http://appcelerator.org/>
it's like Adobe AIR but you can build using Javascript, C, Ruby, and/or
Python, UIs in HTML/CSS on top of Webkit. So you can use your existing
knowledge, know you have a capable rendering engine by default and build
desktop apps that can deploy to Windows, Mac and Linux. And it's Open Source
(another difference vs. AIR). It's still in development, beta coming out in a
couple of weeks, but certainly looks very promising.

Alternatively, if you'd like to try doing some games, there's LÖVE, a 2D game
engine in Lua: <http://love2d.org/>

Who knows, either may provide the new air of excitement you're looking for.

------
alex_c
I haven't used it, but _why's "Shoes" is supposed to recapture some of that
early programming magic.

<http://shoooes.net/>

------
jhancock
smalltalk. specifically, Digitalk's Smalltalk/V (DOS, Windows, OS/2, Mac) and
their final version Visual Smalltalk Enterprise. I have never been more
productive than with that environment. Squeak doesn't do it for me.

[EDIT] earlier today I cleaned out several bookshelves. I tossed about 100 old
tech manuals...I kept all the Smalltalk/V books ;)

~~~
wglb
This was one of the most fun ones. Need to try squeak.

~~~
hboon
If you are on Windows, you _need to try_ Dolphin first.

~~~
wglb
I don't do any windows anymore, but Dolphin looks like quite the thing.

~~~
hboon
Me too. Squeak/Pharo are nice (and I use them), but if someone is new to
Smalltalk, Dolphin does a much better job of converting them. Very clean and
compact libraries, excellent UI framework and nice UI.

------
_pius
Joy? <http://en.wikipedia.org/wiki/Joy_(programming_language)>

~~~
_pius
In all seriousness, I'd say Ruby. Whether you use Rails or not, Ruby really is
a beautiful language.

------
visitor4rmindia
I find Scheme + C to be the most satisfying combination. I love the
abstractions that Scheme provides and good C bindings means I don't have to
worry about what libraries may or may not be available.

------
hs
the problem is, modern tools are too complex. they are trying to be smarter
than the user

i like dumb, old power tools that don't get in my way -> unix+vim+lisp

------
timtrueman
One of the most enjoyable experiences I've had recently was with Arduino. It's
amazingly easy to build cool shit with it. It's both rewarding and fun.

An example (since I haven't recorded any of my projects yet; also sorry it's
in Portuguese): [http://blog.bsoares.com.br/processing/controlling-rgb-led-
wi...](http://blog.bsoares.com.br/processing/controlling-rgb-led-with-arduino-
and-processing)

------
ashleyw
Ruby. It almost feels like I'm not programming, the syntax is simple and
beautiful, and you can do a hell of a lot without much code (especially if you
include the thousands of gems!)

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.

------
noaharc
I bet that the changes in technology are a smaller factor than the changes in
you. Most things are more exciting when done for the first (or nearly first)
time.

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.

------
ii
I find Ruby + C combination the most enjoyable for non-web things.

But for web I prefer Python/Django.

------
silentbicycle
Lua and Python.

For real projects, Lua will expect you to know C, but in exchange, it avoids
duplicating a bunch of functionality that you already have on hand. (Calling C
from Lua is trivial.) The designers have done an excellent job of keeping the
language simple and clean without detracting from its expressiveness. (Lua is
to Scheme as Python is to Common Lisp.)

Python is bigger, and has more design quirks for backward compatibility,
though Python 3 attempts to fix this. OTOH, it also has far more off-the-shelf
libraries, and a significantly larger community.

(Forth is also fun. I'd be lying if I said I've ever done anything useful with
it, but it really captures the wonder of being a kid and playing with Basic.)

------
jpcx01
Ruby + Merb. Spend the entire time with both my code and Merb framework code
open. It's well written and easy to understand, so there's no blockers.

------
caffeine
This isn't a programming language, and I'm very young, and obviously you're
past this ...

but I'm taking my first baby steps in Vim, and damn but it's bringing me joy!
(I like it so much, this post comes to you courtesy of vimperator firefox
plugin).

------
jcapote
Ruby. The language was designed _specifically_ for this.

~~~
aaronblohowiak
Ruby is SO much more than rails, which I think people need to be reminded of
from time to time.

------
xtho
JavaScript is the new BASIC. It runs in any browser. Or you can also run your
scripts with a dedicated interpreter.

------
jpcx01
If Palm Pre takes off, I can imagine the development environment for that
being a joy to code. Since its all webkit based, with html+css+javascript, it
should be easy to work with.

I haven't dived in yet, as I'm waiting for them to establish some hold on the
market, but as a web developer anticipating doing mobile apps, I'm hoping for
some success.

Would be cool if Android 3.0 would take up this idea of using web technologies
to interface with mobile apps. If anyone had a vested interest in web
technologies, its Google.

------
compay
Lua. Minimalistic elegance.

------
menloparkbum
I have a similar background, apple II and then amiga programming when I was
young. There are few (no?) programming environments as simple and "fun". That
said, I really enjoy iPhone programming. If only because the hardware, UI and
"form factor" let you do fun things that simply aren't possible on a desktop
or laptop computer. Software like the Smule Ocarina is only possible with a
device like the iphone. The simulator leaves much to be desired but am having
a lot of tun testing on the phone.

------
tapostrophemo
For making web sites/apps, CodeIgniter (PHP framework) made the server-side
fun again. Same for jQuery on the front-end. Especially with CI, I feel like I
can get into a good groove and get lots done.

Of course, I'm probably biased: at my day job they've chosen Java for web
develoment. (The "approved" libraries/frameworks are not only years behind,
but onerous.) So, in my spare time, almost anything that's not-Java is fun.

------
progLiker
I'd definetively say that the Unix environment are fun to have around as a
platform for programming almost any modern programming language.

Eclipse with its basic features for java development are fun. When you have
learnt how to exploit the features and learnt to live with it's limitations,
it's at least not getting in your way. But I guess you can say that about most
Ide's when you have learnt it well and grasped an understanding of what you
can and can not do with it. So now I fire up an Ide for the project and
management off and do the hardcore editing in Vim, leveraging the best of the
two worlds. And are having fun too.

The day's for the "one size fits" all may be gone.

I think they days for small beautiful fun to use languages are finally gone
with the end of Moore's Law. Everything will become more complex to deal with.
Thinks the trick to leverage the fun for a project is to use different
environment for different contexts of the project, and create tools for
dealing with your specific needs.

------
adamc
I think there are many high-level languages that are fun to use -- various
Lisps, Python, Ruby, even JavaScript.But if you are finding RoR tiresome to
keep up with, I suspect it is more a question of the pace of change than the
language itself.

In an ideal world, what kind of programming would you want to do? That might
point you in a direction.

------
karlgluck
Does nobody else like like straight up C++? When I was young I enjoyed BASIC
languages, but ever since graduating middle school I've been a C++ guy. I love
the intricacies of the language and crazy things you can do with it, and still
get a huge amount of satisfaction out of being able to write really simple
code that does really complex stuff.

------
Zarathu
Ruby + Rails + MySQL + nginx + mod_rails

------
yearsinrock
Until now I have done Lisp programming only for academic purposes ,but it was
still a lot of fun.

------
ertug
Django! <http://www.djangoproject.com/>

Developing on this Python web framework is really a joy.

You can instantly start coding and testing by reading the official tutorial.

------
TallGuyShort
I'm sure there are those who would disagree with me on this, but I've found
Adobe Flex an absolute joy to work with. It certainly has it's limitations,
but it's so easy to make your application just plain 'look great'. It only
took me a few months before I really felt like I understood everything about
the underlying architecture. I love programming in it now.

Of course, once a person feels comfortable with virtually any LISP dialect,
they usually LOVE it.

------
matth2
I'm getting surprising amounts of joy from Qt (via c++). It's well thought
though, has proved to be fairly painless to use, and is getting very
comprehensive in it's current version. Also, I love the performance.

Interestingly, I haven't got the same feeling for XAML, which I thought I
would before starting to use it as there are conceptually nice things about
this framework.

------
asnyder
Yes, in my personal opinion NOLOH (<http://www.noloh.com>) is quite a joy to
develop with.

------
travisjeffery
I find Python a real joy generally.

JavaScript is fun in the sense that you can do some very cool and interesting
stuff fairly easily.

------
Dilpil
I'm a big fan for XNA for messing around. It lets you draw with minimal BS.
And the tutorials actually work.

~~~
nailer
I thought XNA was more a gaming library than a language...

------
utnick
haven't tried it yet, but hacking around with arduino looks pretty fun and is
on my list of things to try

------
DTrejo
Coding something that excites you overcomes the annoyances of the
language/environment doesn't it?

~~~
reedlaw
Depends on the environment. I've never been able to finish something in Visual
C++ using the Windows API.

------
gsastry
OCaml :)

~~~
silentbicycle
Just be warned that until you understand how OCaml "thinks", it'll seem like
_the language that whacks you on the wrist with a ruler whenever you try to do
anything_. Awesome language, kind of a quirky implementation though.

Of the books I've read, _The Little MLer_ conveys the mindset the best. (It's
in the same style as _The Little Schemer_, but is about ML, type systems, and
type inference in general.) For learning OCaml and its toolchain, the French
OReilly book (free English translation:
<http://caml.inria.fr/pub/docs/oreilly-book/>) is a good text.

------
marram
I like Python on Google App Engine + Prototype.js

------
brownegg
www.linuxfromscratch.org

I took a p4 2.4ghz w/ 1gb ram out of the closet and have been partitioning,
compiling, bootstrapping, to my heart's content. To be honest, working with a
super minimal system at the cli is a lot like coding in all caps on my old
Apple II+.

------
PaulMorgan
Why pick one or two? All of them are a joy. I get paid to play with software
and computers.

------
mannicken
Ruby/Rails.

------
anc2020
Scheeeeme!

------
c00p3r
Joy is a your own product, at least for a half. It comes from combination of
state of the mind, which you can cultivate, along with your current mood which
is based on what you think.

For example, if you can think about vi editor not the way that it is a mess of
one-letter commands and beeps, but that it is very rare almost 40 years old
masterpiece of smart design, efficiency and minimalism this approach might
work. Think that it was created for text-typing pros, who types very fast
without even looking on keyboard, and so on. If you prepare yourself for the
way of discovering its wonders and ideas, and do realize that it is the best
tools for storming throught dozens of files in /etc, and the sequences like
'/^debug[Enter]I#[Esc]ZZ' are beautiful you will probably feel a joy.

Same thing, if you will think about emacs (in console mode, without gtk gui)
that it was designed to work via hardware terminals, like this lovely DEC's
vt-i-didn't-remember-the-numbers boxes, with green letters and that wonderful
hardware scrolling, you will probably understand, why there are so many of
those Ctrl-x Crtl-x commands in it, and how smartly these commands was
arranged.

The power and beauty of 'screen' utility is a common knowledge.

As for programming languages, just think about ideas behind them. Think that C
is a great engineering masterpeice, that Perl is a most beautiful way to
create a completely mess that works, that Ruby was developed by truly eastern
mind, and lisp.. you know.

I can't tell something about PHP except that it is an swiss-knife stuffed with
low quality blades, and Java is the biggest buzzword ever (anyone can run some
once-written spring-hibernate-jsf-with-all-depencies mess everywhere? on ARM?

We are what we think. =)

------
skwiddor
Shell script keeps me happy, you've not lived until you've used join(1) in
production. <http://man.cat-v.org/plan_9/1/join>

Assembler is good especially on something clean like a microcontroller. I like
the AVR instruction set.
[http://www.maht0x0r.net/library/computing/avr/docs/8bit_avr_...](http://www.maht0x0r.net/library/computing/avr/docs/8bit_avr_instruction_set.pdf)

Hook up an AVR to a GSM module and a SIM and you've got you're own
programmable cell phone, like this one
[http://www.sparkfun.com/commerce/product_info.php?products_i...](http://www.sparkfun.com/commerce/product_info.php?products_id=8700)

------
erlanger
I love LAMP.

It 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.

~~~
reedlaw
I do love Smalltalk (I'm reading SICP). Can it do graphics/UI stuff? One
measure of joy in programming for me is to be able to easily build a simple
side-scroller. I'll have to get a Mac to try Cocoa I suppose.

~~~
erlanger
Side scroller...PyGame?

