Exactly. I studied CS and ended up managing desktop support. A neighbour a couple of years younger than me studied astrophysics and is now coding spacecraft landing routines for the European Space Agency. Pure CS is great -- I love it. But as was predicted decades ago, as computers have grown more common, it's no longer just your knowledge of CS that matters -- you need more and more domain knowledge too.
We really need to start teaching everyone proper computing....
Every time they start slaughtering each other a bunch of idiots say it's because the Germans or Belgians drew a line in the wrong place 150 years ago.
So while they don't claim white men directly caused the bad scores, they claim that they caused the thing that caused them. Along with anything else bad that happens.
What is idiotic about recognising the truth? This sort of tribalism doesn't merely affect Africa -- just look at Northern Ireland throughout the 20th century. During the partition of Ireland, people were moved to manipulate the demographics such that despite the number of Catholic republicans, they would always be outnumbered by Protestant unionists. It is entirely antagonistic when two largely distinct populations live in an unequal state, and democracy invariably means that the bigger group impose their will on the smaller one.
The manipulation of demographics was one of the most powerful tools in the imperial toolbox, and the European imperial powers used it to our advantage, and to the ongoing detriment of the conquered peoples.
I was quite enjoying that until he started spouting bigotry about the French. Surrendering doesn't get your cities bombed, fighting back does. Also, a lot of it has nothing to do with the 20th century anyway -- the Second Empire demolished most of old Paris to build the Paris we know today.
Correct and correct. Never do the compute-intensive stuff in native Python + compute-intensive stuff (eg image manipulation) needs arrays = Python doesn't need arrays.
Python's lists are a perfectly adequate replacement for a small 1-dimensional array when needed on an ad hoc basis.
No, you're reading another white man accusing the black Africans of blaming white men, even though nobody has blamed white men, so would the pair of you stop being so bloody racist, please? The university is blaming the Liberian school system and the government, who presumably haven't been quick enough to rebuild bombed-out schools, train replacements for murdered teachers etc.
The university isn't willing to let a war that ended a decade ago be an excuse -- this is exactly the opposite of what you accuse them of, you pair of small-minded, patronising bigots.
What're you 'just sayin'? For a non-native, the GP's composition is exemplary. While he makes several fundamental errors, the sentence construction (one of the most difficult parts of language to teach or learn, and one of the biggest potential barriers to comprehension) is very cose to perfect. As a native English-speaking foreign languages grad, I'd say his mastery of English is better than most of my English-speaking classmates ever achieved in their languages, and I'm pretty confident English wasn't his major (hence the errors).
How's your Swedish/Norwegian/Danish? Just sayin'... pot, chalk, black....
Having an admission exam basically says: we don't trust the exit exam of your school or we think it tests for the wrong things.
Well, that exactly so.
And I come back to my original question: what's wrong with the University not trusting the secondary school exams? Even more so as the mistrust seems to be well placed.
Simple: secondary education is all directed to passing those exams. If the exams are not reliable, then the education towards those exams simply won't be adequate. It follows logically that someone who sat an exit exam that is insufficient for university entry is unprepared for university, so the sytem is fundamentally broken. The only effective solution is for the universities to impose standards on the school system. The hardest subject in Scottish highers (fifth year secondary, the first optional year in Scottish schools) is Chemistry. Why? Because when they tried to dumb it down, the British Medical Association threatened to stop recognising it as an entry qualification for medical degrees. Had they done so, Scottish schools would have effectively been forced into adopting the English exam system, and the Scottish exam board would have been destroyed.
An adjective such as 'hard' should be reserved for things that are adamantious. (but does it matter if adamantious is a word or not? you still know what it means....)
OK... in that case would you care to give me a list of all the other words that are incorrectly listed as polysemous in the Oxford English Dictionary? Should "want" only refer to a lack, and never to a desire, for example?
Let's start with the (obvious) statement that you don't use a high-level language for its efficiency -- as a C developer you's be appalled at how slow my Python program runs! You use arrays of various dimensionalities to represent cartesian cordinates, vectors, and transformation matrices, because it is a computationally cheaper than using custom datatypes.
The whole point of high-level languages is to abstract things out to make it easier for the designer to express their thoughts more easily, and to reduce the possibility of errors. High-level languages need to be far more semantically meaningful than something like C. If your vector in C is an array [x1,x2,x3] and your point is [x2,y2,z2], you might accidentally mix them up, because if your "type" is simply "array of int". Python wants you to use datatypes so that your vector is a vector and your coordinate is a coordinate, and even if they are internally identical, they're still recognised by the system as different
Arrays have no place in a high-level language. An array has no intrinsic meaning, and any externally imposed meaning is non-obvious. You're supposed to define an object that makes its meaning and function obvious. I've been developing some code that started in Javascript and was migrated to Python, and every step of the process involved unpicking my own hacked-together array/list datastructures, working out what the hell I'd been thinking of, then impose some order on the whole thing.
I do a fair bit of programming in Python and curly-bracket languages (C, C++, JavaScript, PHP, etc.) and interestingly, a forgotten/misplaced curly bracket in any of those various curly-bracket languages seem to break my code vastly more often than indentation issues do.
Yes, but there's a rather huge difference: when you forget to close a block in C, your compiler completely flakes out as your {s and }s don't match. Your procedures don't close -- syntax error and fall over. However, if I forget to close a block in Python, this results not in a syntax error, but a logical error that the interpreter is not aware of. The block will be closed, even if only when I define my next class or procedure.
So you've got to weigh up frequency-of-occurrence against cost-of-incident....
eh, the functional guys scream and yell when you call lisp or erlang functional. I mean, they have side effects! No, you have to program in lambda calculus or some other gimped language that's not actually capable of doing anything useful.
I think you mean "not actually capable of doing everything useful." Functional programming is a wonderful paradigm for handling a whole lot of serious numerical data. It is clean to the point of being almost bomb-proof. Yes, real user-space applications has interaction as its main goal, so FP's term "side-effect" seems almost insulting.
So no, you can't write a whole software package functionally, but if FP was integrated properly into multi-paradigm programming, it would simplify debugging no end. What do I mean by properly? FP should be a restricted subsystem. No side-effects: no prints, no inputs, no state changes or variable asserts. This has to be an unbreakable rule (with the possible exception of debug info). Procedures can call functions, and functions can call other functions, but functions can't call procedures. This has to be an unbreakable rule, and I don't beleive most multi-paradigm languages enforce it. Why does it have to be unbreakable? Because the whole point is to reduce debugging effort. With true FP, bug tracking is (relatively) easy: if the function gives the wrong answer, there's a bug in it; if it gives the right answer, there's no bug. But as soon as you allow state changes and other side effects, it's a procedure, not a function, and a side-effect bug might only show itself further down the line (eg you accidentally leave an A in the print buffer and the next message gets an erroneous A at the start) and you're left on a looooong hunt.
Have you read the Kotaku article on the "beauty" of the Doom 3 source code? One of the things the author liked so much about it was the way that iD established conventions for procedure parameters that made it clear which variables were inputs and which were outputs, and used const to prevent inadvertant changes. Good practice, given the limitations of the language, but limitations they are, and in the end it all looks like "jumping through hoops" to me. FP doesn't let you use arguments as outputs: arguments are inputs, anf your outputs are the returned result. Doom 3 is a prime example of where functional-programming-within-procedural-programming would be supremely useful: a 3D engine is pure geometry, maths, functions. For every single user input there are millions of determinstic calculations made. Whole swathes of code operate in the background before a single dot is placed on screen. A lot of that's time when no state-change actions are required, or even wanted... such changes are genuine "side-effects": i.e. bugs.
Actually, if other language designers were smarter, other languages would use indenting for blocks.* Eliminating redundancy is a general aim in computing. Languages that use curly brackets or other delimiters for blocks are unreadable unless they also use indenting. And once you have the redundancy of both delimiters AND whitespace you have the danger that the two may not be in agreement. Which is compounded by the one that the compiler relies on (delimiters) not being the same as the one that stands out most to the human (indenting.)
Using indents for blocks has a drawback in that standard text editors aren't good at matching the indent level when cutting and pasting. But that simply means that only Python aware editors should be used for python code. Not difficult when most programmers use IDEs.
* (Which is what you actually mean. Scope relies on more than whitespace.)
You have almost achieved enlightment, grasshopper, but you have yet to catch that fly with your chopsticks...
Q: Why is (for example) C reliant on human intervention for both curly-bracing and indentation? A: Because coders have a fetish for "human-readable" source code that can be used in a "dumb" text editor.
Now, you state that the solution to the Python copy-and-paste problem is a "Python-aware" editor... so why shouldn't the solution to the braces/indentation redundancy in C, Java etc. be a C-/Java-aware editor? The user inserts the curly braces, and the editor automatically manages spaces. I'm working in Python just now, and for all the things I love about it, the indentation still messes me up
The most common bugs in my code are when I end multiple blocks simultaneously (I tend to deindent either too far or not far enough) and forgetting to change IF to ELIF when I add a higher precedence case as the first IF condition above it. I never make this latter mistake in C or Javascript, and the reason is a quite simple question of task design and psychology. In Python, when I'm finished writing the body of the branch, I feel "finished", but the curly-brace notation of C etc makes "finishing" an active process, so I don't just stop dead...
It sounds like you're equating "traction in the mainstream" or "used in as much as 10% of the software created in any given year" with Guido's "very little practical value."
I think that's nutty. Practical value and mainstream acceptance don't correlate much. There are impractical things in the mainstream, and practical things outside of it.
No, he's just using a different sense on the word "practical" from the one you're thinking of. You're thinking "practicality", as in "facilty, ease-of-use, utility and efficiency." Guido, on the other hand means "in practice, in the status quo". It's of little value in the real world if the work isn't there.
What makes the one line lambda worse is the fact that in Python, not everything is an expression.
That one change would clean up so much bullshit in the language.
Or perhaps it makes the one-line lambda better...? As per Guido's own example, lambda's are essentially redundant, as you can achieve the same results with a locally-defined function. The one real difference is that certain things aren't permitted in a lambda, because they're not expressions... which makes a lambda an approximation of a true function, rather than a procedure (Python's "functions" are in reality "procedures")....
Sounds like it's higher than the value of the goods to me... if he wants outsiders to fund his legal action, he needs to offer a share of the spoils...
IR sensors are already very noise sensitive as it is... Introducing radiation won't do much good, even at a distance. It'd be worth a try but I don't see it working long either.
Perhaps, but an important difference between the IR radiation and the atomic radiation is that the IR comes from the outer surface of the tank and the atomic radiation from the contents. That means you can set up the camera to point at a corner of the tank at an angle such that there is very little water in the camera's line of "sight" (even though the water is out of sight in terms of visible and IR light, it can still be "seen" in the gamma spectrum or as particle decay).
You could also use a prism to protect the detector -- alpha and beta radiation won't refract, and gamma will refract differently from IR, so the sensor could be well isolated at the end of a thick lead tube. The prism made need fairly frequent replacement due to alpha and beta damage, but that shouldn't be a huge issue.
Heck, I'm wondering whether you can do anything wirelessly in a radioactive environment -- ionising radiation most bugger up the charge in an antenna something chronic....
There are no assinine rules of English spelling... because there are no rules to English spelling. The Oxford crew built up a dictionary of observed spellings, not attempting to impose any order, then suddenly everyone took them as canonical. Before the OED, there was no standardised orthography, but most writers were at least internally consistent -- the OED inadvertently broke the language fundamentally by describing a hodge-podge of different and inconsistent regional and personal styles.
I'd love to see a genuinely consistent English orthography evolve, but most people who propose attempting it impose a particular dialectal model...
Ah yes, real world IT: get the new office networked as quickly as possible, then "test" the system by browsing Facebook....
Exactly. I studied CS and ended up managing desktop support. A neighbour a couple of years younger than me studied astrophysics and is now coding spacecraft landing routines for the European Space Agency. Pure CS is great -- I love it. But as was predicted decades ago, as computers have grown more common, it's no longer just your knowledge of CS that matters -- you need more and more domain knowledge too.
We really need to start teaching everyone proper computing....
Every time they start slaughtering each other a bunch of idiots say it's because the Germans or Belgians drew a line in the wrong place 150 years ago.
So while they don't claim white men directly caused the bad scores, they claim that they caused the thing that caused them. Along with anything else bad that happens.
What is idiotic about recognising the truth? This sort of tribalism doesn't merely affect Africa -- just look at Northern Ireland throughout the 20th century. During the partition of Ireland, people were moved to manipulate the demographics such that despite the number of Catholic republicans, they would always be outnumbered by Protestant unionists. It is entirely antagonistic when two largely distinct populations live in an unequal state, and democracy invariably means that the bigger group impose their will on the smaller one.
The manipulation of demographics was one of the most powerful tools in the imperial toolbox, and the European imperial powers used it to our advantage, and to the ongoing detriment of the conquered peoples.
I was quite enjoying that until he started spouting bigotry about the French. Surrendering doesn't get your cities bombed, fighting back does. Also, a lot of it has nothing to do with the 20th century anyway -- the Second Empire demolished most of old Paris to build the Paris we know today.
What, never ever?
No, nobody has blamed white men for the poor quality of Liberian high school leavers in the class of '13.
Correct and correct. Never do the compute-intensive stuff in native Python + compute-intensive stuff (eg image manipulation) needs arrays = Python doesn't need arrays.
Python's lists are a perfectly adequate replacement for a small 1-dimensional array when needed on an ad hoc basis.
That's precisely the problem. Without any conscious action to end multiple blocks, it's far too easy to get confused...
No, you're reading another white man accusing the black Africans of blaming white men, even though nobody has blamed white men, so would the pair of you stop being so bloody racist, please? The university is blaming the Liberian school system and the government, who presumably haven't been quick enough to rebuild bombed-out schools, train replacements for murdered teachers etc.
The university isn't willing to let a war that ended a decade ago be an excuse -- this is exactly the opposite of what you accuse them of, you pair of small-minded, patronising bigots.
In France it's "choix multiple"...
What're you 'just sayin'? For a non-native, the GP's composition is exemplary. While he makes several fundamental errors, the sentence construction (one of the most difficult parts of language to teach or learn, and one of the biggest potential barriers to comprehension) is very cose to perfect. As a native English-speaking foreign languages grad, I'd say his mastery of English is better than most of my English-speaking classmates ever achieved in their languages, and I'm pretty confident English wasn't his major (hence the errors).
How's your Swedish/Norwegian/Danish? Just sayin'... pot, chalk, black....
Having an admission exam basically says: we don't trust the exit exam of your school or we think it tests for the wrong things.
Well, that exactly so. And I come back to my original question: what's wrong with the University not trusting the secondary school exams? Even more so as the mistrust seems to be well placed.
Simple: secondary education is all directed to passing those exams. If the exams are not reliable, then the education towards those exams simply won't be adequate. It follows logically that someone who sat an exit exam that is insufficient for university entry is unprepared for university, so the sytem is fundamentally broken. The only effective solution is for the universities to impose standards on the school system. The hardest subject in Scottish highers (fifth year secondary, the first optional year in Scottish schools) is Chemistry. Why? Because when they tried to dumb it down, the British Medical Association threatened to stop recognising it as an entry qualification for medical degrees. Had they done so, Scottish schools would have effectively been forced into adopting the English exam system, and the Scottish exam board would have been destroyed.
Correction... English is difficult
An adjective such as 'hard' should be reserved for things that are adamantious. (but does it matter if adamantious is a word or not? you still know what it means....)
OK... in that case would you care to give me a list of all the other words that are incorrectly listed as polysemous in the Oxford English Dictionary? Should "want" only refer to a lack, and never to a desire, for example?
Let's start with the (obvious) statement that you don't use a high-level language for its efficiency -- as a C developer you's be appalled at how slow my Python program runs! You use arrays of various dimensionalities to represent cartesian cordinates, vectors, and transformation matrices, because it is a computationally cheaper than using custom datatypes.
The whole point of high-level languages is to abstract things out to make it easier for the designer to express their thoughts more easily, and to reduce the possibility of errors. High-level languages need to be far more semantically meaningful than something like C. If your vector in C is an array [x1,x2,x3] and your point is [x2,y2,z2], you might accidentally mix them up, because if your "type" is simply "array of int". Python wants you to use datatypes so that your vector is a vector and your coordinate is a coordinate, and even if they are internally identical, they're still recognised by the system as different
Arrays have no place in a high-level language. An array has no intrinsic meaning, and any externally imposed meaning is non-obvious. You're supposed to define an object that makes its meaning and function obvious. I've been developing some code that started in Javascript and was migrated to Python, and every step of the process involved unpicking my own hacked-together array/list datastructures, working out what the hell I'd been thinking of, then impose some order on the whole thing.
I do a fair bit of programming in Python and curly-bracket languages (C, C++, JavaScript, PHP, etc.) and interestingly, a forgotten/misplaced curly bracket in any of those various curly-bracket languages seem to break my code vastly more often than indentation issues do.
Yes, but there's a rather huge difference: when you forget to close a block in C, your compiler completely flakes out as your {s and }s don't match. Your procedures don't close -- syntax error and fall over. However, if I forget to close a block in Python, this results not in a syntax error, but a logical error that the interpreter is not aware of. The block will be closed, even if only when I define my next class or procedure.
So you've got to weigh up frequency-of-occurrence against cost-of-incident....
Run diff -w
eh, the functional guys scream and yell when you call lisp or erlang functional. I mean, they have side effects! No, you have to program in lambda calculus or some other gimped language that's not actually capable of doing anything useful.
I think you mean "not actually capable of doing everything useful." Functional programming is a wonderful paradigm for handling a whole lot of serious numerical data. It is clean to the point of being almost bomb-proof. Yes, real user-space applications has interaction as its main goal, so FP's term "side-effect" seems almost insulting.
So no, you can't write a whole software package functionally, but if FP was integrated properly into multi-paradigm programming, it would simplify debugging no end. What do I mean by properly? FP should be a restricted subsystem. No side-effects: no prints, no inputs, no state changes or variable asserts. This has to be an unbreakable rule (with the possible exception of debug info). Procedures can call functions, and functions can call other functions, but functions can't call procedures. This has to be an unbreakable rule, and I don't beleive most multi-paradigm languages enforce it. Why does it have to be unbreakable? Because the whole point is to reduce debugging effort. With true FP, bug tracking is (relatively) easy: if the function gives the wrong answer, there's a bug in it; if it gives the right answer, there's no bug. But as soon as you allow state changes and other side effects, it's a procedure, not a function, and a side-effect bug might only show itself further down the line (eg you accidentally leave an A in the print buffer and the next message gets an erroneous A at the start) and you're left on a looooong hunt.
Have you read the Kotaku article on the "beauty" of the Doom 3 source code? One of the things the author liked so much about it was the way that iD established conventions for procedure parameters that made it clear which variables were inputs and which were outputs, and used const to prevent inadvertant changes. Good practice, given the limitations of the language, but limitations they are, and in the end it all looks like "jumping through hoops" to me. FP doesn't let you use arguments as outputs: arguments are inputs, anf your outputs are the returned result. Doom 3 is a prime example of where functional-programming-within-procedural-programming would be supremely useful: a 3D engine is pure geometry, maths, functions. For every single user input there are millions of determinstic calculations made. Whole swathes of code operate in the background before a single dot is placed on screen. A lot of that's time when no state-change actions are required, or even wanted... such changes are genuine "side-effects": i.e. bugs.
Actually, if other language designers were smarter, other languages would use indenting for blocks.* Eliminating redundancy is a general aim in computing. Languages that use curly brackets or other delimiters for blocks are unreadable unless they also use indenting. And once you have the redundancy of both delimiters AND whitespace you have the danger that the two may not be in agreement. Which is compounded by the one that the compiler relies on (delimiters) not being the same as the one that stands out most to the human (indenting.)
Using indents for blocks has a drawback in that standard text editors aren't good at matching the indent level when cutting and pasting. But that simply means that only Python aware editors should be used for python code. Not difficult when most programmers use IDEs.
* (Which is what you actually mean. Scope relies on more than whitespace.)
You have almost achieved enlightment, grasshopper, but you have yet to catch that fly with your chopsticks...
Q: Why is (for example) C reliant on human intervention for both curly-bracing and indentation? A: Because coders have a fetish for "human-readable" source code that can be used in a "dumb" text editor.
Now, you state that the solution to the Python copy-and-paste problem is a "Python-aware" editor... so why shouldn't the solution to the braces/indentation redundancy in C, Java etc. be a C-/Java-aware editor? The user inserts the curly braces, and the editor automatically manages spaces. I'm working in Python just now, and for all the things I love about it, the indentation still messes me up
The most common bugs in my code are when I end multiple blocks simultaneously (I tend to deindent either too far or not far enough) and forgetting to change IF to ELIF when I add a higher precedence case as the first IF condition above it. I never make this latter mistake in C or Javascript, and the reason is a quite simple question of task design and psychology. In Python, when I'm finished writing the body of the branch, I feel "finished", but the curly-brace notation of C etc makes "finishing" an active process, so I don't just stop dead...
It sounds like you're equating "traction in the mainstream" or "used in as much as 10% of the software created in any given year" with Guido's "very little practical value."
I think that's nutty. Practical value and mainstream acceptance don't correlate much. There are impractical things in the mainstream, and practical things outside of it.
No, he's just using a different sense on the word "practical" from the one you're thinking of. You're thinking "practicality", as in "facilty, ease-of-use, utility and efficiency." Guido, on the other hand means "in practice, in the status quo". It's of little value in the real world if the work isn't there.
What makes the one line lambda worse is the fact that in Python, not everything is an expression. That one change would clean up so much bullshit in the language.
Or perhaps it makes the one-line lambda better...? As per Guido's own example, lambda's are essentially redundant, as you can achieve the same results with a locally-defined function. The one real difference is that certain things aren't permitted in a lambda, because they're not expressions... which makes a lambda an approximation of a true function, rather than a procedure (Python's "functions" are in reality "procedures")....
Sounds like it's higher than the value of the goods to me... if he wants outsiders to fund his legal action, he needs to offer a share of the spoils...
IR sensors are already very noise sensitive as it is... Introducing radiation won't do much good, even at a distance. It'd be worth a try but I don't see it working long either.
Perhaps, but an important difference between the IR radiation and the atomic radiation is that the IR comes from the outer surface of the tank and the atomic radiation from the contents. That means you can set up the camera to point at a corner of the tank at an angle such that there is very little water in the camera's line of "sight" (even though the water is out of sight in terms of visible and IR light, it can still be "seen" in the gamma spectrum or as particle decay).
You could also use a prism to protect the detector -- alpha and beta radiation won't refract, and gamma will refract differently from IR, so the sensor could be well isolated at the end of a thick lead tube. The prism made need fairly frequent replacement due to alpha and beta damage, but that shouldn't be a huge issue.
How does solar power help inside a hermtically sealed containment tank...?
Heck, I'm wondering whether you can do anything wirelessly in a radioactive environment -- ionising radiation most bugger up the charge in an antenna something chronic....
There are no assinine rules of English spelling... because there are no rules to English spelling. The Oxford crew built up a dictionary of observed spellings, not attempting to impose any order, then suddenly everyone took them as canonical. Before the OED, there was no standardised orthography, but most writers were at least internally consistent -- the OED inadvertently broke the language fundamentally by describing a hodge-podge of different and inconsistent regional and personal styles.
I'd love to see a genuinely consistent English orthography evolve, but most people who propose attempting it impose a particular dialectal model...