Newsgroup: it.lavoro.informatica
Titolo: domanda ad un colloquio

Quanti livelli di compilazione esistono in 
VB.NET
 ?
 
risposta : uno,due o quattro
 
Cosa significa secondo voi?


Boh, più di due (o infiniti) non ne ho mai visti.

Il giorno venerdì 18 settembre 2015 22:33:31 UTC+2, Nando ha scritto:
 

https://youtu.be/Iy9H8ltkAH8
 


E' la prima volta che sento la frase "livelli di compilazione" ma non ho 
mai usato 
VB.NET
 
Ma cosa vuol dire ?
 

 Ma cosa vuol dire ?
 
vuol dire quello che c'è scritto.
in dotnet, ma anche in java, ci sono due livelli di compilazione: bytecode
e just-in-time.
 


Capito,grazie
 


Io invece ho pensato alle macro del tipo LISP. Al JIT non avevo pensato, e sinceramente sarebbe stata una bella domanda di merda IMHO.

 e just-in-time.
 
Però, a voler essere proprio scassapalle, il JIT non è legato a 
VB.NET
, 
ma al bitecode prodotto. Leggi: è lo stesso se il bytecode arriva da C#, 
da F#, da IronPython...
Ergo, non mi sentirei proprio di considerare scorretta la risposta 
"uno", se la domanda è stata posta proprio in questo modo.
 
-- 
Ciao!
Luca
 

 "uno", se la domanda è stata posta proprio in questo modo.
 
Cosa c'entra? Se fai girare codice 
VB.NET
, quel codice viene compilato in bytecode e, all'occorrenza, just-in-time. Sono sempre due livelli.
 
 

 Cosa c'entra? Se fai girare codice 
VB.NET
,
 > quel codice viene compilato in bytecode e,
 > all'occorrenza, just-in-time.
 > Sono sempre due livelli.
 
Wait a minute.
Tu non 'fai girare' mai codice 
VB.NET
. Necessiti di una compilazione in 
bytecode. E nella fiolsofia .NET, il JITer è SEMPRE coinvolto. Diverso 
era anticamente per Java: una volta il bytecode veniva fatto girare in 
una virtual machine che isolava il codice in esecuzione dalla macchina, 
tanto che SUN, a suo tempo, pensava anche al Java Processor. Che io 
sappia, oggi normalmente in Java il JITer interviene sempre, ma ho letto 
da qualche parte che volendo puoi farne a meno (anche se non so al 
giorno d'oggi che senso abbia).
Detto questo, se la domanda fosse stata meno ambigua, del tipo: "quanti 
sono i livelli di compilazione necessari per mandare in esecuzione 
codice scritto in 
VB.NET
?", li allora la risposta sarebbe stata 
univocamente 2.
Ma se la domanda è ambigua come quella dell'OP: "quanti livelli di 
compilazione esistono in 
VB.NET
?", allora diventano accettabili per me:
1, se consideri che il JITer NON fa parte di 
VB.NET
 ma è comune a tutti, 
indipendentemente da dove arrivi il bytecode (non solo quelli base, C# e 
VB, ma anche C++, Python, Ruby, Fortran e, udite udite, anche COBOL);
2, se consideri il processo completo per mandare in esecuzione 
l'applicazione che hai scritto.
 
Peraltro, nota di colore, secondo me 
VB.NET
 non sarebbe mai dovuto 
esistere, come linguaggio 'primario', ma tant'è...
 
-- 
Ciao!
Luca
 
 

 VB, ma anche C++, Python, Ruby, Fortran e, udite udite, anche COBOL);
 
Non c'entra che il JITer faccia o meno parte di 
VB.NET
. La domanda da` per scontato che tu voglia eseguire codice 
VB.NET
. Considera il ciclo completo.
E mi sembra anche ovvio.

 Non c'entra che il JITer faccia o meno parte di 
VB.NET
. La domanda da`
 > per scontato che tu voglia eseguire codice 
VB.NET
.
 > Considera il ciclo completo.  E mi sembra anche ovvio.
 
Mica tanto. Se si fa una domanda del genere, si presume che chi la fa 
richieda un approccio un po' più formale alla questione rispetto a 
"schisso 'Run' e parte come per magilla".
 
DISCLAIMER L'ho detto fin dall'inizio che sto avendo un approccio 
scassapalle...
 
-- 
Ciao!
Luca
 
 

 "schisso 'Run' e parte come per magilla".
 
L'approccio formale e` che esistono DUE livelli di compilazione: bytecode e native (JIT).

 Stai guardando il dito e non la luna. Se costruisci una libreria,
 > e` perche` vorrai che il codice contenuto in essa venga eseguito.
 
Solo che allora, se considero il processo completo, la compilazione 
avviene in tre livelli, manco in due.
 
-- 
Ciao!
Luca

 L'approccio formale e` che esistono DUE livelli di compilazione: bytecode e native (JIT).
 
PS. obbligatorio. Il quale secondo livello e del framework .NET e non di VB.
 

 avviene in tre livelli, manco in due.
 
Ovvero?
 
 

 PS. obbligatorio. Il quale secondo livello e del framework .NET e non di VB.
 
Irrilevante. Se si chiede "quanti livelli di compilazione esistono in 
VB.NET
", la risposta e` 2, non 1.

 secondo livello di compilazione proprio non c'è.
 
