Gjest medlem7055 Skrevet 9. desember 2008 Del Skrevet 9. desember 2008 (endret) Jeg har funnet ut at jeg vil benytte Julen til å lære meg et nytt programmeringsspråk som kan være nyttig i forbindelse med studiene mine. Det skal først og fremst bli brukt til beregninger av fysiske problemer, og visualisering av data og beregnede funksjoner. Jeg vet vi kommer til å lære bla. Matlab, men jeg ønsker et mer universelt språk som kan brukes til å lage applikasjoner (m. GUI), og som lar seg kjøre på flere plattformer uten å være avhengig av et propertiært rammeverk. Jeg har programmert litt tidligere, og har bla. tatt et innføringskurs i programmering ( C ). Det jeg først og fremst ser etter er et språk som er raskt å programmere, og enkelt å lære. Jeg har tittet litt på Python og bibliotekene SciPy og Matplotlib som den hittil foretrukne kombinasjonen. Men det jeg lurer på er: Er dette en god kombinasjon, og finnes det liknende biblioteker for Java som muligens kan være bedre? Og hva vil evt. være det "beste" valget, i form av praktisk bruk og læringskurve? Takker for svar. Endret 9. desember 2008 av medlem7055 Lenke til kommentar
Mr.Garibaldi Skrevet 9. desember 2008 Del Skrevet 9. desember 2008 Det er vel litt avhengig av hva du trenger det til... Du har større sjanse for at andre har JRE installert, enn at de har et python-miljø, som gjør java bedre skikket om du skal distribuere programmene til Hvermannsen. Men python er ganske utbredt blandt matematikere og fysikere, f.eks. på UiO er det et python kurs som et alternativ for realister som ikke skal fokusere på informatikk. Python er også et meget kraftig språk, og er visstnok enkelt å utvide med egne C og Fortran biblioteker, så du vil nok ikke tape noe på å gå den veien. Det er også lett å koble opp mot OpenGL, som kan være interessant om du skal gjøre noen avanserte visualiseringer. Lenke til kommentar
GeirGrusom Skrevet 9. desember 2008 Del Skrevet 9. desember 2008 Java er et av de mest utbredte programmeringsspråkene i dag, Python ligger ganske lavt nede på listen, dette kan gå utover kvalitet og antall på bibliotekene tilgjengelig. Men hovedgrunnen til at jeg vil heller anbefale Java, er at språket er mer effektivt, som kan spille en betydelig rolle i CPU intensitive programmer som for eksempel OpenGL visualiseringer kan være (avhengig av hva som skal vises selvsagt) Selv skriver jeg for tiden et OpenGL bibliotek i C# der jeg nå har fått implementert det meste, fra shaders, til teksturer. Jeg foretrekker C# fordi det ikke er nødvendig å skrive en wrapper i et annet programmeringsspråk for å bruke C bibliotker som OpenGL (i Python må du skrive et C bibliotek som wrapper Python sitt interface over biblioteket, samme gjelder Java for den saks skyld) Fortran brukes fortsatt mest til matematikk, dog jeg mistenker at dette har mer historiske grunner enn noe annet. Lenke til kommentar
Mr.Garibaldi Skrevet 9. desember 2008 Del Skrevet 9. desember 2008 (endret) Hvis du er ute etter hastighet kan du jo kompilere python, og dermed får du et meget raskt program, så ville ikke bruke det som et argument mot python. Når det gjelder kvaliteten på bibliotekene, så er det som sagt mange forskningsinstitusjoner som bruker Python, f.eks. Sintef (sjekk ut SciTools!) og Simula, noe de nok ikke ville gjort om det ikke fantes gode biblioteker til språket (selv om de jo også utvikler egne biblioteker). GeirGrusom har helt rett i at Java er mer utbredt, men siden python er installert som default på de fleste linux installasjoner burde ikke det være noe stort problem. (De fleste jeg kjenner som holder på med beregninger bruker linux) Jeg foretrekker selv å jobbe med java fremfor python, men det er fordi jeg er bedre kjent med java/c-baserte språk. Men hvis du lærer deg python går det veldig ofte raskere å prototype noe der, og dermed kan du fokusere mer på beregningene dine enn på programmeringen. [EDIT] Angående Fortran kom jeg over denne som kanskje besvarer hvorfor det fortsatt er populært (og blir undervist bl.a. ved UiO) Endret 9. desember 2008 av Mr.Garibaldi Lenke til kommentar
GeirGrusom Skrevet 10. desember 2008 Del Skrevet 10. desember 2008 Hvis du er ute etter hastighet kan du jo kompilere python, og dermed får du et meget raskt program, så ville ikke bruke det som et argument mot python. Når det gjelder kvaliteten på bibliotekene, så er det som sagt mange forskningsinstitusjoner som bruker Python, f.eks. Sintef (sjekk ut SciTools!) og Simula, noe de nok ikke ville gjort om det ikke fantes gode biblioteker til språket (selv om de jo også utvikler egne biblioteker). GeirGrusom har helt rett i at Java er mer utbredt, men siden python er installert som default på de fleste linux installasjoner burde ikke det være noe stort problem. (De fleste jeg kjenner som holder på med beregninger bruker linux) Jeg foretrekker selv å jobbe med java fremfor python, men det er fordi jeg er bedre kjent med java/c-baserte språk. Men hvis du lærer deg python går det veldig ofte raskere å prototype noe der, og dermed kan du fokusere mer på beregningene dine enn på programmeringen. [EDIT] Angående Fortran kom jeg over denne som kanskje besvarer hvorfor det fortsatt er populært (og blir undervist bl.a. ved UiO) Jo, sikkert. Jeg jobber som sagt selv mest i C# og liker syntaksen der. Mulig Python har sine fordeler (jeg mistet temmelig fort min fasinasjon for Python) men til det jeg jobber med, er ikke Python det beste alternativet. Når det gjelder kompilering, kan alle språk kompileres, men noen språk er designet som scriptspråk i utgangspunktet (som Python eller PHP) som kan gjøre kompilering til en temmelig klønete prosess fremfor språk som har det målet i utgangspunktet. Ålreit den artikkelen om Fortran. Jeg kan ikke nok om Fortran til å sammenligne det med Python eller Java, så jeg skal ikke uttale meg om det, men jeg forstår godt hvorfor C eller C++ ikke blir brukt til slikt arbeid, siden en da ofte sitter og krangler med helt andre ting enn selve oppgaven. Lenke til kommentar
Gjest medlem7055 Skrevet 10. desember 2008 Del Skrevet 10. desember 2008 (endret) Takk for gode svar! Alternativene jeg har tittet på er altså; JSience (http://jscience.org/) for Java, og SciPy (http://scipy.org/) i kombinasjon med Matplotlib (http://matplotlib.sourceforge.net/) for Python. GeirGrusom: For meg vil tiden det tar å prototype være viktigere enn den ytelsen programmet har når det er ferdig kompilert. Dette er fordi jeg først og fremst skal bruke programmene mine til egen læring, ikke distribusjon. Mr.Garibaldi: Tenkte prosjekter kan for eksempel være en todelt applikasjon, der den ene delen kan simulere en fysisk begivenhet, som for eksempel et skråkast, og gi output til "sensorer" eller datafiler. Den andre delen kan så lese av disse "sensorene" eller datafilene og forsøke å beregne så nøyaktig som mulig det som skjer i simuleringen. Det interessante vil jo være å se hva som skjer når jeg bytter ut simuleringsdelen av programmet med faktiske data Det er vanskelig å si hva som vil være det beste valget av Java og Python uten å ha særlig dybdeinnsikt i noen av dem, men rent overfladisk kan det virke som om SciPy og Matplotlib vil være de som har lavest terskel for å komme i gang med. Disse pythonbibliotekene ser også ut til å dekke behovene mine bra. Det eneste de ikke dekker er muligheten for GUI i mer avanserte programmer, men til dette kan jeg sikkert lære meg PyGTK etter hvert. Endret 10. desember 2008 av medlem7055 Lenke til kommentar
zotbar1234 Skrevet 11. desember 2008 Del Skrevet 11. desember 2008 Det skal først og fremst bli brukt til beregninger av fysiske problemer, og visualisering av data og beregnede funksjoner. (...) Det jeg først og fremst ser etter er et språk som er raskt å programmere, og enkelt å lære. Jeg har tittet litt på Python og bibliotekene SciPy og Matplotlib som den hittil foretrukne kombinasjonen. Men det jeg lurer på er: Er dette en god kombinasjon, og finnes det liknende biblioteker for Java som muligens kan være bedre? Og hva vil evt. være det "beste" valget, i form av praktisk bruk og læringskurve? Det er vanskelig å si hva som er bedre, men det er helt klart at det vil være raskere å komme igang med Python (mindre magi å måtte akseptere). Ytelsesmessig er det viktig å skille mellom to ting: * At du ønsker å få et lite problem (altså, et problem med forholdsvis liten input) løst veldig fort i den forstand at det tar lite tid fra problemet er definert til koden som løser denne foreligger. * At du ønsker å få et stort problem (et problem med forholdsvis stor input) løst innen rimelige tidsgrenser gitt maskinressursene dine. Her er det mindre interessant hvor lang tid det tar å skrive koden for å løse problemet, da suboptimal implementasjon vil bety ekstra dager/uker med venting. For leketøyseksemplene (hvilke følger jo læringskurven) er det første også det viktigste. Og Python vil være mer fordelaktig enn Java her. For store simuleringer vil du ikke kunne ignorere effektiviteten av en implementasjon (apropos, en liten digresjon -- *språk* er *aldri* effektive/lite effektive. Kun deres implementasjoner er det). Men saken er at viser profileringen at beregningen av en datamengde er et problem, så kan du alltid flytte beregningen delvis til C (vha. f.eks. numarray/numpy), kompilere python til native kode (f.eks. psyco), eller flytte beregningen helt til C eller Fortran (f.eks. vha. CPython sitt C API) og utveksle kun rådata mellom C og Python (her er f.eks. swig hjelpsomt). Lempe data ut f.eks. på dot-format (som så kan plottes med graphviz) er en veldig enkel sak. Effektivitet, når du først virkelig trenger noe utover det implementasjonen tilbyr, vil kunne skaffes ved behov. Ideelt sett burde du naturligvis lære begge språk, iallfall nok til å innse deres styrker og svakheter. Lenke til kommentar
cyclo Skrevet 20. desember 2008 Del Skrevet 20. desember 2008 Deler av denne diskusjonen er blitt splittet ut her https://www.diskusjon.no/index.php?showtopic=1050253 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå