Capitalism is the private ownership of the means of production (aka capital, hence the name). Last I checked, you guys have that in full force in Germany just the same. You tax the produced wealth more and use it to fund public welfare, which mitigates most of the more egregious excesses of capitalism (which largely boil down to income inequality), but that is still capitalism.
Not picking up the language because you can't be bothered or can afford to hire people that take care of it for you is not a problem. The problem is when you begin to demand that other people, organizations, and the government use the language that you can understand, which is different from the language that they normally know and use, for free.
Most European languages have grammatical gender. I don't see why English speakers should be given any slack on that account - it's their problem if they chose to emasculate their language;)
Tax rates in US can absolutely be lower. But it depends on which state (remember, some of them don't have income tax), and on what kind of job you have. I very much doubt that I'd be taking home more (PPP-wise) in Germany than what I earn here in US doing the same job, even considering all the public welfare benefits that I would get there. But it's WA (so no state income tax), and I'm somewhere in the top 1% bracket by income. Someone who's earning close to median, or even average, wage, would almost certainly fare better in Germany.
The obvious thing that you're missing is that you'll pay that $125,000 only if you're actually earning all that money in the first place. If you're not (because, say, economy crashed, or you're just that unlucky when it comes to finding a well-paying job), then you're not on the hook. Whereas in the American system you have to take the loan first, and then hope and pray that you'll actually have a job to pay it off. And if not, have your wages garnished (even if you're earning pennies in the first place), and possibly have to declare bankruptcy.
As for signed pointer arithmetic: a[i] isn't really a good example because i has to be positive.
It doesn't, actually, if `a` is a pointer into the middle of another array (and semantically both array and pointer indexing is actually the same, because the former is defined in terms of the latter in the spec; so the index is treated as signed in both cases).
Note that the language indirectly prohibits the existence of an array that has more elements than ptrdiff_t can account for. This is because &a[n]-&a[0], where n is the count of elements, is always legal for any array, and is of type ptrdiff_t. So in effect the maximum size of the array has an upper bound of the largest signed number available in that particular implementation (because ptrdiff_t must be a typedef corresponding to some signed integral type).
My point is that if (hypothetically speaking) the next specification of C left all that stuff out, it would still be a useful language. *Less* useful, but not useless.
More importantly, it would be a different language:)
My point, though, is that the division between "language" and "standard library" is rather arbitrary, and very vague in many cases. In case of something like size_t, for example, it could just as well be defined in the language, rather than being a typedef (indeed, at least MSVC actually used to define it that way, even though it's not strictly conforming). Or addition and multiplication could be in the library, if C had operator overloading (or we were okay with function syntax for them).
To that extent, it doesn't really make sense to talk about "just the language". The language, as defined, is unable to exist in a vacuum. Languages like C, which are often used in constrained environments, usually define subsets of the standard library that are only as large as they need to be to support the core language constructs.
In C, in particular, the standard calls it "freestanding environment". In C99, this gives you float.h, iso646.h, limits.h, stdarg.h, stdbool.h, stddef.h, and stdint.h. As you can see, these are all just typedefs and macros - no functions there. But those are the things that are critical in that the language constructs reference them.
I don't need size_t because I can use ULONG_PTR.
Signed pointer arithmetic is best avoided IMO
You can't really avoid it because it's part of the language. You're doing it every time you're writing something like a[i], since it's just syntactic sugar for *(a+i). Of course, the types aren't explicit there, but the spec still has to deal with them.
If I remember correctly, Sun/Oracle asserted certain rights with respect to third-party JVM implementations that ran on mobile platforms. I don't recall the precise arrangement there - I think it had to do with the use of "Java" as a trademark, but perhaps there were some patents, too. Either way, as I understand, by using their own VM and bytecode, Google tried to clearly distance themselves away from JVM, and thus dodge the bullet.
Don't forget that things like NULL, size_t, ptrdiff_t or va_list are also part of the standard library. Avoiding them is not always possible - e.g. NULL is easy to avoid because you can just use 0, but if you need to portably store the result of a sizeof, you need size_t; and for pointer subtraction, ptrdiff_t. In any case, even if you avoid spelling those out explicitly, the language spec still references them when describing the corresponding language constructs, so you can't fully decouple the two.
There's a big difference between the climate changing within, say, 10,000 years, and within 100 years. A more gradual change is much easier to deal with and adapt to (indeed, if it's gradual enough, you won't even notice it unless you look back at the historical record and notice the discrepancies). A rapid change is something that requires a similarly rapid response, and that is very, very costly.
The truth is that, in the absence of evidence that (say) black lesbians are inherently incapable of doing "X", you would expect that the number of your employees who are black lesbians is roughly in line with the proportion of black lesbians in society as a whole. If not, it means there is some sort of unconscious bias going on.
True, but it doesn't mean that said bias exists at the company that is hiring. All available statistics indicates that the bias enters the picture much earlier - at least as early as college, and more likely as early as high school. If black lesbians don't get education (formal or informal) that qualifies them to work at Google, well guess what? Google won't have any black lesbian employees; but how is that their fault or responsibility?
Ask anyone who has ever had any involvement in a hiring process in any software company about how many non-white, non-male candidates they see applying - even before any screening or interview, just the raw input, so to speak.
I think what he means is that to fight a guerrilla war, you need to solve the logistics question, and that includes firearms. The fact that firearms like this one can be easily produced without pretty much any industry whatsoever, and only a few basic tools that only need to be imported once, allows the guerrillas to arm themselves, leaving only ammo to worry about. It's not just Taliban - Chechens employed a homemade SMG called "Borz" in 1994, and if you go back even further there's Sten and its various clones and derivatives (Blyskawica used by the Polish resistance in WW2, Pleter and Zagi used by Croats in their independence war and in Bosnia etc).
The "unprecedented storm" already happened a few years ago, when a guy was convicted of "transferring a machine gun" because the semi-auto rifle that he owned malfunctioned and fired 3 rounds before jamming on the range. ATF actually "investigated" his rifle by sticking rounds with progressively softer primers into it until they could "reproduce" it. ATF also refused to provide the details of how they tested the rifle to conclude that it was a "machine gun", and when the guy sued to compel them to disclose those details, the court ruled against him - so to this date, ATF expert's word on the stand that they identified the gun as full auto somehow is all that is known. The guy got 30 months of federal prison.
Note that this is a failure mode that literally any semi-auto firearm firing from a closed bolt is capable of - all it takes is for the firing pin to get stuck in a forward position (for example, because of accumulation of carbon due to firing) and a sufficiently soft primer. It will also consistently cause a jam almost immediately, so it's not actually useful for any practical purpose.
it is not so easy for the Islamic "Peace Corp" to find a white blond Adolf that will try to make connection with his 72 virgins in an airplane
It's much easier than you'd think. In Russia, for example, islamists from the "Caucasian Emirate" have quite a few ethnic Europeans (mostly Russians) fighting for them. And remember, you only need one - and you can spare him and coddle him until he's needed for such a mission.
They do have to worry about some other kinds of fanatical extremists that think that Saudi Arabia is not sufficiently Islamic. A while ago I've read an article on one of the Chechen Islamist websites about KSA, where the author has made just that case. His main argument was that KSA has other laws in addition to Sharia, and that the king can pardon people committed in Sharia courts.
But your examples aren't really particularly different when using regex, at least with a sane library. I mean, in Python, for example, they'd be re.search and re.sub, respectively, but everything else is the same.
OO languiages such as Java are converging on LISP and the LISP family of programming languages vindicating a language approach invented in the 50's and which does not suck.
In what sense? If you mean first-class functions and the associated techniques and patterns, then this is not at all unique to Lisp. The real distinguishing feature of Lisp is code-as-data and manipulations on it, and mainstream OO languages are definitely not anywhere even close.
It goes beyond "more comfortable", and into "what the fuck were we thinking when we actively avoided using and building on F/OSS". Which is perfectly sensible from a business perspective, because the old MS attitude towards F/OSS was basically the equivalent of tying one's hands behind one's back to avoid accidental masturbation, and then trying to compete in a craft competition. It only works when the game is rigged in your favor in advance, and that doesn't last.
To me, the main annoyance of bash is the constant need to use grep, sed and friends to parse structured data from unstructured stdout, and also many traps with variable expansion, and need to use hacks such as xargs. But I agree that it matters more when writing scripts than when using it as an interactive shell.
OTOH, the huge problem of PS is that it only works on objects in memory. If you are interoping with a classic console app that writes to stdout, that means that you're getting a string. If you don't have enough memory for that, too bad. I also don't like the.NET object model in that role (it's fine as is, just not very appropriate as a generic structured data interop protocol).
If I had to make a list of things for a perfect shell, I'd say it should use a consistent naming scheme more like PS (but with aliases) and similar expansion rules, but get rid of the notion of passing objects around, and stick to text stream - but also define a standard structured format for them, which would probably be JSON for the sake of not reinventing the wheel.
I honestly wished that Windows 10 would be them scrapping everything and going with a *BSD. (Just like OS X). Admit defeat, and start over with a different code base. No one knows or cares how it works, just that it does. Apple has managed to move complete platforms 4 times (68k -> PPC, OS 9 -> OS X, PPC->Intel, Intel->ARM). Microsoft has just released C# as open source. It shouldn't be hard.
Apple has very little presence in the enterprise precisely because they do those major tectonic shifts where everything breaks so often. OTOH, on Windows, you still have a pretty good chance of running an app originally compiled for Windows 1.0.
Yeah, I'm aware of the Sten. Mechanically it's probably very similar (it's about as simple as an open bolt design can get). But the beauty of what Luty did is going through a set of premade components readily available in hardware stores (mostly pipes) to come up with a list that requires no milling at all, and no other application of machining tools. The barrel of that thing, for example, is literally just a piece of pipe that just happens to be of the right diameter; so is the receiver. Consequently, not only you can make it in your garage, you don't need any tools for it other than a metal saw and a file. This is one step beyond even the Sten, which still requires some machining and welding to produce.
I think the point is to enlist you and other people who would be affected by such regulation as allies (grudging, but...) to the fight. The wider the bans are, the more people they affect, the bigger the pushback - and in a democratic society that can make the difference (ultimately, if need be, when it comes to voting).
In US, the only part of the firearm that is controlled is the serialized part of the receiver. Usually it's the lower, though on some guns it's the upper. Everything else is just parts, and can literally be bought on Amazon or eBay and shipped to your door.
One exception is stuff that has to do with making guns full auto. The regulatory agency in charge of enforcing that law has declared a while ago that such parts are classified as "machine guns" all by themselves. It's not entirely consistent - for example, an AR bolt that has all the proper cuts for full auto operation is not considered a machine gun, but an AR sear is. Lightning link is considered a machine gun. In fact, at one point they classified a shoe string with one end tied to the reciprocating charging handle (e.g. on AK), and the other end to the trigger, to be a machine gun - and I don't mean the entire arrangement, but just the string "of the proper length" itself (this has since been rescinded).
Milling a full auto AR lower would be considered "manufacturing a machine gun", and is banned outright unless it is for law enforcement or military use (and then you need a bunch of licenses for that). OTOH, milling a semi-auto lower is perfectly legal so long as you don't intend to sell it; you don't even need to serialize it or register it in any way.
Capitalism is the private ownership of the means of production (aka capital, hence the name). Last I checked, you guys have that in full force in Germany just the same. You tax the produced wealth more and use it to fund public welfare, which mitigates most of the more egregious excesses of capitalism (which largely boil down to income inequality), but that is still capitalism.
Not picking up the language because you can't be bothered or can afford to hire people that take care of it for you is not a problem. The problem is when you begin to demand that other people, organizations, and the government use the language that you can understand, which is different from the language that they normally know and use, for free.
Most European languages have grammatical gender. I don't see why English speakers should be given any slack on that account - it's their problem if they chose to emasculate their language ;)
Tax rates in US can absolutely be lower. But it depends on which state (remember, some of them don't have income tax), and on what kind of job you have. I very much doubt that I'd be taking home more (PPP-wise) in Germany than what I earn here in US doing the same job, even considering all the public welfare benefits that I would get there. But it's WA (so no state income tax), and I'm somewhere in the top 1% bracket by income. Someone who's earning close to median, or even average, wage, would almost certainly fare better in Germany.
The obvious thing that you're missing is that you'll pay that $125,000 only if you're actually earning all that money in the first place. If you're not (because, say, economy crashed, or you're just that unlucky when it comes to finding a well-paying job), then you're not on the hook. Whereas in the American system you have to take the loan first, and then hope and pray that you'll actually have a job to pay it off. And if not, have your wages garnished (even if you're earning pennies in the first place), and possibly have to declare bankruptcy.
As for signed pointer arithmetic: a[i] isn't really a good example because i has to be positive.
It doesn't, actually, if `a` is a pointer into the middle of another array (and semantically both array and pointer indexing is actually the same, because the former is defined in terms of the latter in the spec; so the index is treated as signed in both cases).
Note that the language indirectly prohibits the existence of an array that has more elements than ptrdiff_t can account for. This is because &a[n]-&a[0], where n is the count of elements, is always legal for any array, and is of type ptrdiff_t. So in effect the maximum size of the array has an upper bound of the largest signed number available in that particular implementation (because ptrdiff_t must be a typedef corresponding to some signed integral type).
My point is that if (hypothetically speaking) the next specification of C left all that stuff out, it would still be a useful language. *Less* useful, but not useless.
More importantly, it would be a different language :)
My point, though, is that the division between "language" and "standard library" is rather arbitrary, and very vague in many cases. In case of something like size_t, for example, it could just as well be defined in the language, rather than being a typedef (indeed, at least MSVC actually used to define it that way, even though it's not strictly conforming). Or addition and multiplication could be in the library, if C had operator overloading (or we were okay with function syntax for them).
To that extent, it doesn't really make sense to talk about "just the language". The language, as defined, is unable to exist in a vacuum. Languages like C, which are often used in constrained environments, usually define subsets of the standard library that are only as large as they need to be to support the core language constructs.
In C, in particular, the standard calls it "freestanding environment". In C99, this gives you float.h, iso646.h, limits.h, stdarg.h, stdbool.h, stddef.h, and stdint.h. As you can see, these are all just typedefs and macros - no functions there. But those are the things that are critical in that the language constructs reference them.
I don't need size_t because I can use ULONG_PTR.
Signed pointer arithmetic is best avoided IMO
You can't really avoid it because it's part of the language. You're doing it every time you're writing something like a[i], since it's just syntactic sugar for *(a+i). Of course, the types aren't explicit there, but the spec still has to deal with them.
If I remember correctly, Sun/Oracle asserted certain rights with respect to third-party JVM implementations that ran on mobile platforms. I don't recall the precise arrangement there - I think it had to do with the use of "Java" as a trademark, but perhaps there were some patents, too. Either way, as I understand, by using their own VM and bytecode, Google tried to clearly distance themselves away from JVM, and thus dodge the bullet.
Don't forget that things like NULL, size_t, ptrdiff_t or va_list are also part of the standard library. Avoiding them is not always possible - e.g. NULL is easy to avoid because you can just use 0, but if you need to portably store the result of a sizeof, you need size_t; and for pointer subtraction, ptrdiff_t. In any case, even if you avoid spelling those out explicitly, the language spec still references them when describing the corresponding language constructs, so you can't fully decouple the two.
Whereas I have nothing but good things to say about the Salvation Army. The Salvation Army is much more transparent
Yes, they're pretty blunt about their homophobia.
There's a big difference between the climate changing within, say, 10,000 years, and within 100 years. A more gradual change is much easier to deal with and adapt to (indeed, if it's gradual enough, you won't even notice it unless you look back at the historical record and notice the discrepancies). A rapid change is something that requires a similarly rapid response, and that is very, very costly.
The truth is that, in the absence of evidence that (say) black lesbians are inherently incapable of doing "X", you would expect that the number of your employees who are black lesbians is roughly in line with the proportion of black lesbians in society as a whole. If not, it means there is some sort of unconscious bias going on.
True, but it doesn't mean that said bias exists at the company that is hiring. All available statistics indicates that the bias enters the picture much earlier - at least as early as college, and more likely as early as high school. If black lesbians don't get education (formal or informal) that qualifies them to work at Google, well guess what? Google won't have any black lesbian employees; but how is that their fault or responsibility?
Ask anyone who has ever had any involvement in a hiring process in any software company about how many non-white, non-male candidates they see applying - even before any screening or interview, just the raw input, so to speak.
I think what he means is that to fight a guerrilla war, you need to solve the logistics question, and that includes firearms. The fact that firearms like this one can be easily produced without pretty much any industry whatsoever, and only a few basic tools that only need to be imported once, allows the guerrillas to arm themselves, leaving only ammo to worry about. It's not just Taliban - Chechens employed a homemade SMG called "Borz" in 1994, and if you go back even further there's Sten and its various clones and derivatives (Blyskawica used by the Polish resistance in WW2, Pleter and Zagi used by Croats in their independence war and in Bosnia etc).
The "unprecedented storm" already happened a few years ago, when a guy was convicted of "transferring a machine gun" because the semi-auto rifle that he owned malfunctioned and fired 3 rounds before jamming on the range. ATF actually "investigated" his rifle by sticking rounds with progressively softer primers into it until they could "reproduce" it. ATF also refused to provide the details of how they tested the rifle to conclude that it was a "machine gun", and when the guy sued to compel them to disclose those details, the court ruled against him - so to this date, ATF expert's word on the stand that they identified the gun as full auto somehow is all that is known. The guy got 30 months of federal prison.
Note that this is a failure mode that literally any semi-auto firearm firing from a closed bolt is capable of - all it takes is for the firing pin to get stuck in a forward position (for example, because of accumulation of carbon due to firing) and a sufficiently soft primer. It will also consistently cause a jam almost immediately, so it's not actually useful for any practical purpose.
it is not so easy for the Islamic "Peace Corp" to find a white blond Adolf that will try to make connection with his 72 virgins in an airplane
It's much easier than you'd think. In Russia, for example, islamists from the "Caucasian Emirate" have quite a few ethnic Europeans (mostly Russians) fighting for them. And remember, you only need one - and you can spare him and coddle him until he's needed for such a mission.
They do have to worry about some other kinds of fanatical extremists that think that Saudi Arabia is not sufficiently Islamic. A while ago I've read an article on one of the Chechen Islamist websites about KSA, where the author has made just that case. His main argument was that KSA has other laws in addition to Sharia, and that the king can pardon people committed in Sharia courts.
But your examples aren't really particularly different when using regex, at least with a sane library. I mean, in Python, for example, they'd be re.search and re.sub, respectively, but everything else is the same.
OO languiages such as Java are converging on LISP and the LISP family of programming languages vindicating a language approach invented in the 50's and which does not suck.
In what sense? If you mean first-class functions and the associated techniques and patterns, then this is not at all unique to Lisp. The real distinguishing feature of Lisp is code-as-data and manipulations on it, and mainstream OO languages are definitely not anywhere even close.
I wonder how freaked out you would be if I told you that the official maintainer of Python on Windows is a Microsoft employee these days.
It goes beyond "more comfortable", and into "what the fuck were we thinking when we actively avoided using and building on F/OSS". Which is perfectly sensible from a business perspective, because the old MS attitude towards F/OSS was basically the equivalent of tying one's hands behind one's back to avoid accidental masturbation, and then trying to compete in a craft competition. It only works when the game is rigged in your favor in advance, and that doesn't last.
To me, the main annoyance of bash is the constant need to use grep, sed and friends to parse structured data from unstructured stdout, and also many traps with variable expansion, and need to use hacks such as xargs. But I agree that it matters more when writing scripts than when using it as an interactive shell.
OTOH, the huge problem of PS is that it only works on objects in memory. If you are interoping with a classic console app that writes to stdout, that means that you're getting a string. If you don't have enough memory for that, too bad. I also don't like the .NET object model in that role (it's fine as is, just not very appropriate as a generic structured data interop protocol).
If I had to make a list of things for a perfect shell, I'd say it should use a consistent naming scheme more like PS (but with aliases) and similar expansion rules, but get rid of the notion of passing objects around, and stick to text stream - but also define a standard structured format for them, which would probably be JSON for the sake of not reinventing the wheel.
I honestly wished that Windows 10 would be them scrapping everything and going with a *BSD. (Just like OS X). Admit defeat, and start over with a different code base. No one knows or cares how it works, just that it does. Apple has managed to move complete platforms 4 times (68k -> PPC, OS 9 -> OS X, PPC->Intel, Intel->ARM). Microsoft has just released C# as open source. It shouldn't be hard.
Apple has very little presence in the enterprise precisely because they do those major tectonic shifts where everything breaks so often. OTOH, on Windows, you still have a pretty good chance of running an app originally compiled for Windows 1.0.
Yeah, I'm aware of the Sten. Mechanically it's probably very similar (it's about as simple as an open bolt design can get). But the beauty of what Luty did is going through a set of premade components readily available in hardware stores (mostly pipes) to come up with a list that requires no milling at all, and no other application of machining tools. The barrel of that thing, for example, is literally just a piece of pipe that just happens to be of the right diameter; so is the receiver. Consequently, not only you can make it in your garage, you don't need any tools for it other than a metal saw and a file. This is one step beyond even the Sten, which still requires some machining and welding to produce.
I think the point is to enlist you and other people who would be affected by such regulation as allies (grudging, but ...) to the fight. The wider the bans are, the more people they affect, the bigger the pushback - and in a democratic society that can make the difference (ultimately, if need be, when it comes to voting).
In US, the only part of the firearm that is controlled is the serialized part of the receiver. Usually it's the lower, though on some guns it's the upper. Everything else is just parts, and can literally be bought on Amazon or eBay and shipped to your door.
One exception is stuff that has to do with making guns full auto. The regulatory agency in charge of enforcing that law has declared a while ago that such parts are classified as "machine guns" all by themselves. It's not entirely consistent - for example, an AR bolt that has all the proper cuts for full auto operation is not considered a machine gun, but an AR sear is. Lightning link is considered a machine gun. In fact, at one point they classified a shoe string with one end tied to the reciprocating charging handle (e.g. on AK), and the other end to the trigger, to be a machine gun - and I don't mean the entire arrangement, but just the string "of the proper length" itself (this has since been rescinded).
Milling a full auto AR lower would be considered "manufacturing a machine gun", and is banned outright unless it is for law enforcement or military use (and then you need a bunch of licenses for that). OTOH, milling a semi-auto lower is perfectly legal so long as you don't intend to sell it; you don't even need to serialize it or register it in any way.