Pythonia nopeampi kieli datatieteeseen hakusessa

Pitäisi opetella joku Pythonia ja R:ää nopeampi kieli, kun haluaisin opetella big data-analyysiä. Olen koulutukseltani matemaagikko. Sanokaahan vinkkejä, mitä kannattaisi opetella? Kuulemma C, C ja Julia voisivat tulla kysymykseen, mutta miten käteviä kukin olisi datatieteessä? Löytyykö paketteja, jotka hoitavat symbolisen ja numeerisen algebran sekä tilastollliset testit suoraan vai pitääkö kaikki vääntää itse?
231581
Äänestä

Muut lukivat myös

Vastaukset 23

Vanhimmat

Eipä siihen taida olla muita vaihtoehtoja kuin Fortran-ohjelmontikieli. Uusin standardoitu versio on Fortran 2008. Saatavilla tilastollisia yms. aliohjelmakirjastoja. On kääntäjällä käännettävä kieli. Voi käyttää yhdessä R-kielen kanssa.

Äänestä

Vai "matemaagikko", kirjoitusvirheistä päätellen, et ole vielä kansakoulua suorittanut.

Äänestä

Työkalu riippuu ratkaistavasta ongelmasta. Kivikautisten työkalujen valintaa tarvitsee vähän perustella että miksi kun kerran parempiakin on.

Äänestä

Minä käyttäisin C -kieltä. Tehokas, ohjelmistoteknisesti OK. Kirjastoja löytyy maailmalta.

Äänestä
  • C :n käyttöä puoltaa lähinnä OpenMP.

    Äänestä

Kannattaa kokeilla Delphiä. Tai sen ilmaista "kloonia" FreePascalia (ja Lazarusta jos haluat graafisen paikallisen käyttöliittymän).

Toki voit C -kieltäkin käyttää, mutta jos kokeilet molempia, huomaat nopeasti, että C -kieli muodostuu sitä hankalammaksi, mitä monimutkaisempi ohjelmia kirjoitat.

Delphillä ei käy näin.

HUOM: M-Kar on tunnettu Delphi -vihaaja.
Jätä siis ko. vihaajan delphiä haukkuvat kommentit ihan omaan arvoonsa.
Tähän mennessä Delphillä on voinut kätevästi ratkaista kaikki omat ohjelmointitarpeeni.

JOS tarvitset jossain kohdassa aivan erityistä nopeutta, voit koodata myös assembleria sekaan.
Tämä antaa mahdollisuuden esim. SIMD (Single Instruction, Multiple Data) -käskykannan käyttöön.

Jos matemaattisia algoritmeja ohjelmoit, huomaa:

Delphissä kannattaa käyttää SinCos -proseduuria (uses Math) sen sijaan, että kutsut erikseen Sin ja Cos -funktiota.

Siis jos samasta argumentista tarvitsee laskea sekä sini että kosini, SinCos -proseduurin käyttö on melkein 2 kertaa nopeampaa kuin se, että samasta argumentista laskettaisiin erikseen sini ja kosini, Sin ja Cos -funktioita käyttäen.

Delphin uusimman version osalta:

http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Math

http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Math.SinCos



tosin: tuo "big data" tuntuu olevan tietotekniikka-alan muotisanoja.

Siis konsultit rahastavat idealla.

Toki dataa joissakin tarkoituksissa kannattaakin analysoida, mutta kannattaisi välttää ns. ylianalysointia (joka on resurssien tuhlaamista).

Delphi -koodi on luettavaa ja ymmärrettävää vielä 10 tai 20 vuodenkin kuluttua.
Monestako muusta kielestä voi sanoa samaa ?

Äänestä
  • "Tähän mennessä Delphillä on voinut kätevästi ratkaista kaikki omat ohjelmointitarpeeni."

    No jokos sait tehtyä sillä Chromeen lisäosan?

    "JOS tarvitset jossain kohdassa aivan erityistä nopeutta, voit koodata myös assembleria sekaan. Tämä antaa mahdollisuuden esim. SIMD (Single Instruction, Multiple Data) -käskykannan käyttöön."

    Paremmissa välineissä ei tarvitse käyttää assembleria, kuten käyttämällä vaikka OpenMP:tä: https://www.openmp.org/

    "Delphi -koodi on luettavaa ja ymmärrettävää vielä 10 tai 20 vuodenkin kuluttua."

    Miksi se on jo nyt heikompaa kuin monet muut?

    Äänestä

Pythoniin ja varmaan R:äänkin voi tehdä lisäosia C:llä ja C :lla, että sillä tavalla ainakin saisit vauhtia niihin kriittisiin kohtiin mutta voisit muuten pysyä niissä kielissä, missä on nuuten jo parhaat työkalut tuohon hommaan.

C ja C sinäänsä molemmat ovat loistavia kieliä, kun on tarve päästä lähemmäs rautaa.

