Seuraa 
Viestejä917
Liittynyt19.3.2005

Miksi tutkijoiden ohjelmointi ja firmoissa tehtävä ohjelmointi on niin erilaista?

Tunnen yliopistoprofessorin, joka käytännössä tekee kaiken Matlabilla ja LaTeXilla, ehkä R:llä ja Mathematicallakin. Hän on pärjännyt alallaan hyvin, kun tuntee vain muutaman ohjelmiston hyvin, ja on vuosikausia hionut taitojaan. Kun ei ole käyttänyt aikaa kielten opiskeluun, hän on ehtinyt opetella valtavasti teoriaa julkaisuista.

Sen sijaan työelämässä olen nähnyt, kuinka kieliä vaihdetaan monta kertaa. Miksi firmat ei osaa päättää, että nyt käytetään vaikka C:tä tai Pythonia, ja tehdään maailmanluokan tuote 20 vuoden aikana? Kuitenkin uusien kielien opetteluun käytetty aika on pois uusien algoritmien opettelusta, joten varmaan pitkällä tähtäimellä artikkeleja lukenut professori saa aikaan tehokkaampaa koodia kuin kieliä usein vaihtanut, koska kuitenkin asymptoottiselta suoritusajaltaan tehokkaammat algoritmit voittavat nopeammalla kielellä kirjoitetut ei niin tehokkaat algoritmit.

Sivut

Kommentit (31)

ksuomala
Seuraa 
Viestejä2921
Liittynyt30.3.2014

Niin no nykyään on kaiken maailman hipstereitä firmoissa niin pitää juosta soiro suorana sen vouhotuksen perässä mikä milläkin viikolla on muotia. Ja muutenkin firmolla on intressinä duunata paskeet valmiiksi ja asiakkaalle asti mahdollisimman nopeasti ja mahdollisimman vähällä vaivalla ja mahdollisimman vähän aivoja käyttäen.

Yliopistomaailmassa voi olla toinen meininki.

Rasvaperse
Seuraa 
Viestejä589
Liittynyt26.5.2016

Itse liputan C:tä matemaattisten ongelmien parissa. Hyvä ohjelmointitaito vapauttaa tekemään tehokkaan algoritmin erittäin spesifisen matemaattisen ongelman tutkimiseen.

Kun ei tiedä, ohjelmoi vain brute forcen tutkimaan ongelmaa. Tämä onnistuu, kun algoritmille kirjoitetaan vain ja ainoastaan reunaehdot, minkä välistä oikeaa ja tyytyttävää ratkaisua pitää etsiä. Matlabilla ja muilla hitailla sovelluksilla tällainen mittelö ongelman/tutkittavan asian parissa ei onnistu.

Neutroni
Seuraa 
Viestejä29165
Liittynyt16.3.2005

Rasvaperse kirjoitti:
Itse liputan C:tä matemaattisten ongelmien parissa. Hyvä ohjelmointitaito vapauttaa tekemään tehokkaan algoritmin erittäin spesifisen matemaattisen ongelman tutkimiseen.

Joo, C on hyvä kieli matemaattisiin pikkuohjelmiin, mutta se vaatii liikaa työvoimaa suurten kaupallisten ohjelmien ylläpitoa ajatellen.

Lainaus:
Kun ei tiedä, ohjelmoi vain brute forcen tutkimaan ongelmaa. Tämä onnistuu, kun algoritmille kirjoitetaan vain ja ainoastaan reunaehdot, minkä välistä oikeaa ja tyytyttävää ratkaisua pitää etsiä. Matlabilla ja muilla hitailla sovelluksilla tällainen mittelö ongelman/tutkittavan asian parissa ei onnistu.

Käytännössä C:n ja nykyajan hömppäkielten ero on vähemmän kuin kertaluokka. Ei se tuo onnea ja autuutta brute force -hommiin. Vaikka koodaisit assembleria, brute forcella voi ratkoa vain pieni ja yksinkertaisia ongelmia. Brute forcen oikeaan toimimiseen jossain oikeassa ongelmassa tarvittaisiin ainakin googolin lisäys laskentatehossa, mikä on muistaakseni mahdotonta joidenkin termodynaamisten outouksien takia.

Rasvaperse
Seuraa 
Viestejä589
Liittynyt26.5.2016

Neutroni kirjoitti:
Käytännössä C:n ja nykyajan hömppäkielten ero on vähemmän kuin kertaluokka. Ei se tuo onnea ja autuutta brute force -hommiin. Vaikka koodaisit assembleria, brute forcella voi ratkoa vain pieni ja yksinkertaisia ongelmia. Brute forcen oikeaan toimimiseen jossain oikeassa ongelmassa tarvittaisiin ainakin googolin lisäys laskentatehossa, mikä on muistaakseni mahdotonta joidenkin termodynaamisten outouksien takia.

