The article isn't saying IDEs are a bad thing, just that when an IDE is doing things that should be negated by the language (generate getters/setters anyone?) then it's a sign there is an issue.
I would argue needing a debugger is also a sign of language flaws. Debuggers help you find issues with your code while it runs. I've found that so much of the time those kind of issues are from stuff like Null objects - where you get an exception from a null object and then have to crawl up your code finding out where it came from. If the language was sane and threw exceptions on problems rather than returning null, there would be far less issues.
Not saying that debuggers are useless or that every problem a debugger is useful for could be solved, just that if you find yourself needing it often, maybe it's a sign something is going wrong with the language.
If you have ever written code in Python, you realise how much trivial stuff you have to do in Java which is hell without an IDE.
I'm not saying IDEs are useless, they are great and can do awesome stuff for a developer, but Java has a serious problem where it's practically unusable without a massive IDE.
The Logical Journey of the Zoombinis. It was the staple of my childhood, and I enjoyed it a crazy amount. Looking back on it, I think it was the basis for my logical reasoning skills, and therefore my programming ability. It also gave me a good introduction to games.
It's a good example of a game that was educational, where gameplay was still a primary concern. It was actually fun, and even with the name, I didn't really think of it as educational as a child - it was just a fun game.
It's old now, but I seriously recomend finding a copy and going with it - I imagine it'll run great in a virtual machine. I can't overstate how fun that game was for me as a child, and how good it was at making you think logically. Even my parents enjoyed playing it with me and my sister, as the difficulty could be scaled up to be challenging enough for an adult.
It could change, however. If Valve start putting pressure on GPU manufacturers, maybe we will see a change. If only devices supported by all steam platforms get the Steam seal of approval, that could be a reason for the manufacturers to start paying attention. Not saying that this makes it all a great idea, just saying.
Because who decides what is too offensive? The government? What if they decide telling a joke about the government is too offensive to them, ban you from doing that? What about if they decide jokes about euthenasia are too offensive? Ban those too?
The government should not have the power to censor speech because it gives them too much power - they are already in a highly absuable position, we need to ensure we have a way to stand up and say something is wrong, otherwise the system collapses.
Not being offended is not something anyone should have a right to. If someone wants to make a joke about someone's dead daughter, fine. It's that father's responsibility to be a mature adult and not attack them.
Obviously, Google are trying to do something in the US, and here in England, Virgin Media and Sky are both doing relatively good stuff (Virgin pushing speeds, Sky offering a truly unlimited package - unfortunately neither does both).
I'm not saying that other languages are not well designed, nor that Python is the best language for every situation, but more that Python does what it is designed for so well, and it's whole design enforces that. Java does a similar thing for enterprise applications (although I feel improvements could be made to the language to make it more suited for other purposes as well). Popular languages, the obvious example being JavaScript, often suffer from horrible design that gets in the way of the programmer, rather than helping them.
This PEP provides a convention to ensure that Python scripts can continue to be portable across *nix systems, regardless of the default version of the Python interpreter (i.e. the version invoked by the python command).
python2 will refer to some version of Python 2.x
python3 will refer to some version of Python 3.x
python should refer to the same target as python2 but may refer to python3 on some bleeding edge distributions
Breaking compatability was the best idea ever. If compatability hadn't been broken, the language couldn't fix the mistakes that were there. Unlike so many languages, Python is truly designed, not just made. There were mistakes and those have been fixed for 3.x, and that's what every language should strive to do. Look at JavaScript if you want to see the example of a language that refuses to fix it's mistakes - a broken mess that requires a mass of libraries to work with in a semi-sane manner.
That's what shebangs are for - #!/usr/bin/env python2 means 2.x, python3 means 3.x - don't blame Python because Windows doesn't follow convention. That said, there is a PEP that was accepted for a windows launcher that would do the right thing, but I don't know what the state of that is.
I sincerely doubt Python 3 would ever have happened if there was an organization taking control, especially not when standards got involved. Breaking changes? That simply won't do for the enterprise. Python 3 is a massive improvement for a good reason, and the Python ecosystem works well. No, the Python 3 change hasn't happened overnight, but it's getting there - until it is there completely, you can just use 2.7.2 - a lot of the changes have been backported anywhere, where non-breaking.
This is why the 'torrents == piracy' mentality is such an issue - torrents are seen as such a red flag these days that it has become a self-fulfilling prophecy. People are unwilling to use BitTorrent as a distribution method as it's seen as a bad thing.
All of which could easily be achieved by letting the PC boot off an SD card, a virtual machine, or just dual booting with a network install option or something. It's not really that important with regards to getting children programming.
What role does it fill then? The only real use I see for it is small integrated projects (not something children will do) and as a cool factor and to give ownership. That's not nothing, but it's not the massive thing the BBC Micro was.
Except hardware really isn't the issue. Schools might not be rolling in computers, but they have some, and most children now have computers at least availible to them at home, if not their own. The BBC Micro tackled the issue of hardware availiblity, which used to be the problem. Now? It's more about getting children to know that programming exists, and show them it's a real option, something they can do and might enjoy.
Now, the Raspberry Pi is cool and a great way to encourage that, as it's an object of interest in itself, but it's not a silver bullet.
Over the summer, I talked to a lot of teachers and experts about the raspberry pi and it's rollout in UK schools - everyone said the same thing. It's unsuitable because it doesn't solve any problems. It's not that much cheaper than a PC because most of the cost remains in the monitor. DVI/HDMI monitors are not cheap or abundant, especially in primary schools, where the main issue is. It's not smaller, because a keyboard, mouse and monitor need space.
It's just a slightly different graphical environment. I think the latest versions of OSes for it have dropped having to manually do a 'startx', so there is nothing there a child can't learn by doing.
The basic idea is knowing your user's password is bad. The reality is users use the same passwords in multiple places, and if your site is comprimised in any way, you don't want to leak those passwords. Fortunately, we don't actually need to know the user's password - all we need to do is know if it's the same each time. This is where hashes come in - we store a hash (a one way function that gives us the same result each time for the same input, but doesn't tell you what the input was) of the password, and then hash their attempts and compare. Strong hashes and salts are a good idea to defend against many attacks, but the short answer is, use BCrypt.
As to forgetting their password - again, we don't actually need to tell them it, just to give them access to their account back. We can do this by generating a one-time-password (a random UUID, for example) and then emailing them a link to reset their password using this. This allows them to access their account, without sending a password in plaintext.
Actually, I may have lied - Tesco or Asda (couldn't remember which) definitely used to do it, but just tested and Asda now resets your password to a temporary one which it emails to you, while Tesco sends you a reset link. Maybe it's a sign things are improving a little.
That's it, cherry pick a comment without reading the rest of my post, and don't bother to respond to any actual argument in it.
The article isn't saying IDEs are a bad thing, just that when an IDE is doing things that should be negated by the language (generate getters/setters anyone?) then it's a sign there is an issue.
I believe you are thinking of light table.
I would argue needing a debugger is also a sign of language flaws. Debuggers help you find issues with your code while it runs. I've found that so much of the time those kind of issues are from stuff like Null objects - where you get an exception from a null object and then have to crawl up your code finding out where it came from. If the language was sane and threw exceptions on problems rather than returning null, there would be far less issues.
Not saying that debuggers are useless or that every problem a debugger is useful for could be solved, just that if you find yourself needing it often, maybe it's a sign something is going wrong with the language.
If you have ever written code in Python, you realise how much trivial stuff you have to do in Java which is hell without an IDE. I'm not saying IDEs are useless, they are great and can do awesome stuff for a developer, but Java has a serious problem where it's practically unusable without a massive IDE.
You can see some videos on youtube of the intro, the kind of logic problems faced.
The Logical Journey of the Zoombinis. It was the staple of my childhood, and I enjoyed it a crazy amount. Looking back on it, I think it was the basis for my logical reasoning skills, and therefore my programming ability. It also gave me a good introduction to games.
It's a good example of a game that was educational, where gameplay was still a primary concern. It was actually fun, and even with the name, I didn't really think of it as educational as a child - it was just a fun game.
It's old now, but I seriously recomend finding a copy and going with it - I imagine it'll run great in a virtual machine. I can't overstate how fun that game was for me as a child, and how good it was at making you think logically. Even my parents enjoyed playing it with me and my sister, as the difficulty could be scaled up to be challenging enough for an adult.
It could change, however. If Valve start putting pressure on GPU manufacturers, maybe we will see a change. If only devices supported by all steam platforms get the Steam seal of approval, that could be a reason for the manufacturers to start paying attention. Not saying that this makes it all a great idea, just saying.
Because who decides what is too offensive? The government? What if they decide telling a joke about the government is too offensive to them, ban you from doing that? What about if they decide jokes about euthenasia are too offensive? Ban those too?
The government should not have the power to censor speech because it gives them too much power - they are already in a highly absuable position, we need to ensure we have a way to stand up and say something is wrong, otherwise the system collapses.
Not being offended is not something anyone should have a right to. If someone wants to make a joke about someone's dead daughter, fine. It's that father's responsibility to be a mature adult and not attack them.
Obviously, Google are trying to do something in the US, and here in England, Virgin Media and Sky are both doing relatively good stuff (Virgin pushing speeds, Sky offering a truly unlimited package - unfortunately neither does both).
I'm not saying that other languages are not well designed, nor that Python is the best language for every situation, but more that Python does what it is designed for so well, and it's whole design enforces that. Java does a similar thing for enterprise applications (although I feel improvements could be made to the language to make it more suited for other purposes as well). Popular languages, the obvious example being JavaScript, often suffer from horrible design that gets in the way of the programmer, rather than helping them.
Pretty clear and standardised to me.
Do tell that to Google, I'm sure they'll stop using it right away when they hear it's not a real language.
Breaking compatability was the best idea ever. If compatability hadn't been broken, the language couldn't fix the mistakes that were there. Unlike so many languages, Python is truly designed, not just made. There were mistakes and those have been fixed for 3.x, and that's what every language should strive to do. Look at JavaScript if you want to see the example of a language that refuses to fix it's mistakes - a broken mess that requires a mass of libraries to work with in a semi-sane manner.
That's what shebangs are for - #!/usr/bin/env python2 means 2.x, python3 means 3.x - don't blame Python because Windows doesn't follow convention. That said, there is a PEP that was accepted for a windows launcher that would do the right thing, but I don't know what the state of that is.
I sincerely doubt Python 3 would ever have happened if there was an organization taking control, especially not when standards got involved. Breaking changes? That simply won't do for the enterprise. Python 3 is a massive improvement for a good reason, and the Python ecosystem works well. No, the Python 3 change hasn't happened overnight, but it's getting there - until it is there completely, you can just use 2.7.2 - a lot of the changes have been backported anywhere, where non-breaking.
This is why the 'torrents == piracy' mentality is such an issue - torrents are seen as such a red flag these days that it has become a self-fulfilling prophecy. People are unwilling to use BitTorrent as a distribution method as it's seen as a bad thing.
All of which could easily be achieved by letting the PC boot off an SD card, a virtual machine, or just dual booting with a network install option or something. It's not really that important with regards to getting children programming.
What role does it fill then? The only real use I see for it is small integrated projects (not something children will do) and as a cool factor and to give ownership. That's not nothing, but it's not the massive thing the BBC Micro was.
Except hardware really isn't the issue. Schools might not be rolling in computers, but they have some, and most children now have computers at least availible to them at home, if not their own. The BBC Micro tackled the issue of hardware availiblity, which used to be the problem. Now? It's more about getting children to know that programming exists, and show them it's a real option, something they can do and might enjoy.
Now, the Raspberry Pi is cool and a great way to encourage that, as it's an object of interest in itself, but it's not a silver bullet.
Over the summer, I talked to a lot of teachers and experts about the raspberry pi and it's rollout in UK schools - everyone said the same thing. It's unsuitable because it doesn't solve any problems. It's not that much cheaper than a PC because most of the cost remains in the monitor. DVI/HDMI monitors are not cheap or abundant, especially in primary schools, where the main issue is. It's not smaller, because a keyboard, mouse and monitor need space.
Online shopping.
It's just a slightly different graphical environment. I think the latest versions of OSes for it have dropped having to manually do a 'startx', so there is nothing there a child can't learn by doing.
The basic idea is knowing your user's password is bad. The reality is users use the same passwords in multiple places, and if your site is comprimised in any way, you don't want to leak those passwords. Fortunately, we don't actually need to know the user's password - all we need to do is know if it's the same each time. This is where hashes come in - we store a hash (a one way function that gives us the same result each time for the same input, but doesn't tell you what the input was) of the password, and then hash their attempts and compare. Strong hashes and salts are a good idea to defend against many attacks, but the short answer is, use BCrypt.
As to forgetting their password - again, we don't actually need to tell them it, just to give them access to their account back. We can do this by generating a one-time-password (a random UUID, for example) and then emailing them a link to reset their password using this. This allows them to access their account, without sending a password in plaintext.
Actually, I may have lied - Tesco or Asda (couldn't remember which) definitely used to do it, but just tested and Asda now resets your password to a temporary one which it emails to you, while Tesco sends you a reset link. Maybe it's a sign things are improving a little.