Itse alkaisin vain kokeilemaan . . .

Äänestä
  • "Pythoniin ja varmaan R:äänkin voi tehdä lisäosia C:llä ja C :lla,"

    JOS nuo lisäosat tehdään kääntämällä C tai C -koodia DLL:ksi (tai linuxissa .so -kirjastoksi)

    niin aivan saman voit tehdä Delphillä, joka myös osaa tuottaa DLL -kirjastoja.

    Tai FreePascalilla, josta löytyy myös Linux -versio, jolla saat aikaisesi .so -kirjastoja.

    Delphivinkki:

    Käytä komentorivikääntäjää dcc32.exe

    ja käännä lähdekoodi näin:

    dcc32 -JPHNE projekti.dpr

    tai

    dcc32 -JPHNE projekti.pas (jos pääohjelma tai kirjaston päämoduli on pas -tiedostossa .dpr -tiedoston sijasta).

    Tällöin Delphi generoi myös .hpp -tiedoston, joka on varsinaisesti tarkoitettu C -builderille inputiksi, mutta jos osaat C -kieltä tai jos käytät jotain C headereita lukevaa apuohjelmaa, niin tuosta .hpp -tiedostosta saattaa olla hyötyä.

    Äänestä

Tuleeko python nimi käärmeen hitaasta tavasta luikerrella pusikoissa?

Äänestä
  • Ei ole niin liukas. Wikipedia kertoo:

    "Python on alun perin nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun Monty Pythonin lentävä sirkus -televisiosarjan mukaan. Python-nimi koettiin lisäksi tarpeeksi lyhyeksi, yksilöiväksi sekä sopivan mysteeriseksi."

    Äänestä

  • QT lla on kivakoodata C kielellä ja lopputulos taittuu helposti eri alustoille.

    Äänestä

  • bööörb kirjoitti:

    QT lla on kivakoodata C kielellä ja lopputulos taittuu helposti eri alustoille.

    Jollakin tavalla se sovelluksen liittymä kielii, mistä kehitysympäristöstä tuotos on lähtöisin. Tuskin kenellekkään tästä tulee mieleen Lazaus: https://i.imgur.com/x2uSvBy.gif

    Äänestä

  • bööörb kirjoitti:

    QT lla on kivakoodata C kielellä ja lopputulos taittuu helposti eri alustoille.

    Tuossa edellisessä ei ollut edes yritystä saada Qt Creatorista peräisin tulevaa tunniste perimää sovellukseen, mutta tässä jo oli, mutta satavarmasti alkuperän tunnistaa silti:
    https://i.imgur.com/IU1QsQF.gif

    Äänestä

  • Arvaustoimisto kirjoitti:

    Ei ole niin liukas. Wikipedia kertoo:

    "Python on alun perin nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun Monty Pythonin lentävä sirkus -televisiosarjan mukaan. Python-nimi koettiin lisäksi tarpeeksi lyhyeksi, yksilöiväksi sekä sopivan mysteeriseksi."

    Qt Creatori asentuu Mintissä näin:

    sudo apt-get install qtcreator
    sudo apt-get install qtdeclarative5-dev
    sudo apt-get install g

    Äänestä

  • Turbo-Urpo1 kirjoitti:

    Tuossa edellisessä ei ollut edes yritystä saada Qt Creatorista peräisin tulevaa tunniste perimää sovellukseen, mutta tässä jo oli, mutta satavarmasti alkuperän tunnistaa silti:
    https://i.imgur.com/IU1QsQF.gif

    Hämäävästi näyttää XP:ltä tuo sinun systeemi, mutta XP:ssä ei tosin ole ikkunoiden nimet yläpalkin keskellä ainakaan oletuksena, että se paljastaa . . .

    Kyseessä lienee jokin linux?

    Äänestä

  • trollerson kirjoitti:

    Hämäävästi näyttää XP:ltä tuo sinun systeemi, mutta XP:ssä ei tosin ole ikkunoiden nimet yläpalkin keskellä ainakaan oletuksena, että se paljastaa . . .

    Kyseessä lienee jokin linux?

    Linux _Mint 19 Xfce 64-bit XP-teema.

    Äänestä

Haskell ilman muuta. Kääntyy todella nopeaksi C--:ksi.

Kun kerran olet matemaatikko, Haskell käy myös parhaiten järkeesi ja abstraktiot vaikuttaa siinä muutenkin matemaattisiin teorioihin perustuvilta.

Äänestä

Jos olet huono koodari niin sinun kirjoittamasi koodisi on aina hidasta. Ei asiat vaihtamalla parane

Äänestä

Fortran 90/95, 2003 voisi olla tarkoitukseesi sopiva.

Äänestä

