Seuraa 
Viestejä964

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)

Vierailija

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.

Veli Ponteva
Seuraa 
Viestejä954

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.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Neutroni
Seuraa 
Viestejä34608

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.

Veli Ponteva
Seuraa 
Viestejä954

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.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

Vierailija

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

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.

Veli Ponteva
Seuraa 
Viestejä954

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.

Selkärankaisten laskupää on yhtä hyvä kuin pikkulasten – jotkin osaavat jopa yhteen- ja vähennyslaskua

HuuHaata
Seuraa 
Viestejä7800

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

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

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

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

apassi
Seuraa 
Viestejä1250

MooM kirjoitti:
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.

Noinhan se menee. Minun mielestä ei ole olemassa yhtä oikeaa kieltä, vaan softateollisuudessa on  vaatimus, kompromissi ja tulos. Kompromissi on tuhlatun rahan määrä, johon vaikuttaa millä tehdään mitäkin, tai vaihtoehtoisesti raha määrää sen, millä tehdään ja mitä tehdään.

Ab Surd Oy
Seuraa 
Viestejä12313

Eihän ohjelmointi ole erilaista vaikka työkalut ja kielet poikkeaisivatkin.

Tutkimuksessa itse ongelman ratkaisemisen logiikka on oleellista, ei se, että kuinka tehokkaasti se tehdään tai täyttääkö se kaupalliselta tuotteelta vaaditut laatukriteerit. Tutkimuksessa toteutetaan ehkä vain ydinalgoritmi jossain spesifissä syöteavaruudessa. Tuotekehityksessä firmassa taas pitää tehdä se kokonainen myytävä sovellus ympärille, josta 98% on trivialiteetteja ja bulkkia ja virheensietokykyä ja karkkia jolla vedotaan maksavan asiakkaan alitajuntaan.

Jos osaa oikeasti ohjelmoida, ei uusi ohjelmointikielissä yleensä ole kummoinenkaan muutos. Samaa luokkaa kuin muuttaa uuteen kämppään ja opetella kulkemaan sieltä töihin. Reitti on eri, yksityiskohdatkin vaihtuvat, mutta perustoiminnt ja tavoite pysyy samana.

Vierailija

Firmojakin on monenlaisia. Jossain on niitä vouhotusten perässä juoksevia hipstereitä, toisissa taas ollaan jumissa jossain muinaisessa paskassa. Hankala sanoa kumpi on pahempi.

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.

Mites tota PCBC-moodin dekryptaus? Miten sen rinnakkaistaisit?

Tauko
Seuraa 
Viestejä1488

Tutkimuksessa koodia optimoidaan mahdollisimman tarkkaan tulokseen pääsemiseksi ja lyhyinpään laskenta-aikaan. Itse koodaamiselle "riittää" aikaa. Probleemaa on yleensä hyvinkin monimutkainen ja hankalasti ratkaistava.

Työelämässä koodaamiselle on aikataulu milloin pitää olla valmista ja riittävän vähävirheistä koodia. Ja usean eri koodaajan modulien täytyy toimia yhteen. Myös ohjelmointikoodi pitää olla suoraviivaista ilman vaikeita kikkaluja, Jotta toisen ohjelmoijan on helppo ottaa moduuli haltuun ja jatkaa sen edelleen muokkaamista.

Kilpailu markkinoilla määrittelee aikataulut.

Ohjemistotestaus on tärkeää, mutta virheetöntä ohjelmaa ei voi hioa ajan puitteissa.
Ja korjauspaketteja sitten tulee aika ajoin jatkossa ja aina toivo asiakastyytyväisyyden jatkumisesta.

Sivut

Suosituimmat

Uusimmat

Sisältö jatkuu mainoksen alla

Suosituimmat