21 ms·
A brief interview with Tcl creator John Ousterhout
- anthk 4y agoJimTCL it's fun too, specially for embedded devices. No TK, tho, but you have SDL2 support. And network/TLS support too. https://github.com/msteveb/jimtcl https://github.com/msteveb/jimtcl
- tpoindex 4y agoJO might be interested to see that Tcl is now implemented in Go. Not a clone, but the actual Tcl code: https://gitlab.com/cznic/tcl https://gitlab.com/cznic/tcl Tk too! https://gitlab.com/cznic/tk https://gitlab.com/cznic/tk Made possible by a clever C to Go compiler: https://gitlab.com/cznic/ccgo https://gitlab.com/cznic/ccgo
- doctor_eval 4y agoI was really into Tcl in the mid 90s. Loved it! And Tk was awesome! And then there was Expect… But despite now being a Go programmer, and as much as I’d like to try it, I can barely remember a single thing about any of it. But I do wish there was a bit more info in the README.
- RHSeeger 4y agoI am trying to figure out what you mean by this. I was under the impression the official Tcl source was in C. Can you provide more of an explanation?
- robotresearcher 4y agoThe C source has been translated ('transpiled') to Go source. That's not what is usually meant by 'implemented in', but I guess it's not wrong, since there now exists an implementation in Golang.
- RHSeeger 4y agoAh, ok, that makes more sense then. The "implemented in. Not a clone" made it sound like the actual, core language implementation had been switched over to Go... and clearly that didn't sound right.
- tpoindex 4y agoRight, the reference Tcl implementation is still in C. This project takes the C code and produces Go, along with a supporting libc emulation in Go. It's still the original C code, not a clone as Jim or Picol.
- RHSeeger 4y agoThanks for the clarification. I don't use Tcl for normal work anymore (though I still use it for small things), but it still has a very special place in my heart. It's one of my favorite languages to program in.
- hulitu 4y agoIt is not implemented, it is translated. I wonder how many bugs have been introduced by this translation.
- pjmlp 4y agoThat isn't the official one, just yet another implementation. https://www.tcl.tk/software/tcltk/8.6.html https://www.tcl.tk/software/tcltk/8.6.html
- hackandthink 4y agoThey talk only about Tcl. A more lasting contribution: Why Threads Are a Bad Idea (1995) [pdf] (gatech.edu) https://news.ycombinator.com/item?id=17297325 https://news.ycombinator.com/item?id=17297325
- amelius 4y agoFunny thing is that Ousterhout comes from the hardware design world, and in e g. VHDL, basically you have threads everywhere.
- zeckalpha 4y agoYou have concurrency and parallelism everywhere but not threads.
- amelius 4y agoHence "basically".
- nrclark 4y agoI don’t think threads are really a concept that’s applicable to Verilog/VHDL. Stuff operates in parallel in those languages, because you’re essentially describing little machines that all run independently of each other. You probably have some handoff from one machine to another. It’s more like Factorio and less like multi-threading.
- sitkack 4y agoEveryone is talking past each other here at different semantic levels. From the old hn convo, which I agree with. > Structured threads aren't that hard (e.g. task-based systems, thread pools). > Unmaintanable raw-pthread messes are a nightmare sequel from the director of Endless GOTOs. I think @Amelius is over generalizing on parallelism while Ousterhout is talking specifically about fine grain locking as a specific form of implementing parallelism.
- gopalv 4y agoThe whole "is Rust relevant" feels like that needs the Ousterhout "A little bit of slope makes up for a lot of y-intercept" graph[1] stapled to the same. I'm not sure what the y-intercept of Rust is, but its slope seems to be pointed towards more code being written in it than ever before. For example, the wasm compilation is probably the clincher for my toy projects because I like to build stuff to run on a website, but I don't always like writing in JS. [1] - https://gist.github.com/gtallen1187/e83ed02eac6cc8d7e185 https://gist.github.com/gtallen1187/e83ed02eac6cc8d7e185
- b112 4y agoRust is, but its slope seems to be pointed towards more code People playing with new stuff in a regular basis? HN Readers: all, RestOfWorld: None. People who have heard of rust? Similar to above. Rest of world=99.99% of devs. Yes I am exaggerating, but this place is a bubble. Rust does seem to be growing in popularity, but so far, doing so in a really tight community.
- bsder 4y agoYes and no. Rust is being used where it makes sense--generally security. So, gamedev won't use it for main loops but will use it for networking code. The crypto Ponzi brigade chose Rust for a reason. Some of us who write communication stacks (TCP/IP, CANBUS, etc.) try to use Rust whenever possible. However, you are correct in that Rust popularity is growing, but it's going to be slow. If you look at the TIOBE index, there is a limit as to what Rust can really displace. A lot of the top languages are now GC-based, you're not going to reach for Rust if you can use those. So, Rust can realistically only displace C, C++, and ... nothing else. That means almost 75% of programming language use cases aren't even in scope. And C programmers really aren't going to gravitate to Rust as it's more of a C++ replacement. So, you need a specific usecase (security) or a greenfield project that would use C++. That's going to be a slow climb.
- pjmlp 4y agoYou just have to look to domains where C++ rules to see that while the community is aware of Rust, hardly anything is happening in HPC, HFT, GPGPU, Khronos APIs, LLVM/GCC, MPI, OpenMP, AUTOSAR[0], Unreal/Unity/Godot, PlayStation, XBox, Switch, Apple and Windows official APIs,.... So while Rust is being adopted, it is at the same scale that C++ was against C around the early 1990's, in regards to market size adoption. [0] - They are looking into it, still no standard update that allows for Rust
- RcouF1uZ4gsC 4y agoJohn Ousterhout (along with Diego Ongaro) is also the creator of the Raft consensus algorithm.
- cosmojg 4y agoHe's right up there with Linus Torvalds and Fabrice Bellard.
- fmajid 4y agoHe was also a pioneer of journaling file systems.
- Upvoter33 4y agoThis is not true. Journaling file systems trace their roots at least as far back as Cedar ("Reimplementing the Cedar File System Using Logging and Group Commit") in the late 1980s. Ousterhout and Rosenblum worked on log-structured file systems in the early 1990s, which are markedly different from modern journaling file systems (JFSs uses a log to ensure crash consistency, but metadata/data end up in a fixed place; LFSs put everything into the log and keep it there).
- spacedcowboy 4y agoJohn Ousterhout ... Tcl may be the thing that most associate with his name, but to me he's Mr Magic[1]. Magic is the research program that (helped) begat efabless[2] and gives me the hope of making my own chip some day, just after this next major project is over and done with. 1: https://en.wikipedia.org/wiki/Magic_(software) https://en.wikipedia.org/wiki/Magic_(software) 2: https://efabless.com/kb-articles/layout https://efabless.com/kb-articles/layout
- tilt_error 4y agoI’ve spent around 10 years building software with and around Tcl, embedding Tcl as command processors in a distributed system —- lots of fun. Some decades later I see that Ousterhout, among others of course, is still contributing to the community, e.g. the Raft consensus algorithm, while the steam may have left Tcl.
- monetus 4y agoThis is a quick but good read. I think he is maybe too humble sometimes. Some may not know Richard hipp of SQLite fame develops other tcl projects - https://youtu.be/nmgOlizq-Ms https://youtu.be/nmgOlizq-Ms https://wapp.tcl-lang.org/home/doc/trunk/README.md https://wapp.tcl-lang.org/home/doc/trunk/README.md
- bch 4y agoRichard often calls sqlite itself “a Tcl extension that escaped into the wild.” It’s no accident that a lot of sqlite tests are written in Tcl, or that a “weird language like Tcl” has first class sqlite support. In fact, for a while Richard also sat on the Tcl Core Team (TCT), shepherding its development.
- hummus_bae 4y ago[dead]
- amelius 4y agoLink is broken
- natmaka 4y agoIf you liked this interview do not miss J. Ousterhout's broader "Favorite Sayings" ( https://web.stanford.edu/~ouster/cgi-bin/sayings.php https://web.stanford.edu/~ouster/cgi-bin/sayings.php )
- keithalewis 4y agoI wish more people would say "I don't know" when they don't know. It not only increases your credibility, it doesn't waste other people's time.
- deleted 4y ago[deleted]
- doodlebugging 4y agoThanks for this article. A few years ago I had a task involving reading some data files to understand whether they were corrupted or still usable. The software to read the files usually came as part of a proprietary package with a price tag high enough that it made no sense to license for this one small task. I asked myself: "how hard can it be?" I decided to search online for easy and free ways to read the files. It had been several years since I last programmed anything though I had done a bit of script modifications on some perl/awk/sed scripts. I found Tcl/Tk after a bit of digging and decided to give it a whirl. In all I spent about 16 hours dinking around with Tcl and had a nice, short program written to read everything, display the data for a QC check, and write it to disk. The documentation was detailed and concise. Of all the programming languages that I have used over the years the fact that I could sit down and find the right set of simple commands and assemble all of it into a working program in a couple of days with no learning curve pain or friction was amazing. Thanks John Ousterhout.
- toolslive 4y agoVery nice article. While reading it, I was thinking of a Bertrand Russell quote: "...the stupid are cocksure while the intelligent are full of doubt."
- therealcamino 4y agoInteresting, I've never heard that quote but I've always liked a similar line in Yeats' The Second Coming: The best lack all conviction, while the worst Are full of passionate intensity.
- LewisJEllis 4y agoI recently read his book, “A Philosophy of Software Design”, and loved it. It’s 175 pages of well-refined, to-the-point, applicable wisdom; highly recommended.
- sitkack 4y agoIt is an excellent book and a better example of how to be a low BS human being that strives to get the point across, not dress things up to look smart.
- vendiddy 4y agoThis is one of my favorite books on software development. It focuses on timeless principles, but uses concrete examples to ground everything he teaches.
- JoshTriplett 4y agoOne of my favorite quotes in Computer Science comes from Ousterhout: "The biggest improvement in performance is the non-working-to-working."
- IshKebab 4y agoTCL is awful. I am unfortunately forced to use it because the entire EDA industry has settled on it as the scripting language of choice (silicon engineers tend to be pretty terrible programmers in my experience; despite silicon design and verification being programming they often excuse shitty practices by saying "we aren't software engineers"). Performance isn't such a big deal - even though he says it isn't as fast as a really slow language like Python, the scripts tend to be very short. The issue is "everything is a string". Anyone who has written any significant Bash or CMake will be familiar with how shitty that is. TCL is actually a bit nicer than CMake or Bash, but it still suffers from the fundamental problems of stringly based languages. Quoting is insane and hard to get right. Type errors are very common. I would say TCL has had a negative effect overall at least on the EDA industry. Maybe if it didn't exist we could have had a slightly nicer embedded language like Lua. Or even just a C API.
- robinsonb5 4y agoFunnily enough I'd never used Tcl until I started tinkering with FPGAs, and while initially I hated it, I went through a process of developing a grudging respect for it, and now actually quite like it! What I will say is it's absurdly easy to write a Tcl extension - I wanted to talk to a soft CPU using a Xilinx Platform Cable USB (which isn't supported by OpenOCD). I ended up creating a simple Tcl extension around xc3sprog and it worked a treat - I'm pretty sure the engineering effort to do the same for a different scripting language would have been much greater.
- zeveb 4y ago> Quoting is insane and hard to get right. This really makes me wonder if you’ve used Tcl. Quoting in Tcl is so much simpler than in e.g. bash or cmake. It’s all about know when a string will be evaluated or not. > Type errors are very common. In my experience, no more so than in any other dynamic language, e.g. Python or Lua. Again in my experience, if one wants a scripting language — i.e., one used to orchestrate a number of commands — then Tcl is exactly what the doctor ordered.
- IshKebab 4y ago
- martyvis 4y agoI was into Tcl (and Tk) in the mid 90's. There was a great database that I think had Tcl bindings called Qddb (quick and dirty database). I used these to hack together a few Web cgi-bin applications. One was a super fast library catalogue (something like 10 times quicker than the proprietary one I imported the catalogue data from). The other one I like to think as my "almost invented Facebook" moment. It was a template driven web application that allowed you to publish your profile page (and of course edit it in the browser) and also project pages. It got some use within the multinational resource company I was in as a way of improving collaboration in those early web days.
- melling 4y agoOusterhout developed RSI in the mid 1990’s and started programming with Dragon Dictate. https://web.stanford.edu/~ouster/cgi-bin/wrist.php https://web.stanford.edu/~ouster/cgi-bin/wrist.php About 15 years later, Tavis Rudd developed his system to program by voice. https://youtu.be/8SkdfdXWYaI https://youtu.be/8SkdfdXWYaI Now here we are a decade, or 3 decades, later. Damn, the future sure is taking its time.
- lizknope 4y agoI remember my freshman year of college in 1994 when I took C++ and asked the professor about how to write a GUI program. She told us about the Motif toolkit. I got a book from the library and typed in a hundred lines of boiler plate code just to make "Hello World" in Motif and C. It then took about 5 minutes to compile on a DECstation 5000 with 32MB RAM running Ultrix. Someone in the computer lab saw me with the Motif toolkit book and said "Why don't you use Tcl / Tk?" I said "What's that?" and they showed me. I had "Hello World" in 3 lines and could edit and start my new version in a couple of seconds instead of minutes to compile. After I graduated I got a job in the semiconductor industry which ran on Solaris and HP-UX and now Linux. All our digital tools from Cadence and Synopsys started using Tcl as the built in scripting language. I ended up teaching my older coworkers how to program in Tcl. I was still writing Tcl yesterday. There are a lot of things I hate about it but it has stuck around. The text before the interview mentions AFS which I did not think Ousterhout had anything to do with. I thought it was from Carnegie Mellon and then IBM Transarc. We used AFS at my school and I still miss it. Going to NFS in the industry seemed like a step backward. We only had an 8MB quota for our entire Unix account in college. It was great when working on a group project that I could make a dir in my account for that project and then add the 3 other classmates login id's to the group dir ACL list. These days at work depending on the size of the company we have to send an email to the sysadmin / devops team to say "Add user ABC to project group ID XYZ" and then wait hours or days. At my current job we can request Unix group access through a web site but I still think it is some human running commands to manually add users because it takes about 24 hours.
- bch 4y ago> The text before the interview mentions AFS which I did not think Ousterhout had anything to do with. I thought it was from Carnegie Mellon and then IBM Transarc. Ya - I wonder if the article writer actually meant LFS (log-structured file system)[0] which was part of the Sprite operating system project. [0] https://en.m.wikipedia.org/wiki/Log-structured_file_system https://en.m.wikipedia.org/wiki/Log-structured_file_system
- angrymonks 4y agoGood Catch! Updated here: https://github.com/breck7/pldb/commit/312d5dab32fda3782e8466e3134aa744e527ebfe https://github.com/breck7/pldb/commit/312d5dab32fda3782e8466...
- trentnix 4y agoOusterhout is the author of one of my favorite programming-related books, A Philosophy of Software Design. It is remarkably concise and practical. I re-read it whenever I sometimes fall into as it reminds me design and craftsmanship are the most important aspects of building great software. https://web.stanford.edu/~ouster/cgi-bin/book.php https://web.stanford.edu/~ouster/cgi-bin/book.php
- trentnix 4y agoI managed to completely mangle that post via phone editing. Meant to say, I re-read it whenever I sometimes fall into a technical hole as it reminds me design and craftsmanship are the most important aspects of building great software.
- t43562 4y agoI don't want to like tcl at all but it's asbsurdly easy to embed in C and has very powerful constructs once you get used to them and no Global Interpreter Lock like python. So there was a discussion about why people still use C or similar recently and I think that C+tcl is a potent combination where you can mix C and TCL in a very natural way such that you never do in C what TCL does much more easily but you can still get excellent performance where it counts. It's all theoretically possible in python but just feels like much more work.
- monetus 4y agoYou might be interested in clicking through the puredata source code. https://github.com/pure-data/pure-data https://github.com/pure-data/pure-data
- AlbertCory 4y agoI embedded Tcl in the agent for Oracle Enterprise Manager in the mid-90s, and got to meet John & his team as a result. Read about it here: https://albertcory50.substack.com/p/in-larrys-kingdom-part-2 https://albertcory50.substack.com/p/in-larrys-kingdom-part-2 A friend of mine worked for him at Sun, and said his coding standards were incredibly rigorous, but never silly.
- tpoindex 4y agoHeh, I have a funny story about that too, having written the open source Oratcl extension that was used as a basis for OEM.
- bch 4y agoGo on…
- AlbertCory 4y agoI'm not sure what you mean by "the open source Oratcl extension that was used as a basis for OEM."
- tpoindex 4y agoSorry, I didn't mean to imply all of OEM was based on Oratcl, just the Tcl extension used to access the database. I was listed in one of the OEM manuals in the copyright statement, along with the RBOC where I worked when I created Oratcl. I don't recall the names of the people at Oracle who contacted me to tell me they were using Oratcl, perhaps 'Mario' or 'Eric' ?? The funny part was when I got an email from someone at Oracle, perhaps in legal, who wanted me to sign an "indemnify and hold harmless" statement for my code, code that I shared freely, received no compensation for, and had no control on how it was used by Oracle in their product -- Rrriiight. I replied "no thanks", and if Oracle wanted to use my software, they simply should comply with the BSD license that it shipped with, including the attribution clause.
- AlbertCory 4y ago
- Upvoter33 4y agoThe real contribution of Tcl/Tk, I think, is Tk, which still is better than most things I've seen for spinning up a GUI without a lot of work.
- readingnews 4y agoI always forget his name, but never forget Magic. There were so many cool features of Magic. I wrote scripts so that if you made a block cell, like for a multiplier, you could then script it out to any size you wanted by replicating cells, but renaming wires and pads for export to Spice tools. So nice.
- JohnFen 4y agoTCL remains my favorite scripting language of all time, and I did a port of it that was the very first software I had a hand in that was adopted by a major corporation (albeit with no compensation). Thank you, Mr. Ousterhout!
- bitwize 4y agoAh, Tcl. A madman's idea of Lisp-style metaprogramming power. But nothing is faster for building GUIs than Tcl/Tk, especially for wrapping already existing Unix functionality. Not even something like Visual Basic. So it has earned a special place in my heart, even if it's not my first choice for generic application development.
- Bluecobra 4y agoAs a network engineer, Tcl/Expect/bash scripts made it really easy for me to automate some of my tasks back in the day (e.g. backing up a router config). I since moved on to Python + Netmiko. I can still see learning Expect being useful for someone trying to dip their feet into simple automation.
- ehPReth 4y agoAh, TCL. Takes me back to the fun days of IRC and Eggdrop! :) https://www.eggheads.org https://www.eggheads.org edit: ooh, and https://tclarchive.org https://tclarchive.org
- thelastquestion 4y agoI am fortunate enough to have had John as a professor. He truly cares about his teaching and his students. Each Friday, he would end the class with a life lesson/a question to think about over the weekend unrelated to the course content, just trying to help us think about how to lead more fulfilling lives. I have a lot of respect for him as a human being, on top of his contributions to the field.
- Manuel_D 4y agoEchoing this. One of his favorite such lessons was, "a little bit of slope make up for a lot of Y-intercept". It's easy to get demoralized encountering someone way more skilled than you. But the right response is to learn from them and accelerate your own growth.
- hulitu 4y agoHe also gave us the Magic VLSI layout editor -great tool.