July 20th, 2024

A brief interview with Tcl creator John Ousterhout (2023)

John Ousterhout, creator of Tcl, highlighted its embeddable nature and "everything is a string" philosophy. He reflected on missed opportunities, including Tcl as a browser language. Ousterhout emphasized the importance of practical utility in widely adopted languages like Tcl and Python.

Read original articleLink Icon
A brief interview with Tcl creator John Ousterhout (2023)

John Ousterhout, the creator of Tcl, a scripting language, has made significant contributions to computer science. He emphasized two unique aspects of Tcl: its embeddable nature allowing applications to extend Tcl's features, and its "everything is a string" philosophy, which impacted its performance and syntax. Ousterhout believes Tcl wouldn't have changed much had he stayed with the development team. Reflecting on missed opportunities, he mentioned a potential scenario where Tcl could have been the browser language instead of JavaScript if he had joined Netscape. When asked about the next paradigm shift in programming languages, Ousterhout noted the lack of major new languages in recent years and highlighted the importance of languages created by systems builders over programming language researchers. He categorized Tcl and Python among languages that have been widely adopted due to their practical utility for building systems.

Related

Subject: Re: Hang on, isn't Forth out of date now? (1996)

Subject: Re: Hang on, isn't Forth out of date now? (1996)

Brad Rodriguez discusses Forth's relevance, emphasizing its simplicity, efficiency, real-time testing, and speed. He highlights its comprehensibility, suitability for embedded systems, interactive debugging, extensibility, abstraction, and productivity, concluding its ongoing value.

I Probably Hate Writing Code in Your Favorite Language

I Probably Hate Writing Code in Your Favorite Language

The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.

