Well, as far as I understand it's pretty much a given that it happened underwater or underground, to protect against cosmic radiation and other harsh conditions averse to lifeg so that's not really a "what if" unless you meant something else than I think you did.
Mind you, "soil" as we know it did not exist before life was there to create it. Geology as it exists on Earth does not exist on lifeless planets.
There's a hypothesis that sign language evolved before vocal languages, and that the latter "took over" as the default because it's energetically much more efficient. There's lots of circumstantial evidence but of course it's impossible to ever conclusively prove. This feels like another data point in favor of it.
As stated, this is too vague to be much of a hypothesis. Animals, including humans, communicate multimodally, so gesture and vocalisation are not mutually exclusive evolutionary stages. To claim that one evolved before the other, you'd need to define some relevant markers, such as grammar, cultural transmission or some anatomical adaptation.
Well I wasn't about to spend hours looking up sources and details specifying this hypothesis. All I remember now is that it's one that's taken seriously.
Yeah, one of the cool things about sign languages that most people don't realize is that it's spatial, and that allows it to be more "parallel" compared to vocal languages because its "information channels" (e.g. two hands, facial expressions and "whole body language") can be placed side by side inside that space.
Of course spoken language also has multiple channels (e.g. tone and sound) but they still lack the spatial aspect.
Apparently, people who pick up sign language later in life commonly typically make what is known as a "split verb error", where they structure their signs sequentially like vocal languages when they should do those things simultaneously.
Now I wonder if mixed Italian-Dutch children have two different forms of communication by gestures. Would be interesting, especially since neither are true sign languages.
Well, this is probably a thing where humans are very diverse in their subjective experience.
I'd say this is definitely a noticeable thing with small children at family gatherings, birthday parties and the like. But I grew up in a household where both of my parents came from families where big family gatherings with even extended family was common, and I know not everyone has that kind of experience, so who knows how much of that is nature or nurture as well.
In my case however this has persisted well into adulthood: despite being a chronic insomniac who has a really hard time falling a sleep normally, at these types of social gatherings I often have to fight off falling asleep precisely because I feel comfortable and safe among friends and/or family (I wonder if that is in any way related to my ADHD).
I also get sleepy at gatherings. It's something really subtle and hard to defend against, but brutally simple.
It's the food and air quality. There's a lot of people in an enclosed environment eating too many carbs (or too much in general).
Timing is critical and I'm on a mission. Before the heavy food comes out, I grab a seltzer and a small salad. I convince some people to join me on the patio for a drink. It's important to arrive late enough that people are eager to break away, but well before any food ceremony.
Nah, food comas are noticeably different, at least for me. Plus I also had this drowsiness at student parties where I whs the only sober guy (because tee-totaller) while everyone got tipsy, and no food was involved either.
Well, at certain angles you actually get very noticeable gaps in the strawberry that are visible when rotating it, but almost invisible when static. I think it's mostly due to that.
As a developer who doesn't really write C++ code I'm inclined to agree, but I think Herb Sutter's "syntax 2" project might provide a nice way out of that mess eventually.
I played around with cppfront over Christmas and it was a lot more ergonomic than my distant memories of C++11, which I don't even have negative memories of per se.
It is no different from any other language that compiles via C or C++ code generation, it got sold a bit differently due to his former position at WG21.
Well, if you mean "as an official C++ syntax" then I agree, and I suspect Sutter would agree as well. He labeled one talk about it a "Towards a Typescript for C++", after all[0].
But I do think it is different than other "compile to C++" languages, because it seems to be more of a personal case study for Sutter to figure out various reflection and metaprogramming features, and then "backport" those worked out ideas to regular C++ via proposals. And the latter don't have to match the CPP2 syntax at all.
In multiple examples he's given in talks the resulting "regular" C++ code is easier to read, mainly because the metaprogramming deals with so much boilerplate.
What Herb Stutter misses on his Typescript and Kotlin for C++ metaphor is the actual reality how those languages integrate, unlike cpp2.
Typescript is a linter, nothing else, type annotations for JavaScript. The two features that aren't present in JavaScript, enums and namespaces, are considered design mistakes and the team vouched to focus only on being a linter,and polyfill for older runtimes, when possible (some JS features require runtime support).
While Kotlin spews JVM bytecode many language constructs, like co-routines, make it one way, it is easy to call Java from Kotlin, the other way around requires boilerplate code, manipulating the additional classes generated by the Kotlin compiler for its semantics.
My point was that TypeScript isn't exactly about to replace JavaScript, which was what you were arguing. I'm honestly not sure what you're trying to argue now.
Like, yeah, what you say about TS and Kotlin is true about TS and Kotlin. But since you're not explaining what cpp2 does or plans to do differently, and why it matters, I'm not sure where you're going with that. It's probably obvious but I'm not getting it.
The metaphor Sutter was going for, as I see it, is that TS and Kotlin both added missing features to their host language. Most importantly reflection and decorators in TS, which are now becoming a standard in JS as well[0]. cpp2 mainly focuses on experimenting with reflection and metaprogramming as well, adding features currently missing in C++ by being a compiles-to-C++ language. Sutter has written C++ proposals what would allow give C++ similar reflection and metaprogramming capabilities based on what he discovered by working on cpp2. That's pretty comparable if you ask me.
> The header is the cost. Not the reflection. The reflection algorithm is fast – asymptotically ~0.07 ms per enumerator, essentially the same as the hand-rolled switch in the X-macro version (~0.06 ms). What makes reflection look expensive is <meta>: just including it costs ~155 ms per TU over the baseline.
So speaking of old ways, I'm not a C++ dev, but a while ago saw someone comment that they still organize their C++ projects using tips from John Lakos' Large-scale C++ software design from 1997, and that their compile times are incredibly fast. So I decided to find a digital copy on the high seas and read it out of historical curiosity. While I didn't finish it, one wild thing stood out to me: he advised for using redundant external include guards around every include, e.g.
The reason for this being that (in 1997) every include required that the pre-processor opened the file just to check for an include guard and reading it all the way to the end to find the closing #endif, causing potentially O(N*2) disk read overhead (if anyone feels like verifying this, it's explained on pages 85 to 87).
Again, that was in 1997. I have no idea what mitigations for this problem exist in compilers by now, but I hope at least a few, right?
This conclusion is making me wonder if following that advice still would have a positive impact on compile times today after all though. Surely not, right? Can anyone more knowledgeable about this comment on that?
This cost is not significant nowadays, it's the frontend/parsing time.
You can also use `#pragma once` which works everywhere, is nicer, and technically needs less work by the compiler, but compilers have optimized for include guards since a long time ago.
Yes, I've heard that before, but comments like this one in your linked issue still make me wonder:
> at least for gcc and Visual Studio using #pragma once has a significant impact. The fact is, the compiler does not need to continue parsing the whole file when reaching a #pragma once. otherwise the compiler always needs to do it even if the include guard afterwards will avoid double processing of the content afterwards.
As written the explanation for these optimizationst suggest that both "pragma once" and include guard optimization still requires opening and closing the file each time an include is encountered, even if you bail after parsing the first line. Is that overhead zero? Or are the optimizations explained poorly and is repeatedly opening/closing the file also avoided?
Either way, do you know what causes the slowdown as a result of including <meta>?
The compiler doesn't need to open the same file multiple times. It can remember if a a file is guarded or not every time it sees its name.
My understanding is that this is an optimization that has been available for a very long time now.
The only issue is if a file is referred through multiple names (because of hard links, symlinks, mounts). That might cause the file to be opened again, and can actually break pragma once.
The overhead isn't zero, but with SSDs (and filesystem caches in the gigabytes these days) it's damn near insignificant in pure terms of opening files and such.
What I found (so far on MSVC) is that #pragma once does only process the file once, where as include guards still open the file each time it is included. Though it takes almost no time to do so but it still appears on the traces.
I'm going to experiment with other compilers and figure out how they handle it.
Oh nice, thanks for the tip! Don't know if I can justify picking up a copy given that I do not work with C++ at all nor with large-scale systems. But I know a few people who might be interested.
I've not been diligently keeping up with C++ recently but there's a C++20 feature called modules. Per Wikipedia, they're somewhat like precompiled headers.
One of the things whose non-existence I'm mildly surprised by: a mash-up between Kraftwerk's Radioactivity and Imagine Dragons Radioactive. Sure, they're extremely different songs melody-wise but that never stopped people from successfully mashing up songs before, and the underlying beat is almost the same but reversed, which is kinda interesting[0][1].
Also, has anyone ever compared the cultural context and zeitgeist of both songs? Probably would be a fun high school assignment, haha. Kraftwerk's song came out in the same decade that the Club of Rome published its Limits To Growth report[2], so when fears about humanity's future really started to become A Thing that was impossible to ignore. Later versions of the song turning it into a protest song encapsulate Cold War fears for a nuclear apocalypse of the time (presumably, I wasn't really around yet back then).
The main audience for the Imagine Dragons song was a generation fully born after the fall of the Berlin Wall. One that grew up playing the Fall Out games. It also came out in 2012, right after the 2008 crisis kick-started the "oh the previous generation will leave us with nothing huh?" Doomer mentality among millennials and Gen Z kids. Remember the media going nuts over the "Ok, Boomer" expression for a while? (which still feels like the media intentionally dividing a community to stop it from actually fixing things me, tbh, but let's not get too side-tracked)
In that context, when put side by side the ID song almost feels like a Doomer generation follow-up and implicit critique of how nothing seems to have actually be done about to prevent the impending apocalypse that the Kraftwerk song's generation was supposedly so worried about, turned into a fantasy about living in that post-apocalyptic planet.
It's "vibe" is weirdly hopeful too, especially compared to the Kraftwerk song as well. Instead of fearing an apocalypse, it's set after one and embraces living within it.
At least, that's how the two songs come across to me, which probably says more about me than anything else. Apparently Dan Reynolds, main singer on ID and one of writers of the song, has said that in retrospect after almost a decade, he had realized that it was actually about him "not giving up hope after losing faith in Mormonism."[3]. Which makes sense as a personal experience of going through feeling doomed and figuring out how to survive and embrace living on in a "post-apocalyptic" world on a personal, social level.
I think that's what annoys me about the Kraftwerk song's status as a protest song, and a lot of other music from the same era: it doesn't feel like it's insisting on a better future. It's passive late 70s, early 80s pessimism.
It's not in an earthquake zone, but isn't the Scandinavian continent still rising at a surprisingly fast rate? I wonder if that could affect the engineering of the Fehmarnbelt tunnel, in an "in x years one end of the tunnel will have risen n centimeters compared to the other end" way. It's probably such a small amount it's well within levels where regular maintance will cover it anyway, but I'm still curious.
Not so much that far South in Denmark, but the wikipedia article mentions a lake in Sweden that has its shores rebounding (moving upwards) at about 2mm per year. The Northern side moves faster so it is effectively tilting.
Mind you, "soil" as we know it did not exist before life was there to create it. Geology as it exists on Earth does not exist on lifeless planets.
reply