The limitations were brutal. Initially you could only have 255 bytes in a string. The length of a string and the size of the allocation are now separate and you may need to think about that unused memory in your design. The problem now doubles with the introduction of UTF-8. Your string size is in bytes and you need to track characters separately.
If you want to create an array of strings you either need to specify the length of all strings and accept the memory overhead or have an array of pointers to strings. If you use an array of pointers you may end up choosing to use the 'nil' value as a sentinel that means "end of list." So we're right back where we started.
--
Because someone decided to downvote this HN has limited the speed at which I can reply. This site is tragic and I'm fully done with it now. You can spread propaganda and poorly sourced zeitgeist and be among friends but if you try to have a genuine conversation about programming languages you are made to be unwelcome immediately. Screw this.
--
> No other data structure works like this.
The linked list.
> You can't mess this up in an array
C happily decomposes arrays into pointers. You can erase your length information from the type. This was an intentional decision.
> Strings are the only data structure that assume there will be a NULL at end.
Which is why almost every string API has a version that allows you to specify the maximum length. The fact that you can use a NUL doesn't mean you have to. Which is why the concept of "sentinel values" is broadly used in many types of applications you haven't considered here.
That's one of the problems with the lack of diplomacy in the US's position for the past 40 years. We have pushed the envelope beyond our own control:
"The U.S. military reverse-engineered Iran’s Shahed-136 loitering munition to create a low-cost, one-way attack drone squadron in the Middle East called LUCAS (Low-Cost Unmanned Combat Attack System)."
Necessity is the mother of invention. We spent billions in exchange for making our "enemies" stronger. We really are a ridiculous nation.
The problem with that is if you turn off power to the aircraft then the IMU no longer maintains state and you will need to realign it on startup. The procedures for this are broadly incompatible with military missions.
They're falling back to the C/A (coarse, civilian) signal. Part of the attack is to drown out the frequency where the P (fine, military) signal is so they can more easily attack the civilian signal.
There's another frequency they could be using that is higher power but hasn't been put into production yet.
I don't understand how "spoof-to" works. If you have to mimic a satellite then isn't everyone going to get a different location? Unless you're tracking a specific target how can you intentionally spoof them to a desired location? I'd assume the best you could do is create a fixed offset.
> The military wants to go mostly inertial and is working on better inertial systems.
Given the drift rate this is an idea for munitions but exceptionally difficult to actually operate in a vehicle.
> You can use a trivial experiment to verify that you can't keep details in your sliding attention window for more than a few seconds or focus on more than a few things simultaneously.
I said "context window" not "attention window." Of course spans of attention are limited. Knowledge is not. Knowledge is often highly specific.
> You're possibly mixing it up
Not really. You've simply failed to verify your understanding of my argument and instead created something of a strawman.
> You aren't keeping the entire codebase in your memory, just its highly processed and conceptualized version
And what is your basis for this claim? Why a codebase? You don't think I can't remember an entire function? Yet actors can remember entire sets of lines for a scene? Is that just a highly processed and abstracted version in their minds? And they just run some cognitive loop to recreate dialog in real time?
> they need stronger processing of what they already remember.
What is "stronger?" More time? More memory? More compute? And how is that put to use? Why is it, when given certain prompts, that LLMs reproduce 100s of pages of directly copied and copyrighted work?
> Models can be trained better to cram more intelligence into the same amount of parameters, that's what I mean.
Cool. _How_? What is the limit of this training? How efficient is it? How many resources do you need on the input for a given increase in output? Otherwise it's just a ton of hand waving going on here.
> that you can't actually reproduce with the software
If the vendors of that software are not aware of the failure mode then they may accidentally introduce it by later code changes. Systems evolve. Blind evolution leads to pernicious and widespread failures.
You should possibly spend some time reading what people used to say about the invention of Radio and Television.
> It is quite extraordinary and breath-taking at times to see the agents in action;
So is any magic trick. The unsettling notion that it may all just be an illusion that you've failed to correctly understand doesn't seem to weigh on people.
> its almost hard-drug like in its potential long-term psychological effects.
That might have more to do with how the owners of these products choose to market and deploy them. Perhaps if they peeled back the covers just slightly your euphoria would change to dread. There's an Upton Sinclair moment coming.
> Or are AIs fundamentally different, and if so, why?
Literally: the context window.
With the human you have a window that possibly extends up to _years_. With your language model you have maybe a few megabytes which is always preceded by instructions from the model maker.
To be fair Elixir shows you can just use the BEAM if you want. If you need these semantics at this level there's very few reasons not to go this route.
A large portion of DNS is outside of your control. You're relying on at least two third parties you have indirect relationships with in order to work. If you're outside of the standard TLDs you've got additional social factors that can control your resolution.
Granted. It works really well in practice. It should be noted we haven't actually had the world war the Internet was designed to survive. So we're not entirely clear on the semantics of operations in unusual and unexpected configurations. I would expect DNS to be the first shoe to drop there.
> If you've ever built a three-window layout and then wished the editor pane were on the other side, these do the job and keep every buffer in place while they're at it.
I built a tmux like buffer manager. So I can just pick a window, press Alt-F#, and switch that pane over to whatever buffer I want. It's super easy to even display the same buffer twice but in different panes.
If you're using one without the other you're going to have a bad time.
If I want to change layouts I just close panes down to one and then open it up in the configuration I like. Then I just switch to each pane and Alt-F# the correct content into it.
https://en.wikipedia.org/wiki/Teratoma