Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • You've figured out what's so damn hard about computing. We have high-level revelations that we turn into algorithms, but we have low-level hardware. It's hard to spell out one into the other.

    So.... Let's make the hardware smarter! Oh, wait, that was the '70's idea: VAX opcodes, smart assembler. That didn't go very far.

    So.... Let's make the translator smarter! Oh wait, that's what RISC was going to do in the '80's: super-smart compilers against cheap, dumb hardware. Well, that kinda panned out, but

    • Wonder what the '10's will bring.

      Perl 6? :)

      Seriously, I think something really needs to change in the world of computing. Testing is what's really helped to push me there. Specifically, once I started realizing that we can't just know how to build good software, I started thinking harder about this problem, but I am Bear of Little Brain and I don't have a solution for it. I realized that tests (particularly acceptance tests) are an ad hoc method of ensuring program correctness. They do not, however, prove correctness and with our insistence upon programming in ALGOL-style languages, we cannot develop proofs for our programs. Some functional languages allow for such proofs, but I understand that they are usually not supplied with the programs. I've also heard of attempts to build programs automatically from proofs. Perhaps this will help.

      Currently, if I were to ask a math-savvy person to compute to factorial of 5, she will hopefully respond with 120. However, we simply do not expect her to ever forget that there's a terminating condition, as some programmers might in a naive factorial function:

      sub factorial {
          my $n = shift;
          # whoops!  Forgot the terminating condition of $n == 1
          return $n + factorial($n - 1);
      }

      Now she might make a simple math error and that's something that computers are generally better and faster at, but she won't have a logic error. I can also ask her to hand me a pen and she won't hand me a book by mistake. Computers can and will make such mistakes.

      We're also fault-tolerant in a way that computers are not. If I ask who the redhead hired in accounting is, you might tell me that his name is "Sam", but he was hired in human resources. (Neural networks might also be able to do that, I might add.)

      I don't think the 10s will solve this problem, but the 20s might start getting a handle on it. Unfortunately, we may have to be willing to release our love of ALGOL-style languages to get there, but I'm still unsure of what might take its place. I actually think that Perl 6 rules might start giving us some interesting clues. If the language is widely adopted, for the first time that I am aware of, we will have a programming language in widespread use that might allow logic programming in a typical environment (assuming that we can implement logic programming in P6 rules -- I think we might be able to.)

      Bah. I'm rambling about something I know very little about. Silly me. Time to get off the computer, stop packing for the day and hit the clubs. I understand "The Cancer Fags" are playing to night and I've been meaning to see them.