C ++ Renaissance - slogan di marketing? [duplicare]

21

Ultimamente, sento molto parlare di C ++ Renaissance. Che cos'è?

C++ is currently undergoing a renaissance. This means that, by definition, the language, compilers and compositional tooling are evolving and coalescing into a state that maximizes native developer efficiency, productivity, and creativity across hardware and software domains.

Sono d'accordo sul fatto che il C ++ abbia bisogno di molti miglioramenti, soprattutto perché è stato aggiornato in Neolitico (98,03). Quello che veramente mi infastidisce è il conf Build. Hanno mostrato alcune app in stile metro scritte in C ++ e XAML - come lettore RSS o Piano.

Ho la sensazione che il C ++ sia eccessivo per questo tipo di app e solo quando vedo che il vantaggio è la carica della batteria, ma è vero? C # e C ++ chiamano WinRT che è nativo e C # ha solo un piccolo sovraccarico di runtime.

Qualcuno può fornire case study o dati rigidi dove usare C ++ in Windows 8?

Penso che sarà lo status quo (giochi, server, sistemi operativi, database, app come Photoshop saranno C ++ e altre app client eseguite .Net) e il rinascimento è solo uno slogan di marketing.

    
posta Lukasz Madon 29.09.2011 - 12:05
fonte

6 risposte

31

Credo che ogni programmatore / architetto senior dovrebbe guardare la presentazione di Herb Sutter al C ++ e oltre il 2011 .

Fondamentalmente, afferma che .NET e Java offrono in effetti una migliore produttività. Tuttavia la produttività non è tutto. La potenza della batteria e le prestazioni stanno diventando più importanti per i dispositivi portatili. Per le server-farm di big-data, se riesci a spremere l'elaborazione a 1000 core anziché a 2000 core, risparmierai più denaro in termini di energia e manutenzione rispetto ai soldi che perderai nelle ore di programmazione extra.

Quindi, sia per i sistemi piccoli che per quelli di grandi dimensioni, la produttività non è tutto, e nemmeno il fattore più importante. Quando si tratta di potenza di elaborazione e potenza della batteria, C ++ vince.

Il nuovo standard C ++ offre una maggiore produttività, senza sacrificare le prestazioni. Sposta ancora di più l'equilibrio.

    
risposta data 29.09.2011 - 12:20
fonte
17

I agree that C++ needs a lot of improvements, mainly, because it was updated in Neolithic Age (99).

Il C ++ non è mai stato aggiornato in 99. Il primo standard C ++ era 98. E poi un altro nel 2003. E ne è appena uscito uno nuovo quest'anno. Non è esattamente neolitico. Ancora più importante, vale la pena notare che le tecniche di programmazione che C ++ aveva già da prima di 98 hanno, relativamente parlando, appena entrato nei linguaggi .NET, come le API generiche e funzionali. C ++ ha avuto modelli molto più lunghi di quelli generici esistenti in C # - e i generici non sono nemmeno potenti come i modelli. Probabilmente, è C # che sta giocando a catchup, decenni dopo.

I have a feeling that C++ is an overkill for this kind of apps

Overkill come? A parte l'idea che alcune persone potrebbero preferire il C ++ per ragioni soggettive (che potrei dare una decina di se sei interessato), oltre al fatto che non richiede un'installazione di 100 MB per funzionare sul computer di un consumatore, ad esempio , o funziona su molte più piattaforme di C #.

E l'overhead di runtime di C # non è minuscolo. Affatto. In effetti, più piccola è l'app, più è maggiore la quantità di tempo impiegata per caricare il CLR.

Per quanto posso dire, il problema fondamentale è che Microsoft ha due divisioni: WinDiv e DevDiv, credo.

WinDiv non può essere infastidito e si sente obbligato a inserire C ++ in un altro linguaggio - prima era C con l'API Win32, e ora è C # con le API Metro, che sono API C ++ solo nel senso che tecnicamente, compilato da un compilatore C ++ e in realtà ha molto poco in comune con un design C ++. Inoltre, WinDiv non impara dai propri errori, ad esempio, anche nelle nuove API Metro, non è possibile combinare i controlli Metro e il rendering DirectX. Sembra essere il tipo di cosa che avresti risolto dopo i problemi di spazio aereo con la precedente generazione di controlli nativi.

