You act like the legislators write the laws. They don't even read them. Special interests write the laws and summarize them for each key legislator. Most of the legislation is so verbose that they could require blood sacrifices and nobody would ever notice till it was passed.
Speaking of the Tab key. Why do I (randomly) have to hit the tab key (or use the mouse) to get newly opened dialogs to grab focus. I used to be able to navigate with one hand.
How annoying is it to open something with the keyboard only to get a mouse only dialog window. I shouldn't have to enable accessibility features just to be able to navigate quickly.
I think that was kind of his point too. He goes into great detail on many aspects of a new ISA and even discusses the vendor issue toward the end. I highly recommend the video.
In his blog https://caseymuratori.com/blog... Casey Muratori advocates the move away from drivers to instruction set architectures (ISAs). Back in the day individual software could boot the entire computer in relatively few lines of code and still do its job while fitting on a single sided, single density floppy disk. Even today, you don't see game vendors making bootable Linux versions of their games that could theoretically work on both Mac and Windows, but I get his point.
Older versions of Opera had this built in and many more features. It was ahead of its time and eventually dropped, but this is still not a good replacement. Unite could have been really awesome by now if they kept it going after the WebKit and then Blink switch.
Just let them play https://codecombat.com/ If they do well and like it, they may be suited to program. The majority of the population simply cannot think like a programmer. In my anecdotal experience a simple loop confuses over half of the populous. Once you throw in algorithms, data structures and simple recursion you lose 80% of the rest and of what's left only about half have total grasp of the basic concepts; and that is totally fine. As my thermodynamics instructor used to say "Different people are different". We don't mandate that every kid play baseball, yet there are plenty of major league players. The uninterested and bad players self select out early on while the rest get eliminated by more and better competition. The rest keep playing because of the love of the game and because the incentive for success in the field outweighs the investment they put into honing their skills.
We don't need more 3rd string programmers; we need incentives (pay+benefits) to keep starters from switching sports.
How many programming wizards do you know that haven't moved on to another (better pay/benefits) field after a decade or 2?
Uhm, C has like half of those and a fourth of them just doesn't make sense.
Like, size_t isn't an index, why would you want to have a size8_t? Use uint8_t instead. It is exactly what you want.
Nope it would work as expected on 8 bit systems, but on 32 and 64 bit architectures it can cause an unnecessary instruction
The logical/arithmetic shift isn't there specifically to cater to older architectures that doesn't have a barrel shift.
If you want arithmetic oeprations you should use division and let the compiler replace with an arithmetic shift.
If it doesn't then the compiler doesn't do it's job and it has nothing to do with the language
By not having a standardized method to do arithmetic/logical shift or rotation, it forces programmers to use equivalent idioms to hopefully coerce the compiler into optimizing it into the intended operation... it _usually_ does, but when it doesn't, it can have negative effects on performance and/or security. What you end up with is a 10 line encryption algorithm that becomes 20kb worth of #ifdefs for various architectures and compilers that is difficult to audit and port to new architectures.
Like really. Many of your points are addressed in the C standard and the C99 rationale. You should read them.
The standards want to maintain backward compatibility with architectures that are less and less relevant. Architectures that don't use 2s complement, ascii and iee754 are becoming extinct. By having a subset of "sane" architecture definitions, 90% of the undefined-ness goes away.
Also, claiming to want C to be close to the machine while suggesting switch for strings and a plethora of features that would cause function calls with multiple loops in them on a bunch of architectures is more than just a little bit inconsistent.
That one is more a matter of portability (from other languages), simplicity and maintainability (vs. a tree of if (!strcmp(s,"foo") foo(); else if...) a roll your own state machine, jump table or binary search. It isn't difficult to implement on the compiler side and would produce cleaner, more maintainable and typically more performant code.
Many features are omitted specifically because they would be hard to implement on many architectures, like the parity one.
It would be great for Z80 maybe, but since 8080 doesn't treat the parity bit the same and many processors doesn't have them using it would force the compiler to insert a function call that loops through your data to get the parity. (Or use a folding algorithm.)
Since it isn't portable anyway, you could just use inline assembly for that part.
That is well covered in hacker's delight for architectures that do not support it (and many others) Using inline assembly is a total bullshit argument if you want portable code - besides the inline assembly not being portable itself, you'd end up with pages and pages of #ifdefs for a single line of code (depending on the number of architectures, compilers etc...) AND the compiler wouldn't be able to optimize it.
For the AC comment "Which ASCII table has 27 letters in the lowercase alphabet? 'z'-'a' should be 25, right?"... typo - friggin slashdot's inability to display a less than sign without writing the html entity - I switched it to equal and didn't change the value - noticed after I submitted as well as the left shift operators.
Having a largest integer register type is important now that we have ILP32 for 64 bit capable architectures (long doesn't work) - Neither c99 or c11 provide an equivalent - You cannot just use long long because that can be a compiler implemented aggregate type on some architectures.
Since many compilers already implement vector extensions, having common type definitions and an optional support macro to indicate support, would drastically simplify a lot of code
C could be a lot better at being closer to the machine. It actually lacks several features in order to placate defunct architectures.
* stdint-style types for size_t, ptrdiff_t, etc...
. - allows better portability for embedded
. . 1. ex. size8_t for indices that won't exceed 255
* lacks largest integer register type
* vector types and extensions - use arm's naming (optional?)
* only single word tokens (ex. unsigned long long double complex)
* ascii only (ebcdic et.al are defunct) => 'z'-'a'==26
* 2s complement
* iee-754
* big/little endian
* define , >>>, >> and to remove undefinedness
. -- differentiate between logical and arithmetic shift
* standardize functions for common ops
. - ror, rol, ctz, clz, parity, popcount, etc...
* switch for "strings"
. - use ~strcmp and ~bsearch (or if tree for small number of cases)
. . 1. *simplified versions of bsearch + strcmp
. . 2. compiler internally sorts strings
. . 3. could be extended to other non-integer types
* ability to define bit size of parameters and enums.
* function pointer types are inside out... unless you typedef them - WTF
* function pointers != lamba/block/etc... could be more efficient (ex. qsort)
* _Generic provides 10% functionality with 90% of the work (it sucks)
To name a few. Anyone else know of a "saner C" standard that makes most of the undefined-ness go away?
It's crap in many more ways than just this. Sorry but hacking your high school to change a grade doesn't deserve a harsher punishment than rape or assault.
Apparently they cannot learn from previous mistakes.
1. They need to own the infrastructure.
2. They need to operate it (contract employees to start off is fine)
With NMCI, the navy was (is?) leasing monthly the cost of buying a similar work stations, had no real control over what software they could use, bandwidth was slower than ISDN (technically it was faster than dialup but did not feel like it), email was limited to 25Mb (I needed to receive individual documents that were larger than my entire mailbox limit), technical support was expensive and response time was way too long for an organization responsible for life or death operations... I could go on, but I'd rather not - it was horrible.
Still better than Amazon which ignores all search terms after using them to try to figure out how to sell you something only vaguely related. If you then use the same search terms in Google and add site:amazon.com it is magically found. Btw just put quotes around any term you don't want Google to randomly omit.
Since you cannot run the benchmark (in this case due to legal restrictions) just write FAIL* next to it. Then put the actual values for AMD, VIA and DMP CPUs. Once a few dozen articles get published where even DMP beats Intel's most expensive chips, they will wake up.
* FAIL means that the chip was unable to complete the benchmark due to faulty engineering or legal restrictions.
I love that they have "One" in the product name too... giving the impression that they will be around for a "Two". Or, if they are following MS naming scheme, it is their 3rd generation platform. It reminds me of the days of everything-"2.0"
1. Subsidies
2. See 1. and economies of scale.
Not even American farmers with the same subsidies can compete with agribusinesses who share their workers and farm implements across a vast land area and take advantage of corporate loopholes.
You act like the legislators write the laws. They don't even read them. Special interests write the laws and summarize them for each key legislator. Most of the legislation is so verbose that they could require blood sacrifices and nobody would ever notice till it was passed.
Speaking of the Tab key. Why do I (randomly) have to hit the tab key (or use the mouse) to get newly opened dialogs to grab focus. I used to be able to navigate with one hand.
How annoying is it to open something with the keyboard only to get a mouse only dialog window. I shouldn't have to enable accessibility features just to be able to navigate quickly.
Or deny svchost.exe access to the network.
I think that was kind of his point too. He goes into great detail on many aspects of a new ISA and even discusses the vendor issue toward the end. I highly recommend the video.
That was his point exactly.
In his blog https://caseymuratori.com/blog... Casey Muratori advocates the move away from drivers to instruction set architectures (ISAs). Back in the day individual software could boot the entire computer in relatively few lines of code and still do its job while fitting on a single sided, single density floppy disk. Even today, you don't see game vendors making bootable Linux versions of their games that could theoretically work on both Mac and Windows, but I get his point.
Oh wait, they did.
Older versions of Opera had this built in and many more features. It was ahead of its time and eventually dropped, but this is still not a good replacement. Unite could have been really awesome by now if they kept it going after the WebKit and then Blink switch.
Except dom is already associated with xml (as its Document Object Model) and sub is a too common prefix.
Just let them play https://codecombat.com/ If they do well and like it, they may be suited to program. The majority of the population simply cannot think like a programmer. In my anecdotal experience a simple loop confuses over half of the populous. Once you throw in algorithms, data structures and simple recursion you lose 80% of the rest and of what's left only about half have total grasp of the basic concepts; and that is totally fine. As my thermodynamics instructor used to say "Different people are different". We don't mandate that every kid play baseball, yet there are plenty of major league players. The uninterested and bad players self select out early on while the rest get eliminated by more and better competition. The rest keep playing because of the love of the game and because the incentive for success in the field outweighs the investment they put into honing their skills.
We don't need more 3rd string programmers; we need incentives (pay+benefits) to keep starters from switching sports.
How many programming wizards do you know that haven't moved on to another (better pay/benefits) field after a decade or 2?
I think they are using the Wells Fargo definition.
Uhm, C has like half of those and a fourth of them just doesn't make sense.
Like, size_t isn't an index, why would you want to have a size8_t? Use uint8_t instead. It is exactly what you want.
Nope it would work as expected on 8 bit systems, but on 32 and 64 bit architectures it can cause an unnecessary instruction
The logical/arithmetic shift isn't there specifically to cater to older architectures that doesn't have a barrel shift. If you want arithmetic oeprations you should use division and let the compiler replace with an arithmetic shift. If it doesn't then the compiler doesn't do it's job and it has nothing to do with the language
By not having a standardized method to do arithmetic/logical shift or rotation, it forces programmers to use equivalent idioms to hopefully coerce the compiler into optimizing it into the intended operation ... it _usually_ does, but when it doesn't, it can have negative effects on performance and/or security. What you end up with is a 10 line encryption algorithm that becomes 20kb worth of #ifdefs for various architectures and compilers that is difficult to audit and port to new architectures.
Like really. Many of your points are addressed in the C standard and the C99 rationale. You should read them.
The standards want to maintain backward compatibility with architectures that are less and less relevant. Architectures that don't use 2s complement, ascii and iee754 are becoming extinct. By having a subset of "sane" architecture definitions, 90% of the undefined-ness goes away.
Also, claiming to want C to be close to the machine while suggesting switch for strings and a plethora of features that would cause function calls with multiple loops in them on a bunch of architectures is more than just a little bit inconsistent.
That one is more a matter of portability (from other languages), simplicity and maintainability (vs. a tree of if (!strcmp(s,"foo") foo(); else if ...) a roll your own state machine, jump table or binary search. It isn't difficult to implement on the compiler side and would produce cleaner, more maintainable and typically more performant code.
Many features are omitted specifically because they would be hard to implement on many architectures, like the parity one. It would be great for Z80 maybe, but since 8080 doesn't treat the parity bit the same and many processors doesn't have them using it would force the compiler to insert a function call that loops through your data to get the parity. (Or use a folding algorithm.) Since it isn't portable anyway, you could just use inline assembly for that part.
That is well covered in hacker's delight for architectures that do not support it (and many others) Using inline assembly is a total bullshit argument if you want portable code - besides the inline assembly not being portable itself, you'd end up with pages and pages of #ifdefs for a single line of code (depending on the number of architectures, compilers etc...) AND the compiler wouldn't be able to optimize it.
... typo - friggin slashdot's inability to display a less than sign without writing the html entity - I switched it to equal and didn't change the value - noticed after I submitted as well as the left shift operators.
For the AC comment "Which ASCII table has 27 letters in the lowercase alphabet? 'z'-'a' should be 25, right?"
Having a largest integer register type is important now that we have ILP32 for 64 bit capable architectures (long doesn't work) - Neither c99 or c11 provide an equivalent - You cannot just use long long because that can be a compiler implemented aggregate type on some architectures.
Since many compilers already implement vector extensions, having common type definitions and an optional support macro to indicate support, would drastically simplify a lot of code
C could be a lot better at being closer to the machine. It actually lacks several features in order to placate defunct architectures.
... unless you typedef them - WTF
* stdint-style types for size_t, ptrdiff_t, etc...
. - allows better portability for embedded
. . 1. ex. size8_t for indices that won't exceed 255
* lacks largest integer register type
* vector types and extensions - use arm's naming (optional?)
* only single word tokens (ex. unsigned long long double complex)
* ascii only (ebcdic et.al are defunct) => 'z'-'a'==26
* 2s complement
* iee-754
* big/little endian
* define , >>>, >> and to remove undefinedness
. -- differentiate between logical and arithmetic shift * standardize functions for common ops
. - ror, rol, ctz, clz, parity, popcount, etc...
* switch for "strings"
. - use ~strcmp and ~bsearch (or if tree for small number of cases)
. . 1. *simplified versions of bsearch + strcmp
. . 2. compiler internally sorts strings
. . 3. could be extended to other non-integer types
* ability to define bit size of parameters and enums.
* function pointer types are inside out
* function pointers != lamba/block/etc... could be more efficient (ex. qsort)
* _Generic provides 10% functionality with 90% of the work (it sucks)
To name a few. Anyone else know of a "saner C" standard that makes most of the undefined-ness go away?
If I instead bash them with a computer and kill them it doesn't magically become legal. Of course if I ksh or ash them that is a different story :-)
Now that's fsck-ing funny.
It's crap in many more ways than just this. Sorry but hacking your high school to change a grade doesn't deserve a harsher punishment than rape or assault.
Radiologists can tell. You may start to see more of them working remotely from their cabins on cruise ships.
Apparently they cannot learn from previous mistakes.
1. They need to own the infrastructure.
2. They need to operate it (contract employees to start off is fine)
With NMCI, the navy was (is?) leasing monthly the cost of buying a similar work stations, had no real control over what software they could use, bandwidth was slower than ISDN (technically it was faster than dialup but did not feel like it), email was limited to 25Mb (I needed to receive individual documents that were larger than my entire mailbox limit), technical support was expensive and response time was way too long for an organization responsible for life or death operations... I could go on, but I'd rather not - it was horrible.
Still better than Amazon which ignores all search terms after using them to try to figure out how to sell you something only vaguely related. If you then use the same search terms in Google and add site:amazon.com it is magically found. Btw just put quotes around any term you don't want Google to randomly omit.
Since you cannot run the benchmark (in this case due to legal restrictions) just write FAIL* next to it. Then put the actual values for AMD, VIA and DMP CPUs. Once a few dozen articles get published where even DMP beats Intel's most expensive chips, they will wake up.
* FAIL means that the chip was unable to complete the benchmark due to faulty engineering or legal restrictions.
Turns out they moved on to "science".
A doubling of ocean heat waves has caused all of the climate change. Humans are off the hook.
I love that they have "One" in the product name too... giving the impression that they will be around for a "Two". Or, if they are following MS naming scheme, it is their 3rd generation platform. It reminds me of the days of everything-"2.0"
They say there is no such thing as bad publicity, but damn. We never should have bailed them out.
1. Subsidies
2. See 1. and economies of scale.
Not even American farmers with the same subsidies can compete with agribusinesses who share their workers and farm implements across a vast land area and take advantage of corporate loopholes.