728 karma · joined July 29, 2018
I don't suspect they'll make too many changes (if any) to the existing standard library itself, but rather will put functions into their own sub-namespace moving forward like they did with concurrent containers and the like.
Given their penchant for backwards compatibility, I think old code is safe. Will it create a schism? In some codebases, sure. Folks always want to eat the freshest meat. But if they do it in a non-obtrusive way, it could integrate nicely. It reminds me of tuples, which had a similar expansion of capabilities, but the integration went pretty well.
In the interim, MS demonstrates how C# 8.0+ can fake it pretty well with recursive pattern matching: https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...
Not the same I know, and I would love me a true ADT in C#.
Edit (a formal proposal): https://github.com/dotnet/csharplang/blob/18a527bcc1f0bdaf54...
I use Windows. In fact, I like Windows. I know lots of (ok, more than 5) greybeards who feel exactly the same way. I don't want Linux to be Windows, but I also don't want Linux on my personal desktop either.
I have a Mac Mini M1 on my desk, and I use that for the things it's good for, mainly videoconferencing. It's also my secondary Adobe Creative Suite machine.
On my Win11 desktop, I have WSL2 with Ubuntu 24.04 for the things it is good for- currently that's Python, SageMath, CUDA, and ffmpeg. For my Unix fix, I use Git Bash (MSYS2) for my "common, everyday Unix-isms" on Windows.
I also use PowerShell and Windows Scripting on my box when I need to.
Why? Well, firstly, it's easy and I've got stuff to do. Secondly, cost is not really an issue- I bought my Windows Pro license back with Win7, and it was about $180. That was maybe 15 years ago. They have graciously upgraded me at every step- Win7 -> Win10 -> Win11, all at no cost. Even if I had had to buy it, my Taco Bell tab is higher in any given month than a Windows license (love that inflation).
Why else? Everything works. I get no annoying popups, and I really no longer sweat garbage living on my drive, because that ship has sailed; wanna waste 50GB? Sure, go ahead.
But the most important reason? My hardware is supported. My monitors look great; printers, scanners, mice and USB drives & keys all work. In fact, >90% of the time, everything just works. Further, I can share effortlessly with my Mac, all my Linux servers speak SMB (CIFS), Wireshark works, and my programs are all supported including most open source software. And I do run apps that are 20+ years old from time to time.
Truth be told, I have tried the dance of daily driving Linux, and it's a laundry list of explanations to others why my stuff is different or deficient in some way. The kicker is that my clients don't care about purity or coolness factors.
Linux has its place. But please don't put in on my main machine, and please don't give it to my family members. They're only being nice by living with a sub-par desktop experience. It will always take a herculean effort to stay on par with Windows or MacOS, and no one really wants to put their money where their mouth is.
Please don't misunderstand. I admire and respect authors of open source software, and my servers thank them. But being a contrarian and dogfooding what KDE and GNOME put out, fighting with Nvidia and AMD, dealing with constant driver interface changes, and not having proper commercial software support is not my idea of fun. It was 30 years ago. Today? I'd rather hang with my daughter or write some code.
These distros have had 35 years. I don't know what else to say.
We just couldn't keeps apps' hands out of the cookie jar back then.
But then some folks came along about 15 years ago screaming about spaces, and they won, so now tabs are 2 or 4 spaces.
The law of unintended consequences strikes again!
Note: not meant to denigrate you space supporters out there.
Does anyone know if the library's quality is on par with the GNU or Clang libraries? Google has their own too, if memory serves. Is there an implementation deemed "the best"?
And you're definitely not wrong on the abstract subsection. I mean, essentially all he says is that "there's a mechanism in our system which is so complicated/convoluted that we decided not to model it with TLA, so instead we chose to simply call it non-deterministic, and therefore it is now abstract non-determinism." Hmm. If we're truly being abstract, that's not really all that different from the PRNG and user input examples, except, you know, it's actually still completely deterministic code.
Also, I have to say- 5 different types of non-determinism, and not one mention of quantum systems?
I took issue with #4 too. If your code consumes API endpoints that are non-deterministic, that strikes me as something you should take up with your vendor. An error condition on a network call is not non-determinism. It's just reality from time to time.
A few that I found: logical operators do not short-circuit (so both sides of an or will execute even if the left side is true); it has two types of subprograms (subroutines and functions; the former returns no value while the latter returns a value); and you can't fall through on the Ada equivalent of a switch statement (select..case).
There are a few other oddities in there; no multiple inheritance (but it offers interfaces, so this type of design could just use composition).
I only perused the SPARK pdf (sorry, the first was 75 pages; I wasn't reading another 150), but it seemed to have several restrictions on working with bare memory.
On the plus side, Ada has explicit invariants that must be true on function entry & exit (can be violated within), pre- and post- conditions for subprograms, which can catch problems during the editing phase, and it offers sum types and product types.
Another downside is it's wordy. I won't go so far as to say verbose, but compared to a language like Rust, or even the C-like languages, there's not much shorthand.
It has a lot of the features we consider modern, but it doesn't look modern.
Unless you work in an industry (such as academia, or farming, or auto manufacturing, or any of the other thousands of industries), what you know is superficial.
You think you know, because how complicated could something be?
The public could learn a thing or two by asking questions from people who make these pursuits their lives.
For instance, did you ever stop to think that Professors advise students who write papers, and are therefore listed as co-authors?
Another knee-jerk would be: look at these professors only putting out 20 papers a year; they are so inefficient- they should be mentoring far more students for the money we pay them.
It cuts every way until you talk to people.
Space is big. Whatever you think big is, it’s so much bigger, that even thinking about it is mind bending and could induce vertigo.
The nearest star, our Sun, could hold 1.3 million Earths. It only looks the size it does because it’s far away. How far? At the speed of causality (the universal speed limit), which is the speed at which light travels in a vacuum, of 3.0 x 10^8 m/s or 670.6 million miles per hour (pretty fast), light from the Sun takes 7 minutes to reach Earth. For a comparison on the scale of just the planets in our solar system, that same light takes 5.5 hours to reach Pluto.
You might think that’s not so big.
As a point of reference, Voyager, which has been traveling since 1977 (~47 years) at around 38,000 mph, is around 23.5 light hours away.
Now, our closest star, Proxima Centauri, is 4.2 light years from Earth. Voyager hasn’t even gone a light day in nearly 50 years. At currently attainable speeds, it would take over 50,000 years to get there.
That’s just the closest star. Just one potential solar system.
Our galaxy, the Milky Way, is thought to have 1-400 BILLION stars (hard to tell from the inside). Our observations indicate that it is 100,000 light years across.
Now if that wasn’t bad enough, for intergalactic travel, the closest galaxy, Andromeda, is 2.5 million light years away. It is estimated to have up to a trillion stars.
After that, it gets even more stupefying. We can see hundreds of billions (with a b) of galaxies as far away as GN-z11, which is estimated to be 32 BILLION light years away.
We’ve made it less than a light day.
We have no idea if we can even approach even a substantial fraction of the speed of light, and even if we could, there’s time dilation and the issue of slowing dowm. Communication would be anywhere from difficult to inconvenient to practically impossible.
Anything beyond that is either science fiction or a very well kept secret.
So that’s the reason we don’t have alien fossils or microbes.
It can take 18 months just to get to the next closest planet, and 8-10 yesrs to get to the farthest. never mind anywhere else.
And we are so far away from everything (as is everything else), even if there were radio or tv broadcasts, they would be far too weak for us to detect.
There probably is life out there, but maybe the great filter is that stars have a fixed lifespan and the distances are just too great to overcome.
Wrt exceptions, you didn't elaborate. Exception handling can be a hot button issue with passionate opinions. My comments are general in nature; they are not specifically directed toward you or the Zig language.
IMHO, exception handling is inherently neither good nor bad- it is merely a mechanism; it has upsides and downsides, and the context in which they are being discussed / analyzed / used should be the guiding factor.
C provides no bounds or overflow checking. In the context of a system which must not fail, you are then forced to use some combination of rigorous assertions, overflow flag checking, and return value verification. It's cumbersome and ugly.
Rust provides both bounds checking and overflow checks (in debug mode at least). Asserts are still available, but are not required in as many instances as in C.
Neither of those languages provide what we would consider to be exceptions or exception handling. An argument could be made that if you squint the right way that Rust's resume after panic is a form of exception handling, but that's a semantic debate, and it would certainly be considered non-traditional if it were to be categorized as such. Wrt C, it had never occurred to me that setjmp()/longjmp() could be used as an exception handling mechanism. I have always seen them used as a context-switching mechanism for e.g. tasking (green-threads).
In languages that provide exception handling, both runtime and user defined exception conditions are handled by the runtime itself (oftentimes behind the scenes). This mechanism allows one to provide a catch-all lexical scope for handling exceptions, which can be cleaner and more ergonomic from a programmer perspective and can be simpler to reason about (although this is certainly debatable). It also provides an opportunity to handle conditions that might be unknown or unforeseen at the time the code is being written. Defer semantics in a language without exceptions might be considered a mid-ground approach.
The usual complaints with exceptions are: (1) that they essentially constitute hidden control flow and hidden code execution that happens outside of the plain reading of the source; (2) that you pay the performance penalty for checking / verifying the exception conditions at every line of code (also see #1); (3) that the conditions considered "exceptional" by most implementations are instead just run-of-the-mill error conditions that should be handled explicitly; and (4) that there is no well-defined structure or convention for where and when to handle exceptions and when to pass them up the stack (again, see #1) which results in a spaghettification of sorts.
C++ (optional), Java, JS, Python and C# (among many others) all provide exception handling and are all mainstream.
My general rule of thumb (which is always subject to situational variance) is that application code benefits from robust exception handling while systems level or performance critical code should not use exceptions, or at a minimum should be very judicious with usage.
Exceptions can be abused and misused like any other feature, but the reduction in repetitive manual error checking (see Go) can be a win for many teams.
YMMV of course- we have all been dragged into the 7th circle of hell at one time or another, and programming features are a lot like liquor; once you've gotten sick on one, it's near impossible to go back.
Not sure I get your second point- I am aware of what is meant by the trust fund; actually, I thought it was the only one- you enlightened me about Medicare's. (If you re-read my post, you will see my use of the plural "funds" in "trust funds" was referring to the money itself, not multiple funds).
Anyway, I see 12-years of reserves at current projections for the HI (Part A fund for Hospital services), while the SMI (Part B for Doctors and outpatient services) isn't even listed- this fund is the one that seems to be the dog. Wow. And it's not even close. Yowza.
https://www.ssa.gov/oact/trsum
I don't think it's fair to bring Medicaid into the discussion. There's no separate tax for it, and the vast majority of people don't receive it- it's a subsidy to the poor. If you'd like to discuss that I'd be happy to, but I'm more comfortable on fiscal realities than judging what amount to local humanitarian efforts; my opinions might not be well received because they are not particularly generous. Additionally, I think it is far outside the scope of my original point that people's taxes are much higher than they think.
I'll close on this note: I think it's important that people speak in specifics, especially in trying times. Both platitudes and demagoguery are damaging to the public discourse, as is information presented out of context and the substitution of opinion for fact.
I spoke out of my rear-end on Medicaid (you did kind of catch me out of left field), and I generally try not to do that. I did some more digging (unlike SSA, they are not very forthcoming), and I'll take my medicine.
Thanks for the eye opener. Take care.
In fact, I was trying to point out that our taxes were actually HIGHER than most people think due to FICA. Did I say these programs were covered?
My point was that they were taxed separately.
And to answer your question, the dirty little secret of government is that they raid the trust funds. Why else would the trust fund have interest income?
But it's not really from income taxes, it's from raising money through issuing debt.
I was not making the point you thought I was making.
SS: https://www.ssa.gov/news/press/factsheets/HowAreSocialSecuri...
How is Social Security financed?
Social Security is financed through a dedicated payroll tax. Employers and employees each pay 6.2 percent of wages up to the taxable maximum of $176,100 (in 2025), while the self-employed pay 12.4 percent.
Total income, including interest, to the combined OASI and DI Trust Funds amounted to $1.351 trillion in 2023. ($1.233 trillion from net payroll tax contributions, $51 billion from taxation of benefits, and $67 billion in interest)
US Social Security Expenditures in 2023: $1.351 trillion.
Do you see income taxes in there other than those from recipients?
I won't dirty up this post further, but Medicare is likewise funded; like SS, income taxes on Social Security benefits do go partially to fund Medicare, as those people are generally program recipients. The final funding source is Part A premiums.
I don't mind banter or disagreements, but please do not tell me I'm wrong when you have not even bothered to look. Your gut feeling is not a good basis to dispute someone's premise.
People can still submit paper returns (and this is common for any businesses beyond a certain size- I've seen 200+ pages for a small-ish company's return). Supporting documentation and schedules can be non-standard (like receipts, letters, exhibits, spreadsheets, contracts, etc.), and the forms themselves can be hand-written and the other docs can be on inconsistent paper sizes so bulk ocr of any kind is rough.
Really, you have several challenging problems- maybe 200M individual returns filed every year, who knows how many corporate returns, all of the daily/monthly/quarterly filings for payroll, then for tax season you have an army of temp workers who are responsible for doing manual data entry which is cumbersome.
Then you have the financial management/reporting/reconciliation side of it. The volume is staggering. Electronic transfers in both directions, handling paper checks both to and from taxpayers. More manual data entry for manual payments.
And the kicker of all this is that it actually works for some pretty reasonable value of that term. And everyone here knows what the code probably looks like and we definitely know what the code's documentation looks like.
How would you like to sit down with the nearly 7,000 pages of the US Tax Code and start taking a bite of that monster? It's not a reference manual- the amount of cross referencing with other laws and regulations required would be monumental.
So, you are correct, AI is definitely not the answer; But I suspect the AI is for rooting out tax cheats (or maybe certain tax cheats), not running the system itself.
The state's monopoly on violence is the ultimate tiebreaker, although as noted, there are many other ways these governments can extract concessions (banking, utilities, telecom, egress (!!)).
That's why Uncle Sam is nice to have on your side. A libertarian utopia or corporate controlled trading zone doesn't stand a chance without the backing of a sovereign with a military.
I know you're pointing out what "taxes" get you, but most people look at the tax brackets for income taxes and correlate that with the level of government services they receive.
It's important to note that income taxes do not fund Social Security and Medicare. These are funded through FICA taxes, paid 7.65% from the individual and the employer match of another 7.65%. That's why if you are self-employed (or do 1099 work on the side), you pay self employment taxes, which is both halves to the tune of 15.3%.
So people actually pay their income tax (less the standard or itemized deductions) on the stairstep up to the top bracket IN ADDITION to FICA.
Not passing judgment on whether it's an equitable deal for everyone involved, but we do get taxed pretty heavily. Especially when you throw state income taxes (for those states that have them) and property taxes into the mix.
The system still has to disambiguate and support the prospect of it happening though.
Anyway, it’s hard to execute when your best and brightest keep jumping ship to the competition.
Please let me know if it was not Borland, because this is a good anecdote.
Nobody wanted to upgrade to XP. It was called the Fisher-Price OS because of the way they made the GUI colorful with oversized icons/shapes and rounded corners everywhere.
The old rule of thumb was that every other version was the good one, so people were naturally skeptical of XP (and after having seen ME, who could blame them). Not sure if that holds anymore, or if there is a good one.
No ads on the start menu. No bs notifications. OneDrive disabled and set to not auto-start.
I did have to disable all of the "interests" on the whatever-widget in the lower left corner, only leaving on the weather, so now it shows the current temperature, but doesn't feel the need to pester me about "breaking news". And I'm really irritable about that shit. Even text or an exclamation point grinds my gears; I feel that same way on mobile phones. No Best Buy, you don't need an indicator on your icon because I've dismissed your 3-times-weekly sale announcements.
Not sure about telemetry, need to look into that. I'm not really against telemetry, per se, provided it has a valid use case. If they're taking pictures of my screen while I'm working to train AI or do god knows what with it, I will deal with that (including moving full time to a distro, which I have done in the past).
Otherwise, my only real complaint is they manage to eff up the mouse in some way every every 4th update or so. Latest one is special pointers failing to return to normal after mousing away from whatever caused the special pointer (i.e. the pointer switches to indicate resizing a window and then doesn't switch back).
Beyond that, mostly smooth sailing. Wish WSL2 would finally officially support 6.x kernels, but they've been blocked on some random issues for 8+ months now.
I'm running Pro btw.
What they want to do is share what they think, and only read things that they agree with.
You hate everybody, lol.
All you have to do is read comments from members of the Rust community online, in every public forum where Rust is discussed in any way.
Understand, I am not trying to villainize an entire community of software developers; but for you to say something that's blatantly false is to just stick your head in the sand.
You should try and read the words people write. Opinions are not formed in a vacuum.
Edit: to be clear- I have no problems with Rust the language beyond some ergonomic concerns. I am not a Rust hater, nor am I a zealot. I do advocate for C# a lot for application code though. But I do not deride others' language preferences. You should not dismiss my observations because I used hyperbole. Obviously not every Rust dev thinks you can't write a secure C/C++ function; don't pick out the one hyperbolic statement to discredit my entire post. Bad form.