se, se, se.
fai un esempio di un runtime che non usa il jit, o un'altra forma di
compilazione in linguaggio macchina del bytecode. così capiamo se stai
parlando del mondo reale o di qualche tuo mondo di fantasia.

 compilazione in linguaggio macchina del bytecode.
 
Riporto quanto ho scritto:
 
"Per dire, io uso correntemente Python. Li avviene normalmente una 
compilazione, ma non c'è alcun JITer."
 
Ho sottointeso 'in bytecode' dopo 'compilazione', evidentemetne non sono 
stato chiaro.
 

 compilazione, ma non c'è alcun JITer."
 
Riporto quanto rispostoti: irrilevante. Python non e` 
VB.NET
.

 
"Luca Menegotto" <otluca...@DELETEyahoo.it> ha scritto nel messaggio 
news:mtug0q$4bc$1...@speranza.aioe.org...

IMVVHO
Se la domanda e'
"Quanti livelli di compilazione ci sono in 
VB.NET
 ?"
la risposta e' uno.
 
Se la domanda e'
"Quanti livelli di compilazione ci sono in .NET?"
la risposta e' due.
 
il primo livello e' quando compili il tuo source (C# o Vb.Net o F# o quel 
che sia ) per creare un oggetto .EXE o .DLL
 
il secondo livello e' ad opera del CLR  del NET Framework
che trasforma l' EXE o la DLL in codice nativo prima di eseguirlo sulla 
specifica macchina.
 
ciao
fm
 
 


E cosa risponderesti se ti chiedessero quanti livelli di compilazione ha Clojure (se lo conosci, se no amen)?

 la risposta e' uno.
 
No, e` 2. Stare qui a puntualizzare le differenze tra 
VB.NET
 e .NET e` un mero cavillare senza alcun senso. Non ha molto senso parlare di 
VB.NET
 sganciandolo da .NET. 
 
 

 No, e` 2. Stare qui a puntualizzare le differenze tra 
VB.NET
 e
 > .NET e` un mero cavillare senza alcun senso.
 
E dopo questa - invero enorme - io la chiudo qui.
Guarda, hai ragione tu.

 ha scritto nel messaggio 
news:56360291-8930-4da1...@googlegroups.com...

Una cosa e' il linguaggio, una cosa e' l'ambiente...
 
A mio parere la domanda e' abbastanza mal posta o meglio ambigua ...
una volta si chiamavano "domande trabocchetto"...:-)
 
ciao
fm
 
 

 Guarda, hai ragione tu.
 
Certo che ho ragione. Ho ragione nell'affermare che cavillare sulle differenze tra .NET e 
VB.NET
, quando si chiede quanti livelli di compilazione ci sono in 
VB.NET
 (dando per scontato che 
VB.NET
 aderisce alle regole dell'ambiente .NET) e` un puntualizzare senza senso. Hai voluto fare lo scassapalle e sei finito in un buco. 
 

 una volta si chiamavano "domande trabocchetto"...:-)
 
Una volta c'era anche chi definiva certe domande "a trabocchetto" perche` non sapeva dare una risposta.
 

 E cosa risponderesti se ti chiedessero quanti livelli di compilazione ha Clojure (se lo conosci, se no amen)?
 
Clojure non ha un'unica piattaforma di riferimento.

 compilazione, ma non c'è alcun JITer."
 
il soggetto è 
vb.net
. dai, non fare il pierino.



Clojure con target JVM allora.

 Clojure con target JVM allora.
 
Sempre 2? bytecode e native (JIT)? 
Non capisco perche` la domanda sarebbe interessante.
 


Perché se ad un programmatore lisp parli di livelli di compilazione quello capisce che si parla di macro...e ti risponde sempre due ma intende ben altro :D

 Perché se ad un programmatore lisp parli di livelli di compilazione quello capisce che si parla di macro...e ti risponde sempre due ma intende ben altro :D
 
...ma un programmatore Clojure sa bene a cosa ci si riferisce, dal momento che sa che sotto c'e` una JVM.
 


è proprio qui che si genererebbe la confusione: clojure è un dialetto lisp. Era solo per dire che se volevano testare la conoscenza di JIT andava fatta una domanda un po' meno ambigua.

 bytecode e just-in-time.
 
A me sembra che se sposti un po' il contesto ottieni risposte diverse:
 
c'è il livello di ottimizzazione della compilazione (che è una cosa un po' 
diversa, ma definisce sempre livelli) 
c'è il livello bytecode vs machinecode
c'è il java bytecode e jut-in-time
infine, python ha solo un livello di compilazione, java ne ha di più
 
VB.NET
 ? e che ne so.... :) 
 
-- 
Massimiliano Adamo

 A me sembra che se sposti un po' il contesto ottieni risposte diverse:
 
è sicuro, qualsiasi domanda se la sposti dal suo contesto ottieni risposte
diverse.

 Cosa significa secondo voi?
 
<E' la prima volta che sento la frase "livelli di compilazione" ma non ho
<mai usato 
VB.NET
 
<Ma cosa vuol dire ?
 
per il test la risposta corretta era due comunque , la prima compilazione in 
MSIL , la seconda in linguaggio macchina.
Io credevo fossero le due opzioni di compilazione RELEASE E DEBUG presenti 
dentro a Visual Studio.