Suuren ongelman voi pilkkoa  pienimmiksi osaongelmiksi, ikään kuin FFT.

Jos ongelma on esimerkiksi matriisin muodossa, yksi osaongelma voi olla vaikkapa, että matriisin pitää olla symmetrinen. Silloin kaikki ne matriisit, jotka ovat epäsymmetrisiä kipataan heti kättelyssä, eli brute force ohjelmoidaan niin, että se generoi ja tutkii vain symmetrisiä tapauksia. Toinen vaatimus voisi olla, että algoritmi ohjelmoidaan tutkimaan vain vaihdannaisia tapauksia. Nyt jos matriisi on sekä symmetrinen että vaihdannainen, siitä tutkitaan lisää. Tällaisella järjellä varustettu brute force pystyy tutkimaan järjettömän määrän eri matriiseja järjellisessä ajassa.

ksuomala
Seuraa 
Viestejä2921
Liittynyt30.3.2014

Neutroni kirjoitti:
yksinkertaisia ongelmia. Brute forcen oikeaan toimimiseen jossain oikeassa ongelmassa tarvittaisiin ainakin googolin lisäys laskentatehossa, mikä on muistaakseni mahdotonta joidenkin termodynaamisten outouksien takia.

Google oli sitä mieltä että Laundauerin rajan voi kiertää jutulla nimeltään reversible computing. Saattaa jossain mielessä sivuta kvanttitietokoneita.

Neutroni
Seuraa 
Viestejä29165
Liittynyt16.3.2005

Rasvaperse kirjoitti:
Suuren ongelman voi pilkkoa  pienimmiksi osaongelmiksi, ikään kuin FFT.

Se riippuu ongelmasta, ja rinnakkaistaminen on yleensä erittäin vaikea ongelma.

Lainaus:
Jos ongelma on esimerkiksi matriisin muodossa, yksi osaongelma voi olla vaikkapa, että matriisin pitää olla symmetrinen. Silloin kaikki ne matriisit, jotka ovat epäsymmetrisiä kipataan heti kättelyssä, eli brute force ohjelmoidaan niin, että se generoi ja tutkii vain symmetrisiä tapauksia. Toinen vaatimus voisi olla, että algoritmi ohjelmoidaan tutkimaan vain vaihdannaisia tapauksia. Nyt jos matriisi on sekä symmetrinen että vaihdannainen, siitä tutkitaan lisää. Tällaisella järjellä varustettu brute force pystyy tutkimaan järjettömän määrän eri matriiseja järjellisessä ajassa.

Se riipuu matriisista. Enkä nyt heti keksi minkälaista ongelmaa tarkoitat. Minulle tulee matriiseista mieleen lähinnä diffisyhtälöiden ratkaisut, ja ne ovat usein jäätävän kokoisia matriiseja, joiden ratkaisu (lin. yhtälöryhmä tai ominaisarvojen laskeminen) vie harrastustason matriiseillakin sekuntikaupalla (vaikka hifistelee AVX-käskyillä). Ja usein ne ovat myös myös vaikeasti rinnakkaistuvia (jotain rinnakkaisia algoritmeja esimerkiksi harvan yhtälöryhmän ratkaisuun on, mutta ne menevät yli meikäläisen hilseen).

Minulla olisi mielessä yksi projekti pahamainesten Navierin ja Stokesin yhtälöiden parissa. Mutta kun joka paikassa kerrotaan vain puristumattomasta tapauksesta ja se yleistäminen on jotain, josta ulkomaan elävä sanoisi "non trivial". Kunhan vain ehtisi ja jaksaisi.

Vierailija

Rasvaperse kirjoitti:
Neutroni kirjoitti:
Käytännössä C:n ja nykyajan hömppäkielten ero on vähemmän kuin kertaluokka. Ei se tuo onnea ja autuutta brute force -hommiin. Vaikka koodaisit assembleria, brute forcella voi ratkoa vain pieni ja yksinkertaisia ongelmia. Brute forcen oikeaan toimimiseen jossain oikeassa ongelmassa tarvittaisiin ainakin googolin lisäys laskentatehossa, mikä on muistaakseni mahdotonta joidenkin termodynaamisten outouksien takia.

Suuren ongelman voi pilkkoa  pienimmiksi osaongelmiksi, ikään kuin FFT.