How the Curse of Lisp impacts your business (even if you don't use Lisp)

How the Curse of Lisp impacts your business (even if you don't use Lisp)

The Curse of Lisp highlights how languages like Lisp's self-sufficiency can hinder growth by limiting external contributions and fostering insular development practices. Balancing internal efficiency with external innovation is crucial for sustainable system design.

Toolbox Languages

Toolbox Languages

Toolbox languages like AutoHotKey, J, Frink, Raku, and Picat excel in specific areas such as GUI automation, array manipulation, unit handling, flexibility with operators, and logic programming. They cater to niche needs, providing efficient solutions for various tasks.

A brief interview with Awk creator Dr. Brian Kernighan

A brief interview with Awk creator Dr. Brian Kernighan

Dr. Brian Kernighan, a prominent computer scientist, emphasized the importance of associative arrays in Awk, designing small programming languages for beginners, and automating tasks through simple language designs. His insights influence programming education.

Link Icon 22 comments
By @abhgh - 7 months
John Ousterhout also was leading a project called RAMcloud (I thought was interesting) that the article doesn't mention - [1], [2]. Also, he has a book on s/w design [3] which is short and nice, and is more of a collection of ideas rather than an approach, which I highly recommend.

[1] RAMcloud talk by J. Ousterhout:https://www.youtube.com/watch?v=lcUvU3b5co8

[2] RAMcloud paper: https://web.stanford.edu/~ouster/cgi-bin/papers/ramcloud.pdf

[3] A Philosophy of Software Design, https://www.amazon.com/Philosophy-Software-Design-John-Ouste...

By @zakirullin - 7 months
He is an absolutely amazing and extremely humble person. He agreed to review my article (written under the influence of his book) in his spare time. He does tons of code reviews every week for his students as well.

I was especially impressed by his notion of "deep modules" in "A Philosophy of Software Design". The idea is extremely not-popular, but really sound and practical. I would definitely go for this book instead of "Clean Code" and such.

His book is so fundamental, and it goes far beyond the overused and vague "complexity" term.

By @lizknope - 7 months
I tried learning Motif to write X11 graphical programs in 1994. Another student in the computer lab told me about Tcl / Tk. It was far easier. Then I got a job in the semiconductor design industry in 1997. The next year the leading EDA companies Cadence and Synopsys started using Tcl as the internal scripting language for the tools. So now it is 2024 and our CAD flows are tens of thousands of lines of Tcl code. Every week I still write Tcl code to generate reports or automate something.
By @EdwardCoffin - 7 months
If you want a more substantial interview with John Ousterhout, I highly recommend his hour-long talk at google A Philosophy of Software Design, which is essentially a synopsis of his book by the same title.

Edit: I guess not an interview, but he does answer some questions from the audience at the end.

[1] https://www.youtube.com/watch?v=bmSAYlu0NcY

By @monkeydust - 7 months
I remember early in my career working at an investment bank on the trading floor as a support analyst.

I was asked by a very frustrated trader to modify the behaviour of one of the trading apps.. basically he shouted..."just figure it out". Yea he was bit of a twat but then trading desks have changed a lot today.

The app was from a 3rd party provider and making changes would take time of course, then they told me I could do this myself with Tcl. So in a day I figured out Tcl, made the change and it was in production the next day. Of course doing that now would be impossible but I remember the buzz from being able to make a real world change so damn fast.

By @msephton - 7 months
Tcl has been a staple on Mac for over 30 years at this point, since System 7 at least. It was installed in Mac OS X as standard, not sure if it still is these days.

I use it to wrangle text directory listings from old Macintosh CD-ROMs from pre-Unicode era. The character set support and conversion code seems to have been written by Apple themselves in the mid-1990s. https://blog.gingerbeardman.com/2022/03/31/working-with-clas...

I was pleasantly surprised by the syntax and capability of Tcl as well as the fact that it's still being developed and supported and that the maintainers took my feature requests and bug reports seriously and actioned them in what I consider a short time.

By @chrisrickard - 7 months
Tcl was the scripting language in the mIRC IRC client, and as a 13 year old, my first foray into programming.

I started writing little scripts to boot annoying people off IRC, but ended up caring more about coding than IRC politics - and ended up writing a full blown Napster clone in Tcl.

I feel like I owe my career to Tcl opening these doors for me - so thank you John.

By @hangonhn - 7 months
Wasn’t he also one of the creators of RAFT (https://en.m.wikipedia.org/wiki/Raft_(algorithm) )
By @spacedcowboy - 7 months
Also responsible for Magic [1],[2] which is the basis (AFAIK) for the efabless route to getting your own chip designed these days...

I ported it to the Mac and played with it a while back with the intention of making my own chip, but priorities changed when my wife fell very ill.

[1] https://en.wikipedia.org/wiki/Magic_(software)

[2] http://opencircuitdesign.com/magic/

By @bch - 7 months
TFA mentions the Sprite operating system, which brought us a few things, including (i recently discovered), pmake[0] (by way of Adam de Boor[1]) which was an early instance of parallelizing make(1), and begat BSD Make[2], which is lovely to use.

[0] https://web.stanford.edu/~ouster/cgi-bin/spriteRetrospective...

[1] https://www.linkedin.com/in/adam-de-boor-4293a1/

[2] https://man.netbsd.org/make.1

By @ofalkaed - 7 months
I just recently started learning tcl/tk out of frustration with the other options for gui toolkits. Liking it quite a bit now that I have gotten over the hurdle of figuring out the sense of tcl which often felt like nonsense at the start. TK is especially nice, very easy to work with.
By @bch - 7 months
JO is giant in the industry; a longtime working professional with fantastic pedagogical chops. In my opinion, if he's talking, I'm listening.
By @surfingdino - 7 months
Tcl "powers" the internet in a non-direct way since it is used in Cisco IOS.
By @OhMeadhbh - 7 months
Perfect timing. I ordered a copy of "A Philosophy of Software Design" a week ago and it arrived yesterday. I'm going to start reading it tonight, but this is a nice preface, I bet.

Several months ago a friend encouraged me to look at Tcl again (independent of Tk.) Mixins, regexes, reflection. All stuff I didn't appreciate in the early 90s. And I had reason to look at Minix a few years back. Ousterhout definitely did some good work. I think he might have been just a little bit ahead of the rest of us.

By @kragen - 7 months
a lot of people here are wondering if tcl is something they should check out. tcl has some serious flaws, but some real merits as well. the best and most balanced answer to this question is https://yosefk.com/blog/i-cant-believe-im-praising-tcl.html, which explains some of the reasons i used to really enjoy tcl, before i gave it up for more capable languages

maybe the nucleus of kreinin's argument is

> So basically, pop infix languages (and I use the term in the most non-judgmental, factual way), pop infix languages are optimized for programming (duh, they are programming languages). Programming is definitions. Define a variable and it will be easy to use it, and computing hairy expressions from variables is also easy. Tcl is optimized for usage. Most of the time, users give simple commands. Command names and literal parameters are easy. If you are a sophisticated user, and you want to do pmem 0 bkpt [expr [pmem 0 pc] + 1], go ahead and do it. A bit ugly, but on the other hand, simple commands are really, really simple.

> And eventually, simple commands become all that matters for the user, because the sophisticated user grows personal shortcuts, which abstract away variables and expressions, so you end up with pmem 0 bkpt nextpc or something. Apparently, flat function calls with literal arguments is what interactive program usage is all about.

the stallman/ousterhout debate on usenet back in the 90s (from which guile sprang) may be interesting reading, but i think kreinin's post linked above has more deep insights

By @throwaway81523 - 7 months
I never liked tcl but the implementation was definitely small, which mattered more back then than it does now. Does anyone still care about it?

These days what we really need is an easily embeddable Python. Guile is very nice if you want a somewhat fancy Scheme system, but it got out of control if all you wanted was something light and embeddable.

By @hejira - 7 months
I can also very much recommend his book about programming methodology. Lots of good sane advice there for anyone wanting to learn more about structuring code and keeping everything readable and bug free.
By @dang - 7 months
Related:

A brief interview with Tcl creator John Ousterhout - https://news.ycombinator.com/item?id=34733120 - Feb 2023 (92 comments)

By @1vuio0pswjnm7 - 7 months
I want something like a "RAMcloud" for home use. A computer with more RAM than secondary storage that boots from USB and no pre-installed corporate OS.
By @bbarnett - 7 months
Thanks John, I've kicked many a people from IRC using TCL.