Kokeilepa+Delphiä+!Nopeudeltaan+n.+90-99+%+C:n+ja+C++:n+nopeudesta,+jos+et+käytä+ns.+inline+assemblyä+(mahdollisuus+kirjoittaa+assembleria+Delphi+-koodin+sekaan).Jos+taas+käytät+ns.+inline+assemblyä,+niin+Delphi+-ohjelma+voi+olla+jopa+nopeampi+kuin+C+tai+C+++-ohjelma+(edellyttää+toki+assemblerin+hyvää+osaamista).Ei+ehkä+suosituin+väline,+mutta+osaavissa+käsissä+erittäin+tehokas+-+Tarjoaa+pätevämmän+välineen+kuin+C+ja+C+++mutta+ei+ole+läheskään+niin+virhealtis+!Vinkki:Käännä+kaikki+koodisi{$R+}tai{$Rangecheck+ON}-tilassa.+Silloin+suurin+osa+koodiasi+on+100%+turvassa+puskurin+ylivuotohaavoittuvuuksilta.+(toki+tuo+hieman+hidastaa+suoritusnopeutta,+mutta+ei+kovin+paljoa).Huomaa:Kun+kutsut+sellaisia+aliohjelmia,+jotka+ottavat+osoitin-+eli+pointteriparametreja+tai+tyypittömiä+parametreja,+tällöin+kääntäjä+ei+{$Rangecheck+ON}+-tilassakaan+kykene+varmistamaan,+että+kutsusi+on+oikein+koodattu+(siis+tällöin+varomattomalla+koodauksella+on+edelleen+olemassa+riski+++puskurin+ylivuotohaavoittuvuuksien+syntymiselle).Eli+kun+käytät+em.+aliohjelmia,+silloin+ei+riitä,+että+olet+huolellinen,+vaan+silloin+pitää+olla+äärimmäisen+huolellinen+!Tässä+oma+epätäydellinen+lista+em.+kaltaisista+aliohjelmista:BlockRead()BlockWrite()FillChar()Move()ZeroMemory()TStream.Write()TStream.WriteBuffer()TStream.Read()TStream.ReadBuffer()JOS+käytät+suoraan+ns.+Windows+API+-kutsuja,+näissä+on+paljon+lisääkin+tällaisia.Kaikkia+näitä+kutsuttaessa+noudata+äärimmäistä+huolellisuutta.MUTTA:Jos+ohjelmoisit+C+tai+C+++-kielillä,+niin+noiden+kielten+alkeellisuuden+ja+turvattomuuden+takia+joka+ikisellä+koodirivillä+pitäisi+noudattaa+äärimmäistä+huolellisuutta,+teetpä+mitä+tahansa+(jos+et+toimi+näin,+niin+C/C+++johtaa+väistämättä+puskurin+ylivuotohaavoittuvuuksien+syntyyn).Voit+itse+miettiä,+kumpi+on+helpompaa:a)+Noudattaa++äärimmäistä+huolellisuutta+JOKAISELLA+kirjoittamallasi+koodirivillä(tarpeen,+jos+koodaat+C+tai+C+++-kielillä)vaib)+Noudattaa++äärimmäistä+huolellisuutta+vain,+kun+kutsut+aliohjelmia,+jotka+ottavat+tyypittömiä+tai+osoitinparametrejä,+muuten+riittää+ihan+tavallinen+huolellisuus+(jos+koodaat+Delphillä).Ennustus:+Hetken+päästä+M-Kar+kirjoittaa,+kuinka+huono+Delphi+on.Oma+neuvoni:+jätä+nuo+kommentit+omaan+arvoonsa,+ei+niitä+tarvitse+ottaa+tosissaan.Itse+olen+koodannut+Delphillä+1995+alkaen,+ja+lopputuloksena+syntyy+laadukkaita+ohjelmia,+jotka+tekevät+halutun+asian,+eivät+sekoile,+eivätkä+sisällä+tietoturvan+vaarantavia+haavoittuvuuksia.

Äänestä

Assembly Language :D

Itseäni oikeastikin huvittaa miten voi myydä jotain läppåäriä alle TERA-tavun kiintolevbyllä, täyttä huijausta, eihän yhteen teratavuun mahdu yhdään dataa.

Ehdotan Seagate Barracuda 1TB jokaiseen läppäriin vaatimukseksi.

Äänestä

Kommentoi aloitusta


tilasto-opettelija kirjoitti:

Pitäisi opetella joku Pythonia ja R:ää nopeampi kieli, kun haluaisin opetella big data-analyysiä. Olen koulutukseltani matemaagikko. Sanokaahan vinkkejä, mitä kannattaisi opetella? Kuulemma C, C ja Julia voisivat tulla kysymykseen, mutta miten käteviä kukin olisi datatieteessä? Löytyykö paketteja, jotka hoitavat symbolisen ja numeerisen algebran sekä tilastollliset testit suoraan vai pitääkö kaikki vääntää itse?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu