|
![](/i/fill.gif) |
On 8/4/2011 13:01, Orchid XP v8 wrote:
> Anyway, point being, you can apply DbC to anything. It doesn't have to be OO.
Hmmmm. Not really. I can't imagine how you'd apply it to old-school BASIC.
Or C in any reasonable sense. (What would an invariant look like in C?)
Preconditions and postconditions apply to routines that have state.
Invariants apply to routines that have state outside of the individual
routines *and* which have instances. So none of those really apply to purely
procedural or functional languages.
Exception management in the DbC way doesn't really apply to functional code.
> Emacs may be old and clunky, but to be fair, it worked perfectly out of the
> box.
It's a sad commentary when the normal state of software is "hey, I installed
it, and it worked before I made any other changes!"
>>> Maybe it's "the best" in the same way as TeX. The output of TeX is quite
>>> simply the most beautiful thing I've ever seen.
>>
>> Hopefully they've improved it. TeX is probably OK as long as you don't
>> use it with metafont files, but the output with metafont is pretty sucky.
>
> I don't get what's "sucky" about Metafont. (Other than that nobody uses
> bitmap fonts anymore unless they really have to...)
The spacing sucks. The weight sucks. I'd have to show you two identical
pieces of text, one set with metafont, one set on a real typesetter, for you
to easily see the difference. But it's quite as much there as the jaggies on
a 300DPI print-out compared to a 1200DPI print-out.
> With Unix, you can decide to use a completely different filesystem that you
> just made up, you can change the thread scheduling algorithm, and then you
> can change the implementation of the ARP cache from a hashtable to a linked
> list. None of which is possible with Windows.
That's not UNIX. That's Linux, and it's because you have the source code,
not because it's UNIX. And yes, Windows you can use a completely different
file system you just made up. And you can probably change the other stuff
too - it just costs more. And given that TCP/IP is an optional driver, I'd
be very surprised to find you couldn't load your own version of that too if
you wanted.
Kernel scheduling? Not so much, agreed.
But that sort of stuff isn't what I think of when I think of a "flexible"
OS. I think of being able to do things flexibly, not the ability to change
the source code because I happen to have the source code. I think of the
ability to do things I couldn't do otherwise if the OS didn't have support
or hooks for it.
> I have never, ever seen Linux crash unless I did something wrong. (E.g., it
> crashes because I just told it to format a device that's currently mounted.)
> My first Windows XP laptop crashed WITHIN 14 SECONDS of first being turned
> on. Didn't even finish the setup wizzard.
I've seen plenty of Linux crashes. You just didn't run it on flakey hardware
like you did your XP, for example. (Or you just had a corrupted copy on your
HD.) Do you really think everyone who bought that laptop had it crash
within 15 seconds of turning it on the first time?
> That said, over the years Windows has become more reliable. Our Windows
> servers basically never crash. I have to reboot them for some reason long
> before they fail.
Right. Windows gets crufty if you keep dicking with it, basically.
> Still, if I was going to run, like, a nuclear enrichment program, I wouldn't
> want to use Windows. The malware implications alone would be... oh, wait.
No, I wouldn't used closed-source software for anything safety critical if I
could avoid it.
> And Ctrl+B ("beginning") is already "back". And Ctrl+F ("first") is already
> "forward"...
That's exctly the problem with mnemonics.
> Well, yeah, I don't tend to open up a text editor and then press random key
> combinations to see if it activates a special feature I didn't know about.
Control right-arrow is a "random key combination"?
You know that holding shift while you move the cursor selects things too, right?
>>> (But then again, it's not exactly a feature you'd bother looking for.)
>>
>> Of course it is, especially if you're editing text.
>
> Can you give one single example of where you'd want to do this rather than,
> say, just jab the arrow key a few times?
Where I would want to search in a text file to find a word? You're kidding
me, right?
I have the output from compiling a bunch of programs. The file is 4000 lines
long. What was the command line used to compile firefox_scrollbar.c?
Heck, I have all the names and addresses in a text file. I want to look up
my brother's fax number.
I have a program that's several screens long. I want to find everywhere the
function LookForMe is used.
> I'm kinda surprised that there doesn't seem to be a "go to line 287"
> command. I mean, you can go to the top and then move down 287 lines. No,
> wait, that would take you to line 288. ARGH! >_<
There probably is. It was just an example.
>>> There's a section on "when Emacs is hung". What, you're actually
>>> expecting that to happen?
>>
>> If you're writing your own code, or you hand it a few megabytes and say
>> "go indent this".
>
> Wait, your own code can crash Emacs?
No, but it can hang emacs for long enough that you think it's crashed.
> Generally you don't expect, say, Firefox to die just because you feed it
> some bad JavaScript.
It doesn't, nor does emacs. That's why ctrl-G works, you see. Why do you
think "interrupting my code where I accidentally wrote an infinite loop" is
equivalent to "crashing emacs"? It's not crashed exactly *because* you can
interrupt it.
> A typical editor session generally involves lots of typing, maybe a bit of
> scrolling, and periodically saving. So you'd expect the commands for editing
> and scrolling to be quick, as well as the command for saving.
You don't write a lot of code, do you? :-)
> These are all pretty rare, really.
I think it depends on what you do with an editor. :-) They're all pretty
common for me.
> And break compatibility with all the extensive library of code written for
> Emacs! :-D
The code for emacs doesn't get invoked thru the keyboard mappings, any more
than the code for COM does.
> Fun thing: Open Firefox. Press F3. Start typing. It highlights the first
> match it finds, as you type. By pressing Next and Prev, you can make it
> select other matches. But it does /not/ highlight *all* of them at once. I
> haven't seen anything except Emacs do that.
vim and visual studio both do. I don't use much else besides those three.
> Last time I invoked Vi, I had to reboot the PC to get out of it again.
If the last time you ran vi was before windows had close boxes on them, I
can understand why you might be nervous.
Did you try reading a tutorial first?
> From what I can gather, Emacs was amoung the very first editors that let
> you SEE WHAT YOU'RE EDITING, and do this AT THE SAME TIME AS YOU EDIT IT.
> The other editors were apparently like that awful "sed" thing. I can see how
> this would be regarded as a massive leap forward.
Nah. emacs didn't work on hard-copy terminals, which were still the dominant
way of interacting with computers for a long time. As soon as tubes were
common, so were visual editors.
> Being able to view multiple files simultaneously on a VT100 would have been
> a significant technical achievement. It seems Emacs basically invented the
> multiple document interface / tabbed editing / whatever you want to call it.
I'll grant you that one. :-)
> Being able to invoke all your tools from within your editor and edit their
> output is again quite a powerful idea.
vi had that too, except it was *all* your tools, with no need to write
macros to handle it.
> Visual Studio is an IDE. It works for (say) C++. But if I decided I wanted
> it to work for Haskell... tough. Cannot be done.
http://research.microsoft.com/apps/pubs/default.aspx?id=67496
Guess how the IDE interacts with it? COM!
> Not unless you hire a vast
> army of C++ programmers to write the necessary hooks and DLLs and God only
> knows what else to add the support to VS.
Uh, one Bulgarian intern, on the weekends.
> My current editor is SciTE. It supports many, many file formats. But Haskell
> is not one. I would have to compile it from source to add Haskell syntax
> highlighting (since none of the existing lexers are remotely similar, so I
> would have to add a new one).
Or you could use vim and haskell mode and see if it works.
http://projects.haskell.org/haskellmode-vim/
> I think there is probably still a place in the world for some kind of engine
> which is so configurable that you can build a complete development
> environment with it, for any conceivable target, without having to do really
> heavy stuff like writing low-level C code or compiling huge codebases from
> scratch.
That's exactly why Microsoft invented COM, IBM invented REXX, standards
bodies invented COBRA, etc etc etc.
--
Darren New, San Diego CA, USA (PST)
How come I never get only one kudo?
Post a reply to this message
|
![](/i/fill.gif) |