PDA

View Full Version : Rilasciato Mono 2.8 con pieno supporto a C# 4.0


Redazione di Hardware Upg
11-10-2010, 09:21
Link alla notizia: http://www.hwfiles.it/news/rilasciato-mono-28-con-pieno-supporto-a-c-40_34013.html

E' stata da poco rilasciata la versione 2.8 di Mono. Tra le principali novità il pieno supporto alle specifiche di C# 4.0 ed una più efficiente implementazione del garbage collector


Click sul link per visualizzare la notizia.

pabloski
11-10-2010, 09:39
imho le due più importanti novità sono "poter utilizzare LLVM per l'esecuzione del codice" e "compilazione ahead-of-time (AOT) per piattaforme x86"

questo vuol dire che in un sol colpo ci si libera di tutti i problemi relativi a licenze e brevetti di ms, che in futuro potrebbe usare per stritolare l'ecosistema open se mono si diffondesse a sufficienza

non sono d'accordo su questo "poter riutilizzare le proprie conoscenze e buona parte del codice già scritto per Windows"....su windows c'è più codice scritto in java che in uno dei linguaggi dot net

insane74
11-10-2010, 09:57
peccato che non ci sono i pacchetti aggiornati per ubuntu (anche la 10.10 rimane alla 2.6.7).

homero
11-10-2010, 10:01
10 anni per uno sviluppo incompleto ma chi ha tanto dempo da perdere?
e chi oggi si mette a programmare in .net? a questo punto meglio programmare in python...

Human_Sorrow
11-10-2010, 10:14
....su windows c'è più codice scritto in java che in uno dei linguaggi dot net


e chi oggi si mette a programmare in .net? a questo punto meglio programmare in python...

Ragazzi, informatevi un po' meglio va là ... :doh:

Riccardo82
11-10-2010, 10:19
aggiungo solo una cosa al commento di Human_Sorrow...

...anzi no lasciamo perdere, l'icona che ha messo Human_Sorrow è sufficientemente esaustiva...

insane74
11-10-2010, 10:23
Ragazzi, informatevi un po' meglio va là ... :doh:

aggiungo solo una cosa al commento di Human_Sorrow...

...anzi no lasciamo perdere, l'icona che ha messo Human_Sorrow è sufficientemente esaustiva...

tra l'altro basterebbe andare su un sito di ricerca offerte di lavoro e cercare ".NET" e "python" per rendersi conto della situazione attuale (almeno in italia).

Master_T
11-10-2010, 10:31
La cosa che mi manca in Mono è l'implementazione di WPF, senza la quale si perde molto (a meno che non si stia sviluppando qualcosa senza interfaccia), tocca appoggiarsi a GTK# o Qt(Qyoto), che non sono la stessa cosa imho (anche se Qt è la "next best thing" come libreria grafica, però wrappata per l'uso con .NET perde molto). Purtroppo da quel che so non hanno intenzione di implementare WPF, anche perchè sarebbe probabilmente un lavoraccio assurdo...

nico159
11-10-2010, 10:42
10 anni per uno sviluppo incompleto ma chi ha tanto dempo da perdere?
e chi oggi si mette a programmare in .net? a questo punto meglio programmare in python...
Avvisami quando avranno trovato una soluzione che permetterà di sviluppare sul web con Python 3, dato che ad oggi, a distanza di più di un anno, non è possibile sviluppare per il web usando Python 3
O per lo meno che sia usabile per qualcosa di complesso, dato che i moduli non ci sono :)

Oppure quando avranno un compilatore JIT dentro CPython
Oppure quando avranno il supporto per operazioni asincrone nella libreria standard e sarà standardizzato, e non bisognerà scegliere tra Twisted, Kamelia, Torndado, Circuit, Eventlet, GEvent...ovviamente ognuno richiede che i moduli da usare insieme siano appositi! Eh altrimenti blocchi l'esecuzione. Un modulo per Mysql per Twisted apposita, un altro per Tornado, un altro per Eventlet
Oppure quando sarà possibile aggiornare Python su Linux senza che che incarti tutto
Oppure quando avranno rimosso il GIL, che non permette di scrivere software che esegue operazioni in parallelo su CPython. E non solo! Se usi i threads su un server multicore, le prestazioni peggiorano e di molto. Multiprocessing? Ma se .Net offre le Parallel Extensions
Oppure quando...

