Newsgroup: it.lavoro.informatica
Titolo: quiz: che linguaggio e'?

In un quiz per gioco ad una conferenza e' uscita questa domanda:
Dato il seguente pezzo di codice, che linguaggio e'? La maggior parte dei partecipanti non erano informatici, quindi o C o C++ era considerata risposta esatta. Pero' ne e' nata un'accesa diatriba tra gente con un background informatico, c'era chi diceva C e chi C++. I sostenitori del C++, dicevano che quel codice compila con un compilatore C++, e' parte di un progetto scritto in C++, quindi e' C++. I sostenitori del C, dicevano, che fprintf e' C, quindi quel pezzo di codice e' C. Chi ha ragione? Quale la motivazione?
 
Questo il pezzo di codice:
if (rlen < 0) {
  totlen = -rlen;
  prevt = startt = currt; 
  fprintf(stdout, "000/??? sec ");
  fprintf(stdout, "~~(,_,\">"); 
  for (i = 1; i < 10; i++)
      fprintf(stdout, " "); 
   fprintf(stdout, " [oo]");
   fflush(stdout);
}

Il 30/04/19 18:15, askaholik ha scritto:

al di la dello stile usato per il for che e' quantomeno dubbioso e' 
codice c++ valido
Ma e' anche codice C
Ovviamente le variabili rlen,i,ecc. saranno state dichiarate da qualche 
parte e sara stata fatta una include di stdio
Ma potrebbe essere anche un altro linguaggio che ha  una sintassi simile 
e che ha printf come il c
Esistono programmi basati su algoritmi euristici per determinare che 
tipo di testo e'
In linux un esempio e' il comando file
 
 
 
 


Se dici 'chi ha ragione, verrebbe da pensare che sia C o C++.
Pero' e' difficile a dirsi senza sapere se effettivamente fprintf sia 
quella standard C e stdout sia uno dei file standard C.
Ad esempio fprintf potrebbe essere tranquillamente una funzione php o 
magari javascript, per via dell'operatore '~~'.
Pura ipotesi fantasiosa senza alcuna pretesa.

 Ma e' anche codice C
Io avrei escluso C++, per il solo fatto che in genere si usa cout per 
l'output verso stdout.
Ma capisco che possa essere una questione stilistica. Cosa ne pensi?

Solo due linguaggi? Se proprio volevano fare i burloni potevano mostrare questo:
http://www2.latech.edu/~acm/helloworld/multilang.html
 

 ragione? Quale la motivazione?
 
quello è codice c. il fatto che compili con un compilatore c++ è perché c 
è compatibile con c++. che sia parte di un progetto c++ non ne vedo la 
rilevanza ai fini della risposta, in un progetto si possono mescolare 
serenamente .c e .cpp.

 serenamente .c e .cpp.
 
era parte di un file .cpp (basta fare una piccola ricerca con google mettendo le righe intermedie per trovarlo). Cionondimeno, i sostenitori della risposta C insistevano che ai fini della domanda quello era codice C, e si poteva anche azzardare che l'autore avrebbe dovuto chiamare il file .c.

 Ma capisco che possa essere una questione stilistica. Cosa ne pensi?
 
Io ho lanciato la questione da cui ne e' nato l'acceso dibattito, quindi ne penso che secondo me e' C  ;-)
ma bisogna andare a spulciare gli standard per dare la risposta definitiva 
https://isocpp.org/std/the-standard
 

 codice c++ valido
 
Huh??! E` codice C++ valido.

On Wednesday, 1 May 2019 00:15:17 UTC+1, askaholik  wrote:
 
[...]
 
Se la domanda e` "che linguaggio e`?", la risposta e` "C". 
 
Perche`, se si ignora il rasoio di Occam, si possono considerare tutti i linguaggi in cui quel codice e` valido, esempio C++ o Java:
 
public class Main {
 
    public static void main(String[] args) {
        int rlen = 0, totlen = 0, prevt = 0, startt = 0, currt = 0;
 
        [....]
 
        PrintStream stdout = System.out;
 
        if (rlen < 0) {
            totlen = -rlen;
            prevt = startt = currt;
            fprintf(stdout, "000/??? sec ");
            fprintf(stdout, "~~(,_,\">");
            for (i = 1; i < 10; i++)
                fprintf(stdout, " ");
            fprintf(stdout, " [oo]");
            fflush(stdout);
        }
    }
 
    private static void fflush(PrintStream printStream) {
        printStream.flush();
    }
 
    private static void fprintf(PrintStream printStream, String string) {
        printStream.println(string);
    }
}

 mettendo le righe intermedie per trovarlo).
 
bah. fuori dal contesto poteva essere anche java, javascript o c#. 
pensavo ci fosse una seppur sottile logica per arrivare alla risposta 
leggendo quel codice.

Il 01/05/19 01:40, Dr.UgoGagliardelli ha scritto:

E vero che normalmente si usa iostream in c++
ma e' anche vero che quel codice e' c++,visto che nella lib std esiste 
cstdio
 

Il 01/05/19 03:25, 4ndre4 ha scritto:

si,pirlotto
invece che blaterare perche non ti fai un piccolo programmino che 
include quelle istruzioni completandolo ?
Vedrai che compila perfettamente
 

Il 01/05/19 01:28, Dr.UgoGagliardelli ha scritto:

~~ e' in una stringa per qui non e' un operatore
Ma come avevo scritto anche io potrebbe anche essere un altro linguaggio
 
 

Il 01/05/19 02:44, askaholik ha scritto:

se era parte di un file .cpp allora e' codice c++
a meno di non specificare a gcc un estensione differente per i programmi c
 

Il 01/05/19 03:57, 4ndre4 ha scritto:

Complimenti,sei arrivato secondo (o terzo)
 
 


Me ne sono accorto che e' in una stringa, ipotizzavo fprintf una 
funzione di valutazione ed esecuzione, cazzo ne so.
 

Il 01/05/19 08:55, Dr.UgoGagliardelli ha scritto:

In c/c++  ~~ in stringa non ha rilevanza
potrebbe averlo in un altro linguaggio in qual caso potresti avere ragione
 

L'ho scritto io stesso che è codice C++ valido, cojone!

Cioè tu "qui" lo leggi "cui"? :)

Zitto, demente. Non è una gara. Se lo fosse, arriveresti ultimo. Frena la tua diarrea verbale.


Per questo ipotizzavo javascript, ~~ e' l'operatore analogo a floor ma 
restituisce 0 e mai NaN se l'argomento non e' rappresentabile come numero.

 
 
coglioncello bello
con una frase
Huh??! E` codice C++ valido.
 
che volevi insinuare lo sai solo tu
ma conoscendo il pollo ..
 

AHOOO e basta! Hai rotto il cazzo! Coglione!!! 

 
 
Pirlotto bello, qualche volta mi fai compassione
E normalmente non mi metterei neanche a scrivere appunti su questioni 
irrilevanti come questo
Ma nel tuo caso posso fare una exception
In fondo e' quello che meriti
 

 
 
Le parti basse tu ed i tuoi accoliti le avete frantumate a me a sufficienza
E' il principio della riflessione dello specchio
Quello che fai ti verra ritorto contro
 

Ma ancora parli? Ancora? Basta co' sta diarrea verbale! Sparisci idiota!! 

Benissimo. Sparisci allora. 

 
 
Inizia tu e lo faccio anch'io
 

 
 
sono il tuo incubo peggiore
le persone come te le sotterro vive e poi ballo sulla tomba
 

Il 01/05/19 09:11, Dr.UgoGagliardelli ha scritto:

conosco poco javascript per cui non obietto
 

HAHAHAHAHAHAHAHAHA A CAZZAROOOOOOO
 
ABBALLA 'NCOPP A STUCAZZ !!

 Inizia tu e lo faccio anch'io
 
Non funziona cosi`, mi spiace. Smetti di renderti ridicolo.

 conosco poco javascript per cui non obietto
 
Di` le cose come stanno: non lo conosci per niente ;)

 le persone come te le sotterro vive e poi ballo sulla tomba
 
LOL :D Se se, sogna, cojonazzo. Attento che la vena nel cervello ti parte, di 'sto passo ;)

 ABBALLA 'NCOPP A STUCAZZ !!
 
Ha ha... e` veramente un coglione. Ma come si fa anche solo a pensare una stronzata del genere? :D 

Il 01/05/19 11:21, 4ndre4 ha scritto:

Specchio !!

Il 01/05/19 11:21, 4ndre4 ha scritto:

Specchio !!
 

Il 01/05/19 11:23, 4ndre4 ha scritto:

Specchio !!
 

 
 
 
Syntax error
ma per mancanza di quote che evidente non sai fare
Specchio !!
 
 

Il 01/05/19 11:24, 4ndre4 ha scritto:

Specchio!!

 Ha ha... e` veramente un coglione.
 
