So you mean get rid of wide-character encodings and only use UTF-8 where unicode characters are needed? I agree.
So you mean get rid of wide-character encodings and only use UTF-8 where unicode characters are needed? I agree.
But that's the point. If it slams into an immobile object of course. But we're not talking about anything slamming into an immobile object. From the perspective of a molecule in the gas stream, it's going about the same speed as its neighbors. It's quite cool.
As for the boundary region, even at the "pinched" funnel outlet one could be talking dozens of kilometers here. A dozen kilometers between going from zero velocity and 25 kilometers per second is roughly the same as a dozen meters between going from zero velocity and 25 meters per second. Aka, a virtually insignificant gradient.
UTF-8 is an encoding of unicode, so I'm totally not getting your "Actually I think "Unicode strings" should be avoided completely."
I like that idea. You're right, it should be pretty efficient to implement, regardless of the string's backend encoding. And the value represented by the iterator will, by nature of being implemented as a pointer to a certain part in the string, be able to point to a glyph of arbitrary length (unlike a getter function with a fixed-length return type). Being an iterator it'll fit into all standard c++ libraries that take iterators.
It would be nice to have it be a random-access iterator so that you can jump to an arbitrary offset. There's a lot of optimizations they could do internally to help facilitate that. But obviously you still want to let programmers choose - by some means or another - whether they want such unicode optimizations (or unicode iteration, or so forth). Because while the overhead they'd impose wouldn't be huge, there still would be overhead.
We have to have something, though. Not everybody writes in English.
Except wait - we've got a phase change from gas to plasma in there, which almost certainly breaks their calculations badly.
Again, no, you don't. All of the particles are moving in the same direction. They're not hot. They're not slamming into each other and kicking electrons off.
Do you think if you had a spacecraft moving at 25.4 kilometers per second it would be plasma too?
First off, you're misusing temperature. You don't call it heat if all of the particles are moving in the same direction and unionized, you just call it "wind". It only becomes heat if that windstream suddenly slams into a non-moving solid surface and becomes instantly thermalized (but of course even then that would be a very short-lived event as it would correspond with a pressure rise and the deflection of the stream behind the high-pressure zone). Additionally, nor would that be the windspeed touching the surface as, obviously, wind forms boundary layers.
Secondly, hundreds of km/s from Venus escape to Mars intercept? That doesn't at all correspond to any delta-V chart I've ever seen.
And it's important for new programmers to learn them - more important than learning syntax.
For C++ for example I'd warn about classes containing pointer member variables with implicitly-defined assignment operators / copy constructors. You have Foo a and Foo b, where Foobar has a member variable "int* bar". So the newbie does "a.bar = new int;" then later "b = a;" then later b goes out of scope, then they try to use a.bar and the program crashes. Seems to be a very common C++ newbie mistake. Eventually they learn to see pointers in class definitions as having big "DANGER" signs over them calling their attention, and/or rely on smart pointers.
Any others that people can think of that are common?
Oh, here's one more: iterator invalidation. A newbie who's not warned about this in advance will likely get bitten by it several times before the point gets driven into their head: "if you're using a class to manage memory for you, it's going to manage memory for you, including moving things around as needed."
Yep, they have been UTF-16 for a long time. And Unicode has been widely broken for a long time. It's not a coincidence.
Someone on StackExchange did some tests last year, adding in 4-byte unicode characters in common applications and seeing how they behaved. The results were really bad:
Opera has problem with editing them (delete required 2 presses on backspace)
Notepad can't deal with them correctly (delete required 2 presses on backspace)
File names editing in Window dialogs in broken (delete required 2 presses on backspace)
All QT3 applications can't deal with them - show two empty squares instead of one symbol.
Python encodes such characters incorrectly when used directly u'X'!=unicode('X','utf-16') on some platforms when X in character outside of BMP.
Python 2.5 unicodedata fails to get properties on such characters when python compiled with UTF-16 Unicode strings.
StackOverflow seems to remove these characters from the text if edited directly in as Unicode characters (these characters are shown using HTML Unicode escapes).
WinForms TextBox may generate invalid string when limited with MaxLength.
I've had more than my share of these sort of experiences too.
UTF-16 is dangerous, and should be phased out as much as possible. Where absolutely needed for performance reasons, it should be an internal representation only, hidden from the developer as much as possible. In particular, "length" functions should return the actual string length in characters, not code units; indexing functions should take character offsets; not code unit offsets; and returned "single characters" exposed to the developer should be of a format capable of handling multi-code-unit glyphs. Anything involving working with actual singular UTF-16 code units should only be available as a "for advanced users only, use at your own risk" functionality.
. So basically you'd need to impart almost 6x as much energy (36x as much speed) to get to Mars as to just escape Venus
Yes, the velocity would need to be tens of kilometers per second. But really, what's the limiting factor here? Certainly not skin drag, when you're talking something on the necessary scale here. Viscosity losses, radiating the energy away to space as heat? The energy can't effectively radiate away as heat, that's why the funnel is there, to reflect IR while transmitting visible light from the sun. There's not many options for the gas to lose energy except to accelerate.
Basically that "negligible drag" would be the only thing providing a supporting force to the funnel.
Negligible from a systems perspective. But from the perspective of the funnel, it's tremendous force. The mass of the funnel is insignificant compared to the mass of the rising gas when you're talking about a megastructure.
I wonder though what might happen if you directed the CO2 to Venus's L4 or L5 points? Could you build up sufficient mass to create a stable bubble of CO2
That would be.... unusual. What would you call that, a "Gas Dwarf"? I really have no clue how much you could have persist stably there, but I'd be really curious to know. It'd be particularly strange if you could make it out of a combination of gasses that are breathable - aka, limiting the CO2 levels, O2 from CO2, and any mix of Venusian/Jovian N2, Ar, and He as buffer gasses as needed. If the water vapor levels were low then there would be little in terms of cloud cover to reflect light. Earth's atmosphere absorbs about 1/3rd of the sun's energy, so with two passes through it'd absorb about half; at Venus's distance it'd probably be a pretty comfortable temperature. Gravity would be tiny. Obviously not long-term stable due to the solar wind, and high radiation, unless you artificially create a miniature magnetosphere. But in the short term...?
That would be so weird to be floating "midair" in a temperate breathable environment with no land anywhere.
Well, certainly more realistic than living on the surface. And probably easier to set up than a Mars habitat - terrain is irrelevant and your entry is so much easier - plus, even normal Earth air is a lifting gas on Venus. And it'd be no less self-sustaining (that is, to say, "not very"
There's no need to send people offworld to do science, whether to Venus or Mars. But while there's no need for any kind of "facility" at all, manned or otherwise, for robotic equipment on Mars, the concept of some sort of floating "facility" on Venus is pretty important. Any sort of craft designed to tolerate Venus's surface environment is going to make a terrible analysis lab or sample return vehicle. I mean, even solar panels would have to be heavily shielded on a sampling run to not be destroyed; there's very little that you can have exposed that can tolerate that environment. Sampling and analysis or return on Venus is best done in two stages: 1) Buoyant craft that repeatedly dive and rise the atmosphere like submarines and take samples on the surface, and 2) a floating platform containing any analysis equipment or return hardware, high gain communication with Earth, and solar panels to recharge the batteries of the sampling craft while samples are being offloaded.
Venus's surface is really unusual and it'd be neat to know more about what's there. I'm still not big on the concept that we need humans there to do it, but at least a floating platform of some kind would be important. The only advantages I could see for having humans would be to cut the communications latency with the samplers to allow for smarter sampling decisions without requiring them to wait in the harsh environment for round-trip communications on Earth, the ability to repair samplers, and perhaps mildly better local analysis of samples and/or decisions about what to bring back. Hard to justify the added price tag, though.
"Never" is too harsh of a word. But I share in your frustration about their glossing over the reality of engineering these "simple" processes that they envision. Just the amount of engineering work to *design* with enough precision to actually build a fully self-sustaining industrial base designed to work on Mars with the individual components being small enough to plausibly launch would cost in hundreds of billions to trillions of dollars Everything in industry has unimaginably massively long dependency chains that interconnect with each other, using raw materials sourced from a massive variety of different types of geological formations the planet over. You basically have to reengineer all industry on Earth for the martian envirionment in a gigantic mass-minimization optimization problem. You can't just plop down a 3d printer and some generic "mining robot" that roams around your habitat like people envision in their sci-fi fantasies. Reality isn't so friendly.
Even worse, if you start launching stuff without doing all of that engineering work, you end up heading down a dead end. Let's say you make some smelter that takes limonite as its iron feedstock. But then as you start expanding your industrial base, you discover that you actually need a lot of sulfuric acid, and your iron production process should instead be designed to work around iron sulfate feedstocks with sulfuric acid produced as the much-needed byproduct, with a different type of smelter required. Well, guess what? That smelter that you spend $20 billion dollars engineering, building, and shipping to Mars is now scrap. It applies to almost everything. You made a pipeline out of polyethylene? Whoops, now you discover that you sometimes need to ship corrosive liquids and it really should have been made out of teflon, tough luck! Built some big piece of industrial equipment that relies on high-temperature inconel alloys? Whoops, you discover that you can't find a practical niobium deposit within driving distances, you have to reengineer your hardware for very different matierial properties or operating environments! Everything down to the tolerances on your bolts or the type of plastic you put on your greenhouses can be a costly screwup if you don't design your whole industrial layout in advance on a standardized set of hardware and know precisely what mineral deposits are where and how to get at them.
To all of the sci-fi buffs: It's not time to try to colonize Mars. It's time to learn about Mars, and to engineer here on Earth. And it's going to be in that phase for a long, long time. Want to go to Mars and hop around for a bit with a rock hammer like they did on the moon? Fine. But don't call it a colony.
It's not that NSString itself is broken, it's that the fact that 99.99% of the time an NSString is one 16-bit code unit per glyph that apps using it rarely test the use case where it's two code units per glyph. So a person goes in and writes an app that inserts a new character at a particular byte offset and it works 99.99% of the time, but if it happens to get stuck in the middle of a multi-code-unit glyph, the program breaks.
The documentation is no help. First off, it lies:
Conceptually, a CFString object represents an array of Unicode characters (UniChar) along with a count of the number of characters. The [Unicode] standard defines a universal, uniform encoding scheme that is 16 bits per character.
As we all should know, that's simply not true. Unfortunately, a lot of people don't know better. Unicode is not a universal, uniform encoding scheme that is 16 bits per character. Even UTF-16 isn't that.
A string object presents itself as an array of Unicode characters . You can determine how many characters a string object contains with the length method and can retrieve a specific character with the characterAtIndex: method. These two “primitive” methods provide basic access to a string object.
characterAtIndex returns a 16-bit integer. So obviously it has no way to actually represent wider unicode characters. The length method is not the number of characters on the screen, but the number of code units, which is different, but highly misleading to programmers. They're, again, the same thing 99.99% of the time, but those rare cases where they're not generally slip through testing. And this is why UTF-16 is such a hazardous encoding to use.
Yes, NSString is old. And that's part of the problem. It was made at a time where many thought that unicode was only going to be 16 bits. It hasn't aged well. And it's caused a lot of bugs over its time. And now I'd bet that it or something similar has created a brand new iPhone-equivalent of Winnuke.
Programmers really need two types of strings, and only two, for the lion's share of tasks. One, binary strings, where a char is always 8 bytes and operations can be optimized to heck and back. And two, unicode strings, where a char always represents a whole unicode character that you would display, and the count of characters represents the count of display characters and so forth. None of this "99.99% of the time it's one thing, but every so often it's another...". That's asking for bugs.
Yep.. and the etymologies are totally unrelated. "Foul" is believed to possibly trace back back to an onomatopoeic word "*pu", meaning foul or rotten, being the sound a person makes when smelling such an object (*p underwent an early shift to f). "Fowl" and "fly" are both believed to trace back to "*pleuk", meaning to fly. The proto-germanic for bird, fuglaz, could be thought of as "that which flies". There are lots of cognates in modern languages - for example, in Icelandic, "u" often equates to an "ow" sound in English, and "gl" to a "wl" sound (aka, closer to Old English than modern). So the Icelandic "fugl" (bird) equates "fugel" in Old English and "fowl" in modern English. Other examples are ugl(a) -> owl, hund(ur) -> hound, turn -> tower, bund(inn) -> bound, and even sund->sound (in both cases, in the context of "a large body of water connected to the ocean", like "Puget Sound").
Oh wait someone invented a thing called a submarine and developed the means to heat, pressurize and provide oxygen and fresh water to people living inside of it.
And submarines are about as far from self-sufficient as possible, relying entirely on their shore support infrastructure to supply everything except oxygen and water. Every last part onboard the ship, every last meal they eat, comes from shore. You know, just like it will be with a Martian colony. Oh sure, fantasists in the early days of submarines dreamed of them being like underwater colonies and raising their own food and having their own internal industry to make all their replacement parts and so forth, just like people do today about Martian colonies. The reality turned out to be... well, less fantastical.
(I love how you can just gloss over something as complex as an O2-and-water-producing Mars-environment-operating nuclear reactor as if it's just some trivial thing to design, make, launch, and keep operating