Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <vehajq$fl2$2@reader1.panix.com>
Deutsch   English   Français   Italiano  
<vehajq$fl2$2@reader1.panix.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder9.news.weretis.net!panix!.POSTED.spitfire.i.gajendra.net!not-for-mail
From: cross@spitfire.i.gajendra.net (Dan Cross)
Newsgroups: comp.unix.shell,comp.unix.programmer,comp.lang.misc
Subject: Re: Command Languages Versus Programming Languages
Date: Sun, 13 Oct 2024 20:29:46 -0000 (UTC)
Organization: PANIX Public Access Internet and UNIX, NYC
Message-ID: <vehajq$fl2$2@reader1.panix.com>
References: <uu54la$3su5b$6@dont-email.me> <QnROO.226037$EEm7.111715@fx16.iad> <vegqbe$he8$1@reader1.panix.com> <vegs0o$nh5t$1@dont-email.me>
Injection-Date: Sun, 13 Oct 2024 20:29:46 -0000 (UTC)
Injection-Info: reader1.panix.com; posting-host="spitfire.i.gajendra.net:166.84.136.80";
	logging-data="16034"; mail-complaints-to="abuse@panix.com"
X-Newsreader: trn 4.0-test77 (Sep 1, 2010)
Originator: cross@spitfire.i.gajendra.net (Dan Cross)
Bytes: 4748
Lines: 90

In article <vegs0o$nh5t$1@dont-email.me>, Bart  <bc@freeuk.com> wrote:
>On 13/10/2024 16:52, Dan Cross wrote:
>> In article <QnROO.226037$EEm7.111715@fx16.iad>,
>> Scott Lurndal <slp53@pacbell.net> wrote:
>>> cross@spitfire.i.gajendra.net (Dan Cross) writes:
>>>> In article <vefvo0$k1mm$1@dont-email.me>,  <Muttley@DastartdlyHQ.org> wrote:
>>>
>>>>> Really? So java bytecode will run direct on x86 or ARM will it? Please give
>>>>> some links to this astounding discovery you've made.
>>>>
>>>> Um, ok. https://en.wikipedia.org/wiki/Jazelle
>>>
>>> There was also a company a couple of decades ago that
>>> built an entire processor designed to execute bytecode
>>> directly - with a coprocessor to handle I/O.
>>>
>>> IIRC, it was Azul.    There were a number of others, including
>>> Sun.
>>>
>>> None of them panned out - JIT's ended up winning that battle.
>>>
>>> Even ARM no longer includes Jazelle extensions in any of their
>>> mainstream processors.
>> 
>> Sure.  But the fact that any of these were going concerns is an
>> existence proof that one _can_ take bytecodes targetted toward a
>> "virtual" machine and execute it on silicon,
>> making the
>> distinction a lot more fluid than might be naively assumed, in
>> turn exposing the silliness of this argument that centers around
>> this weirdly overly-rigid definition of what a "compiler" is.
>
>I've implemented numerous compilers and interpreters over the last few 
>decades (and have dabbled in emulators).
>
>To me the distinctions are clear enough because I have to work at the 
>sharp end!
>
>I'm not sure why people want to try and be clever by blurring the roles 
>of compiler and interpreter; that's not helpful at all.

I'm not saying the two are the same; what I'm saying is that
this arbitrary criteria that a compiler must emit a fully
executable binary image is not just inadquate, but also wrong,
as it renders separate compilation impossible.  I am further
saying that there are many different _types_ of compilers,
including specialized tools that don't emit machine language.

>Sure, people can write emulators for machine code, which are a kind of 
>interpreter, or they can implement bytecode in hardware; so what?

That's exactly my point.

>That doesn't really affect what I do. Writing compiler backends for 
>actual CPUs is hard work. Generating bytecode is a lot simpler. 

That really depends on the bytecode, doesn't it?  The JVM is a
complex beast; MIPS or the unprivileged integer subset of RISC-V
are pretty simple in comparison.

>(Especially in my case as I've devised myself, another distinction. 
>Compilers usually target someone else's instruction set.)
>
>If you want one more distinction, it is this: with my compiler, the 
>resultant binary is executed by a separate agency: the CPU. Or maybe the 
>OS loader will run it through an emulator.

Python has a mode by which it will emit bytecode _files_, which
can be separately loaded and interpreted; it even has an
optimizing mode.  Is that substantially different?

>With my interpreter, then *I* have to write the dispatch routines and 
>write code to implement all the instructions.

Again, I don't think that anyone disputes that interpreters
exist.  But insisting that they must take a particular shape is
just wrong.

>(My compilers generate an intermediate language, a kind of VM, which is 
>then processed further into native code.

Then by the definition of this psuedonyminous guy I've been
responding to, your compiler is not a "proper compiler", no?

>But I have also tried interpreting that VM; it just runs 20 times slower 
>than native code. That's what interpreting usually means: slow programs.)

Not necessarily.  The JVM does pretty good, quite honestly.

	- Dan C.