First of all, a higher education courses which are based on programming languages should be designed to educate the students on fundamental topics such as programming paradigms and design patterns. It is unthinkable for a higher education course to waste both the teacher's and student's time doing vocational training. After all, if you are enrolled in a higher education program then you should be smart enough to handle that stuff by your own. Llet the teachers teach the important technical and scientific concepts which are harder to grasp.
What? First, you say the focus of a programming course should be on the abstract side of programming. Sure, sounds good. But then you say:
Then there is the reason of applicability. If a course is based on a technology which doesn't have a stable basis and which is likely to drastically change due to a project leader's whims then it is certain that the code written in that particular technology will suffer from bit rot and that your skills which you earned throughout your course will essentially become meaningless. In short, due to a technology's dynamic nature, those who invest their time and effort in a degree or course which is based on that single tool will soon find out that they have wasted their time.
Then there is the issue of control. If a language is not standardized then you don't have any assurance that your code will run at all in the future. This issue is particularly problematic if a language does not provide any specification regarding the implementation or is based on a single reference implementation whose project leadership often invests their time and energy in complete rewrites.
So, knowing this, languages such as Python, Perl, Lua, Ruby or whatever trendy language you just picked up is not nor it ever could be sanely adopted by a higher education degree. Doing so is a recipe for disaster and it does a disservice to all students.
So a course that doesn't give you vocational skills will have been a waste of time?
There are some aspects to writing effective code, regardless of the language used, which are just AI-complete and will not be appreciated by a code generator (before the robot apocalypse, anyway). You will not write a code generator that selects clear and maintainable variable names, for example, or knows to write a comment mentioning that a couple lines deal with a particularly notable corner case. Writing computer programs that can even just distinguish ``notable detail'' from ``irrelevant detail'' is hard. If the issue is just getting the flags right for a single command, a code generator is probably fine, but something more complicated is going to provide a terrible set of examples for learning a language.
ok (and citations therein). If you can't be bothered to read the whole thing, search the page for "344:1" for the pay gap, and see the third-to-last paragraph for some discussion on unions and a reference.
What is the non-technical meaning of the word "semantics"? Non-linguists seem to use it to mean "deceptive, distractingly nitpicking, or misleading speech." Is that what it's meant to mean in the summary?
Having the keyboard attached to the screen? I'm not just being snarky here. If you're going to go to the trouble of carrying around a keyboard with your iPad, (I would think) it's much more convenient to have them attached to eachother. I get irritated enough as it is when I'm using a program on my laptop that really requires a lot of cursor movement and have to pull out my mouse and hook it up.
Actually, if I was doing the install for someone else, right now I would probably pick Arch. It's too rough for non-technical users to get installed, but once it's set up it is by far the cleanest, simplest, and most stable distro I've ever had the pleasure of using.
I use Arch too, and love it, but it is a terrible system for a newbie. Want to install new software? Better make sure your system is up-to-date with pacman -Syu because the new software might have been compiled against a newer version of some random library. What does a newbie do when they suddenly have ten.pacnew files from the update? And this isn't even taking into account the problems that can arise from staying very close to upstream.
Arch is not "install once and forget." You have to maintain it continuously, even though, once you know what you're doing, it's pretty simple to do so.
Every a-unicornist accepts that there are no unicorns on blind faith and without further investigation. Not that such a belief is any more or less reasonable than your run-of-the-mill "invisible man in the sky" mith, but it is a similarly unsupported belief just the same. Granted, a-unicornism is often far less harmful than some religious notions, but it is no more rational. Yes, really. Stating "I know..." about a thing that is, by definition, unknowable, is irrational. "I don't know...", on the other hand, not so much.
d'oh! honestly, I never use that command; I don't like installing things that I've not read up on so I usually discover new software by way of forum and wiki.
I wonder how long we can keep this going until the off-topic mods descend...
Is man -k different from apropos? man man says man -k and apropos -r are equivalent. And, on my system at least, apropos is just a symlink to whatis.
And actually, I'll need to do:
seriously? Do you live in the UK? send me an e-mail (address available on my homepage) if you want someone to take one off your hands for free (or the cost of shipping if it's too far for pick-up).
No. DNA only specifies sequences of amino acids, which means there's a lot of information left over. Even just getting the proteins to fold into the right shape in a computer program involves modeling complicated details of quantum mechanics which are not understood yet (which is why Folding@Home exists). DNA doesn't have to specify these details of quantum mechanics because they exist in the Real World, but a computer simulation would.
A lot of research into cognitive systems focuses not on building the actual physical "wetware" itself but on modeling the statistical properties of the system. Brains have a huge amount of data thrown at them constantly, and they find some patterns in that data, and do not find other patterns. Implementing different kinds of statistical models on the kind of data the brain sees, and examining the kinds of patterns they find, allows a kind of abstract reverse-engineering of the information-processing properties of the brain. Sharon Goldwater, Josh Tenenbaum, and Tom Griffiths have done a lot of the recent work in this area (particularly in relation to language).
In perl, the construct:
while(<>) {
# do stuff
}
is the usual way to read something in from STDIN. It's an abbreviation of:
while( $_ = readline *STDIN ) {
# do stuff
}
Which continues the loop until readline fails, which happens at the end of STDIN.
Actors are a really good framework (with a few differentimplementations) for easy parallelization. Scala has an implementation of Actors as part of the standard library, so they really are first-class citizens.
paragraph breaks, man, paragraph breaks. Just stick in a /> (or better yet, <br/><br/>) when you start a new sub-topic, and your wall of text will suddenly become readable.
First of all, a higher education courses which are based on programming languages should be designed to educate the students on fundamental topics such as programming paradigms and design patterns. It is unthinkable for a higher education course to waste both the teacher's and student's time doing vocational training. After all, if you are enrolled in a higher education program then you should be smart enough to handle that stuff by your own. Llet the teachers teach the important technical and scientific concepts which are harder to grasp.
What? First, you say the focus of a programming course should be on the abstract side of programming. Sure, sounds good. But then you say:
Then there is the reason of applicability. If a course is based on a technology which doesn't have a stable basis and which is likely to drastically change due to a project leader's whims then it is certain that the code written in that particular technology will suffer from bit rot and that your skills which you earned throughout your course will essentially become meaningless. In short, due to a technology's dynamic nature, those who invest their time and effort in a degree or course which is based on that single tool will soon find out that they have wasted their time.
Then there is the issue of control. If a language is not standardized then you don't have any assurance that your code will run at all in the future. This issue is particularly problematic if a language does not provide any specification regarding the implementation or is based on a single reference implementation whose project leadership often invests their time and energy in complete rewrites.
So, knowing this, languages such as Python, Perl, Lua, Ruby or whatever trendy language you just picked up is not nor it ever could be sanely adopted by a higher education degree. Doing so is a recipe for disaster and it does a disservice to all students.
So a course that doesn't give you vocational skills will have been a waste of time?
the real question is: Can it web scale?
probably.
o rly?
There are some aspects to writing effective code, regardless of the language used, which are just AI-complete and will not be appreciated by a code generator (before the robot apocalypse, anyway). You will not write a code generator that selects clear and maintainable variable names, for example, or knows to write a comment mentioning that a couple lines deal with a particularly notable corner case. Writing computer programs that can even just distinguish ``notable detail'' from ``irrelevant detail'' is hard. If the issue is just getting the flags right for a single command, a code generator is probably fine, but something more complicated is going to provide a terrible set of examples for learning a language.
learn about how to do it per CLI by looking at the generated shell script
Have you ever seen generated code? You do not want to learn shell scripting from generated code...
ok (and citations therein). If you can't be bothered to read the whole thing, search the page for "344:1" for the pay gap, and see the third-to-last paragraph for some discussion on unions and a reference.
What is the non-technical meaning of the word "semantics"? Non-linguists seem to use it to mean "deceptive, distractingly nitpicking, or misleading speech." Is that what it's meant to mean in the summary?
Having the keyboard attached to the screen? I'm not just being snarky here. If you're going to go to the trouble of carrying around a keyboard with your iPad, (I would think) it's much more convenient to have them attached to eachother. I get irritated enough as it is when I'm using a program on my laptop that really requires a lot of cursor movement and have to pull out my mouse and hook it up.
Super PrincipiaR! read "Super Principia-er"! More Super Principia! I give up!
Actually, if I was doing the install for someone else, right now I would probably pick Arch. It's too rough for non-technical users to get installed, but once it's set up it is by far the cleanest, simplest, and most stable distro I've ever had the pleasure of using.
I use Arch too, and love it, but it is a terrible system for a newbie. Want to install new software? Better make sure your system is up-to-date with pacman -Syu because the new software might have been compiled against a newer version of some random library. What does a newbie do when they suddenly have ten .pacnew files from the update? And this isn't even taking into account the problems that can arise from staying very close to upstream.
Arch is not "install once and forget." You have to maintain it continuously, even though, once you know what you're doing, it's pretty simple to do so.
Every a-unicornist accepts that there are no unicorns on blind faith and without further investigation. Not that such a belief is any more or less reasonable than your run-of-the-mill "invisible man in the sky" mith, but it is a similarly unsupported belief just the same. Granted, a-unicornism is often far less harmful than some religious notions, but it is no more rational. Yes, really. Stating "I know..." about a thing that is, by definition, unknowable, is irrational. "I don't know...", on the other hand, not so much.
how right you are
apro<tab> :)
d'oh! honestly, I never use that command; I don't like installing things that I've not read up on so I usually discover new software by way of forum and wiki.
I wonder how long we can keep this going until the off-topic mods descend...
Is man -k different from apropos? man man says man -k and apropos -r are equivalent. And, on my system at least, apropos is just a symlink to whatis.
;)
And actually, I'll need to do:
pacman -Qs
Not every distro uses aptitude
apropos
sigh, forgot to log in. didn't mean to post AC
seriously? Do you live in the UK? send me an e-mail (address available on my homepage) if you want someone to take one off your hands for free (or the cost of shipping if it's too far for pick-up).
yep. based on past behavior, I think it's fine to demand a pre-nup...
No. DNA only specifies sequences of amino acids, which means there's a lot of information left over. Even just getting the proteins to fold into the right shape in a computer program involves modeling complicated details of quantum mechanics which are not understood yet (which is why Folding@Home exists). DNA doesn't have to specify these details of quantum mechanics because they exist in the Real World, but a computer simulation would.
A lot of research into cognitive systems focuses not on building the actual physical "wetware" itself but on modeling the statistical properties of the system. Brains have a huge amount of data thrown at them constantly, and they find some patterns in that data, and do not find other patterns. Implementing different kinds of statistical models on the kind of data the brain sees, and examining the kinds of patterns they find, allows a kind of abstract reverse-engineering of the information-processing properties of the brain. Sharon Goldwater, Josh Tenenbaum, and Tom Griffiths have done a lot of the recent work in this area (particularly in relation to language).
over my dead body!
In perl, the construct:
while(<>) { # do stuff }
is the usual way to read something in from STDIN. It's an abbreviation of:
while( $_ = readline *STDIN ) { # do stuff }
Which continues the loop until readline fails, which happens at the end of STDIN.
"underemployment" just means having a job that you are too qualified for (and so getting paid less than you think you should be paid).
Actors are a really good framework (with a few different implementations) for easy parallelization. Scala has an implementation of Actors as part of the standard library, so they really are first-class citizens.
paragraph breaks, man, paragraph breaks. Just stick in a/> (or better yet, <br /><br />) when you start a new sub-topic, and your wall of text will suddenly become readable.