Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: petrHu 01 Června 2008, 16:48:11
-
Dobrý den,
jakým způsobem bych mohl vytvářet programy, které poběží jak na Linuxu tak ve Win? Jaké jsou možnosti? chtěl bych se zeptat, jak to dělají "skuteční výrobci" jako například FireFox funguje jak ve Windows, Linux...
Ještě doplním, že mi jde především o "aplikace" s uživatelským prostředím - kde uživatel bude klikat myší na tlačítka, vybírat z nabídky...
pozorně jsem si pročetl stránku http://wiki.ubuntu.cz/Programov%C3%A1n%C3%AD
všem velmi děkuji za každou radu
PS: vynechme prosím debatu o zbytečnosti vytvářet programy pro Windows. respektive o tom, proč potřebuji vytvářet pro windows.
-
Třeba v Javě, to by mělo být naprosto bezproblémové (sám se zrovna snažím se Javu trochu naučit).
Nebo v C#, na Windows je .NET, na Linuxu Mono. Stejně tak by mělo fungovat i VB.NET.
Nevýhoda obou dvou je, že na počítači musí běžet nějaké běhové prostředí.
Osobně bych se přiklonil k té Javě, docela se mi líbí a NetBeans je skvělé (i když trochu pomalé) prostředí.
-
Ja si myslim ze zajimava moznost je i Python a pro graficke prostredi wxpython.
-
No určitě C a C++ což se divím, že tu ještě nepadnulo... GNU gcc kompilátor... pokud jde o grafické aplikace, tak třeba mě zaujala QT knihovna, ale GTK myslím taktéž šlape pod obojím.... a pak třeba OpenGL (NeHe tutoriály).
PS: a jakým způsobem... no defakto na obou systémech stejně... cvakáním do klávesnice a přeložením kompilátorem... záleží jaké zvolíte vývojové prostředí...nabídka je vcelku pestrá ;)
-
najskor asi Java. Tusim aj firefox je v tom spraveny...
-
Presne na toto je stavaná knižnica wxwidgets. S týmto ti to pôjde nielen na windowse a linuxe, ale aj na macu, rôznych mobilných/PDA OS apod.
-
Nevýhoda Javy je přávě v její pomalosti, protože se překládá za chodu, její výhoda je v její přenositelnosti - zkompiluje se jednou a běží na všem, kde je ovšem nainstalovaný virtuální stroj javy. Nepřijde mi, že by Firefox byl napsaný v javě ;)
Já kdybych si vybíral jazyk, kterým se budu v budoucnu učit a se kterým chci něco dokázat, tak si vyberu jednoznačně C/C++, i když Java také není špatná volba, protože se pak programy v javě dají použít např. pro aplikace do různých zařízení - pračka, telefon. Další výhoda javy je její jednoduchost, pochopitelnost a přehlednost.
-
děkuji všem za Vaše příspěvky. Zkusím se tím postupně probrat a především vyzkoušet. Nejspíš zkusím vytvořit nějaký testovací program, který budu zkoušet na různých operačních systémech...
-
když napíšete nějaký kód, mělo by být možné ho zkompilovat pod windows i linux, je ale potřeba dát pozor, abyste například nepoužíval knihovny, které jsou třeba dostupné pod linux, ale nejsou pod win... nebo taky pozor na systémová volání... to se pak tuším řeší tak, že se programuje zvlášť pro win a zvlášť pro linux a řeší se to pak ruznými příkazy pro kompilátor, ale s tím nemám zkušenosti,tak možná jen plácám (kdyžtak mě někdo opravte)
-
Teď jsem koukal na todle a je to hodně podobný MFC:
http://docs.wxwidgets.org/stable/wx_classesbycat.html#classesbycat
-
Firefox v Javě 100% nění ;)
Ale taky hlasuju pro Javu :)
-
Já hlasuju pro C++ s využitím nějakého multiplatformního toolkitu. ;)
-
A ja zasa za Lazarus. Holt ked niekto koduje 6 rokov v Delphi ... :)
-
python s qt/wxwidgets?
ruby s rubyfx?
-
Asi se taky pustím do C/C++ :) Mám tu jednu knížku a na Linuxsoftu je moc pěkný seriál (http://www.linuxsoft.cz/article_list.php?id_kategory=186).
-
Tak jsem se rozhodl sem také přispět, i když nemluvím z vlastní zkušenosti. Takže kdybych se mýlil, tak mě prosím opravte.
Kamarád teď dělal takovou větší aplikaci v C++ a dost u toho nadával, že má ohromný problém s knihovnami, především pro grafické rozhraní. Říkal, že je dost nepříjemné jak každý kompilátor funguje trochu jinak, tudíž kód, který zkompiluje na Linuxu může fungovat, ale na Windows to zkompilovat jít nemusí nebo tak něco. Prostě jsou s tím docela problémy. Ale osobně jsem to nezkoušel, tak doufám, že jsem nevypustil nejakou kachnu...
-
Tak jsem se rozhodl sem také přispět, i když nemluvím z vlastní zkušenosti. Takže kdybych se mýlil, tak mě prosím opravte.
Kamarád teď dělal takovou větší aplikaci v C++ a dost u toho nadával, že má ohromný problém s knihovnami, především pro grafické rozhraní. Říkal, že je dost nepříjemné jak každý kompilátor funguje trochu jinak, tudíž kód, který zkompiluje na Linuxu může fungovat, ale na Windows to zkompilovat jít nemusí nebo tak něco. Prostě jsou s tím docela problémy. Ale osobně jsem to nezkoušel, tak doufám, že jsem nevypustil nejakou kachnu...
No kachna to není, ale to, že kamarád nepoužívá multiplatformní knihovny za to jazyk nemůže...
-
Z vlastni skusenosti muzu rict, ze i s multiplatformnima knihovnama pro C/C++ se muze stat, ze pak program nepujde zkompilovat na jine platforme a bude nutne prepsat par veci, ale jinak s tim v neni az tak velky problem.
-
Dobrý den, chtěl bych ještě jednou všem poděkovat za příspěvky - jak se zdá tak hlavními kandidáty jsou Java, C/C++ a velmi se mi podle popisu zalíbil wxwidgets, ještě jednou moc děkuji.
Z mého velmi subjektivního pohledu a pod vlivem okolí bych rád zvolil C/C++. Ikdyž by nám teoreticky měl stačit nějaký textový editor a překladač, tak bych raději použil nějaké "kompletní vývojové prostředí". Už jsem vyzkoušel:
- Anjuta http://anjuta.sourceforge.net/ (http://anjuta.sourceforge.net/) - podle popisu funkcí vypadá velmi krásně, bohužel je tak úžasně komplexní, že jsem se vůbec nedokázal proklikat k psaní kódu nebo k návrhu oken...
- KDevelop http://wiki.ubuntu.cz/KDevelop (http://wiki.ubuntu.cz/KDevelop) - nevím jak moc vážný je to problém, ale když ho spustím na mém GNOME tak se toto prostředí chová "podivně" - přesněji má problémy s překreslováním - třeba otevřu nějaké menu a když ho zavřu tak ho tam nechá dokud nezobrazím na tom místě něco jiného - což nepůsobí zrovna nejlepé a rozhodně se na tom nedá dlouhodoběji pracovat...
Snažil jsem se gůůglit nějaké informace, ale ty se v drtivé většině věnují samotnému jazyku, programování jako takovému nikoliv práci ve vývojovém prostředí...
nejlepší by bylo řešení "vše v jednom" původně jsem si představoval nějakou alternativu k Express studiu od M , který je po stránce obsluhy strašně jednoduché... stačí spustit a hned můžete psát, stisknete tlačítko a hned se program spustí, můžete hned krokovat a upravovat...
-
No KDevelop mi jede na Gnome dobře.... jinak Netbeans na C++ (je to hodně podobný KDevelop, ale není tam tolik automatických věcí zase).
Jinak wxwidgets nevypadá zle, ale četl jsem si ted o tom a grafika různých boxů pokulhává, navíc ta kompilace je děsná... to Qt rulllezzzz
-
Myslím, že také Python není špatná volba. Říká se, že se v něm dá naučit do několika dnů, je jednoduchý, ale podle aplikací, co v něm je napsaných je také dost mocný.
-
Python je super. :-)
-
Jj, pro tvorbu grafických aplikací bych doporučil PyGTK (http://www.pygtk.org/). Aplikace se v něm píší snadno, nemusí se kompilovat a jdou spustit jak v linuxu, tak ve windows.
-
Python je super. :-)
zrut pamete (s PyGTK) a je pomalsi ako C++ (aspon z vlastnej skusenosti sa mi zda)
-
eclipse neni spatne vyvojove prostredi .. afaik byva i v repozitarich ..
-
pridavam jako bonus sve ~/.vimrc >>
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
" you can find below. If you wish to change any of those settings, you should
" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
" everytime an upgrade of the vim packages is performed. It is recommended to
" make changes after sourcing debian.vim since it alters the value of the
" 'compatible' option.
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
"if has("autocmd")
" au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
" \| exe "normal g'\"" | endif
"endif
" Uncomment the following to have Vim load indentation rules according to the
" detected filetype. Per default Debian Vim only load filetype specific
" plugins.
"if has("autocmd")
" filetype indent on
"endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd " Show (partial) command in status line.
set showmatch " Show matching brackets.
set ignorecase " Do case insensitive matching
set smartcase " Do smart case matching
set incsearch " Incremental search
set autowrite " Automatically save before commands like :next and :make
set hidden " Hide buffers when they are abandoned
"set mouse=a " Enable mouse usage (all modes) in terminals
" Source a global configuration file if available
" XXX Deprecated, please move your changes here in /etc/vim/vimrc
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif
set hlsearch
nnoremap <silent> <C-n> :tabnext<CR>
nnoremap <silent> <C-p> :tabprevious<CR>
set wildmode=list:longest,full
set gdefault
" spelling
let IspellLang = 'british'
let PersonalDict = '~/.ispell_' . IspellLang
execute 'set dictionary+=' . PersonalDict
set dictionary+=/usr/dict/words
set complete=.,w,k
set infercase
execute 'nnoremap \si :w<CR>:!ispell -x -d ' . IspellLang . ' %<CR>:e<CR><CR>'
execute 'nnoremap \sl :w ! grep -v "^>" <Bar> grep -E -v "^[[:alpha:]-]+: " ' .
\ '<Bar> ispell -l -d ' . IspellLang . ' <Bar> sort <Bar> uniq<CR>'
nnoremap \sh :call HighlightSpellingErrors()<CR><CR>
nmap <F9> \sh
nnoremap \sc :if &ft == 'html' <Bar> sy on <Bar>
\ else <Bar> :sy clear SpellError <Bar> endif<CR>
nmap <F10> \sc
set title
set ls=2
function! HighlightSpellingErrors()
" highlights spelling errors in the current window; used for the \sh operation
" defined above;
" requires the ispell, sort, and uniq commands to be in the path;
" requires the global variable IspellLang to be defined above, and to contain
" the preferred `Ispell' language;
" for mail/news messages, requires the grep command to be in the path;
" for HTML documents, saves the file to disk and requires the lynx command to
" be in the path
"
" by Smylers http://www.stripey.com/vim/
" (inspired by Krishna Gadepalli and Neil Schemenauer's vimspell.sh)
"
" 2000 Jun 1: for `Vim' 5.6
" for HTML files, remove all current syntax highlighting (so that
" misspellings show up clearly), and note it's HTML for future reference:
if &filetype == 'html'
let HTML = 1
syntax clear
" for everything else, simply remove any previously-identified spelling
" errors (and corrections):
else
let HTML = 0
if hlexists('SpellError')
syntax clear SpellError
endif
if hlexists('Normal')
syntax clear Normal
endif
endif
" form a command that has the text to be checked piping through standard
" output; for HTML files this involves saving the current file and processing
" it with `Lynx'; for everything else, use all the buffer except quoted text
" and mail/news headers:
if HTML
write
let PipeCmd = '! lynx --dump --nolist % |'
else
let PipeCmd = 'write !'
if &filetype == 'mail'
let PipeCmd = PipeCmd . ' grep -v "^> " | grep -E -v "^[[:alpha:]-]+:" |'
endif
endif
" execute that command, then generate a unique list of misspelt words and
" store it in a temporary file:
let ErrorsFile = tempname()
execute PipeCmd . ' ispell -l -d '. g:IspellLang .
\ ' | sort | uniq > ' . ErrorsFile
" open that list of words in another window:
execute 'split ' . ErrorsFile
" for every word in that list ending with "'s", check if the root form
" without the "'s" is in the dictionary, and if so remove the word from the
" list:
global /'s$/ execute 'read ! echo ' . expand('<cword>') .
\ ' | ispell -l -d ' . g:IspellLang | delete
" (If the root form is in the dictionary, ispell -l will have no output so
" nothing will be read in, the cursor will remain in the same place and the
" :delete will delete the word from the list. If the root form is not in the
" dictionary, then ispell -l will output it and it will be read on to a new
" line; the delete command will then remove that misspelt root form, leaving
" the original possessive form in the list!)
" only do anything if there are some misspellings:
if strlen(getline('.')) > 0
" if (previously noted as) HTML, replace each non-alphanum char with a
" regexp that matches either that char or a &...; entity:
if HTML
% substitute /\W/\\(&\\|\&\\(#\\d\\{2,4}\\|\w\\{2,8}\\);\\)/e
endif
" turn each mistake into a `Vim' command to place it in the SpellError
" syntax highlighting group:
% substitute /^/syntax match SpellError !\\</
% substitute /$/\\>!/
endif
" save and close that file (so switch back to the one being checked):
exit
" make syntax highlighting case-sensitive, then execute all the match
" commands that have just been set up in that temporary file, delete it, and
" highlight all those words in red:
syntax case match
execute 'source ' . ErrorsFile
call delete(ErrorsFile)
highlight SpellError term=reverse ctermfg=DarkRed guifg=Red
" with HTML, don't mark any errors in e-mail addresses or URLs, and ignore
" anything marked in a fix-width font (as being computer code):
if HTML
syntax case ignore
syntax match Normal !\<[[:alnum:]._-]\+@[[:alnum:]._-]\+\.\a\+\>!
syntax match Normal
\ !\<\(ht\|f\)tp://[-[:alnum:].]\+\a\(/[-_.[:alnum:]/#&=,]*\)\=\>!
syntax region Normal start=!<Pre>! end=!</Pre>!
syntax region Normal start=!<Code>! end=!</Code>!
syntax region Normal start=!<Kbd>! end=!</Kbd>!
endif
endfunction " HighlightSpellingErrors()
set paste
colorscheme desert
" tabspaces
set tabstop=4
set shiftwidth=4
set expandtab
set statusline=%<%f%<%{FileTime()}%<%h%m%r%=%-20.(line=%03l,col=%02c%V,totlin=%L%)\%h%m%r%=%-30(,BfNm=%n%Y%)\%P\*%=%{CurTime()}
set rulerformat=%15(%c%V\ %p%%%)
"set rulerformat=%<%f%<%{FileTime()}%<%h%m%r%=%-20.(line=%03l,col=%02c%V,totlin=%L%)\%h%m%r%=%-30(,BfNm=%n%Y%)\%P\*%=%{CurTime()}
fu! FileTime()
let ext=tolower(expand("%:e"))
let fname=tolower(expand('%<'))
let filename=fname . '.' . ext
let msg=""
let msg=msg." ".strftime("(Modified %b,%d %y %H:%M:%S)",getftime(filename))
return msg
endf
fu! CurTime()
let ftime=""
let ftime=ftime." ".strftime("%b,%d %y %H:%M:%S")
return ftime
endf
set backspace=2
-
Pěkný C++ seriál je také na programujte: http://programujte.com/index.php?akce=clanek&cl=2005041401-c++-0-lekce
-
ja bych volil C/C++ nebo python :)
-
najskor asi Java. Tusim aj firefox je v tom spraveny...
To urcite nie.
-
pythona + pygtk.
-
ja ako niekdajsi Visual Basic-ar som objavil Gambas (co je obdobny jazyk aj prostredie v linuxe). Skoda, ze som to neobjavil uz skorej, len ma mrzi, ze k tomu je velmi malo kniziek pripadne inych publikacii.
-
python je peknej chlivek ;)
-
python je peknej chlivek ;)
python je dobrý.. dá se v něm naučit rychle, je tu snadný vývoj GUI(Glade..) a programy vytvořené v něm jsou celkem rychlé.