Tornando IT
Sono contento di questo rilascio, i miei complimenti alle capaci persone dietro Mono ;)
Le novità per me più importanti oltre al supporto C# 4.0, sono: il nuovo garbage collector e le Parallel Extensions

jappilas
11-10-2010, 11:20
una più efficiente implementazione del garbage collector

non è solo una questione di efficienza, si tratta proprio di risolvere un problema dell' attuale garbage collector, prono a frammentazione della heap

da http://www.mono-project.com/FAQ:_ASP.NET
Mono currently uses a conservative, non-moving, non-compacting garbage collector. This means that the heap is not compacted when memory is released. This means that applications can produce memory allocation patterns that will effectively make the process grow, just like C, C++, Perl, Python applications would.
It is hence important to not get into patterns that would create these holes, for example such a hole could be created if you create a block of size SIZE, release it, and then create two blocks of size SIZE/2+1.
ora, un garbage collector che nella mia applicazione ASP.NET (per la quale sarà presumibilmente normale a runtime creare continuamente sessioni, oggetti, ... ) mi porti ad avere una situazione del genere (sostanzialmente un memory leak ) e mi imponga di rivedere i miei pattern di utilizzo della memoria stessa per poterla far girare su una piattaforma diversa dal runtime .net microsoft (il cui garbage collector non dà questo problema) può in effetti fare la differenza tra il potere vs il non poter usare Mono ...

insane74
11-10-2010, 11:24
Avvisami quando avranno trovato una soluzione che permetterà di sviluppare sul web con Python 3, dato che ad oggi, a distanza di più di un anno, non è possibile sviluppare per il web usando Python 3
O per lo meno che sia usabile per qualcosa di complesso, dato che i moduli non ci sono :)

Oppure quando avranno un compilatore JIT dentro CPython
Oppure quando avranno il supporto per operazioni asincrone nella libreria standard e sarà standardizzato, e non bisognerà scegliere tra Twisted, Kamelia, Torndado, Circuit, Eventlet, GEvent...ovviamente ognuno richiede che i moduli da usare insieme siano appositi! Eh altrimenti blocchi l'esecuzione. Un modulo per Mysql per Twisted apposita, un altro per Tornado, un altro per Eventlet
Oppure quando sarà possibile aggiornare Python su Linux senza che che incarti tutto
Oppure quando avranno rimosso il GIL, che non permette di scrivere software che esegue operazioni in parallelo su CPython. E non solo! Se usi i threads su un server multicore, le prestazioni peggiorano e di molto. Multiprocessing? Ma se .Net offre le Parallel Extensions
Oppure quando...

Tornando IT
Sono contento di questo rilascio, i miei complimenti alle capaci persone dietro Mono ;)
Le novità per me più importanti oltre al supporto C# 4.0, sono: il nuovo garbage collector e le Parallel Extensions

tra l'altro quando guardo i test di questa pagina http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=csharp&lang2=python3 mi vien sempre da ridere...
python3 194 volte più lento di mono... :mc:

nico159
11-10-2010, 11:25
non è solo una questione di efficienza, si tratta proprio di risolvere un problema dell' attuale garbage collector, prono a frammentazione della heap

da http://www.mono-project.com/FAQ:_ASP.NET

ora, un garbage collector che nella mia applicazione ASP.NET (per la quale sarà presumibilmente normale a runtime creare continuamente sessioni, oggetti, ... ) mi porti ad avere una situazione del genere (sostanzialmente un memory leak ) e mi imponga di rivedere i miei pattern di utilizzo della memoria stessa per poterla far girare su una piattaforma diversa dal runtime .net microsoft (il cui garbage collector non dà questo problema) può in effetti fare la differenza tra il potere vs il non poter usare Mono ...
Hai provato il 2.8 abilitando il nuovo GC?
http://www.mono-project.com/Release_Notes_Mono_2.8#New_Garbage_Collector

