Hacker News new | ask | show | jobs
by petercooper 5178 days ago
As a direct answer to the question and based on the problems the author raises, OS X's "Automator" is just that. It's casual yet still pretty powerful automation/programming. It loads fast, it has a visual IDE of sorts, and it can do a lot of jobs you'd otherwise use shell scripts for.
1 comments

(author here) I'm not a Mac user, but took a look at Automator now. It seems a big step in that direction. Still, I'm not sure it makes the casual programming problem solved. Maybe I misrepresented the problem; let me give some more examples on casual programs that could be made easier...

* Quickly testing small game ideas or demos (programming as self-expression).

* Solving an ACM problem or one of those programming job puzzles without too much setup.

* Writing the blog tagger example in the blog post, and other "do my web tasks for me" code.

I think a good casual IDE could be written for various types of needs, not just automating the OS or Apps..which are certainly an important part of the problem.

Yeah, Automator is essentially a sort of group of visual DSLs for some very defined domains. Your examples here are definitely more in the realm of general programming languages.

It's definitely not as easy as the environment you speculate, but Xcode and iOS development have been making big inroads lately, even with total beginners. Certainly, it could be made a lot easier, but efforts to do this in the past have tended to fall flat as people think that the skills they learn won't be useful in "real" environments later on.. which turns it into quite the chicken and egg problem :-)

I wonder, however, if JavaScript and Web oriented development environments will ultimately fill the gap you're identifying. The browser is an ideal environment for the tasks you outline, and JavaScript is a fine 'base' language for DSLs to fall on top of while still giving access to the full language.

Yes, I do feel that JavaScript could be a very possible way towards achieving those goals :)
I think there are two problems here, both of which could be chipped away at, but neither will be completely solved anytime soon.

First, you have the fact that users don't know enough to solve abstract problems with programming. As programmers we have this deep base knowledge that we subconsciously draw upon. It's impossible to create a platform that makes it trivially easy to "test small game ideas" without narrowing the scope to trivial game types. People need a foundation to figure out how to put the pieces together. Fortunately, a lot of this is just familiarity with computers, so every new generation gets better at this, making the problem more tractable over time.

The other, is that software is truly an organic ecosystem. There is no designer that is coordinating the software world. The closest we have are closed platforms like Apple provides (which is still limited in overall scope) or standards (which are defined in a deliberately narrow scope for modularity's sake). So to make a single uniform environment that could do everything a casual programmer might want to do, and make it consistent, you'd have to write some kind of monolithic standard and convince a large minority of all software writers to support it in some fashion. The UNIX philosophy and POSIX are attenots to do something like this, but as you alluded to, it's still highly non-trivial to get your footing underneath you. To create an even higher-level standard seems almost impossibly difficult, but I suppose it's possible that progress could be made by focusing purely on a new high-level language and GUI. I'm not holding my breath though.

Are you prolific or at least very capable at using grep, sed, awk, tr, sort, uniq, cut, wc, and cat?

I don't think you need to read a book about shell scripting, but I think if you are familiar with these tools, there's a whole lot of things you can do with pipes. If you are opposed to learning them (and regular expressions), then there's no language that will ever please you.

Most importantly, except for some caveats, these languages are portable and preinstalled on most everything posix.

The problem with casual programming is that problems of a given type (say parsing some files) arise from time to time; so unless its part of your day job, investing in learning those tools doesn't seem so worthwhile until the same type of problem arises weeks later.

IMO a truly casual programming tool is about the quickest route from "need" to "working code".

It sounds like you might be looking for something more like squeak: http://www.squeak.org/
Give this a shot http://docs.racket-lang.org/quick/index.html

See the bottom link too.

Certainly does a lot of what I wish in a casual programming tool! I just wish the IDE had the autocomplete, quickfix, refactoring features of Eclipse...
Racket is Scheme... which is probably as far away from Java as it gets.

You don't need these features in Scheme. By not needing, I mean that they get in the way more than they help. Give it a shot.

I know Scheme; actually implemented my own toy lisp at some point - continuations and all. Still, Racket (or Gambit...etc) is much more than the basic language, and I don't want to spend days reading - once again - how to draw a line on the screen or render a web form or use modules or do any of the stuff needed for a non-trivial application all before I get started.

I could do that if I really needed, but it wouldn't be casual programming any more. This is where all the autocomplete stuff comes in for me. I just discover the libraries I need when I need them.

As for quickfix, it means I could write the program top-down by calling function that don't exist yet, using uncreated data structures, and then with a few clicks have the IDE create all the skeleton code waiting to fill-in.

I think such tools would be valuable in any language.

> I don't want to spend days reading - once again - how to draw a line on the screen or render a web form or use modules or do any of the stuff needed for a non-trivial application all before I get started.

This is why I gave you the link above.

This particular scheme comes with all that included and easily accessible. It's quite simple, just check that out. And the editor is, IMO, A LOT better than Eclipse (though I may be biased, I despise Eclipse).