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 articleJohn 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)
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
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)
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 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
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.
[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...
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.
Edit: I guess not an interview, but he does answer some questions from the audience at the end.
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.
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.
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.
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.
[0] https://web.stanford.edu/~ouster/cgi-bin/spriteRetrospective...
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.
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
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.
A brief interview with Tcl creator John Ousterhout - https://news.ycombinator.com/item?id=34733120 - Feb 2023 (92 comments)
Related
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
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)
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 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
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.