pabloski
11-10-2010, 11:30
@Human_Sorrow: non mi pare di aver scritto una castroneria, visto che java è il primo linguaggio al mondo per utilizzo

capisco che in Italia c'è una sorta di microsoft distortion field, per cui sembra che microsoft abbia creato il cielo e la terra e quindi tutto nasce e deriva da microsoft

dove lavoro io si usa java al 90%, altre società collegate e con cui trattiamo usano java, il middleware è tutto in java, oracle supporta java

ti pare davvero così strana l'affermazione secondo cui java è più diffuso di .net?

del resto ms è la prima a non usare .net in windows, cosa dimostrata da bug come quello dei file .lnk ( se avessero usato .net quel buffer overflow non ci sarebbe stato )

se guardi su monster e siti simili trovi molte più richieste di lavoro per java che per .net, quindi non capisco il senso del tuo commento

pabloski
11-10-2010, 11:35
@insane74: il confronto è tra un linguaggio interpretato e un framework che usa compilazione jit

se confronti pypy con mono già le cose cambiano....e pensa che pypy non si avvicina nemmeno alle capacità di ottimizzazione di mono

poi c'è l'onnipresente java che batte mono....addirittura scala è più veloce di mono

per come la vedo io, il futuro non microsoft è di llvm, che verrà usato sempre più per implementare compilatori jit per i più svariati linguaggi dinamici e non

Superboy
11-10-2010, 11:41
"Un'altra interessante aggiunta è il supporto alla compilazione ahead-of-time (AOT) per piattaforme x86, che offre la possibilità di far convertire il codice intermedio in linguaggio .NET in codice nativo a runtime."

Il JIT gia era presente e gia permette di compilare il codice a runtime e non interpretarlo. AOT compila il codice prima che ne sia richiesta l'esecuzione.

insane74
11-10-2010, 11:47
@insane74: il confronto è tra un linguaggio interpretato e un framework che usa compilazione jit

se confronti pypy con mono già le cose cambiano....e pensa che pypy non si avvicina nemmeno alle capacità di ottimizzazione di mono

poi c'è l'onnipresente java che batte mono....addirittura scala è più veloce di mono

per come la vedo io, il futuro non microsoft è di llvm, che verrà usato sempre più per implementare compilatori jit per i più svariati linguaggi dinamici e non

java non è sempre + veloce di mono: http://shootout.alioth.debian.org/u64q/benchmark.php?test=all&lang=csharp&lang2=javaxint

cmq, non stiamo a tirar fuori il righello! :D
la mia era solo una risposta a "che senso ha programmare in .NET, meglio python".
ad ognuno il suo, ma come sempre, ritengo che avere la possibilità, anche su linux, di scrivere sw in C#/.NET sia un "+", e non certo un "-".

pabloski
11-10-2010, 14:35
java non è sempre + veloce di mono: http://shootout.alioth.debian.org/u...;lang2=javaxint

cmq, non stiamo a tirar fuori il righello!
la mia era solo una risposta a "che senso ha programmare in .NET, meglio python".
ad ognuno il suo, ma come sempre, ritengo che avere la possibilità, anche su linux, di scrivere sw in C#/.NET sia un "+", e non certo un "-".

ovviamente è sempre meglio avere più possibilità

python secondo me è un linguaggio molto capace e per scrivere rapidamente software è insostituibile

fino ad oggi non è mai stata curata la parte che riguarda le performance e a nessuno è venuto in mente di compilare il codice python, magari con una bel compilatore jit sotto

credo che se python fosse più veloce allora riuscirebbe davvero a conquistare un bel pò di programmatori

tra java e mono francamente non so quale dei due sia legalmente più pericoloso...da un lato Ellison dall'altro Ballmer....francamente di gente così non mi fiderei mai

per fortuna java può essere sostituito da scala per cui è in sviluppo un port su llvm e così ci leviamo dalle scatole anche la java virtual machine

