Newsgroup: it.comp.os.linux.development
Titolo: multipiattaforma

Gentili utenti,
dato il mio lavoro ho praticamente sempre usato win e unix, ma ho sempre
programmato in ambiete unix, linux in primis.
Come sapete usando ansi c e' facile convertire il codice e farlo girare su
piu' piattaforme.
ora la mia domanda si articolerà come segue.
DATE COME PREMESSE:
- Vorrei usare C o C++, in quanto i programmi che scrivo fanno
essenzialmente colcoli, e in quanto il tempo di calcolo che richiedo e'
assai alto.
- Il programma deve funzionare da linea di comando.
- Vorrei pure fare un front end successivamente
- Il programma deve assolutmanete girare su Windows, Unix e Mac OSX.
CHIEDO CORTESEMENTE:
- l'unica soluzione plausibile e' e resta l'ANSI C?
- un ANSI C++ eiste ed ed effettivamente "multipiattaformabile"?
- Esiste un tool commerciale o no che mi permetta di sviluppare codice (C o
C++) multipiattaforma?
Grazie della cortese attenzione
A bientot

 - un ANSI C++ eiste ed ed effettivamente "multipiattaformabile"?
Non ho mai trovato un programma che si riuscisse a ricompilare su
diverse piattaforme senza nessuna modifica.
Davide
-- 
Linux: The choice of a GNU generation

 diverse piattaforme senza nessuna modifica.
Senza alcuna modifica e' ovviamente improponibile. io intendevo dire con
pochissime modifiche

 diverse piattaforme senza nessuna modifica.
#include <iostream>
int main() {
  std::cout<<"Hello world!"<<std::endl;
}
ok, just jocking
-- 
14/12/2004 | -3 all' alba!

 - l'unica soluzione plausibile e' e resta l'ANSI C?
fortran 95 ?

> fortran 95 ?
non e' come sai un linguaggio assai moderno,
avra pure delle ottime funzionalità,
ma la sua usabilità e' ormai ristressa ad ambiti accademici molto
particolari.
grazie comunque

 diverse piattaforme senza nessuna modifica.
imho automake / autoconf risolvono il problema alla radice.
-- 
La morfologia degli artisti e dei geni e' quella di non aver paura di
provare.
                -- Gianpiero Ariano

 imho automake / autoconf risolvono il problema alla radice.
Voglio vederti a far girare autoconf/automake su Windows...
Davide
-- 
I'm a geek with a journalism degree. I suppose that makes me overqualified
for a job with ZDNet. Darn. -- From a Slashdot.org post

 C++) multipiattaforma?
È una soluzione commerciale. Esiste la versione c++ di kylix delal 
Borland che dovrebbe permettere una discreta portabilità del codice se 
si seguono un po' di accotgimenti.
Personalmente non lho mai usato, ero stato costretto a fare delle prove 
con la versione object-pascal di kylix e mi pareva decentemente 
portabile a patto di usare solo le librerie interne della borland.
Non so se esiste per mac.
-- 
Lorenzo "Paulatz" Paulatto
Trieste
Dagli errori di Windows 98:
1070 0x042E Dopo l'avvio, il servizio si è sospeso in uno stato di attesa.
1440 0x05A0 Schermo già bloccato.

 Voglio vederti a far girare autoconf/automake su Windows...
a me funzionano discretamente quelli del port mingw e anche quelli di 
gnuwin32, certo non sono standard.

Mihal ha scritto:

sinceramente non concordo. L'ambito del FORTRAN è tutto quello che è 
calcolo, ed in quell'ambito è incredibilmente usato e difficlmente 
battibile (vedi dei benchmark pubblicati sui ng italiani un annetto 
faa). Tra l'altro esiste una specifica FORTRAN 2003, io ho detto 95 
perché so che ci sono compilatori e librerie open source.
Certo, non credo abbia ormai nulla a cha fare con il linguaggio che 
aveva lo stesso nome vent'anni fa ;)

On Sat, 01 Jan 2005 15:27:42 GMT, Mihal 
was talkin'about:
#define IMHO

