First let me say that I'm a big fan of virtual machine languages. My first real hacking was on lispms (I'm sitting next to a Symbolics 3640 as I type this), and I've actually been paid to write commercial software in Prolog. I've also hacked on the Squeak SmallTalk VM.
I don't use LISP/CLOS or Smalltalk or Prolog for the same reasons that I do use Java for my home hacking: The textual representation of a Java class as a single source file will all details collected really works for me, and the typing system leads to self-documenting and correct-by-construction code. Sure, a single file can get cluttered. That's what JavaDoc fixes. On the other hand have you ever tried to grep a SmallTalk VM? Yes, builtin object browsers are cool, but I'm a hardcopy code reader. Same goes for LISP/CLOS. There isn't sufficient structure in the syntax to be self-documenting. Strong typing is also a big feature for me. I'm lazy, compile-time type checking is my friend. With SmallTalk you have to figure out why that message wasn't found rather than know ahead of time that it won't be found. Prolog just gives you a "No".
VMs really are very cool. My favorite hack on the Lispm was to search for CLOS methods that weren't polymorphic and recompile them automatically as defuns for efficiency, AND modify the source code to reflect the change. These days when I write code I just want to get the job done. SmallTalk doesn't get me there because the textual representation doesn't support the way my brain organizes and retrieves program structure.
I feel port-scanning is similar to looking at a house. Looking is OK as long as you don't try to break-in. But as in all things, there is a fine line...the trick is figuring out when it's been crossed.
Is port scanning looking, or is it turning the knob on the front door to see if it is locked? I'd get pretty uptight if I found someone standing on my front porch, if they had their hand on the door I'd be calling the cops.
In an academic environment I can think of valid reasons for legitimate port scanning on machines where the scanner had an account (you're there to learn, right?). I cannot think of a reason for someone to be port scanning a machine that they do not otherwise have access too, unless their intent is to crack the box. If someone is curious about how a machine is configured they can walk right up to most popular open ports and ask. Most protocols have ways to query the system (SMTP HELO for example). This is different than walking up and determining which ports are open. Maybe I'm trying to draw too subtle of a distinction here, so I'll try to give a concrete example. When I get spammed I check the headers and see where it came from. If it looks like someone has a machine open for relaying I'll telnet to port 25 and see if that is the case. If the machine is open I then send an email asking them to fix it. Is teleting to port 25 port scanning? Not to me. That is walking up to the front door and knocking. Scanning all ports with nmap is walking up and rattling the doors and windows.
At the very least port scanning is rude. I feel that it is basically a threat to hack.
On the other hand, this does open up a new and exciting revenue stream for music superstars who just aren't making as much money selling albums any more *grin*.
Even what seem like simplistic VLSI architectures are very much patentable. There are already many issued patents on similar DCT architectures. Here is an example. If you would like to see more then search for "Chen transform" on www.patents.ibm.com. I don't believe the Chen Transform ALGORITHM is patented, just specific mplementations. Ideas are not patentable, but processes are.
The main architectural advantage of FPGAs is that a block of logic only needs to exist when you are using it.
Really the architectural advantage of FPGAs for computing is the custom memories you can build in FPGA's, not the operators. Most problems that require high-performance also require high memory bandwidth. Think of image processing, compression, and recognition tasks. By building custom blocks of on-chip memory, the FPGA let's you tailor the microarchitecture to the problem.
Of course this means that you need to invent a new microarchitecture for every problem you want to solve, and that is why reconfigurable computing has not caught on. Very few people have the skill to create an efficient microarchitecture, and even for experts it takes a great deal of time. Software rocks because you already have the microarchitecture defined, you know what the rules are. This gives most folk enough structure to solve their problem.
In regard to "caching", I've yet to seen an application that actually benefits from dynamic reconfiguration at run-time as far as performance goes. In regard to cost, there are many shipping comercial applications of FPGAs that choose the FPGA configuration at boot time, or between operating modes. This isn't the same as reconfiguration as part of the exeuction of an algorithm. If an algorithm does reap a benefit from reconfiguration, it will be because of the FPGA's proximity to external memory, not because of the wacky logic you can build.
FPGAs may rock (as in world-record performance) for certain computing tasks, but for time-to-market DSPs still rule.
I don't use LISP/CLOS or Smalltalk or Prolog for the same reasons that I do use Java for my home hacking: The textual representation of a Java class as a single source file will all details collected really works for me, and the typing system leads to self-documenting and correct-by-construction code. Sure, a single file can get cluttered. That's what JavaDoc fixes. On the other hand have you ever tried to grep a SmallTalk VM? Yes, builtin object browsers are cool, but I'm a hardcopy code reader. Same goes for LISP/CLOS. There isn't sufficient structure in the syntax to be self-documenting. Strong typing is also a big feature for me. I'm lazy, compile-time type checking is my friend. With SmallTalk you have to figure out why that message wasn't found rather than know ahead of time that it won't be found. Prolog just gives you a "No".
VMs really are very cool. My favorite hack on the Lispm was to search for CLOS methods that weren't polymorphic and recompile them automatically as defuns for efficiency, AND modify the source code to reflect the change. These days when I write code I just want to get the job done. SmallTalk doesn't get me there because the textual representation doesn't support the way my brain organizes and retrieves program structure.
Is port scanning looking, or is it turning the knob on the front door to see if it is locked? I'd get pretty uptight if I found someone standing on my front porch, if they had their hand on the door I'd be calling the cops.
In an academic environment I can think of valid reasons for legitimate port scanning on machines where the scanner had an account (you're there to learn, right?). I cannot think of a reason for someone to be port scanning a machine that they do not otherwise have access too, unless their intent is to crack the box. If someone is curious about how a machine is configured they can walk right up to most popular open ports and ask. Most protocols have ways to query the system (SMTP HELO for example). This is different than walking up and determining which ports are open. Maybe I'm trying to draw too subtle of a distinction here, so I'll try to give a concrete example. When I get spammed I check the headers and see where it came from. If it looks like someone has a machine open for relaying I'll telnet to port 25 and see if that is the case. If the machine is open I then send an email asking them to fix it. Is teleting to port 25 port scanning? Not to me. That is walking up to the front door and knocking. Scanning all ports with nmap is walking up and rattling the doors and windows.
At the very least port scanning is rude. I feel that it is basically a threat to hack.
Even what seem like simplistic VLSI architectures are very much patentable. There are already many issued patents on similar DCT architectures. Here is an example. If you would like to see more then search for "Chen transform" on www.patents.ibm.com. I don't believe the Chen Transform ALGORITHM is patented, just specific mplementations. Ideas are not patentable, but processes are.
Of course this means that you need to invent a new microarchitecture for every problem you want to solve, and that is why reconfigurable computing has not caught on. Very few people have the skill to create an efficient microarchitecture, and even for experts it takes a great deal of time. Software rocks because you already have the microarchitecture defined, you know what the rules are. This gives most folk enough structure to solve their problem.
In regard to "caching", I've yet to seen an application that actually benefits from dynamic reconfiguration at run-time as far as performance goes. In regard to cost, there are many shipping comercial applications of FPGAs that choose the FPGA configuration at boot time, or between operating modes. This isn't the same as reconfiguration as part of the exeuction of an algorithm. If an algorithm does reap a benefit from reconfiguration, it will be because of the FPGA's proximity to external memory, not because of the wacky logic you can build.
FPGAs may rock (as in world-record performance) for certain computing tasks, but for time-to-market DSPs still rule.