Pythonia nopeampi kieli datatieteeseen hakusessa

tilasto-opettelija

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?

23

1432

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Fortran77

      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.

    • Älä-pissi-allesi

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

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

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

      • M-Kar

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


    • delphikoodaaja

      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 ?

      • "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?


    • trollerson

      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 . . .

      • Anonyymi

        "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ä.


    • nimikielelle

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

      • Arvaustoimisto

        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."


      • bööörb

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


      • Turbo-Urpo1
        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


      • Turbo-Urpo1
        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


      • Turbo-Urpo1
        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


      • trollerson
        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?


      • Turbo-Urpo1
        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.


    • Funktio-ohjelmointi

      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.

    • Uuh

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

    • afefea

      Fortran 90/95, 2003 voisi olla tarkoitukseesi sopiva.

    • Anonyymi

      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ä)

      vai

      b) 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.

    • Anonyymi

      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.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Metsäkoneen kuljettaja huuteli tutkijalle

      "voisit kyllä ottaa rintaliivit pois ennen kuin tulet minulle juttelemaan, hän sanoo." https://yle.fi/a/74-20106446 On
      Suomussalmi
      704
      9970
    2. Suomi on täysin sekaisin

      Jo ties monettako päivää hirveä itku ja poru jostain helvetin nilviäisistä. https://www.is.fi/taloussanomat/art-2000010
      Maailman menoa
      409
      4353
    3. Kaikki ei vieläkään usko luontokatoon.

      Suomussalmen Hukkajoella foliohattu metsäkoneen kuljettaja tuhosi tuhansia harvinaisia jokihelmisimpukoita eli raakkuja
      Kajaani
      90
      2996
    4. Sano vain suoraan, että nyt riittää

      ettei kiinnosta. Sano, että lopeta! En ihmettelisi, jos olet saanut tarpeeksesi ja toivot minun ymmärtävän lopettaa. Eh
      Ikävä
      43
      2855
    5. Mari Rantanen asettaa sairaan lapsen edun oman uransa edelle - (tekikö Marin samaa)

      Noin toimii kunnon vastuuntuntoinen äiti, mutta siitäkin nämä mt-ongelmaiset vasemmistolaiset häntä täällä haukkuvat. "
      Maailman menoa
      230
      2658
    6. Ohhoh! Ex-pääministeri Sanna Marinin Joni-rakas paljasti ilouutisen: "Tässä kuussa..."

      Sanna Marin on ollut naimisissa Markus Räikkösen kanssa. Nyt hänen seurassaan on usein julkkishiusmuotoilija Joni Willb
      Kotimaiset julkkisjuorut
      55
      2654
    7. Mitä ajattelet aina

      Kun hän tulee näköpiiriin?
      Ikävä
      153
      1845
    8. Luokatonta toimintaa

      Tyrmistyttävää toimintaa Stora Enson korjuu yrittäjältä Hukkajoella. Täyttä piittaamattomuutta laeista ja luontoarvoista
      Suomussalmi
      71
      1700
    9. Ensimmäisestä kohtaamisesta saakka

      minulla on ollut hämmentynyt olo. Miten voit tuntua siltä, että olisin tuntenut sinut aina? Sinun kanssasi on yhtä aikaa
      Ikävä
      14
      1620
    10. Maailmankuulu homopingviini on kuollut

      Minä niin toivoin että pariskunta olisi saatu kunniavieraiksi ensi kesän Prideen. 💔 "Maailmankuulu homopingviini on k
      Lapua
      6
      1423
    Aihe