My sample took somewhat longer to prepare then Edward's smiley and Gerd's

#1) to evaluate SQL statements use MgmtPortal/ Explorer/SQL and check the generated query plan.

#2) if you don't use special attributes to SELECT clause or sub-queries all SQL statements are strictly worked from left to right.
 your first statement is ok for SQL your 2nd is just a fragment that I interpreted as to be a sub-query

Summary: they are not identical.

Now the example transformed for namespace SAMPLES to have 3 tables as A, B, and C:

select A.id,B.id,c.Id from
    sample.person A left join 
    sample.employee B on A.id = B.spouse 
    inner join sample.company C on B.company = C.id 

 

Row count: 100

Query Plan:

Relative cost = 4200
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
     Read master map Sample.Employee.IDKEY, using the given idkey value.
    Read extent bitmap Sample.Person.$Person, using the given ID.
 For each row:
     Read master map Sample.Company.IDKEY, using the given idkey value.
 Output the row.
 

transformed to sub-queries:

select aid,bid,cid from
(select A.id aid, b.id bid, b.company cid 
    from sample.person A 
    left join sample.employee B
    on A.id = B.spouse)
 inner join sample.company C 
 on cid = C.id 

it is obviously identic ! just more expressive.

Row count: 100

Query Plan:

Relative cost = 4200
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
     Read master map Sample.Employee.IDKEY, using the given idkey value.
    Read extent bitmap Sample.Person.$Person, using the given ID.
 For each row:
     Read master map Sample.Company.IDKEY, using the given idkey value.
 Output the row.

the next  LEFT_JOIN(A,INNER_JOIN(B.C))  requires immediate transformation

select A.id,bid,cid from
sample.person A left join
(select b.id as bid,c.id cid, b.spouse bsp 
 from sample.employee B
 inner join sample.company C on B.company = C.id) 
 on A.id = bsp

Row count:  237  (!!!!)

Query Plan:

Relative cost = 32408
Read extent bitmap Sample.Person.$Person, looping on ID.
For each row:
 Call module E.
 Read temp-file A, using the given VIEW column #3, and looping on VIEW counter.
 For each row:
 Generate a row padded with NULL for the view if no row qualified.
 Output the row.
module E
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
 Read master map Sample.Employee.IDKEY, using the given idkey value.
 Read master map Sample.Company.IDKEY, using the given idkey value.
 Increment view row counter.
 Add a row to temp-file A, subscripted by VIEW column #3 and VIEW counter,
 with node data of VIEW column #1 and VIEW column #2.

So both variants are possible though the result is different

HTH,

the key difference is that you can pass the classname by a variable.
So you are prepared to get the classname passed by some other method.

In your example with a constant string"circle"you miss the key advantage and It's of o added value.

BTW. Correct is   $classmethod("circle.radius","%New")

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...

For testing with Terminal I typically use PuTTY.  http://www.putty.org/

There I can have multiple terminals with separated  Sessions/$JOB in parallel without problem.
(pls. don't ask how )
Terminal driver changes to a free set of ports ( 51133|10088) as you see by $IO
so it's no problem to have multiple terminal sessions connected 

USER>w $io
|TNT|127.0.0.1:51133|10088

I have no idea if Atelier allows multiple Terminals . And if how to launch them.
In Atelier just click again to the Terminal Open Icon:

Right: if you don't establish TELNET connection it's just bash or MS-DOS depending on your local OS.
Also for local localhost access !
so from Help:

Using the Terminal Plug-in
Telnet Connection
If your Caché instance is on a remote Windows server, you will need to connect using Telnet.
  1. Enable %Service_Telnet from the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen)
  2. In the main menu, select Show View > Other > Terminal > Terminal, or click this link to open the Opens the new Class file wizard Terminal View.
  3. Select the Open a Terminal button on the Terminal view toolbar.
  4. Select Telnet Terminal from the Choose terminal drop down menu.
  5. Complete the Telnet session configuration and click "OK"
  6. If csession isn't in your PATH, navigate to your instance's bin directory. For example, cd C:\InterSystems\Cache\bin.
  7. Launch a Caché terminal session. For example, csession Cache.

Setup Connection

And you get your Caché Terminal

 

HTH

It is. I have used it some time ago.
You need a  suitable plug in and connect to port 23 of your server 
(provided it is not blocked by Win* firewall.

plugin from the following update repository: http://download.eclipse.org/tm/terminal/marketplace/.

  1. From your Eclipse/Atelier workspace, navigate to command link Help > Install New Software from the main menu.
  2. Enter the URL for the Terminal plugin update site in the Work with field. Ensure that the Group items by category check box is selected.
  3. Once the groups are displayed, select the check box by the newest version.
  4. Click Next to open the Install Details page. Review your installation choices.
  5. Click Next to open the Review Licenses page. Accept the license terms and click Finish.
  6. To open the Terminal view, select Window > Show View > Other on the main menu and type "terminal" in the filter box. Select Terminal and OK.

Because it's so easy I've added a solution for those readers that don't refuse to work with Caché Objects & Classes .

Class Definition

Class DC.productListing Extends (%RegisteredObject, %XML.Adaptor)                            
{                                                                                                                                                                          
Property product As %String(CONTENT = "MIXED", XMLPROJECTION = "CONTENT");
}                                                                                                                                                                          

Simple display method

ClassMethod Show(xml As %String(MAXLEN=""))
{
 set rd=##class(%XML.Reader).%New()
    ,sc=rd.OpenString(xml)
 do rd.Correlate("product","DC.productListing")
 while rd.Next(.obj) {
    write !,"######"_$i(cnt)_"#########",$replace(obj.product,$c(10),$C(13,10))
 }
}

Extended test data

USER>write xml
<productListing title="ABC Products">
 <product>
   <name>Product One</name>
   <description>Product One is an exciting new widget that will simplify your life.</description>
   <cost>$19.95</cost>
   <shipping>$2.95</shipping>
 </product>
 <product>
   <name>Product 2</name>
   <description>Product 2 is an exciti</description>
   <cost>$19.95</cost>
   <shipping>$2.95</shipping>
 </product>
 <product>
   <name>Product 3</name>
   <description>Product 3 is simplify your life.</description>
   <cost>$19.95</cost>
   <shipping>$2.95</shipping>
 </product>
</productListing>
USER>

Result

USER>do ##class(DC.productListing).Show(xml)
 
######1#########
  <name>Product One</name>
  <description>Product One is an exciting new widget that will simplify your life.</description>
  <cost>$19.95</cost>
  <shipping>$2.95</shipping>
 
######2#########
  <name>Product 2</name>
  <description>Product 2 is an exciti</description>
  <cost>$19.95</cost>
  <shipping>$2.95</shipping>
 
######3#########
  <name>Product 3</name>
  <description>Product 3 is simplify your life.</description>
  <cost>$19.95</cost>
  <shipping>$2.95</shipping>
 
USER>