In the Future, not all Robots Will be Helpful
My Arduino studies are still progressing.
As I wrote in earlier posts, I got myself an Arduino UNO, and I started learning to program it. I went to a website belonging to a person known as Ladyada, and I began working my way through her tutorials. I’ve run into a few snags, so while I haven’t stopped, I’m not moving as fast as I would like.
To program an Arduino, you have to write in a language which is either C or C++. If you’re wondering which it is, so am I. The Arduino website says, “the Arduino language is merely a set of C/C++ functions that can be called from your code.” They don’t know, either.
I guess they do know, but I don’t. I have no idea what the difference is, except that C++ came later.
Arduino comes with its own programming editor or “IDE” (Integrated Development Environment), which is a program like a word processor. You write the programs in it, and it can compile them (turning them into software that actually works) and help you debug them. It also helps you lay your programs out in a way that makes them easier to understand. Supposedly.
I say “supposedly” because it doesn’t really do that. At least it doesn’t seem like it. When you write computer programs, you make long lists of procedures and statements, and they tell the computer what to do. You’ll say things like, “If this, then that, but if this, if this, if this, then that, or else this.” You have to keep track of which “if” goes with which statements and so on. It’s very helpful if the program turns things different colors and indents them so things are clearly identified and so blobs of text that go together are clumped together visually. Arduino doesn’t seem to do this very well.
While I was using it (and getting confused), I remembered my ten minutes of college programming experience. I programmed in a language called Pascal (so named because computer science students are always under pressure – I kid), and I used a program called Borland Turbo Pascal. My dim and unreliable recollection is that Turbo Pascal did a very good job of coloring and clumping. I figured there had to be something similar out there (free) for C/C++, because the human mind’s ability to keep lines of code straight hasn’t improved since I took that course.
I found Turbo C++, which is apparently Borland’s C++ equivalent of Turbo Pascal. Sadly, when you run it, it takes up the entire screen, so you can’t move stuff to Arduino and upload it to your board.
I started looking for other stuff. I already have something called Dev C++, but it didn’t make me happy. I found Visual Studio, which is a free Microsoft program (free for hobbyists), and I decided to try that.
Visual Studio takes about a month to install. I believe that’s because it’s a huge program you can use to create your own version of AutoCAD or just about anything else. I was planning to use it to make three LED’s flash on an Arduino board, so maybe it was overkill. It took quite a while to figure out how to make it run, and when I did, it didn’t look too promising. People swear by it, though, so I plan to keep trying a while longer.
The tutorials themselves turned out to have a major flaw. The instructor asked students to write a program, and then way down the page, after it was all over with, she said the program wouldn’t work.
I learned this after trying to make it work. For several hours.
This is not the best way to present a course. When a problem has no solution, you really want to tell people up front.
It’s not surprising that a STEM instructor would do this. When I was in school, they did it all the time. They would give us integrals that diverged or problems the professors couldn’t solve, and they wouldn’t tell us until we had pulled all-nighters failing to find the answers.
The lesson I learned from this is to read the whole page before starting to write anything.
I’m starting to realize I need to think a lot about C (or C++) itself as I learn this. It’s not enough to take the little bits Ladyada provides and extrapolate. You have to know more than that. What’s the correct punctuation (or whatever) for an if statement? Can you read the state of a pin powering an LED to tell whether the LED is on? Things like that. If you start guessing, you end up with problems.
Arduino uses integers to label pins on the board. I don’t get that at all. If “int SwitchPin = 2” means the second pin is named “SwitchPin,” then doesn’t any integer you set equal to 2 become tied to that pin? I have no clue. Very confusing.
I’m going to have to go back and forth from C++ to Arduino to figure everything out, and I guess I should join the Arduino forum. I really hope it’s not full of snotty nerds.
I’m trying to come up with a strategy for writing programs. I think it’s best to start by writing a plain-language version of every program first. “This program turns an LED on if it’s off and off if it’s on.” Stuff like that. Then I can break it down into necessary steps, and then I can think up ways to say it in C++. Maybe that will be helpful.
Every mission needs a statement.
I still want to build a self-balancing robot, because they’re cool. I started looking into ways to build a robot that balances on one wheel or ball, and that got me to gyroscopes. Thanks to Arduino, I now know how gyroscopes are used to make rockets fly straight. You can go to Youtube and see the actual gyroscopes that made V2 rockets fly straight on the way to England.
I’m kind of hung up now, because I can’t decide between a kit and buiding a robot from scratch. A kit would get me past the relatively boring tasks of choosing parts and making components by hand, but it might push me into an area where I mainly turn the robot on and off instead of learning how it works.
It would be neat to make a robot that goes from one room to another and bothers people. You record a message into it, and then you send it across the house to your wife to say, “Bring your man a beer, pronto!” I’d need a really brave volunteer to try it out, though.
On a more serious note, though, I am disturbed when I think about the power machines will have in the very near future. As I check out the things very ordinary people with little training are doing with Arduino, as well as the crazy things well-financed organizations are doing with sophisticated electronics, I realize we are on the cusp between two ages: the age in which men were more capable than machines, and the age when machines will be more capable than men.
Some people worry that machines will become self-aware and then try to exterminate us. That’s silly. There is no reason to think electronics will ever be self-aware. The fact that something reacts to external stimuli doesn’t mean its aware, unless a TV is aware when you push a button on your remote. Machines won’t be aware. But they will act as though they were, so the future still looks pretty scary.
Right now, I get calls from robots that argue with me. If this hasn’t happened to you yet, get ready, because it will. They call and ask you something which is obviously intended to smoke you out as a sales prospect, and something tells you you’re not dealing with a human being. You ask, “Are you a human being?” The robot pauses, laughs, and says, “I’m a real human being.” It has been programmed to say that. Then you say, “Can you say ‘God Bless America’ for me?” Then the robot is stumped. They don’t program them to do things like that.
I offended a legitimate caller the other day. She happened to have a voice that sounded too perfect, and I thought she was trying to sell me something. I started telling her I didn’t talk to robots. She argued with me, so I asked her to say ‘Gerald Ford.'” I like tormenting robots. To my amazement, she said it. Then I had to apologize. Unfortunately, she had never received a call from a robot, so she assumed I was crazy when I told her what was going on.
A good sales robot can get through several sentences without giving you conclusive proof it’s a machine. That’s remarkable. If they can do that in 2017, think what they’ll be able to do in 2025. It won’t be too long before it will be impossible to tell a robot from a person, without considerable effort. Eventually, it won’t be possible at all. Then we’ll end up in a Blade Runner scenario, where an average person will never be sure what he’s dealing with.
Robots already have superhuman processing speed, and in the future, we will be able to give them superhuman physical speed and agility. They’ll be able to move around. They’ll be stronger and faster than we are. They’ll be able to predict what we do. They’ll do our jobs–even complex ones–better than we do. They won’t hate us, because they won’t really have awareness, but they can certainly be programmed to react as though they hate us. From outside, a being that mimics awareness perfectly might as well be aware. We could find ourselves dominated and abused by machines we don’t have the brains or strength to fight.
In the movies, we get around this with ridiculous bits of code saying things like, “Never harm a human being.” That’s beyond stupid. If we have to rely on code–and we do–we’re in trouble. Look how much malicious code there is right now. Do you think things will be different when machines become autonomous? Why would they?
If the human race lasts long enough, we will eventually see people sentenced for programming robots to hurt or kill their owners. It’s inevitable.
There are a lot of malicious people in the tech arena. Right now, they program machines to do evil. In the future, they’ll be able to program machines to program machines to do evil. When that happens, we will be removed from the loop and the problem will be self-sustaining and self-augmenting.
Nikola Tesla predicted that wars would one day be fought by unmanned machines. He was right, just as he was right about so many other things. But it’s going to be worse than that. It won’t be just war, which takes place between nations. It will be intramural conflict, within cities and nations, between human beings and nationless machines. Won’t that be something?
We will have to delay things by putting restrictions on machines. We always say guns don’t kill people, and that’s true. Computerized machines, however, will kill people. Unlike guns, they’ll do violence without our input. They’ll be like super-powerful pit bulls that have to be penned and detuned. Wait and see. It will happen. But we can’t stay in control forever.
Autonomous machines will be able to shoot people extremely accurately and quickly. They’ll be able to dispense deadly chemicals. They’ll be able to blind us with lasers. They’ll act so fast the cops won’t be able to react. They’ll be like the big nasty drones in the Robocop movies, only much faster. They’ll be able to use weapons that exist today, with skill and speed we can’t match, and they won’t feel pain or have fear. They won’t feel regret or mercy. They won’t be concerned about jail.
I wonder if anyone is even thinking about defensive measures yet. I suppose they are. I guess they’ll be a lot like the machines they’ll have to battle. I would imagine you would need a robot to fight a robot.
I won’t worry about this stuff. I don’t know if the world will last long enough for rebellious machines to become problematic. I’m a Christian, so I expect this age to end pretty soon. In any case, making a primitive Arduino robot that wanders around the house won’t speed up our doom.
Arthur Koestler compared the development of the thinking parts of the human brain, in our species, to the development of a tumor in an individual human being. We have greater reasoning abilities than animals, but our emotions are just like theirs, and our ability to control them is also undeveloped. We develop technology, and then we invariably misuse it because we lack love and mercy. We should not have been surprised when we read about drones shooting video through bathroom windows, and we should not be surprised the first time a robot kills a person.
I never expected life to get this weird. But predicting the future should not be hard for those who can see the obvious.