DevDiv d'altra parte sembra sapere che cosa stanno facendo, per esempio, vedere il runtime di concorrenza in Visual Studio 2010 e C ++ AMP in vNext, che sono fantastici . Producono anche degli strumenti piuttosto dolci - i miglioramenti IDE per C ++ in vNext sono abbastanza buoni, e AMP è un grosso problema, anche se sfortunatamente ciò significa poche nuove funzionalità di C ++ 11.

Il problema è che WinDiv produce un lotto più contenuto di DevDiv, ad esempio socket e librerie UI. Quindi c'è una rinascita in C ++ - si applica solo alle cose che purtroppo il piccolo team di librerie DevDiv è riuscito ad incollare sulla roba di WinDiv.

    
risposta data 29.09.2011 - 12:39
fonte
6

C ++ sta iniziando a vedere un po 'più di importanza sulle applicazioni lato server. L'uso efficiente del processore consente di risparmiare milioni di costi del server. Se l'app viene eseguita 7 volte più lentamente, è necessario acquistare 7 volte i server, 7 volte i costi di raffreddamento, 7 volte lo spazio del pavimento, ecc. Facebook ha iniziato a utilizzare alcuni C ++ per questo motivo. Google utilizza molte lingue, ma il loro nucleo è C ++. Se ti aspetti un carico enorme, la tua vita può essere molto più semplice se usi un'implementazione nativa fin dall'inizio.

La gente sembra pensare che la raccolta dei rifiuti sia ciò che rende più facile lo sviluppo. Nella mia esperienza non lo è, specialmente quando il tuo codice contiene risorse esterne. Il modello C ++ di distruzione del distruttore è più pulito e più moderno del modello Java.

Considera questo codice java psuedo:

public void someMethod()
{      
        FileObj f = null;
        try
        {
          f = new File("/somePath/myFile.txt");
          String str = f.read();
          System.out.println(str);
        }
        catch(CustomException ce) { /*la */ throw ce; }
        catch(PathNotFoundException pe) { /*la */ throw pe; }
        catch(Exception e) { /*la */ throw e; }
        finally
        {
            try { if(f !=null) f.close(); } 
            catch(Exception e) { /*la */ throw e; }
        }
}

In C ++ si potrebbe quindi qualcosa di altrettanto sicuro, senza così ingombro. Solo una riga di codice con tutta la sicurezza dello pseudo codice qui sopra.

void someFunction()
{
   FileObj f("/somePath/myFile.txt");
   string str = f.read();
   cout << str;
   //the file is magically closed even if an exception occurs during f.read();
}

Modifica: modifica dei metodi di codice pusedo da "main" a "someMethod".
Modifica: Rilanciare l'eccezione nel codice pseudo java per renderlo equivalente al C ++.
Modifica: rinomina il file in FileObj in modo che il codice psuedo non sia confuso con le librerie java reali.

    
risposta data 24.01.2012 - 02:55
fonte
4

Ovviamente è uno slogan di marketing, ma dimostra che Microsoft è (ancora) impegnata a supportare il codice nativo come cittadino di prima classe sulla nuova piattaforma.

Che sia di tuo interesse personale, questa è un'altra domanda - se preferisci un'altra lingua e fa il lavoro per te, sentiti libero di ignorare il "C ++ Renaissance".

    
risposta data 29.09.2011 - 15:32
fonte
4

È anche C ++ è portatile. Puoi scrivere un'app C ++ in Windows spostandola su Mac / Linux / Android / iOS anche se con qualche giochetto. Anche se questo probabilmente non è un angolo a cui è interessato MS.

Quando Windows era l'unico gioco in città, C # era sicuro da usare.

Ci sono altre alternative Java / Python ecc. Vengono tutte con un tempo di esecuzione e quindi prenditi un po 'di tempo per portarlo nel nuovo ambiente e, dato che tutte queste nuove piattaforme arriveranno, il nativo è più sicuro.

Anche C ++ (e C) sono gli unici che hanno più compilatori di più fornitori - quindi sei sicuro che nessuno cambierà le regole - Oracle con java, MS con C # ecc.

Quindi, se stai scrivendo un'app e vuoi spostarla su piattaforme diverse, C ++ è una scelta molto sicura.

    
risposta data 30.09.2011 - 07:45
fonte
3

Can someone provide case study or hard data where use C++ in windows 8?

Bene, il sistema operativo è scritto in C ++.

La risposta rapida è che nessuno con mezzo cervello desidera progettare un'applicazione commerciale che funziona 10 volte più lentamente e scarica più batteria delle app in competizione.

    
risposta data 08.03.2012 - 03:40
fonte

Leggi altre domande sui tag