Jos ongelma on esimerkiksi matriisin muodossa, yksi osaongelma voi olla vaikkapa, että matriisin pitää olla symmetrinen. Silloin kaikki ne matriisit, jotka ovat epäsymmetrisiä kipataan heti kättelyssä, eli brute force ohjelmoidaan niin, että se generoi ja tutkii vain symmetrisiä tapauksia. Toinen vaatimus voisi olla, että algoritmi ohjelmoidaan tutkimaan vain vaihdannaisia tapauksia. Nyt jos matriisi on sekä symmetrinen että vaihdannainen, siitä tutkitaan lisää. Tällaisella järjellä varustettu brute force pystyy tutkimaan järjettömän määrän eri matriiseja järjellisessä ajassa.

Aika paljon vaatimuksia.

Vierailija

While Cobham's thesis is an important milestone in the development of the theory of computational complexity, it has limitations as applied to practical feasibility of algorithms. The thesis essentially states that "P" means "easy, fast, and practical," while "not in P" means "hard, slow, and impractical."

https://en.wikipedia.org/wiki/Cobham%27s_thesis

Rasvaperse
Seuraa 
Viestejä589
Liittynyt26.5.2016

Neutroni kirjoitti:
Minulle tulee matriiseista mieleen lähinnä diffisyhtälöiden ratkaisut, ja ne ovat usein jäätävän kokoisia matriiseja, joiden ratkaisu (lin. yhtälöryhmä tai ominaisarvojen laskeminen) vie harrastustason matriiseillakin sekuntikaupalla (vaikka hifistelee AVX-käskyillä). Ja usein ne ovat myös myös vaikeasti rinnakkaistuvia (jotain rinnakkaisia algoritmeja esimerkiksi harvan yhtälöryhmän ratkaisuun on, mutta ne menevät yli meikäläisen hilseen).

No redundanssi verkko generoi helposti yli sadantuhannen tuntemattoman yhtälöryhmiä. Kun yhtälöryhmän ratkaisun suhteen raapii tarpeeksi kauan päätään, syntyy algoritmi joka pystyy reaaliajassa ratkaisemaan yhtälöryhmän. Tällainen ongelma on esimerkiksi sähkömoottorin mallinnus.

HuuHaata
Seuraa 
Viestejä6207
Liittynyt8.11.2012

Suurin osa yrityksistä on huonoja ja tylsiä. On harvinaisia hyviä firmoja ja mielekkäitä tehtäviä myös ohjelmoinnin saralla. Ei paljoa.

Yliopistoissa ongelmana on yksin puurtaminen. Ainoa syy miksi nykyään vielä noin voi olla kohtuu tehokas on, että kouluissa opetetaan ihmiset niin massiivisen huonoiksi ryhmätyön tekijöiksi.

Neutroni
Seuraa 
Viestejä29165
Liittynyt16.3.2005

pöhl kirjoitti:
Miksi tutkijoiden ohjelmointi ja firmoissa tehtävä ohjelmointi on niin erilaista?

Tunnen yliopistoprofessorin, joka käytännössä tekee kaiken Matlabilla ja LaTeXilla, ehkä R:llä ja Mathematicallakin. Hän on pärjännyt alallaan hyvin, kun tuntee vain muutaman ohjelmiston hyvin, ja on vuosikausia hionut taitojaan. Kun ei ole käyttänyt aikaa kielten opiskeluun, hän on ehtinyt opetella valtavasti teoriaa julkaisuista.

Se proffa tekee pieniä ohjelmia omaan tai tutkimusryhmänsä käyttöön. Niissä ei tarvita kummoistakaan käytöliittymää ja käyttävät ovat alan asiantuntijoita. Yliopistoissa ei tutkijan työaika myöskään maksa samalla tavalla kuin työntekijän työaika firmalle, koska suurin osa saa rahoituksen ulkopuolelta ja palkaton ylityö on tavallinen käytäntö.

Firmat tekevät suuria ohjelmistoja, jotka ovat mahdollisimman yleiskäyttöisiä. Niissä on toimintoja hyvin erilaisia asiakaita varten ja käyttöliittymät suunniteltu niin, että mahdollisimman vähän asiasta ymmärtävä halpaduunari voi käyttää ohjelmaa mahdollisimman vähällä koulutuksella. Kaupallisen ohjelman pitää olla turvallinen ja riittävän virheetön, että isot asiakkaat nielevät bugit. Sellaiset ohjelmat kasvavat niin suuriksi, että yksi ihminen ei voi hallita niitä. Silloin kehittynemmät kielet ovat edullisempi tapa koodata.

Lainaus:
Miksi firmat ei osaa päättää, että nyt käytetään vaikka C:tä tai Pythonia, ja tehdään maailmanluokan tuote 20 vuoden aikana?