insane74
11-10-2010, 14:42
ovviamente è sempre meglio avere più possibilità

python secondo me è un linguaggio molto capace e per scrivere rapidamente software è insostituibile

fino ad oggi non è mai stata curata la parte che riguarda le performance e a nessuno è venuto in mente di compilare il codice python, magari con una bel compilatore jit sotto

credo che se python fosse più veloce allora riuscirebbe davvero a conquistare un bel pò di programmatori

tra java e mono francamente non so quale dei due sia legalmente più pericoloso...da un lato Ellison dall'altro Ballmer....francamente di gente così non mi fiderei mai

per fortuna java può essere sostituito da scala per cui è in sviluppo un port su llvm e così ci leviamo dalle scatole anche la java virtual machine

alla fin fine l'importante è avere molte frecce nel proprio arco.
poi conta la mira! :p

PS: lavoro in una società "win only", si sviluppa principalmente con sw M$. visto che "me tocca", se nel tempo libero riesco a scrivere 2 righe per il pinguino, che linguaggio dovrei usare? impararne uno nuovo da 0 o "riutilizzare" le mie (poche! :cry: ) skill? poter usare mono è un'ottima cosa, imho! ;)

LMCH
11-10-2010, 17:42
La cosa che mi manca in Mono è l'implementazione di WPF, senza la quale si perde molto (a meno che non si stia sviluppando qualcosa senza interfaccia), tocca appoggiarsi a GTK# o Qt(Qyoto), che non sono la stessa cosa imho (anche se Qt è la "next best thing" come libreria grafica, però wrappata per l'uso con .NET perde molto). Purtroppo da quel che so non hanno intenzione di implementare WPF, anche perchè sarebbe probabilmente un lavoraccio assurdo...

Per quel che mi riguarda, da quando Qt è utilizzabile con licenza LGPL, sia Java che .Net (e Mono) possono sparire. :banned:
Molti pensano che Qt sia solo una libreria grafica, ma in realtà è diventato un framework decisamente più completo e multipiattaforma di quanto siano Java e .Net.

Sia Java che .Net sono una triade costituita da linguaggio "preferenziale" (java oppure C#) + librerie + runtime base e buona parte della "facilità d'uso" di entrambi non dipende dal linguaggio di programmazione, ma dalle librerie e dal runtime.
Eppure molti confrontano Java/.Net con C++ "liscio" (al massimo abbinato con le STL) e concludono che C++ è "vecchio", "primitivo", ecc. :muro:

Se invece si prende in considerazione il "pacchetto completo" Qt e C++ (usando preferenzialmente le funzionalità e gli oggetti forniti da Qt) le cose cambiano completamente. :D

DeAndreon
11-10-2010, 20:40
Il python fa ridere come tante altre cose open... Strano che mono stia proseguendo per la retta strada... Di solito le cose open impiegano molti anni per poi alla fine concludere niente...

Chukie
11-10-2010, 23:44
del resto ms è la prima a non usare .net in windows, cosa dimostrata da bug come quello dei file .lnk ( se avessero usato .net quel buffer overflow non ci sarebbe stato )

Difatti il buffer overflow non c'entra nulla con il bug dei file .lnk :asd:

cristo1976
12-10-2010, 09:02
Scusate ragazzi una domanda da profano...ma Ruby Rails che fine ha fatto?
Doveva essere una valida alternativa (soprattutto in ambiente Linux e derivati) per lo sviluppo web...

WarDuck
12-10-2010, 10:01
[..]
del resto ms è la prima a non usare .net in windows, cosa dimostrata da bug come quello dei file .lnk ( se avessero usato .net quel buffer overflow non ci sarebbe stato )
[..]

E questo cosa c'entra?

.NET è un framework managed e ha gli stessi pregi e difetti di altri framework managed.

Se Microsoft non credesse a .NET non saremmo arrivati in pochi anni a .NET 4.0.

Nel frattempo Java (e la JVM) stanno a guardare, tant'è che molti sviluppatori si sono posti il problema se fosse il caso di passare ad altro, e il candidato migliore sotto Windows è proprio .NET.

Inutile che ti stia ad elencare le feature di .NET, dato che per molte cose è superiore a Java.

Senza contare il vantaggio di avere un IDE come Visual Studio.

@LMCH: esistono dei bindings Qt per Java? Chiedo perché uno dei difetti di Java secondo me è proprio Swing... è chiaro che serve anche un IDE che le supporti come cristo comanda, non è un caso l'esistenza di un'estensione Qt per Visual Studio, anche se non so a che livello sia.

Python è un linguaggio dinamico, e si porta appresso pregi e difetti dei linguaggi dinamici (tra cui IDE che non riescono sempre a capire il tipo delle variabili).

insane74
12-10-2010, 10:52
cmq prima di "inseguire" M$ nell'introdurre nuove feature del linguaggio in sè, dovrebbero cercare di colmare il gap con il framework: http://go-mono.com/status/

spulciando un pò mancano un CASINO di metodi/classi/ecc ecc.
diventa un pò difficile sviluppare dovendo spulciare cosa si può chiamare o meno... :mc:

jappilas
12-10-2010, 10:52
Senza contare il vantaggio di avere un IDE come Visual Studio.o il vantaggio di potere mescolare assembly realizzati in linguaggi diversi all' interno di uno stesso progetto, o di importare classi e metodi da qualunque linguaggio, senza senza bisogno di binding (grazie al runtime e all' object model comune) - che poi è il senso di un framework nato per essere cross language, piuttosto che cross platform (caso di java)

