6 ms·
Last use I remember seeing for it was in scripting Intel FPGAs https://www.intel.com/content/www/us/en/docs/programmable/683432/22-2/command-line-scripting.htm
by jamal-kumar 2y ago
Last use I remember seeing for it was in scripting Intel FPGAs
https://www.intel.com/content/www/us/en/docs/programmable/683432/22-2/command-line-scripting.html https://www.intel.com/content/www/us/en/docs/programmable/68...
- duskwuff 2y agoTcl is widely used in EDA automation in general - it's not just an Intel thing. Xilinx, Synopsys, Cadence, and Mentor all use Tcl extensively, for example.
- jamal-kumar 2y agoSuper interesting, what's the rationale behind its use there?
- duskwuff 2y agoThat's what it was created for, believe it or not. And it's been used there since the early '90s; there were very few other embeddable scripting languages at the time, so it caught on quickly.
- bsder 2y agoJohn Ousterhout realized that every single EDA tool at Berkeley wound up implementing a crappy extension language. So, he implemented a language so that there could be a single, not-so-crappy extension language for the Berkeley EDA tools. He made C integration particularly easy (something the lisps of the time didn't really do). As his students spread out, each company they hit had a shitty extension language and they lobbied to get it replaced with Tcl and thus Tcl spread. The issue with languages is that memory, CPU, and disk in the early 1990s are still fairly expensive. You need a language that is small yet still complete. Even today, the only languages that really fit that bill are Scheme/Lisp, Tcl, and Forth. The memory limitations releasing are why you see the "stringly-typed" scripting languages like Tcl, Perl, etc. from the late 1980s transition to "dynamically typed" languages in the 1990s like Python, VB, later Ruby, Javascript, etc. Tk popped up because GUI development at the time was utter shit (web doesn't exist, VB6 doesn't exist, etc.). It is really hard to describe just how much better Tk was than anything else in the time frame.
- bch 2y ago> It is really hard to describe just how much better Tk was than anything else in the time frame. This[0] vs (from memory w/o a computer atm…): #!/bin/env wish button .b .b configure -text “push me” -action {puts “don’t push me!”} pack .b [0] https://users.cs.cf.ac.uk/Dave.Marshall/X_lecture/node5.html#SECTION00530000000000000000 https://users.cs.cf.ac.uk/Dave.Marshall/X_lecture/node5.html... ====== #include <Xm/Xm.h> #include <Xm/PushB.h> /* Prototype Callback function */ void pushed_fn(Widget, XtPointer, XmPushButtonCallbackStruct *); main(int argc, char **argv) { Widget top_wid, button; XtAppContext app; top_wid = XtVaAppInitialize(&app, "Push", NULL, 0, &argc, argv, NULL, NULL); button = XmCreatePushButton(top_wid, "Push_me", NULL, 0); /* tell Xt to manage button */ XtManageChild(button); /* attach fn to widget */ XtAddCallback(button, XmNactivateCallback, pushed_fn, NULL); XtRealizeWidget(top_wid); /* display widget hierarchy */ XtAppMainLoop(app); /* enter processing loop */ } void pushed_fn(Widget w, XtPointer client_data, XmPushButtonCallbackStruct *cbs) { printf("Don't Push Me!!\n"); }
- KerrAvon 2y agoHyperCard existed. Big missed opportunity for Tcl was the lack of a solid version of Tk for classic Mac (30 years ago). Would have made early Python less essential.
- buescher 2y agoTk was pretty usable for tcl/tk use cases on Mac by later 7.x releases, say 1996 or so. Still hard to get a really native UX on Windows or Mac though. HyperCard was already on its way out. 30 years ago is maybe closer than you think?