I really hate to bring up the generics point, but I did really miss them when I used Go. Sure, you can ignore their absence, but every time I saw a API that took or returned `interface {}`, I felt like the type system was being wasted. Other than that though, Go is definitely on favorite languages to watch from afar.
Regarding the Acme text editor - any users of it here, on HN? I'm really interested to hear some arguments from Acme or Sam userbase - what do you find useful in these editors?
I vaguely remember the reply on Acme's mailing list, that it is a text editor, not a rainbow, when someone asked about syntax highlighting feature :)
I've been using acme for a long time (previously vi was my editor of choice). One property of acme that I think isn't so obvious is the way that text becomes higher-order, in the same kind of way that S-expressions in Lisp are higher-order.
Much of the power of Lisp comes from the fact that the result of executing an S-expression is also an executable S-expression itself, so programs that write programs become trivial.
This property is true of acme too - we execute text with a middle-button click or drag, and the command that's executed can produce more text, which is itself executable text.
Thus I can extend the functionality of acme by writing tiny shell scripts that print useful commands. I can run a command that produces a list of stuff, use structural regexps to transform that stuff into an acme command, then execute that to transform something else.
The power of structural regexps combined with proper Undo/Redo is also great - rather than pipe something through sed or awk, I'll often iteratively build up an expression or set of expressions that perform some particular one-off transformation, rewinding and retrying as necessary.
I could go on!
Acme certainly isn't perfect, but it is wonderful.
"The power of structural regexps combined with proper Undo/Redo is also great - rather than pipe something through sed or awk, I'll often iteratively build up an expression or set of expressions that perform some particular one-off transformation, rewinding and retrying as necessary."
I've used sam a bit in the past, when I was working in a pretty heterogenous Unix environment (Suns, SGIs etc.). The split between the display component and the actual editing core made that pretty easy to do, a good alternative to vi over ssh (given terminal funkiness and differences between vi implementations).
I liked the regular expression syntax, the ed/ex editing window and the actual GUI text editor wasn't that bad, if I remember correctly. Selecting the whole area between brackets or quotation marks was done easily (double-clicking) with the mouse and is very useful.
As for acme, mouse chording isn't for everyone, but definitely worth trying at least once. One of the better features they borrowed from Oberon… When I work with some other editors, I do tend to work a bit with "registers" and similar copy/paste buffers, as opposed to just reusing the one thing you've just selected. For a similar approach to "saving text for later", a secondary file/buffer with all the snippets might work for the smaller stuff. Similarly, a "bookmark" facility wouldn't hurt, but you can work around with spurious superflous characters (e.g. %%%%) and just searching for it. Acme does searching quite well, and you're in no danger of messing up syntax highlighting.
The real secret sauce to advance Acme editing would be plumb, to use where you'd reach for scripts in vim or emacs. Haven't really gotten too much into that, but some more regular users might help out here.
As for syntax highlighting, yeah, sometimes the Plan 9ers tend to sound almost Luddite. Quite often they're "right" in a way, although in this specific case I don't see why you couldn't extend the rendering engine of Acme to support fonts and colors and just use something external (i.e. plumb-like) to drive syntax coloring or other highlighting features. But easier said than done, of course. Not sure how much hacking is going on at the Plan 9 core tools right now. A reimplementation in go might be nice, with a Plan-9/Inferno-like cross-platform GUI toolkit, while we're daydreaming.
> Not sure how much hacking is going on at the Plan 9 core tools right now. A reimplementation in go might be nice, with a Plan-9/Inferno-like cross-platform GUI toolkit, while we're daydreaming.
This would be cool, but remember that Russ Cox (among many other things) still maintains (and uses) Plan 9 from User Space:
I use Acme for my hobby coding. But for work I tend to deal with horrible java and php code, with lots of code across lots of files so even small changes require modifying many files in many different places. I've found Acme gets difficult to use in this situation so I use a horrible IDE.
Acme is great for writing Go though. I don't miss syntax highlighting when using Acme, but I do miss Acme's ability to execute arbitrary text when using the IDE.