a volte ci si dimentica che C# è nato con .Net, ma .Net non è sinonimo di C#...
esistono dei bindings Qt per Java?
teoricamente ci sarebbero Jambi (http://qtjambi.sourceforge.net/), un tempo di trolltech, ma ora sotto "community support" (motivo per cui non so quanto ci si può scommettere per progetti commerciali) - o qtjava (http://sourceforge.net/projects/qtjava/), ma ci scommetterei ancora meno
Chiedo perché uno dei difetti di Java secondo me è proprio Swing... pienamente d' accordo - infatti non lo uso e non conosco nessuno che ne faccia uso :D
è chiaro che serve anche un IDE che le supporti come cristo comanda, non è un caso l'esistenza di un'estensione Qt per Visual Studio, anche se non so a che livello sia.
un plugin esiste anche per Eclipse con CDT (http://qt.nokia.com/developer/eclipse-integration/) ;)

WillianG83
12-10-2010, 12:05
ops doppia pubblicazione
scusate

WillianG83
12-10-2010, 12:08
ovviamente è sempre meglio avere più possibilità

python secondo me è un linguaggio molto capace e per scrivere rapidamente software è insostituibile

fino ad oggi non è mai stata curata la parte che riguarda le performance e a nessuno è venuto in mente di compilare il codice python, magari con una bel compilatore jit sotto

credo che se python fosse più veloce allora riuscirebbe davvero a conquistare un bel pò di programmatori

tra java e mono francamente non so quale dei due sia legalmente più pericoloso...da un lato Ellison dall'altro Ballmer....francamente di gente così non mi fiderei mai

per fortuna java può essere sostituito da scala per cui è in sviluppo un port su llvm e così ci leviamo dalle scatole anche la java virtual machine

Come già detto da qualcuno in tanti stanno abbandonando java per passare ad altro visto che, fatti alla mano, quelli della sun si erano nascosti dietro al muro della portabilità e sono stati a guardare mentre C# cresceva notevolmente e java NO, non a caso diverse università in america, uk e non solo hanno ridotto l'impiego di java e hanno incrementato notevolmente l'impiego di c# visto che lo trovi, o meglio è utilizzato, in tanti tipi di applicazioni (cellulari, giochi, web, app, controllori, ecc...) e tutto questo è ironico visto che java era nato appunto per quello ma si era stagnato soprattutto a causa di sun. Purtroppo in italia tanti hanno ancora sta pseudo teoria che java è il top se si parla di net cosa che non è più così, e tante università italiane forzano ancora fortemente java offrendo come unico linguaggio ad oggetti (al massimo fanno un corso di 3 mesi di c/c++ all'ultimo anno).

Forse con oracle java ritornerà forte come una volta ma ora come ora java ha perso tantissimo terreno sia nelle università che in ambienti di lavoro, non a caso dalle ultime ricerche è apparso che diverse sh INTERNAZIONALI sono ritornate al buon vecchio c proprio dopo aver abbandonato java ed io non posso che condividere, poi magari i miei colleghi si arrabiano quando leggono articoli che penalizzano il java proprio perchè hanno studiato in italia e sono java dipendenti.

Se non sai queste cose dovresti informarti meglio...senza offese ehhh

jappilas
12-10-2010, 12:13
Per quel che mi riguarda, da quando Qt è utilizzabile con licenza LGPL, sia Java che .Net (e Mono) possono sparire. :banned: sono tre cose diverse nate in modo diverso e che ancora risolvono tre problemi diversi, perchè mai ne dovrebbe sparire una?
Molti pensano che Qt sia solo una libreria grafica, ma in realtà è diventato un framework decisamente più completo e multipiattaforma di quanto siano Java e .Net.(ma anche molto più complesso, contorto e inefficiente rispetto ai suoi inizi di toolkit grafico dalla semplice API, a detta di molti - ma a parte ciò)
Molti pensano che .Net debba intrinsecamente essere multipiattaforma... quando quello è lo scopo per cui Java è nato ("write once, run everywhere"), ma non .Net - lo scopo di .Net era di fornire un framework nuovo (con cui nel tempo sostituire o affiancare le varie WinAPI, MFC, eccetera) ai linguaggi che Microsoft all' epoca aveva già in casa ( C++, Visual Basic, Visual J e COBOL - resi poi managed o integrati al runtime) oltre ad eventuali nuovi - quindi doveva essere in primis un set di API accessibile da parte di vari linguaggi, quindi attraverso un runtime e un object model comune
ora, se l' implementazione di quest' ultimo avrebbe permesso (anche in virtù della presenza del bytecode) una più facile portabilità, tanto meglio, ma non era nelle intenzioni originarie
Sia Java che .Net sono una triade costituita da linguaggio "preferenziale" (java oppure C#) + librerie + runtime base e buona parte della "facilità d'uso" di entrambi non dipende dal linguaggio di programmazione, ma dalle librerie e dal runtime.sbagli prospettiva, nel caso di .Net la triade è costituita da Framework (vedi sopra), Runtime, e infine, linguaggio managed preferenziale in ordine di importanza al momento della nascita, non viceversa ;)
Eppure molti confrontano Java/.Net con C++ "liscio" (al massimo abbinato con le STL) e concludono che C++ è "vecchio", "primitivo", ecc. :muro: a parte che è oggettivamente vero (se non altro per ragioni storiche, ma anche se si va a vedere i paradigmi e il funzionamento alla base)
Se invece si prende in considerazione il "pacchetto completo" Qt e C++ (usando preferenzialmente le funzionalità e gli oggetti forniti da Qt) le cose cambiano completamente. :Dma QT per quanto funzionale non può essere considerata una libreria "ufficiale", o parte dello standard del C++ (che peraltro è costretta a estendere con una sintassi e un preprocessore non standard, per il binding degli eventi), indubbiamente meno della STL o delle librerie Boost
per cui il confronto con .Net e Java, framework onnicomprensivi (con cui le stesse Boost non sono sempre sovrapponibili, anzi) ma soprattutto standard, non è così mal posto...

Mason
12-10-2010, 16:10
perche python equiparato a java/c#?

python nasce come linguaggio di scripting (cgi?) (pulgin di programmi c, java scritti in python), gli altri sono linguaggi per sviluppo software completo.

killercode
12-10-2010, 21:54
perche python equiparato a java/c#?

python nasce come linguaggio di scripting (cgi?) (pulgin di programmi c, java scritti in python), gli altri sono linguaggi per sviluppo software completo.

Si, infatti è un confronto assurdo