View Full Version : [NEWBIE] si può riscrivere un software per win per farlo girare sotto LINUX?
cari ragazzi,
sto scrivendo una tesi sulle pratiche antimonopolistiche di Microsoft.
Visto che per esempio Windows XP inizia ad integrare software già ampiamente prodotto da terzi (come ad esempio NERO), mi domandavo se fosse possibile far girare un software scritto appositamente per Win sotto sistemi alternativi come Mac OS e Linux,
riutilizzando parti del codice e senza doverlo riscrivere da zero.
Tra l'altro so che esistono dei software in grado di girare tranquillamente su tutti i sistemi (a patto di essere scritti con un linguaggio compatibile) ed anche in questo caso non ho capito se sia esattamente lo stesso identico software o contenga "adattamenti".
Un grazie a chi riuscirà a far luce sui miei dubbi.
Mr.Paschi!
01-04-2005, 18:30
I programmi scritti in java funzionano dappertutto.. che l'os sia win o linux..(almeno dovrebbe essere così...è nato proprio per questo)
..ma da quando windows integra il nero? :confused:
Il linguaggio in cui sono scritti la maggior parte degli applicativi è quasi sempre lo stesso, di fatto c'è chi lo fa proprio e chi prosegue sulla strada dell'open source....;)
I programmi scritti in java funzionano dappertutto.. che l'os sia win o linux..(almeno dovrebbe essere così...è nato proprio per questo)
ok grazie..mi riferivo solo al fatto della possibilità di masterizzare cd offerta da winxp...certo è sicuro che NERO sia un altro paio di maniche
Il linguaggio in cui sono scritti la maggior parte degli applicativi è quasi sempre lo stesso, di fatto c'è chi lo fa proprio e chi prosegue sulla strada dell'open source...
ok...forse mi spiego meglio con un esempio.
Sono una azienda di video-editing ed utilizzo software ADOBE sotto Windows;
un giorno mi arrabbio e decido di cacciare nel cesso Winzozz...
chiamo la Adobe e chiedo se i loro software girano sotto LINUX....
e come me fanno altre 30 aziende.
Quanto ore occorrerebbero in termini di ore uomo-pc rilasciare una versione compatibile con Linux?
lo chiedo per l'appunto a voi proprio perchè ne "scrivete" e sapete quanto tempo è necessario
....bisogna riscrivere il software da capo o si potrebbero riutilizzare parti del codice della versione per Win e se si su quali percentuali siamo?
grazie....:)
be la parte di codice importante del programma, cioè quello che si occupa delle operazioni diciamo matematiche o logiche è piuttosto trasportabile con degli adattamenti, come le parti che eseguono operazioni standard come lettura e scrittura su un file...
La parte non trasportabile è la parte grafica che su altri sistemi funziona in modo diverso è la struttura a messaggistica che non tutti i sistemi hanno.... inoltre conta anche il linguaggio che si utilizza, se usi visual c tenendoti su cose piuttosto standard puoi facilmente trasportare, ma dal momento che un programma viene sviluppato con MFC(Microsoft foundation Class) o ancora peggio con visual basic che posside una struttura forzata dentro gli eventi e la messaggistica di windows è molto più difficile trasportare un programma.
Comunque esistono sempre gli emulatori per portarsi dietro i programmi da un sistema ad un'altro ciao..
Originariamente inviato da peciuz
....bisogna riscrivere il software da capo o si potrebbero riutilizzare parti del codice della versione per Win e se si su quali percentuali siamo?
il discorso è molto lungo.
Se il software è scritto in un lingaggio come Java, che fa dell'essere multipiattaforma uno dei suoi cavalli di battaglia il problema non si pone perche' puo' girare senza modifiche (o quasi) su tutte le piattaforme per cui esiste una virtual machine.
In caso contrario il processo di porting puo' essere più o meno faticoso a seconda di come e' stato scritto il software. Se per esempio usa librerie per cui esistono versioni sia linux che windows (tipo sdl ad esempio , oppure QT per le librerie grafiche) le modifiche di solito sono marginali. Viceversa se è stato scritto usando pesantemente le caratteristiche della piattaforma primaria (come ad esempio per software che usa le MFC) in pratica la riscrittura e' quasi completa.
Esistono poi infinite "vie di mezzo", diciamo che un buon risultato puo' essere già quello di isolare le parti portabili (magari quelle che contengono la logica dell'applicativo) da quelle che non lo sono (spesso le GUI, come abbiamo detto).
ilsensine
01-04-2005, 21:46
Originariamente inviato da peciuz
Quanto ore occorrerebbero in termini di ore uomo-pc rilasciare una versione compatibile con Linux?
Tanto.
Se invece il software è stato pensato già in partenza per essere cross-platform (utilizzando quindi toolkit e librerie di astrazione presenti su più s/o), molto poco. Non è un caso frequente, purtroppo; solo ultimamente i produttori sw stanno prendendo in considerazione linux, e quindi la programmazione cross-platform.
grazie a tutti per aver tentato di chiarire ad un maxi-ignorante in materia dei concetti fondamentali
per tglman: ok con il discorso degli emulatori che probabilmente diciamo che bypassano il problema tuttavia avrei qualche dubbio tipo:
winex (o come si chiama l'emulatore dello zozzone per il pinguino) viene gestito tranquillamente in finestra? o lavora in un modo particolare tipo aut/aut ossia se sto emulando non posso giocare a scacchi contro il pinguino....
per Kingv: si hai ragione che il discorso sarebbe molto lungo e mi spiace rompere le palle con quesiti tutto sommato stupidi...per andare dentro al quesito mi interesserebbe capire se i programmi + diffusi scritti per windows e utilizzati in ambiti lavorativi specifici - pensavo per l'appunto a molti software adobe oppure autocad - sono a struttura molto rigida o diciamo "elastica"....( si scusa questo perkè immaginerei le facce della commissione di fronte a frasi tipo "il processo di porting"....... :D :D )
per ilsensine: ecco si appunto questo è uno degli argomenti interessanti da trattare...la miopia degli altri produttori di software che tacitamente ha rafforzato il monolio di zio bill....
Originariamente inviato da peciuz
per Kingv: si hai ragione che il discorso sarebbe molto lungo e mi spiace rompere le palle con quesiti tutto sommato stupidi...per andare dentro al quesito mi interesserebbe capire se i programmi + diffusi scritti per windows e utilizzati in ambiti lavorativi specifici - pensavo per l'appunto a molti software adobe oppure autocad - sono a struttura molto rigida o diciamo "elastica"....( si scusa questo perkè immaginerei le facce della commissione di fronte a frasi tipo "il processo di porting"....... :D :D )
non era una critica al tuo post, solo che non sempre e' possibile rispondere con un post di tre pagine a un quesito, anche se interessante.
Purtroppo non ho sottomano dei link sull'argomento.
Adobe ha fatto un porting notevole dell'ultima versione di Acrobat Reader per linux ma ad occhio gli deve essere costato uno sforzo considerevole ;)
Come detto da ilsensine dipende dalla mentalità con cui è stato progettato il software... La parte più critica è la gestione dell'interfaccia grafica... Programmare sotto Windows con la API sicuramente è molto diverso da realizzare un'interfaccia sotto X o KDE... Non solo le chiamate, ma il modo di concepire il programma in toto...
Se si affida la gestione dell'interfaccia grafica almeno parzialmente ad un framework multipiattaforma come GTK+, Fox Toolkit, QT, wxWidgets o, al limite, le librerie portabili di Borland...le differenze si riducono a qualche comando specifico...o al massimo a prevedere moduli specifici per ogni SO mantenendo comunque la stessa interfaccia con il programma principale... In questo modo si riesce a mantenere una grande percentuale di codice passando da una piattaforma all'altra...
Sicuramente danno una mano sotto questo punto di vista i linguaggi di programmazione ad oggetti, che permettono di aumentare notevolmente il livello di astrazione logica dal sistema operativo...
non era una critica al tuo post, solo che non sempre e' possibile rispondere con un post di tre pagine a un quesito, anche se interessante.
si si ma io infatti immaginavo che questo quesito necessitasse una rispostona interminabile e tra l'altro sarebbe stata di difficile comprensione per un profano assoluto come me...cmq già mi state dando una traccia interessante
. La parte più critica è la gestione dell'interfaccia grafica... Programmare sotto Windows con la API sicuramente è molto diverso da realizzare un'interfaccia sotto X o KDE... Non solo le chiamate, ma il modo di concepire il programma in toto... Se si affida la gestione dell'interfaccia grafica almeno parzialmente ad un framework multipiattaforma come GTK+, Fox Toolkit, QT, wxWidgets o, al limite, le librerie portabili di Borland...le differenze si riducono a qualche comando specifico...o al massimo a prevedere moduli specifici per ogni SO mantenendo comunque la stessa interfaccia con il programma principale... In questo modo si riesce a mantenere una grande percentuale di codice passando da una piattaforma all'altra...
grazie mille mod.. da quello che ho capito se la gui viene pensata in maniera aperta il lavoro si riduce alla riscrittura del "sottostante" (si vuol dire altro ma capiamoci) mentre se uno ha iniziato a scrivere un programma pensato per girare sotto winzozz poi per portarlo dietro su altri so deve faticare non poco....(sempre in dipendenza dal linguaggio preferito dallo sviluppatore)
Sicuramente danno una mano sotto questo punto di vista i linguaggi di programmazione ad oggetti, che permettono di aumentare notevolmente il livello di astrazione logica dal sistema operativo...
potresti farmi un esempio e dire a tuo giudizio e in percentuale quanto software viene scritto con gli oggetti (java è incluso in questo insieme?)
Originariamente inviato da peciuz
grazie mille mod.. da quello che ho capito se la gui viene pensata in maniera aperta il lavoro si riduce alla riscrittura del "sottostante" (si vuol dire altro ma capiamoci) mentre se uno ha iniziato a scrivere un programma pensato per girare sotto winzozz poi per portarlo dietro su altri so deve faticare non poco....(sempre in dipendenza dal linguaggio preferito dallo sviluppatore)
Sì, ma non solo... Se ad esempio creiamo un programma di fotoritocco...e lo pensiamo con un livello di astrazione tale da non fare suppoosizioni su quale sistema operativo il programma gira fino alle più piccole porzioni di progetto...allora fino a quel livello il codice sarà tutto portabile... Possiamo affidarci ad un framework multipiattaforma per la gestione dell'interfaccia grafica... Se ad esempio vogliamo accedere in modo più preciso alle routine di gestione del mouse o alle routine della gestione dei pixel per togliere diversi layer di software (che chiaramente rendono il tutto più lento)...possiamo saltare il framwork multipliattaforma ed usare direttamente l'interfacciaci fornita dal SO... Ovviamente in questo modulo del programma ci sarà una incomapatibilità fra le varie versioni da gestire... Questa incompatibilità potrà essere gestita ad esempio tramite un modulo che fornisce la stessa interfaccia verso il programmatore su tutti i SO (definendo strutture dati personalizzate, che dovranno poi essere convertite in quelle relative ad ogni SO), mentre compila codice diverso a seconda del SO...
Originariamente inviato da peciuz
potresti farmi un esempio e dire a tuo giudizio e in percentuale quanto software viene scritto con gli oggetti (java è incluso in questo insieme?)
Nelle esempio sopra diciamo che potresti sfruttare il 90% del codice...fermo restando che comunque si potrebbe fare una versione di codice che compila senza distinzione sia su Win che su Linux...
In altri casi magari solo quello dell'interfaccia... Dipende da che percentuale di programma lavora con i dati e che percentuale lavora interfacciandosi con il sistema operativo richiedendo servizi diversi da quelli forniti con la libreria standard del linguaggio...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.