C++0x is a substantial improvement in many areas. It deliberately has minimal actual innovation, but does have improvements. For what it aims to be, which is multi-paradigm language suitable for low level and/or high-perfromance work.
It does not provide memory management by default[1], but does provide the reference counting shared_ptr type. It gained closures, type inference, strongly typed enumerations, and full threading support, including an updated memory model.
Sure if you want some advanced things like reflection, light-weight code generation, or features like LINQ, then core C++ is not enough. But then perhaps if you want those sort of features, a CLR-based language may be a better fit anyway.
Of course, it is a shame C# is still viewed as a non-portable Microsoft technology by many (despite the existance of mono), since it fills a niche applicable to any platform. (A sweat spot between dynamic languages, and a language like C++.) The only other popular language that comes close is Java, but Java has a distinctly behind-the-times feel to it, being very resistant to growing new convenience features, at the expense of requiring substantial amounts of boilerplate code for many purposes. (Not to mention the old slow-and-bloated stigma that has never completely left the language despite it actually being very competitive when used well.)
[1] Although C++0x deliberately makes it possible to have a garbage collector, by making certain pointer-obfuscation techniques result in undefined behavior, and explcitly making it implementation defined if unreachable objects are automatically collected.
The properly implemented ones use an entropy pool system, and mix in the new data. The pool keeps track of the amount of randomness present. As long as there is some random aspect to the input (such as the lowest few bits in the exact number of clock ticks between two key-presses), and as long as the entropy of each sample is underestimated, then the result can have any arbitrary number of bits of entropy less than the number of bits in the pool size itself. (One can prove a lower bound on how random the pool's value is after a given number of events).
Or basically if implemented correctly the result can be arbitrarily close to perfectly random.
Except that the GameBoy emulator was (apparently) authorized by the copyright holder, if this is accurate.
As for the ones he did not obtain an alternative license for, that is definitely not acceptable. After all he still could have made money by selling the emulators even with source provided, as putting it in the market provides a service some people are willing to pay for (Automatic updates, and not needing to compile it yourself).
"Richard Stallman" is just my mundane name; you can call me "rms".
He usually uses "Richard Stallman" or "Richard M. Stallman" for formal correspondence.
However in informal contexts like email signatures he is very likely to just use "rms". This is not unlike a "Robert" being known informally as "Bob", except that this is a nickname for the full name, not just the the first name.
AC 102-76A defines the types and classes of EFB hardware and applications. Any portable electronic device not using a mounting system, and using only certified power interfaces (like the standard Cigar lighter port) is a candidate for being Class I hardware. The airline must show that it is properly stowed for take-off and landing, and must have documentation showing that they have tested the device for interference to the point where they would allow passengers to use the device.
Thus the iPad is trivially a Class I EFB hardware device.
AC 91-78 permits replacing the paper documents with any Type A or Type B Application Running on Class I or Class II Hardware that complies with FAR 92.21 (no interference); is current, up-to-date, and valid; is functionally equivlent to the paper being replaced (i.e. does not lack information from the original).
So any approved Type A or Type B application can be used with the iPad to create a proper EFB.
Indeed, Jeppesen has already approved Type A software for the iPad.
It also does not help that threads are very easy to mess up. Look at all the traditional programs that used multiple threads for nonparallel concurrency, and how much trouble the developers have with deadlocks, or forgetting to use locks on a shared variable access, or calling code intended only to be used by the other thread, etc.
So even if you have the ideal parallel version of the algorithm all planned out, actually implementing it correctly can still be problematic.
With good hot air rework station, replacing the basic SMT components like a resistor, jumper, capacitor or fuse is really no more work than with the old through-hole components.
If you need to replace an IC, things are more challenging, but with some practice one can solder pretty much any IC with pins using a standard soldering iron, and some solder wick. If the component is unsusually heat sensitive though, or is designed with a BGA package, then hand soldering is really not an option.
Honestly though, the term "quantum leap" when used metaphorically should not be concerned with the size of the jump, but rather the discontinuity in the transition. Going from 4 or so qubits directly to 128 without having 32 or 64 bit machines would qualify.
The rufusal of Queen's Consent for laws impacting the monarchy itself is a power that still exists, and has been used as recently as 1999. Look up the Military Action Against Iraq (Parliamentary Approval) Bill, which would have granted Parliament the power to authorize military strikes against Iraq. That power is currently held by the Monarch. Queen Elizabeth II refused to consent to the bill, so the bill could not move forward.
It basically prevents parliament from wasting time debating a bill that would later be refused Royal Assent, on the grounds of the bill modifying the balance of power between the Monarch and Parliament. Of course, if the monarch grants King Consent or Queen's Consent for the bill, then it could continue, and would like any other bill be almost certain to be granted Royal Assent upon passage.
That is very distinct from the Powers the monarch lost in the Glorious Revolution.
There is a field that would properly be named Computational Mathematics (or Theory of Computation, or something similar). That field includes concepts like Lambda Calculus, or the mathematical 7-tuple Turing Machine model.
More specifically Computational Mathematics includes the study of:
algorithmic complexity
automata theory
finite state machines
cellular automata
the automata behind formal language theory, like DFA and NFA
formal language theory
languages
regular languages
context-free languages
context-sensitive languages
recursively enumeratable languages
etc
grammars
the various parser types
LR(1)
LR(n)
LL(1)
LL(n)
LALR(1)
etc
Quite a few other topics which are just not coming to mind at the moment.
That is a field in its own right. Anybody programing computers could benefit from at least a passing familiarity with some of the concepts, although exactly which ones are important depend on the specific job.
Universities (and 4-year colleges) though also feel the need to offer some other courses, which they often label as computer science. These include basic introduction to programming language X courses[1], an operating systems principles course[2], a software engineering course, and a variety of other courses.
These courses can be worthwhile, but are not even remotely intended to replace on-the-job training, since they rarely cover such essentials as version control, and certainly don't deal with the art of cobbling together a bunch of nasty hacks in order to meet a deadline, or of having a Business Analyst in charge who will not yet ou go back and code the features correctly once the deadline passes. They most likely don't cover unit tests, but that's OK, since contrary to popular belief much (possibly most) of industry does not bother to have any unit tests. After all, Cobol does not lend itself to easy unit testing.[3]
So what is CS? Honestly the way most schools teach it, it is a mixture of Computational Mathematics, and a variety of topics focused on programming itself, but that leave out many important concepts for actually working in the real world.
[1] These are not unlike the same courses offered at a community college/technical school, except that they will often be a bit more rigorous at a univrsity or 4-year college.
[2] This course covers what a kernel is, discusses virtual memory, covers scheduling algorithms, and introduces multi-theading programming concepts like critical sections, mutexes, semaphores, monitors, deadlock, livelock. It also discuss the difference between a thread and a process, some lower level details of filesystems (things like inodes, direct blocks, indirect blocks, doubly indirect blocks, and also concepts like the file allocation table of the FAT file-system family.) There are other concepts that may be taught in place of one or more of these. This course typically uses a texbook like Modern Operating Systems by Tanenbaum, or Operating Systems Principles by Bic and Shaw.
[3] I jest. Through honestly, the giant legacy C++ program not designed with unit tests in mind does not make it easy to start using them, even in the most basic form of regression tests for fixed bugs.
For the Arduino Uno, AFAIK they pay the licensing fee to be an official secondary manufacturer of the device. (They are/were primary manufacturer of Arduino Pro, Arduino Pro Mini, and Arduino Lilypad.)
One soldering iron they sell is the Hakko FX888 for $99. Other suppliers sell it at $80-$100. For example Adafruit Industries sells it at $95. Another is the AOYUE 2900, which they sell at MSRP (~$100). They also sell the AOYUE 2901 at MSRP (~$80). The last iron they sell is cheaper than $45, so I know you are not talking about that.
As for Open Source Hardware, yes it does give anybody permission to make and sell it. That is part of the point. Nevertheless, open source hardware projects like he Arduino are able to capitalize on their trademarks, so places like Sparkfun are willing to pay a reasonable royalty to be able to use the trademark.
Further, Open Souce hardware licenses can require attribution.
Actually, looking at this further, I have determined that these are actually active adapters. They take a digital DisplayPort signal and produce an analog VGA signal.
Historically active converters have been extremely expensive ($100+). The price has come down considerably, but even the bargain cables appear to be $20+, unlike passive adapters which can be $5 or less.
That is interesting. Officially the display port standard does not have any support for analogue modes. The standard specifies the displayport signalling, and also how the pins can be mapped to support single-link DVI.
AIUI the DisplayPort 1.2 standard also specifies mini-DisplayPort, but still does specify any way to handle VGA signaling. So if the Dell XPS does support Apple's VGA adapter that must be by some special agreement with apple, or by reverse engineering how Apple did it.
Regardless, it is a fact to state that there is no requirement for a system with mini DisplayPort to have any support for a VGA adapter, and even if they do, there is no guarantee that the adapter will be compatible with other manufacturers, since it has not been standardized.
I could imagine the monarch withholding royal assent in one special case, namely Parliament passes the law, and recesses, and prior to the the assent being issued, a major problem with the law surfaces which was not anticipated by parliament, and after consulting with the Prime Minister the monarch concludes parliament would not have passed the law if they were aware of the problem. That is rather unlikely to happen, and if It were to occur, the more likely occurrence would be an emergency session of Parliament to pass a a law correcting the issue.
Far more likely is the Monarch refusing to give Queen's Consent (or King's Consent, as applicable) to laws impacting the Monarchy itself. That is considered to be a distinct power and is exercised more frequently than refusing royal assent, although still not very often.
While you sound like you might be a troll, I'm going to give you the benefit of the doubt.
I've not personally ordered anything from SparkFun, but from what I can see their prices are competitive for their products (as long as you buy them directly from SparkFun, and not through an intermediary like Amazon).
Sure, if you have the facilities to manufacture PCBs locally then you may come out cheaper buying the parts yourself. There is no guarantee though due to shipping costs, and not buying the parts in bulk.
However, I've not noticed any price gouging, nor any stolen designs. Perhaps I am missing something.
Sure, but the VGA adapter is not a passive DisplayPort adapter.
Instead they bridge pins in a special way to indicate to the Mac Book Pro that they are plugged in, and the Mac Book Pro starts sending highly non-standard signals to the adapter.
The adapter would not work on any non-Apple device that has a Mini DisplayPort.
DisplayPort does not support DVI-A signaling so hooking up to a VGA device requires an expensive active converter.
A dual-mode display port though can support HDMI. That is implicit in the fact that it can support a single-link DVI-D signal, since HDMI has he same signalling as DVI. Admittedly, many dual-mode display port devices would not bother with providing HDMI audio, but that is not a technical limitation, since HDMI audio can be provided on any DVI-based port.
Except of course that the level of security they claimed was completely implausible, given that you can download arbitrary files from the web interface, meaning the key could at best be encrypted by the password, and they also have a "forgot your password" service, meaning the key could not even be encrypted by your password.
Therefore, at best, they may have a policy that for normal support purposes the keys are off limits, and only the non-encrypted metadata is accessible. But obviously access to the files by their employees is quite possible.
The most likely case is that he is sane, although sheltered from some of the harsh realities of civilian life. He also most likely does not actually have absolute control, and at times, especially when ill, decisions have been made by other people, and may be inconsistent with the decision he actually makes.
The government is also excessively secretive about him, helping to fuel rumors and conspiracy theories. The end result could easily be the appearance of insanity, despite being perfectly sane.
Really only somebody who has had extended interaction directly with him, could have much hope of knowing for sure.
I fully agree with all your points, except that he "wiring" programing language is already C++. All wiring actually is is a C++ library. A #include directive is added to the top of what you provide, and it is compiled together with an existing main.cpp file (and a few others), and the result is an executable. That is it.
While undocumented, you can use pointers, create new classes, whatever you want.
Perl 6 has 140+ different operators! That is absolutely insane. While I support being concise, Perl has far more complexity in the language core than any other language I have ever seen.
Leaving aside all the other millions of little problems that would cause, how do you expect the sewers would work?
Turtles, specifically Elderly Mutant Ninja Turtles.
Yep, the 1984 ad was attacking conformity, now Apple has a one size fits all approach for everyone.
Don't be absurd. At the moment Apple has:
Sure, they are limited, but they are hardly one-size-fits-all, more like few-sizes-fit-all.
C++0x is a substantial improvement in many areas. It deliberately has minimal actual innovation, but does have improvements. For what it aims to be, which is multi-paradigm language suitable for low level and/or high-perfromance work.
It does not provide memory management by default[1], but does provide the reference counting shared_ptr type. It gained closures, type inference, strongly typed enumerations, and full threading support, including an updated memory model.
Sure if you want some advanced things like reflection, light-weight code generation, or features like LINQ, then core C++ is not enough. But then perhaps if you want those sort of features, a CLR-based language may be a better fit anyway.
Of course, it is a shame C# is still viewed as a non-portable Microsoft technology by many (despite the existance of mono), since it fills a niche applicable to any platform. (A sweat spot between dynamic languages, and a language like C++.) The only other popular language that comes close is Java, but Java has a distinctly behind-the-times feel to it, being very resistant to growing new convenience features, at the expense of requiring substantial amounts of boilerplate code for many purposes. (Not to mention the old slow-and-bloated stigma that has never completely left the language despite it actually being very competitive when used well.)
[1] Although C++0x deliberately makes it possible to have a garbage collector, by making certain pointer-obfuscation techniques result in undefined behavior, and explcitly making it implementation defined if unreachable objects are automatically collected.
The properly implemented ones use an entropy pool system, and mix in the new data. The pool keeps track of the amount of randomness present. As long as there is some random aspect to the input (such as the lowest few bits in the exact number of clock ticks between two key-presses), and as long as the entropy of each sample is underestimated, then the result can have any arbitrary number of bits of entropy less than the number of bits in the pool size itself. (One can prove a lower bound on how random the pool's value is after a given number of events).
Or basically if implemented correctly the result can be arbitrarily close to perfectly random.
Except that the GameBoy emulator was (apparently) authorized by the copyright holder, if this is accurate.
As for the ones he did not obtain an alternative license for, that is definitely not acceptable. After all he still could have made money by selling the emulators even with source provided, as putting it in the market provides a service some people are willing to pay for (Automatic updates, and not needing to compile it yourself).
From his website:
"Richard Stallman" is just my mundane name; you can call me "rms".
He usually uses "Richard Stallman" or "Richard M. Stallman" for formal correspondence.
However in informal contexts like email signatures he is very likely to just use "rms".
This is not unlike a "Robert" being known informally as "Bob", except that this is a
nickname for the full name, not just the the first name.
The iPod is a proper EFB!
AC 102-76A defines the types and classes of EFB hardware and applications. Any portable electronic device not using a mounting system, and using only certified power interfaces (like the standard Cigar lighter port) is a candidate for being Class I hardware. The airline must show that it is properly stowed for take-off and landing, and must have documentation showing that they have tested the device for interference to the point where they would allow passengers to use the device.
Thus the iPad is trivially a Class I EFB hardware device.
AC 91-78 permits replacing the paper documents with any Type A or Type B Application Running on Class I or Class II Hardware that complies with FAR 92.21 (no interference); is current, up-to-date, and valid; is functionally equivlent to the paper being replaced (i.e. does not lack information from the original).
So any approved Type A or Type B application can be used with the iPad to create a proper EFB.
Indeed, Jeppesen has already approved Type A software for the iPad.
It also does not help that threads are very easy to mess up. Look at all the traditional programs that used multiple threads for nonparallel concurrency, and how much trouble the developers have with deadlocks, or forgetting to use locks on a shared variable access, or calling code intended only to be used by the other thread, etc.
So even if you have the ideal parallel version of the algorithm all planned out, actually implementing it correctly can still be problematic.
With good hot air rework station, replacing the basic SMT components like a resistor, jumper, capacitor or fuse is really no more work than with the old through-hole components.
If you need to replace an IC, things are more challenging, but with some practice one can solder pretty much any IC with pins using a standard soldering iron, and some solder wick. If the component is unsusually heat sensitive though, or is designed with a BGA package, then hand soldering is really not an option.
Honestly though, the term "quantum leap" when used metaphorically should not be concerned with the size of the jump, but rather the discontinuity in the transition. Going from 4 or so qubits directly to 128 without having 32 or 64 bit machines would qualify.
The rufusal of Queen's Consent for laws impacting the monarchy itself is a power that still exists, and has been used as recently as 1999. Look up the Military Action Against Iraq (Parliamentary Approval) Bill, which would have granted Parliament the power to authorize military strikes against Iraq. That power is currently held by the Monarch. Queen Elizabeth II refused to consent to the bill, so the bill could not move forward.
It basically prevents parliament from wasting time debating a bill that would later be refused Royal Assent, on the grounds of the bill modifying the balance of power between the Monarch and Parliament. Of course, if the monarch grants King Consent or Queen's Consent for the bill, then it could continue, and would like any other bill be almost certain to be granted Royal Assent upon passage.
That is very distinct from the Powers the monarch lost in the Glorious Revolution.
Git off my lawn!!
git: 'off' is not a git command. See 'git --help'.
Did you mean this?
diff
The big problm is that CS is meaningless.
There is a field that would properly be named Computational Mathematics (or Theory of Computation, or something similar). That field includes concepts like Lambda Calculus, or the mathematical 7-tuple Turing Machine model.
More specifically Computational Mathematics includes the study of:
That is a field in its own right. Anybody programing computers could benefit from at least a passing familiarity with some of the concepts, although exactly which ones are important depend on the specific job.
Universities (and 4-year colleges) though also feel the need to offer some other courses, which they often label as computer science. These include basic introduction to programming language X courses[1], an operating systems principles course[2], a software engineering course, and a variety of other courses.
These courses can be worthwhile, but are not even remotely intended to replace on-the-job training, since they rarely cover such essentials as version control, and certainly don't deal with the art of cobbling together a bunch of nasty hacks in order to meet a deadline, or of having a Business Analyst in charge who will not yet ou go back and code the features correctly once the deadline passes. They most likely don't cover unit tests, but that's OK, since contrary to popular belief much (possibly most) of industry does not bother to have any unit tests. After all, Cobol does not lend itself to easy unit testing.[3]
So what is CS? Honestly the way most schools teach it, it is a mixture of Computational Mathematics, and a variety of topics focused on programming itself, but that leave out many important concepts for actually working in the real world.
[1] These are not unlike the same courses offered at a community college/technical school, except that they will often be a bit more rigorous at a univrsity or 4-year college.
[2] This course covers what a kernel is, discusses virtual memory, covers scheduling algorithms, and introduces multi-theading programming concepts like critical sections, mutexes, semaphores, monitors, deadlock, livelock. It also discuss the difference between a thread and a process, some lower level details of filesystems (things like inodes, direct blocks, indirect blocks, doubly indirect blocks, and also concepts like the file allocation table of the FAT file-system family.) There are other concepts that may be taught in place of one or more of these. This course typically uses a texbook like Modern Operating Systems by Tanenbaum, or Operating Systems Principles by Bic and Shaw.
[3] I jest. Through honestly, the giant legacy C++ program not designed with unit tests in mind does not make it easy to start using them, even in the most basic form of regression tests for fixed bugs.
For the Arduino Uno, AFAIK they pay the licensing fee to be an official secondary manufacturer of the device. (They are/were primary manufacturer of Arduino Pro, Arduino Pro Mini, and Arduino Lilypad.)
One soldering iron they sell is the Hakko FX888 for $99. Other suppliers sell it at $80-$100. For example Adafruit Industries sells it at $95. Another is the AOYUE 2900, which they sell at MSRP (~$100). They also sell the AOYUE 2901 at MSRP (~$80). The last iron they sell is cheaper than $45, so I know you are not talking about that.
As for Open Source Hardware, yes it does give anybody permission to make and sell it. That is part of the point. Nevertheless, open source hardware projects like he Arduino are able to capitalize on their trademarks, so places like Sparkfun are willing to pay a reasonable royalty to be able to use the trademark.
Further, Open Souce hardware licenses can require attribution.
Actually, looking at this further, I have determined that these are actually active adapters. They take a digital DisplayPort signal and produce an analog VGA signal.
Historically active converters have been extremely expensive ($100+). The price has come down considerably, but even the bargain cables appear to be $20+, unlike passive adapters which can be $5 or less.
That is interesting. Officially the display port standard does not have any support for analogue modes. The standard specifies the displayport signalling, and also how the pins can be mapped to support single-link DVI.
AIUI the DisplayPort 1.2 standard also specifies mini-DisplayPort, but still does specify any way to handle VGA signaling. So if the Dell XPS does support Apple's VGA adapter that must be by some special agreement with apple, or by reverse engineering how Apple did it.
Regardless, it is a fact to state that there is no requirement for a system with mini DisplayPort to have any support for a VGA adapter, and even if they do, there is no guarantee that the adapter will be compatible with other manufacturers, since it has not been standardized.
I could imagine the monarch withholding royal assent in one special case, namely Parliament passes the law, and recesses, and prior to the the assent being issued, a major problem with the law surfaces which was not anticipated by parliament, and after consulting with the Prime Minister the monarch concludes parliament would not have passed the law if they were aware of the problem. That is rather unlikely to happen, and if It were to occur, the more likely occurrence would be an emergency session of Parliament to pass a a law correcting the issue.
Far more likely is the Monarch refusing to give Queen's Consent (or King's Consent, as applicable) to laws impacting the Monarchy itself. That is considered to be a distinct power and is exercised more frequently than refusing royal assent, although still not very often.
While you sound like you might be a troll, I'm going to give you the benefit of the doubt.
I've not personally ordered anything from SparkFun, but from what I can see their prices are competitive for their products (as long as you buy them directly from SparkFun, and not through an intermediary like Amazon).
Sure, if you have the facilities to manufacture PCBs locally then you may come out cheaper buying the parts yourself. There is no guarantee though due to shipping costs, and not buying the parts in bulk.
However, I've not noticed any price gouging, nor any stolen designs. Perhaps I am missing something.
Sure, but the VGA adapter is not a passive DisplayPort adapter.
Instead they bridge pins in a special way to indicate to the Mac Book Pro that they are plugged in, and the Mac Book Pro starts sending highly non-standard signals to the adapter.
The adapter would not work on any non-Apple device that has a Mini DisplayPort.
DisplayPort does not support DVI-A signaling so hooking up to a VGA device requires an expensive active converter.
A dual-mode display port though can support HDMI. That is implicit in the fact that it can support a single-link DVI-D signal, since HDMI has he same signalling as DVI. Admittedly, many dual-mode display port devices would not bother with providing HDMI audio, but that is not a technical limitation, since HDMI audio can be provided on any DVI-based port.
Is that not the very reason to always carry a crafting table, and a bit of wood with you? I generally just craft shovels when I need them.
Except of course that the level of security they claimed was completely implausible, given that you can download arbitrary files from the web interface, meaning the key could at best be encrypted by the password, and they also have a "forgot your password" service, meaning the key could not even be encrypted by your password.
Therefore, at best, they may have a policy that for normal support purposes the keys are off limits, and only the non-encrypted metadata is accessible. But obviously access to the files by their employees is quite possible.
The most likely case is that he is sane, although sheltered from some of the harsh realities of civilian life. He also most likely does not actually have absolute control, and at times, especially when ill, decisions have been made by other people, and may be inconsistent with the decision he actually makes.
The government is also excessively secretive about him, helping to fuel rumors and conspiracy theories. The end result could easily be the appearance of insanity, despite being perfectly sane.
Really only somebody who has had extended interaction directly with him, could have much hope of knowing for sure.
I fully agree with all your points, except that he "wiring" programing language is already C++. All wiring actually is is a C++ library. A #include directive is added to the top of what you provide, and it is compiled together with an existing main.cpp file (and a few others), and the result is an executable. That is it.
While undocumented, you can use pointers, create new classes, whatever you want.
Perl 6 has 140+ different operators! That is absolutely insane. While I support being concise, Perl has far more complexity in the language core than any other language I have ever seen.