Näissä ohkelmointia käsittelevissä jutuissa tavataan usein lytätä joku kieli tai toteutustapa automaattisesti melkein kaikissa suhteissa vain siksi, ettei sillä tehtyä softaa saada alustariippumattomaksi. Tietty on totta, että vaikka nyt peliteollisuudessa, toimistosoftissa ja joissain tietyissä open sourceissa on ihan hieno homma, että softa on siirrettävä ja sen voi portata joko melkein suoraan tai hyvin vähällä vaivalla muillekin alustoille.
Kiinnostaisi vain tietää, että kuinka moni täällä tekee ihan oikeasti koodeistaan portattavaa ja alustariippumatonta. Itellä kun spekseissä lukee, että softan pitää toimia alustalla X, niin sitten se softa toimii alustalla X. Piste.
Kun asioista tietää jotain, niin portattavuutta voi ottaa huomioon jonkun verran. Mutta ei se tule silloinkaan ilmaiseksi. Toiselle alustalle siirtämiseen vaaditaan aina vähintään sen alustan alla testaamista ja maksaa sekin jotain. Ei meillä ainakaan testata mitään ilmaiseksi eikä puolivillaisesti katsomalla, että softa lähtee käyntiin ja sillä pääsee eri toimintoihin.
Jotenkin vaan on jäänyt sellainen vaikutelma, ettei suurinta osaa tietylle alustalle tehdyistä softista siirretä koskaan minnekään muualle. Miksi siis lytätä alustariippuvainen ratkaisutapa jos tämä malli on ok eikä asiakaskaan vaadi muuta? Onko se yleensä hyvää bisnestä mennä toimittamaan asiakkaalle paljon enemmän kuin asiakas haluaa - ja ilman laskutusta? Ja pitäisikö softaihmisen ajatella oikeastaan omaa bisnestään ollenkaan?
Kuka uskaltaa sanoa toteutustensa toimivan ok toisella alustalla ilman testausta?
Kiinnostaisi vain tietää, että kuinka moni täällä tekee ihan oikeasti koodeistaan portattavaa ja alustariippumatonta. Itellä kun spekseissä lukee, että softan pitää toimia alustalla X, niin sitten se softa toimii alustalla X. Piste.
Kun asioista tietää jotain, niin portattavuutta voi ottaa huomioon jonkun verran. Mutta ei se tule silloinkaan ilmaiseksi. Toiselle alustalle siirtämiseen vaaditaan aina vähintään sen alustan alla testaamista ja maksaa sekin jotain. Ei meillä ainakaan testata mitään ilmaiseksi eikä puolivillaisesti katsomalla, että softa lähtee käyntiin ja sillä pääsee eri toimintoihin.
Jotenkin vaan on jäänyt sellainen vaikutelma, ettei suurinta osaa tietylle alustalle tehdyistä softista siirretä koskaan minnekään muualle. Miksi siis lytätä alustariippuvainen ratkaisutapa jos tämä malli on ok eikä asiakaskaan vaadi muuta? Onko se yleensä hyvää bisnestä mennä toimittamaan asiakkaalle paljon enemmän kuin asiakas haluaa - ja ilman laskutusta? Ja pitäisikö softaihmisen ajatella oikeastaan omaa bisnestään ollenkaan?
Kuka uskaltaa sanoa toteutustensa toimivan ok toisella alustalla ilman testausta?
Vastaukset 9
Vanhimmat
Minä olen saamassa valmiiksi muuttoani MS-alustalta riippumattomiin koodaustekniikoihin. Olo on kuin lapsella jonka ei tarvitse enää ottaa tukeaan maasta oppiessaan hallitsemaan tasapainonsa. Siten saa kädet vapaaksi, vaikka niitäkin tarvitaan 18-vuotiaana ohjaamaan neljäpyöräistä kulkuneuvoa.
Hmm.. Ajattele vaikka jotain kansaa, jonka kieli poikkeaa muista. Japani ja Suomi. Eivät ne ole yksiselitteisesti huonoja maita. Ne on kehittyneitä mutta ristiriitaisia...
Jos tarkoitukseni on tehdä joku softa asiakkaalle, mitä asiakas itse käyttää eikä oikeastaan kukaan muu, teen softan kyllä minimityöllä tasan yhdelle alustalle. Näin siksi, että minulle ei olisi mitään hyötyä viilata ja testata softaa useammalle alustalle.
Sen sijaan jos teen softan vaikka oman firman sisäiseen käyttöön tai muutoin firman tuotteeksi, niin silloin mieluummin teen sen porttautuvaksii. Jos softa on saatavilla useammalle alustalle, sen käyttömahdollisuudet ja asiakaskunta ovat suurempia.
Softat teen yleensä C :lla, mutta joskus joudun alistumaan myös javan käyttöön.
Joo tosiaan noi asiakasprojektit kiinnostavat. Eli kuka tekee niistä tosissaan portattavia ilman lisäkuluja? Ja onko yleensä järkeä luvata yhteensopivuutta muille alustoille jos siitä ei ota lisää laskua?
Ite en lupaisi vaikka tietäisin, että toimii nyt.
"Kiinnostaisi vain tietää, että kuinka moni täällä tekee ihan oikeasti koodeistaan portattavaa ja alustariippumatonta. Itellä kun spekseissä lukee, että softan pitää toimia alustalla X, niin sitten se softa toimii alustalla X. Piste."
Minä ainakin teen. Ihan siksi, koska softan elinkaari voi olla helposti vuosikymmeniä ja maailma muuttuu joten se pitäisi olla siirrettävissä kohtuullisella vaivalla. Tarpeeton rewrite on kallista.
"Toiselle alustalle siirtämiseen vaaditaan aina vähintään sen alustan alla testaamista ja maksaa sekin jotain."
Tietysti. Mutta sitäpä ei tarvitse tehdä. Softa voitaan tehdä portattavaksi ja alustalle X. Sitten jos/kun siirretään muualle, siirretään se muualle ja katsotaan että hommat toimii. Se on yleensä idioottimaisuutta tehdä softa niin, että portattavuus ei onnistu mitenkään järjellisellä vaivalla. Portattavuus on yksi softan laatumittareista: http://en.wikipedia.org/wiki/Software_quality
Ei sitä ihan mitä tahansa paskaa pidä mennä tekemään.. Kuten vaikka selainpohjaista softaa mikä toimii vain ja ainoastaan IE6:lla. Tälläistäkin jotkut pellet meni tekemään ja uusiksi meni/menee ennen aikojaan.
"Kun asioista tietää jotain, niin portattavuutta voi ottaa huomioon jonkun verran. Mutta ei se tule silloinkaan ilmaiseksi."
Kun asioista tietää jotain, portattavuus tulee ilmaiseksi. Itse porttaaminen ei tule ilmaiseksi mutta eipä sen aina tarvitsekkaan tulla. Juuri hiljattain esimerkiksi devvasin Windows Server 2003:lle softan. Kehitystyön tein Ubuntu 8.04:llä koska työympäristö oli niin paljon tuottavampi. Siirros WS2003:n päälle ei vaatinut koodiin kuin kahden rivin muutokset jotka osasin huomioida jo tekovaiheessa ja homman saaminen pyörimään ei vaatinut oleellisesti kuin ajoympäristön yms. sälän asennuksen rassausta.
Eipä minua sitten kiinnosta missä muualla tuo toimii kun ei ole tarvetta. Sitten kun tarvii siirtää johonkin niin siirrän sen. Puhtaalta pöydältä kirjoitettu ilman mitään deprecated ominaisuuksia niin en usko, että tarvitsee vuosikausiin tehdä mitään muutoksia.
"Kuka uskaltaa sanoa toteutustensa toimivan ok toisella alustalla ilman testausta?"
Riippuu tapauksesta. Tuo edellinen softa toimii suurella varmuudella joka paikassa ilman muutoksia mihin saa pyörimään tietokantamoottorista ja ajoympäristöstä samat major -versiot. Taitaa kyllä kattaa niin AIX:n, Ubuntu Serverin, Debianin, Windows Serverin, Suse Enterprise Serverin, Mac OS X Serverin, Red Hat Enterprise Serverin...
"Jotenkin vaan on jäänyt sellainen vaikutelma, ettei suurinta osaa tietylle alustalle tehdyistä softista siirretä koskaan minnekään muualle."
Silloinhan ne softat on tehty väärin jos ne on tehty tietylle alustalle. Sellaisia ei kannata oikein siirtää vaan kannattaa kirjoittaa uusi softa. Ja se taas on työlästä.
Joo, no hommaa auttaa tietty se jos softaa käytetään selaimen kautta tai sillä ei ole mitään kummempaa käyttöliittymää.
Enempi kiinnostaisi tietää se, että teettekö tosiaan hommia paljonkin sellaisille asiakkaille joilla alustojen vaihtaminen edestakas on arkipäivää? Ite kun on nähnyt niin paljon vanhoissa systeemeissä pitäytymistä ja niiden ylläpitoa, että yleensä siirto tehdään vasta sitten kun koko systeemi kannattaa kirjotella uusiksi.
Legendan mukaan pankeissa on yhä käytössä miljoonia rivejä 60-luvun cobolia ja muuta sen ajan tauhkaa. Varmaan on jossain käytössä, mutta eivät ne nykyiset tärkeät asiakassysteemit noiden päällä pyöri eikä olisi järkevääkään, että niitä niillä pyöritettäisiin. Joskus kun softankin elinkaaressa tulee vastaan se raja, että se kannattaa kirjotella suosiolla uusiksi. Ei kaikkia uusia hyviä ideoita voi ottaa noin vaan huomioon.
Uudempaa cobolia muuten sitten onkin vähän siellä sun täällä ja enemmänkin.
"Joo, no hommaa auttaa tietty se jos softaa käytetään selaimen kautta tai sillä ei ole mitään kummempaa käyttöliittymää."
Selaimen kauttahan niitä yleensä käytetään, mutta ei käyttöliittymäkään ole mikään ongelma.
"Enempi kiinnostaisi tietää se, että teettekö tosiaan hommia paljonkin sellaisille asiakkaille joilla alustojen vaihtaminen edestakas on arkipäivää?"
Ei niitä alustoja vaihdeta edestakaisin, mutta softaa voi myydä sitten uusille asiakkaille mistä niitä mitä alustoja kaikilla on 5v tai 10v kuluttua. Lisäksi voi tehdä bisnestä tukipalvelujen muodossa, että ylläpitää niitä koneita toiminnassa ja asentaa alustan mikä nyt olisi milloinkin hinta/laatu suhteeltaan hyvä. Softaa ja rautaa pitää voida kilpailuttaa. Pääasiassa on, että mahdollisimman vähillä euroilla saa softan pyörimässä mahdollisimman pitkään niin saa itselle paremmat katteet.
Ei kukaan asiakas niitä alustoja miten tahansa vaihtele mutta asiakkaita olisi kiva saada paljon.
Alustariippumattoman softan kanssa on läheisesti tekemisissä myös se softan pitkäikäisyys, koska alustariippumattomuus yleensä tarkoittaa standardeja ja paremmin vakioituja juttuja. Koodin uudelleen käyttö on suurelta osin käytännössä utopiaa, mutta vanhan koodin pätkien ottaminen käyttöön työstettäväksi uuteen uskoon on tavallista, ja ennenkaikkea _osaamisen_ uudelleenkäyttö on tavallista. Pitkäikäisissä ohjelmissa ei kehittäjät hukkaa aikaa opettelemalla turhanpäiväisiä asioita jotka on parin vuoden päästä historiaa.
"Joskus kun softankin elinkaaressa tulee vastaan se raja, että se kannattaa kirjotella suosiolla uusiksi."
Ja mitä pitempään homma toimii ilman rewriteä, olkoot syy mikä tahansa, sitä paremmin on onnistuttu.
Ei siitä kuule ihan hirveän montaa vuotta ole, kun eräässäkin suuressa suomalaisessa pankki- ja vakuutusalan yrityksessä hommat tehtiin ihan asiakaspalvelijoita myöten mainframe-koneita käyttäen, tyhmien päätteiden kautta ohjelmilla, jotka oli tehty käyttäen ohjelmointikieltä nimeltä PL/1. Samoin eräässä toisessa pankissa vielä ainakin kymmenen vuotta sitten kaikki tärkeimmät rahojen siirtoon liittyvät ohjelmistot pyörivät mainframe-koneissa vuodelta nakki, ja tuskinpa näitä on päivitetty mihinkään uudempaan järjestelmään.. koska ei ole mikään pakko.
Alustariippumattomuudesta vielä, itse pyrin aina tekemään niin alustariippumatonta koodia kuin mahdollista. Yleensä se ei edes vaadi mitään ylimääräistä, varsinkaan palvelinpään ohjelmoinnissa. Natiivikäyttöliittymien kanssa on tietenkin vaikeampaa, mutta tällöinkin aika pienellä vaivalla ohjelman voi modularisoida käyttöliittymäosaan ja varsinaiseen toteutukseen, jolloin porttaaminen tarkoittaisi käytännössä vain käyttöliittymän uudelleenkoodausta.
"Näissä ohkelmointia käsittelevissä jutuissa tavataan usein lytätä joku kieli tai toteutustapa automaattisesti melkein kaikissa suhteissa vain siksi, ettei sillä tehtyä softaa saada alustariippumattomaksi. Tietty on totta, että vaikka nyt peliteollisuudessa, toimistosoftissa ja joissain tietyissä open sourceissa on ihan hieno homma, että softa on siirrettävä ja sen voi portata joko melkein suoraan tai hyvin vähällä vaivalla muillekin alustoille.
Kiinnostaisi vain tietää, että kuinka moni täällä tekee ihan oikeasti koodeistaan portattavaa ja alustariippumatonta. Itellä kun spekseissä lukee, että softan pitää toimia alustalla X, niin sitten se softa toimii alustalla X. Piste."
Vähän provokatiivisesti voisin sanoa, että yhdelle alustalle tehdyt softat ovat vähän sellainen ohimenevä ilmiö ja sellaisia ovat vain lyhytaikaiset halpissoftat. Tosin tällaisia usein ovat alihankintana ostetut räätälöidyt palvelinsoftat, vaikka ne eivät ihan halpoja olekaan (ns. intia-softat). Mielelläni itsekin myyn softaa kallillla asiakkaalle ja jos vaatimusmäärittelyssä ei lue muuta kuin windows (tai muu yksittäinen alusta), en lähde tekemään varsinaisesti porttautuvaa koodia muuten kuin sikäli kun normaali ohjemointityylini sitä on. Vähän tämä omatuntoa kolkuttaa, mutta raha määrää.
Edelleenkin monet ammattisoftat kuten monet piirilevysuunnittelusoftat, fysiikan mallinnussoftat, monimutkaiset säätöjärjestelmäsoftat, laskentasoftat, grafiikkasoftat, musiikkisoftat ynnä muut eivät ole windows-softia. Nämä ammattisoftat maksavat aina jotain 4, 5 tai jopa 6 numeroisia eurosummia. Ja monesti nämä saa monelle alustalle, mukaanlukien windows, mutta yleensä windows ei ole se primäärialusta.
Oma tottumukseni porttautuvaan koodiin tulee siitä, että sulautettujen järjestelmien ohjemoinnissa on erittäin hyödyllistä saada sama koodi käännettyä sekä PC:lle että sulautetulle systeemille. On niin paljon helpompaa debugata sitä koodia jossain linux/osx-järjestelmässä kuin yrittää saada sieltä sulautetusta systeemistä debuggia ulos jollain JTAG:lla tai muulla tapaa. Ja ihan se mukavaa koodata windows-softa jossain muussa käyttöjärjestelmässä ja vasta lopuksi kääntää se jollain kamalalla visual c :lla, eclipsella, tms. Tätäkin olen ihan oikeasti tehnyt systeemille, jonka taattiin toimivan vain windowsissa.
""""Kun asioista tietää jotain, niin portattavuutta voi ottaa huomioon jonkun verran. Mutta ei se tule silloinkaan ilmaiseksi."""
Mitä tarkoitat? Jos koodari on käyttänyt koko ikänsä Qt kirjastoa, osaa hän tehdä Qt:lla ohjelman taloudellisemmin, kuin alkamalla opettelemaan itselleen jotakin uutta alustariippuvaista kirjastoa, kuten MFC:tä. Sama tietenkin pätee myös toisinpäin, eli MFC Qt. Portattavuus ero kyseisten kahden frameworkin välillä on erittäin suuri, huolimatta siitä vaikka Qt sovellusta ei edes kääntäisi tai yrittäisi testa toisessa alustassa.