no dai vabbè ma chi è questo strunzolo???!!! ma che risate altro che i trolls

 
 
Spaccio!!
 

 Spaccio!!
 
sì, quella che t'avanza.

 
 
 
Specchio!!

 Se la domanda e` "che linguaggio e`?", la risposta e` "C". 
 
Ni, la domanda era questa: "a) match the developer to the code b) name the program and c) what language is it written in?". La risposta prevista da chi ha scritto il quiz era "C++", e ci sta, perche' il programma in questione e' scritto parte in C style e parte in C++ style. La discussione che ne e' nata era su quello specifico codice, e' C o C++? 
I sostenitori della versione "C++" dicevano: "hanno incluso <cstdio>, che e' previsto dal C++, quindi e' C++".
I sostenitori del "C" ribadivano: "si, ma cstdio -come suggerisce il nome- e' C, libreria inclusa in C++ per garantire compatibilità' col C"
I sostenitori del "C++": ri-ribadivano: "si, ma compila in C++, quindi e' C++"
I sostenitori del "C": ri-ri-ribadivano: "si, in C++ si usano gli stream, fprintf e' un ripiego"
I sostenitori del "C++": ri-ri-ri-ribadivano: "si, ma e' previsto, compila, quindi C++ tutta la vita"
e cosi' via, sinché la discussione e' morta li' e l'argomento e' stato abbandonato
 
Credo la risposta stia nel ISO/IEC 14882 (
https://nowere.net/b/arch/135957/src/1487071442372.pdf
), dove dichiarano esplicitamente che <cstdio> e' C e mostrano gli equivalenti del C++. Pero' mi sembra di capire che nell'ISO non e' deprecato l'uso di cstdio in C++. Quindi va benissimo utilizzare tutte le librerie standard del C (tipo cstdio), scrivendo codice in stile C e dire che e' C++? Alla luce della discussione, direi di si, visto che non c'e' una vera linea di demarcazione tra i due linguaggi, permettendo l'uso di interpretazioni ibride. Idee?
 
IMHO, sembra quasi che quando hanno introdotto gli stream non siano stati troppo convinti di quello che facevano, e hanno permesso l'uso delle vecchie funzioni C, che molti preferiscono ancora, quindi scrivono codice in C, che pero' e' codice C++. Un bel pastrocchio le std, ad iniziare dal nome, che e' anche l'acronimo di Sexual Transmitted Diseases (casualità?) :-)) Pero' ricordo all'inizio negli anni 90 quando il C++ stava prendendo piede e molti puritani eran li' a fare guerre di religione, dettata dalla moda del momento.

On Wednesday, 1 May 2019 17:34:09 UTC+1, enoquick  wrote:
 
[...]
 
"per qui" lo hai scritto tu, COJONE.
 

 La discussione che ne e' nata era su quello specifico codice, e' C o C++?
 
Eh, e se la domanda e` quella, la risposta e` "C". 

 che e' previsto dal C++, quindi e' C++".
 
beh ma questo non era nel frammento di codice che hai postato.

 
 
 
specchio!!

Il 01/05/19 12:58, askaholik ha scritto:

La guerra sul sesso degli angeli,insomma
E' sia C che C++ visto che compila in entrambi
 

Il 01/05/19 13:23, rootkit ha scritto:

il che cambierebbe le cose
stdio.h e' deprecata in c++ in favore di cstdio
cstdio non esiste in c
 

 La guerra sul sesso degli angeli
 
Questa la mettiamo insieme ai "muri pindarici".

Il 01/05/19 16:52, 4ndre4 ha scritto:

Inizia ad arrampicarti
specchio !!

 beh ma questo non era nel frammento di codice che hai postato.
 
Non c'era neanche nel codice che hanno messo nella domanda, che ho riportato pari pari.
Il quiz non era per informatici, ma giusto per distinguere tre tipi di sorgenti: fortran, C++ e python.
Solo che IMHO il pezzo di codice che hanno incluso era C non C++, io l'ho fatto notare e il discorso ha preso una piega mooolto colorita :-)
 


Ma tu sei il cugino di ciccio?
 

Il 03/05/19 03:38, Madame Damentami ha scritto:

specchio!!