Treblemaker
As with many interpreted languages, maybe it's just too easy to iterate interactively with code until it "just works", rather than taking the time to design the code before writing it, leading to perception that it is a "write-only" language.
However, despite its reputation, even Perl can be written in a way that is human-readable. I agree with you that it is more a reflection of the programmer or the work environment than of the language itself.
As someone who has been developing tcl almost daily for more than 30 years, both object oriented and imperative code, I have not found it necessary to think this way.
Can you explain what leads you to this conclusion?
I find it curious that so many of the criticisms of tcl are that it doesn't have some feature or behavior of some other language. That has never stopped me from accomplishing what is needed with clear, elegant code.
Rule #10 in the Dodekalogue [0] explains why your preferred comment style is not supported: a command is not expected immediately after the last argument of the previous command. Terminate the command per rule #1 and it is perfectly fine:
puts "Hello" ;# A comment
Isn't that the same number of characters one would type to start a javascript comment? //
Almost any programming language can be beautiful in its simplicity if you work with it on its own terms. tcl doesn't deserve the hate.
[0] Dodekalogue is the common name for the twelve rules that define the syntax and semantics of Tcl. https://wiki.tcl-lang.org/page/Dodekalogue
Of course it's possible to create "write-only" code in tcl. But tcl is hardly unique in that respect. Good code design and coding practices help to avoid most issues just as in many other languages.
"Everything is a string" (EIAS) is not what leads to a complete mess; it's failing to go beyond an initial, superficial understanding of the syntax and language capability and general lack of discipline that lead to un-fixable messes.
This hasn't been the case for 25 years, since the 8.0 release. Tcl will store data internally in whatever format it was last used, and only convert if needed. Good coding practice pays attention to this to avoid "shimmering" a value back and forth between different internal representations unnecessesarily.
> It lacks arrays;
It does have associative arrays; and lists when used appropriately can fulfil many roles that would otherwise have been implemented in an array in another language
And tcllib[0], a collection of utilities commonly used with tcl, provides support for a number of different and complex data structions [1], many of which are written in C, not just more tcl scripts.
It's worth noting that Stallman's criticism linked above is more than three decades out of date. As with any programming tool, once you go beyond a superficial understanding of basic syntax, it can serve as a a very expressive and sufficient language.
[0] <https://www.tcl-lang.org/software/tcllib>
[1] <https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/toc.m...> (see: Data structures)
(Caution, many spoilers in the Wikipedia article) https://en.wikipedia.org/wiki/Project_Hail_Mary
[0] https://en.wikipedia.org/wiki/Foreign_object_damage#Runway_d...
I struggled with many of these things -- primarily time blindness, executive function and impulsiveness -- for most of my almost six decade life, and finally understanding what was happening -- and getting help for it -- has been life-changing.
As one friend put it, he would cut off his left testicle if it meant having working executive function. The idea that I -- and friends and acquaintances who share similar experiences -- are faking it is ignorant and insulting. That you do not suffer is a gift; be grateful. Maybe don't be so dismissive of the struggles and suffering of others.
[1] https://www.youtube.com/playlist?list=PLh4RKnr7ygXsO1ImoyB0K...
However, the parser is confused by unbalanced braces in comments.
Here's a classic case that turns up occasionally during development:
proc asdf { args } {
# if { first draft complex condition } {
if { final simplified condition } {
do something
} else {
do something else
}
}
Sourcing a file with the above comment inside the proc will produce: missing close-brace: possible unbalanced brace in commentTucker: The Man and His Dream (1988)
(Feb. 26, 2022) "“We have finalized our forecast of SC25’s amplitude,” says McIntosh. “It will be just above the historical average with a monthly smoothed sunspot number of 190 ± 20.”
"“Above average” may not sound exciting, but this is in fact a sharp departure from NOAA’s official forecast of a weak solar cycle"
[0] https://spaceweatherarchive.com/2022/02/25/the-termination-e...
But a prominent astrophysicist at the National Center for Atmospheric Research, Scott McIntosh, foresees the sun going gangbusters. The cycle is already off to a fast start, coinciding with the recent publication of McIntosh’s paper in Solar Physics. The study, with contributions from several of his colleagues, forecasts the nascent sunspot cycle to become one of the strongest ever recorded."
[0] https://www.washingtonpost.com/weather/2020/12/19/solar-cycl...
ORS 811.275
(1) A person commits the offense of failure to yield the right of way at an uncontrolled intersection if the person is operating a motor vehicle that is approaching an uncontrolled highway intersection and the person does not look out for and give right of way to any driver on the right simultaneously approaching a given point, regardless of which driver first reaches and enters the intersection.
Previous HN discussion on the story here [1].
I read that at first glance as
> Probably not the last, either, those joints ain’t gonna roll themselves.
and thought, hm, I need to remember this debugging technique next time I'm stumped.
When Joe has a problem with X, he should go ask for help, even though he's the one best able to deal with it? Should he ask himself for help?
Can you see the problem with blanket statements like this?
...
- ask for help
- try to explain how it's supposed to work
- try to explain how it's not working
- Listen to them come up with all the ideas that I've already ruled out
- Try to explain why their preferred idea has already been
ruled out or is not actually relevant to the problem
- conclude they still don't understand the problem or even
how this part of the system works
- go ahead and just solve the problem myself
...
before it's OK to stop "asking for help", and just fix the damn thing?Yes, it is. Compare with "External Combustion Engine" https://en.wikipedia.org/wiki/External_combustion_engine
Is Home Depot using webcams to track website visitors?
I typically browse in Firefox with ublock0 and noscript. However certain commercial sites require too many holes in the filtering and so I will use Edge in "Private Browsing" mode.Today while searching for a product at the Home Depot web site, Kaspersky popped up a message that "Microsoft Edge is using the Webcam". I was able to repeat this after closing the browser and then visiting the...