Siksi, että asiakkaat haluavat välttävästi toimivan tuotteen kuukaudessa. Maailman parhaan hiominen vuosikymmenien aikana ei ole ollenkaan toimiva strategia yritysmaailmassa. Firma, joka tekee hätäisestä paskaa koodia uusimmilla ja tuottavimmilla työkaluilla ja käyttää 2/3 investoinneistaan tuotekehityksen sijaan markkinointiin pesee mennen tullen täydelisyyttä tavoittelevan firman, joka kuvittelee, että hyvä tuote myy itse itsensä.

Lainaus:
Kuitenkin uusien kielien opetteluun käytetty aika on pois uusien algoritmien opettelusta, joten varmaan pitkällä tähtäimellä artikkeleja lukenut professori saa aikaan tehokkaampaa koodia kuin kieliä usein vaihtanut, koska kuitenkin asymptoottiselta suoritusajaltaan tehokkaammat algoritmit voittavat nopeammalla kielellä kirjoitetut ei niin tehokkaat algoritmit.

Ei uuden ohjelmointikielen oppiminen ole niin valtava ponnistus kuin normaalin kielen oppiminen.

apassi
Seuraa 
Viestejä573
Liittynyt2.12.2011

ksuomala kirjoitti:
Niin no nykyään on kaiken maailman hipstereitä firmoissa niin pitää juosta soiro suorana sen vouhotuksen perässä mikä milläkin viikolla on muotia. Ja muutenkin firmolla on intressinä duunata paskeet valmiiksi ja asiakkaalle asti mahdollisimman nopeasti ja mahdollisimman vähällä vaivalla ja mahdollisimman vähän aivoja käyttäen.

Yliopistomaailmassa voi olla toinen meininki.

En tiedä korkeakouluista, mutta voisin kuvitella että ohjelmointi tapahtuu sillä, minkä kaikki osaa, ja jolle koulutus tapahtuu,  joka on joskus jonkun toimesta valittu de facto työkaluksi.

Työelämästä on parin kymmenen vuoden kokemus, ja siellä (valitettavasti) tilanne on juuri niinkuin ksuomala esitti. Eräs kollega kuvasi näitä kaikenlaisia 5 vuoden välein vaihtuvia frameworkkeja mediakieliksi, mikä oli mielestäni oikein osuva termi.

MooM
Seuraa 
Viestejä6470
Liittynyt29.6.2012

apassi kirjoitti:
ksuomala kirjoitti:
Niin no nykyään on kaiken maailman hipstereitä firmoissa niin pitää juosta soiro suorana sen vouhotuksen perässä mikä milläkin viikolla on muotia. Ja muutenkin firmolla on intressinä duunata paskeet valmiiksi ja asiakkaalle asti mahdollisimman nopeasti ja mahdollisimman vähällä vaivalla ja mahdollisimman vähän aivoja käyttäen.

Yliopistomaailmassa voi olla toinen meininki.

En tiedä korkeakouluista, mutta voisin kuvitella että ohjelmointi tapahtuu sillä, minkä kaikki osaa, ja jolle koulutus tapahtuu,  joka on joskus jonkun toimesta valittu de facto työkaluksi.

Työelämästä on parin kymmenen vuoden kokemus, ja siellä (valitettavasti) tilanne on juuri niinkuin ksuomala esitti. Eräs kollega kuvasi näitä kaikenlaisia 5 vuoden välein vaihtuvia frameworkkeja mediakieliksi, mikä oli mielestäni oikein osuva termi.

Aika usein on joku lähtökohta (koodi), josta muokataan uuteen juttuun sopiva. Siksi työkalut muuttuvat hitaasti, koska koodin muokaamiseen uudelle kielelle ei ole aikaa.

Omalla alallani (tutkimustyö, ohjelmointitarve on lähinnä signaalinkäsittely ja siitä eteenpäin + statistiikka) Matlab on pikkuhiljaa korvautumassa R:llä ja Pythonilla. Python erityisesti koneoppimisessa ja AI:ssa (mitä kukakin niihin laskee) ja R "tavallisemmassa" laskennassa. Mutta kun iso klöntti relevanttia koodia on Matlabilla, niin helpointa on jatkaa sillä ja ottaa nuo muut vain tehtäviin, jotka aloitetaan nollasta.

"MooM": Luultavasti entinen "Mummo", vahvimpien arvelujen mukaan entinen päätoimittaja, jota kolleega hesarista kuvasi "Kovan luokan feministi ja käheä äänikin". https://www.tiede.fi/keskustelu/4000675/ketju/hyvastit_ja_arvioita_nimim...

Sivut

Suosituimmat

Uusimmat

Uusimmat

Suosituimmat