Per programmi che fanno calcoli io intendo roba che avrà bisogno di qualche
switch da riga di comando, un file di configurazione, file di input e
output.
In tal caso nè C nè C++ hanno problemi di portabilità, sempre che non usi
librerie particolari. Non usare caratteristiche specifiche del compilatore
(per quanto possa decidere di attaccarti solo al gcc) e, fuori da qualche
ifdef non ci dovrebbero essere problemi.
Come IDE multipiattaforma mi viene in mente Code Warrior, non free.
Ma in realtà per me ti conviene sviluppare su un os, man mano sistemare
e riportare le modifiche.
-- 
  Giuseppe "Cowo" Corbelli \/\ My software: 
http://cowo.yoda2000.net
    **ANTI-SPAM** -- **Substitute IHATESPAM with cowo to reply by mail**
  -<! Asynchronous inputs are at the root of our race problems. !>-
                 D. Winker and F. Prosser

 e riportare le modifiche.
Il fatto che non sia free non e' un problema, comunque non ho mai sentito
parlare di code warrior, mo gli do un occhiata
ciao

 C++) multipiattaforma?
Il GCC. E' il compilatore standard su OSX, e' il compilatore standard su 
linux, puo' essere compilato senza problemi su qualunque unix, esiste in 
versione indipendente da librerie gpl per windows (
www.mingw.org
).
In pratica su un'applicazione via linea di comando generata da un 
semplice makefile difficilmente avrai problemi a compilare ed eseguirlo 
su qualunque target di quelli che specifichi.
Per quanto riguarda il frontend grafico potresti avere qualche problema 
in piu', ma anche li' ci sono librerie crossplatform apposite.
Ti cito wxwidgets (
www.wxwidgets.org
) e GTK (
www.gtk.org
), nel caso in 
cui dovessi creare un'applicazione grafica che ha bisogno di accesso a 
basso livello ad un framebuffer (un player multimediale, un gioco...) 
invece la libreria da usare e' SDL.
GTK su OSX richiede al momento la presenza del server X installato (che 
e' comunque un componente del sistema operativo anche se non viene 
installato dalla installazione standard).
Personalmente ho scritto diverse applicazioni crossplatform 
win32/osx/linux senza grossi problemi e con forse 3 o 4 #ifdef in tutta 
l'applicazione (tipicamente per la gestione dei socket su win32 che 
richiede winsock).
Con un po' di esperienza e' possibile anche crearsi dei crosscompiler in 
modo da eseguire tutte e tre le compilazioni con un solo makefile (io ho 
ad esempio i crosscompiler win32 e linux sul mio powerbook e i 
crosscompiler osx e win32 sul mio desktop in ufficio :) ).
Bye,
  Gabry

 diverse piattaforme senza nessuna modifica.
Si vede che hai trovato programmi fuori standard (per scelta progettuale --
mica obbligatorio essere standard, possono servirti altre cose... GUI, IPC
-- o per incapacita`).
Il C++ standard e` assolutamente portabile.
-- 
[ RiK0                                ]
[ non credo negli schemi non vincenti ]
[ two is an odd prime number          ]

 pochissime modifiche
Se usi puro ANSI C++ *senza* modifiche. Bisogna poi vedere se la libreria
standard ti basta, o hai bisogno di roba esterna (e nel caso di che roba).
Comunque fai conto che tutte le piattaforme da te suggerite usano (o nel
caso di Win possono usare) lo stesso compilatore. Quindi hai a disposizione
pure qualche estensione allo standard 'gratis' (che so io, array con
dimensione non nota a tempo di compilazione, from C99 with love :) )


 C++) multipiattaforma?
