|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#101 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
|
|
|
|
|
|
#102 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1159
|
|
|
|
|
|
|
#103 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Il problema piuttosto è che in alcuni casi (e.g. dispositivi embedded) la versione del compilatore è un vecchio gcc e per il C++ questo pesa negativamente. In ogni caso stai approcciando il problema alla rovescia. Non è che "devi" programmare con un linguaggio OO e quindi scegli quello che devi scegliere... ma devi risolvere un certo problema e in base ai vincoli scegli il linguaggio che puoi usare... se poi è uno OO tanto meglio, ma quello viene dopo.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#104 | |||||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
io non stavo affatto parlando di programmazione orientata agli oggetti, stavo parlando solo di C++, che tra l'altro fornisce una sua peculiare interpretazione della programmazione orientata agli oggetti. il C++ permette di essere piu produttivi del C perché offre costrutti piu potenti che permettono di scrivere programmi piu significativi a paritá di numero di linee di codice. Quote:
Quote:
detto questo esistono alcuni linguaggi che favoriscono la performance e per i quali esistono implementazioni intrinsecamente piu performanti; per esempio la specifica del linguaggio Java impone la semantica del bound checking sugli array e questo causa necessariamente una perdita di performance che invece non caratterizza linguaggi non gestiti come C e C++. ció posto le performances finali dei programmi risultanti dalla compilazione di questi linguaggi sono in generale una questione piu complessa di come la fai tu e le tue affermazioni non sono valide nel caso generale. nel caso generale un programma Java puó essere molto piu performante di un programma scritto in C++, ad esempio perché rimanda la deallocazione della memoria dinamica a momenti di maggiore disponibilitá di risorse di calcolo. Quote:
non proprio visto che il post di PGI-Bis aveva senso mentre questa frase non ne ha. |
|||||
|
|
|
|
|
#105 | ||||||
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Quote:
Quote:
Quote:
Ho detto che preferisco C come linguaggio rispetto a C++. Perché è più semplice, più "elementare" forse nei costrutti che offre (nonostante il suo essere di più basso livello). E visto che di fatto una delle caratteristiche più rilevanti di C++ è il supportare la programmazione ad oggetti, ho fatto presente che in questo contesto esistono linguaggi più evoluti. Quote:
Quote:
Tuttavia ogni qualvolta mi sono trovato davanti ad un programma Java, magari con relativa GUI, mi ha sempre dato l'impressione di non essere granché reattivo (quantomeno sotto Windows). Magari mi ha detto sfiga... Quote:
Ultima modifica di WarDuck : 21-02-2010 alle 19:21. |
||||||
|
|
|
|
|
#106 | |||||||||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ti linko il documento che descrive lo studio a cui mi riferivo, c'é l'ho tra i preferiti perché é bellissimo
![]() http://www.csm.ornl.gov/~v8q/Homepag...0printable.pdf Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
|
|||||||||
|
|
|
|
|
#107 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
C++ serve quando serve un linguaggio di alto livello che sia anche veloce.
Farà schifo quanto vi pare, ha una tonnellata di bugs, ma ha un qualsiasi senso valutare la produttività a livello assoluto? Io per esempio ormai lo uso da anni e faccio molto più e meglio con C++ che con altro. Inoltre, valutare il "linguaggio" non ha alcun senso, andrebbero valutate anche le librerie... e il C++ è molto gettonato ad alti livelli perchè ha librerie "coi controcazzi" per circa tutto quello che può essere programmato Poi certo, per lavoro sicuramente il più usato è Java. Ma credo che non siano posti di lavoro qualificati quanto quei pochi C++, proprio no. Infatti quel sondaggio TIOBE a pensarci bene è ben stupido, sarebbe come dire che il miglior mestiere è l'operaio perchè lo fanno tutti e gli altri sono inutili perchè ce ne sono pochi ![]() PS&OT: nonostante questo C++ è veramente una brutta bestia per il threading avanzato... c'è qualche linguaggio che offra un parallelismo task-based di fabbrica? In C++ per quanto mi impegno viene brutto lento e poco flessibile. Ultima modifica di Tommo : 22-02-2010 alle 02:08. |
|
|
|
|
|
#108 | |||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
bugs? in un linguaggio?
![]() semmai in un solo specifico compilatore, ma a me non sembra di vederne da decenni... l'ultima volta che mi é crashato il compilatore Microsoft é stato quando usavo Visual C++ 6, fine anni '90. Quote:
(non ironico) Quote:
Quote:
|
|||
|
|
|
|
|
#109 | ||||||
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Quote:
Appena ho del tempo lo leggerò, ad ogni modo ci sarebbe ancora da chiedersi allora come mai il paradigma OO ha preso piede rapidamente. In realtà mi sembra evidente che il suo avvicinarsi più all'utente che alla macchina possa rendere liberi di concentrarsi sul problema piuttosto che sulla pura implementazione. Tanto per incominciare le collections, l'accesso ai files e ai vari stream di I/O... poter creare nuovi tipi e controllarne l'accesso, la possibilità di poter usare ereditarietà e polimorfismo che in alcuni casi sono una manna dal cielo. Magari anche per implementare un certo tipo di type safety (ma questo credo si possa fare anche senza costrutti OO). Ogni volta che leggo cose tipo 1+true = 2 inorridisco. Quote:
C'è un SE davanti, non ho mai detto che DEVO farlo per forza. Quote:
Ed in ogni caso è il come lo fa il problema. Quote:
Intendo dire che C++ offre dei costrutti più complicati, di più alto livello, rispetto a C. Quote:
Quote:
Cmq tralasciando l'aspetto prestazionale, che non è oggetto né del topic né della mia considerazione iniziale, quello che voglio dire è che mi piacerebbe poter disporre di un linguaggio basato su C ma rivisto con una sintassi possibilmente lontana anni luce da quella che il C++ usa per implementare l'OO, in tal senso esprimevo la mia curiosità su Go. Ultima modifica di WarDuck : 22-02-2010 alle 22:40. |
||||||
|
|
|
|
|
#110 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Come "bugs" intendo parti contrastanti, imprecise, indefinite nella specifica e nei maggiori compilatori cioè MSVC e g++...
e di quelle ce ne sono un fottio se vai a mettere il naso dove il C++ non dovrebbe. Che so, template + funzioni virtuali? Multiple inheritance? Singleton usate da una DLL? Reflection? 1+true? Le menate che il C++ ti tira addosso sono tantissime, inutile nasconderlo. E dopo aver tentato per parecchio di abbatterle sono giunto alla conclusione che è meglio lasciar stare il can che dorme ![]() PS: se le librerie sono di terze parti non m'importa, tantissime sono gratis e tantissime fanno cose che in altri linguaggi dovresti fare meno efficientemente nel caso migliore, e rifarle da 0 in quello peggiore. Basta dare un occhiata al campo dei giochi, XNA su Xbox sta stretto pure agli indie. PPS @warduck: non mi viene proprio in mente una possibile applicazione moderna che possa davvero essere realizzata con paradigma imperativo... quindi il SE si può benissimo togliere per quanto riguarda dei progetti reali. Ultima modifica di Tommo : 23-02-2010 alle 01:04. |
|
|
|
|
|
#111 |
|
Member
Iscritto dal: Sep 2007
Messaggi: 259
|
Ciao a tutti, lavoro da ormai 3 anni nel mondo dell'informatica e posso dirvi che, a mio parere non c'è un linguaggio in assoluto più utilizzato.
Sicuramente conoscere bene C è un gran vantaggio, dato che in molte aziende unix è pane quotidiano! Tuttavia non possiamo dire di certo che è il più utilizzato, personalmente ora nella mia azienda vedo molte richieste su .NET e java. Conoscere però dei linguaggi di programmazione non è sicuramente la cosa migliore, siamo nell'era della Business Intelligence.... conoscere Business Objects, SAP o anche i vari CRM ti facilita sicuramente la ricerca del lavoro! Ovviamente tengo a precisare che questo è solo un mio parere.... Buona giornata a tutti!
__________________
Ho concluso trattative con: Fuckaldo -- Fede -- HTCPTC ----------------------------------------------------------- Mobo: MSI P43 Neo-F ATX CPU: Intel E7300 2.66Ghz HD 1: Seagate Barracuda 250Gb SATA2 Ram: 2* 1Gb Corsair XMS DDR2 800MHZ Scheda Video: Gigabyte HD5670 1gb DDR5 |
|
|
|
|
|
#112 | |||||||||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() Quote:
Quote:
Quote:
Quote:
per il resto potremmo metterci i templates e i tipi reference, specialmente i primi. volendo, in un certo senso, potremmo metterci anche i namespaces. con l'ultima revisione poi ovviamente ci mettiamo anche le espressioni lambda, che accorciano tantissimo. altro non mi viene in mente; ci sarebbe il foreach ma la Microsoft non l'ha (ancora?) implementato, forse perché neanche serve considerando la funzione for_each e le lambda expressions. Quote:
Quote:
Quote:
![]() Quote:
|
|||||||||
|
|
|
|
|
#113 | |
|
Member
Iscritto dal: Oct 2002
Messaggi: 133
|
Quote:
Mi sembra d'averla gia' vista uesta situazione... Saluto |
|
|
|
|
|
|
#114 | ||||||||
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Quote:
Altrimenti staremmo ancora a programmare con 0 e 1. Quote:
Quote:
Cmq si hai ragione sul fatto che si possano usare linguaggi procedurali di alto livello. Quote:
![]() Ed è di fatto la cosa che giustifica maggiormente il passaggio da C a C++, nonostante: Quote:
Metti queste cose al C, poi... era tanto difficile non fare una sintassi così schifosa per le classi? ![]() Quote:
Quote:
Soprattutto su un forum pubblico, per quanto di nicchia possa essere questa sezione è accessibile al pubblico, non dovrebbe essere vista solo come un circolo privato destinata a pochi eletti. Quote:
.
|
||||||||
|
|
|
|
|
#115 | |||||||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
![]() Quote:
Quote:
Quote:
Quote:
Java, con JNI, può benissimo accedere alle API native per le GUI esposte dal s.o. su cui gira. Sarebbe interessante vedere all'opera una GUI realizzata in Java, ma con le API Win32. Quote:
In realtà non potrà mai esserci nessuna dimostrazione formale della maggior produttività di un paradigma rispetto a un altro. Poi ci sarebbe da tener conto della varietà di implementazioni possibili. Quote:
Fortunatamente noto che le lezioni servono, visto che adesso vedo parlare correttamente di linguaggi in termini di sintassi e semantica. Quote:
Quote:
Quote:
In Python puoi farlo. ![]() Ed è una cosa che non apprezzo, perché avrei preferito un tipo a sé stante, come in Pascal, e la relative bacchettate sulle mani mischiandoli con altri tipi. Il problema è che Python non ha mai avuto un tipo booleano, perché non ne ha mai avuto bisogno (esistono piuttosto espressioni che possono essere logicamente "vere" o "false"). Per tradizione, molti programmatori hanno definito due variabili allo scopo (true/True/TRUE e false/False/FALSE) assegnando loro i valori 1 e 0 rispettivamente. Così, diversi anni dopo, sono stati introdotti i simboli (con Python 3.x sono diventate keyword) True e False negli oggetti built-in standard, facendoli discendere da int in modo da preservare la compatibilità con le applicazioni già esistenti. Quote:
![]() Quote:
![]() Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||||||
|
|
|
|
|
#116 | |||||||||||||||||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Quote:
Quote:
Quote:
Quote:
e comunque io non userei l'aspetto "estetico" della sintassi di un linguaggio come motivazione per non usarlo. Quote:
![]() riformulo meglio: giusto, infatti per esempio anche Visual Basic 6 diceva di essere un linguaggio a oggetti, ma naturalmente oggi ci viene da ridere. quindi, visto che come dici tu c'é modo e modo di aggiungere costrutti ad un linguaggio, hai qualche argomentazione utile riguardo il modo in cui lo fa il C++ (nei confronti del C ovviamente)? sottintendevi forse qualche aspetto negativo di qualche costrutto del C++? tralasciando peró l'aspetto estetico della sintassi per favore (vedi sopra). Quote:
Quote:
![]() non vedo alcun nesso con le frasi precedenti... Quote:
Quote:
Quote:
![]() Quote:
se non lo fa evitiamo di parlarne in astratto perché la fattibilitá di un software non é mai garantita al 100% finché quel software non lo sviluppi e non finisci effettivamente nei vicoli ciechi in cui ti porta. Quote:
Quote:
Quote:
Quote:
Quote:
![]() neanche il C++ l'ha abbandonata. |
|||||||||||||||||
|
|
|
|
|
#117 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12919
|
Sono in un forum pubblico non per lavorare o per fare l'analisi dei requisiti, ma per svago, e non ho intenzione di parlare per mezzo di specifiche formali o sintassi matematica per descrivere i miei gusti.
Mi fa cacare la sintassi di Objective-C e C++, si hai ben detto, nessuno deve stare appresso ai miei gusti semplicemente perché non pretendo che gli altri debbano pensarla come me o tantomeno modificare il loro comportamento sulla base di questo. Poi secondo quale teorema il fatto che mi faccia schifo C++ implica che mi debba piacere Objective-C? D'altronde se a tutti fossero piaciuti i linguaggi di cui parliamo probabilmente non ci sarebbe stato motivo di crearne degli altri. Per la maggior parte dei linguaggi di cui stiamo parlando, la differenza non risiede nella classe di problemi che possono risolvere (che è la stessa), ma è il come lo fanno che li rende diversi, la sintassi che usano per farlo (con dei pro e dei contro naturalmente). Quindi è normale che nel momento che debba scegliere qual è il linguaggio più adatto a risolvere un determinato problema sceglierò quello che mi consente di farlo agevolmente (ergo la cui sintassi mi consenta di farlo in maniera decente e perché no, piacevole alla vista). Direi di chiuderla qui, prometto che mi impegnerò per farmi piacere C++. |
|
|
|
|
|
#118 | |||||||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
Quote:
![]() A parte questo, mi pare evidente dal contesto che si parlasse di implementazioni. Riporto una parte eloquente del tuo precedente messaggio: premettiamo che le questioni di performance non sono legate ai linguaggi di per se', che sono solo specifiche di sintassi, semantica e spesso librerie predefinite.Il contesto mi sembra chiaro (ne ho evidenziato una parte), e la mia risposta pure, visto che esistono implementazioni di Java in cui il bound checking può e viene tranquillamente eliminato, nonostante la semantica del linguaggio la preveda. Quote:
Java HotSpot Server VM OptimizationsUn paper molto interessante sull'argomento lo trovi qui. Ovviamente in 10 anni HotSpot è stato enormemente migliorato, e oggi Java (nella sua migliore incarnazione) ha prestazioni comparabili a quelle del C. Quote:
Su Windows io non dicevo di usare AWT, ma di sfruttare le API Win32 come fanno altri programmi, se vogliamo che l'unica variabile da confrontare rimanga il linguaggio. Quote:
Quote:
Per me è sufficiente che sia ben chiaro il concetto di linguaggio -> sintassi & semantica. Quote:
Battuta infelice, a questo punto. ![]() Quote:
Se prendiamo Perl, chi nega che si possa programmare a oggetti? Ma provate a farlo, e poi ne riparliamo. ![]() A me la sintassi del C++ non piace, e dopo diversi anni non credo che ci siano ancora margini per farmela piacere. Non mi va, punto e basta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||||||
|
|
|
|
|
#119 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
http://shootout.alioth.debian.org/u6...&lang=gcc&id=5 Codice:
enum color_t color_complement(enum color_t c1, enum color_t c2)
{
switch (c1)
{
case color_blue:
switch (c2)
{
case color_blue: return color_blue;
case color_red: return color_yellow;
case color_yellow: return color_red;
}
case color_red:
switch (c2)
{
case color_blue: return color_yellow;
case color_red: return color_red;
case color_yellow: return color_blue;
}
case color_yellow:
switch (c2)
{
case color_blue: return color_red;
case color_red: return color_blue;
case color_yellow: return color_yellow;
}
}
assert(0);
return 0;
}
PS: mi sono fermato al primo codice |
|
|
|
|
|
|
#120 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non che le versioni per gli altri linguaggi siano migliori, eh!
Molti traducono l'algoritmo pari pari.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:41.

