Tu non hai GUI. Quindi mi pare che un RAD non ti serva. 
Io posso dirti che da parte mia uso gvim + gcc su tutte le piattaforme da
te menzionate. Funziona bene, e` veloce, lo ho potenziato con un po' di
script... di piu` non posso desiderare :)
Poi e` lo stesso che uso per C, C++, Python... al momento sviluppo con
questi. Per ObjC siccome lo uso sostanzialmente con MacOS X, tendo ad usare
XCode. Ma vabbe`... Per Perl usavo pure gvim, e cosi` per piu` o meno tutti
i linguaggi che mi e` capitato di dovere usare.
Altrimenti potresti preferire Emacs. E` molto ben integrato con la suite
del gcc... ha anche il debugger (gdb) che si 'integra' con Emacs molto
bene. Davvero un bel programma, anche se *io* gli preferisco Vim.
Il fatto che il codice sia *multipiattaforma* lo devi verificare tu. Se e`
ANSI lo e` (-pedantic del g++... ma potrebbe anche bastarti -ansi, vedi il
manuale per maggiori infos)


 Davide
cygwin rulez! ;-P
-- 
Ansia, s.f.:
        la prima volta che non riesci a farlo la seconda.
Panico, s.m.:
        la seconda volta che non riesci a farlo la prima.


Contrario: Java va usato per i server backend, è usarlo per i frontend
che va male.
(ammetto di odiare Java in ogni caso)
--
Matteo Settenvini
FSF Associated Member
Email : 
mat...@member.fsf.org
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--(-) s+:- a-- C++ UL+++
P?>++ L+++>$ E+>+++ W+++ N+ o?
w--- O- M++ V? PS++ PE- Y+>++
PGP+++ t+ 5 X- R tv-(--) b+++
DI+ D++ G++ e h+ r- y?
------END GEEK CODE BLOCK------

Grazie per la risposta molto esauriente.
ciao

Grazie innanzitutto per la bella risposta,
un ultima cosa soltanto: hai ragione a dire che il RAD non mi serve,
ma potrebbe comunque farmi comodo, quindi se hai visto RAD particolarmente
interessanti (C, C++) nel senso della portabilità ti ringrazio se me li
citi.
ciao

 citi.
Mi spiego... RAD è uno strumento per scrivere codice.
Nel momento in cui scrivi codice portabile ( ANSI lui, e che si appoggia
a librerie portabili ) sei a posto.
Poi su GNU/Linux non è che ho visto un numero immenso di RAD, mi
spiego... ci si sta arrivando, ma una cosa come Delphi non c'è (falso:
si chiama Kylix, ma è un altro discorso, e poi non è mica tanto
portabile)... e comunque non me ne sono mai interessato tanto.
Personalmente sono convinto che la parola "Rapid" quando va nella stessa
frase con "codice di qualità" e specie con C++[0] strida un po'.
Oppure ci sono le cose basate su Java... (che so io Eclipse).
Il mio toolkit di sviluppo è basato su gvim, gcc, python, gdb (gprof).
Punto e basta. Io mi ci trovo bene... punto e basta... lo posso usare su
GNU/Linux, un BSD a scelta compreso MacOS X e perfino Windows.
Per pitturare le GUI... in genere di recente ho usato solo QT e Cocoa
(questa disponibile solo su MacOS X). Per QT potresti addirittura usare
QDesigner... volendo lo si può considerare un RAD. Certo non è portabile
su Win senza cacciare il grano.
Per GTK che invece si porta bene su GNU/Linux e *nix vari (ma per dire
su MacOS X è molto spaesato) e Win puoi usare Glade... ma non è un RAD.
È un pittatore di interfacce, Lo stesso per wxGlade se vuoi usare
wxWindows.
Magari dai un occhio a KDevelop... boh.. di più non so che dire.
-----------
[0] Il codice di qualità va meditato. Va bene quindi un ambiente che ti
faciliti... ma il concetto di RAD che per lo meno nell'accezione comune
ti fa disegnare la GUI e poi appiccicare del codice qua e la non lo vedo
benissimo. Specie in C++. Come dicevo è un linguaggio molto complesso e
articolato, anche relativamente verboso (non posso fare una nota
ricorsiva... quindi lasciatemi passare l'affermazione così come è). Va
bene per scrivere programmi *solidi* (occhio ai char*, chiaramente =) ),
ma non è fatto per prototipare rapidamente, buttar giù codice e via.
-- 
RiK0
Non credo negli schemi non vincenti.

Grazie di nuovo,
in caso di ulteriori consigli mi rifarò sentire
ciao