| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
Keskustelut - Yleistä Höpinää - Sopiva ohjelmointikieli [3 / 4]Sivu: 1, 2, 3, 4 seuraava sivu » « edellinen sivu Grez 21:33 6.1.09 No eihän tuo Mono ole tarjolla kuin Linuxille, Macille ja Windowsille? Eli jos haluaa että softa toimii vaikka Solariksessa, niin... Lisäksi jos haluaa pienlaitteille tehdä, niin JavaME on melkoisesti laajemmin tuettu kuin .NetCF Rytmis 21:50 6.1.09 Mono supports Solaris on SPARC, x86 and x86-64 architectures. Lisäksi jos haluaa pienlaitteille tehdä, niin JavaME on melkoisesti laajemmin tuettu kuin .NetCF Tuo on ensimmäinen pointti jonka minäkin tunnustan. Minulla on tosin sellainen mielikuva, että sovelluksesta pitää tehdä melkein joka laitteelle oma versionsa JavaME:lläkin, mutta myönnän että se on vain mielikuva. editoitu: 22:19 6.1.09 Grez 22:15 6.1.09 Öh, kuvittelenko vaan vai onko noi solaris systeemit tuolla unsupported osiossa? Tai ainakaan uusin versio ei ole niille tuettu. No jos ei-tuetut ja vanhat mono-versiot lasketaan, niin sitten tilanne on toki vähän parempi. editoitu: 22:37 6.1.09 Vteich 22:36 6.1.09 Rytmis kirjoitti: Eikö esim. IBM:n tai BEA:n JRE ole sinusta käyttökelpoinen? Sanot ettet näe järkeä suositella C#:ia tuosta syystä -- kuitenkin täysin toimiva cross-platform -ajoympäristö (Mono) on olemassa. Sen lisäksi vielä bindaukset useampaan käli-kirjastoon (ainakin GTK+ ja Qt WinFormsin lisäksi, en ole varma Cocoa-tilanteesta). Yritän lähinnä ymmärtää miten nimenomaan Java on mielestäsi oikeasti C#:ia paremmassa asemassa tässä. Siis vaihtoehtoiset JRE:t ovat vain vaihtoehtoja Sunin omalle JRE:lle, eivätkä ne tuo kuvioon mitään kokonaan uutta alustaa, toisin kuin joku Mono, joka on jonkun muun kuin Microsoftin tekemä toteutus .NET-ympäristön saamiseksi muillekin alustoille. Siis jos ajatellaan ohjelmointikielen valitsemista ihan puhtaasti siltä kantilta, että on tarve useammallakin käyttiksellä tapahtuvalle kehitykselle, niin en näe kyllä yhtään syytä miksi C# erillisine lisäpalikoineen olisi parempi kuin sellainen kieli ja sen kehitysympäristö, jolla mitään erillisiä lisäpalikoita ei tarvita. Siis, jos joku minulta kysyisi käyttisriippumatonta ohjelmointikieltä, ehdottaisin ensimmäisenä Javaa, Pythonia tai Rubyä, enkä alkaisi selittämään, miten alunperin pelkästään Windowsille tarkoitettuja kieliä, kuten C# tai Delphi, pystyy käyttämään myös muilla käyttiksillä. weicco 08:56 7.1.09 Vteich kirjoitti: Siis vaihtoehtoiset JRE:t ovat vain vaihtoehtoja Sunin omalle JRE:lle, eivätkä ne tuo kuvioon mitään kokonaan uutta alustaa, toisin kuin joku Mono, joka on jonkun muun kuin Microsoftin tekemä toteutus .NET-ympäristön saamiseksi muillekin alustoille. Siis jos ajatellaan ohjelmointikielen valitsemista ihan puhtaasti siltä kantilta, että on tarve useammallakin käyttiksellä tapahtuvalle kehitykselle, niin en näe kyllä yhtään syytä miksi C# erillisine lisäpalikoineen olisi parempi kuin sellainen kieli ja sen kehitysympäristö, jolla mitään erillisiä lisäpalikoita ei tarvita. Siis häh? Mitä lisäpalikoita C# tarvitsee muuta kuin .NET ajoympäristön, eikä välttämättä sitäkään? Javakin tarvitsee virtuaalikoneen niin se on ilmeisesti poissa laskuista, tai ei ole koska se ei ole Microsoftin tekemä ja vaikka siihenkin saa 3rd party palikoita, niin ne on OK, mutta Mono ei ole, ja,ja,ja? Mitä ihmeen väliä sillä on mistä se virtuaalikone tulee, jos se toimii? Olet täysin hukassa ja vaikka teen nyt argumentointivirheen, niin sanon, että älä ala väittämään vastaan ihmisille, jotka ovat vuosikaudet koodanneet työkseen C#:lla. Mm. minä vuodesta 2004 lähtien (2002 tutustuin ekan kerran, mutta silloin emme vielä siirtyneet .NET:in MFC:stä). Sillä ei mitään helvetin väliä onko Java, Python, Ruby, Haskell, Perl, C, C++ (poislukien Symbian), whatever alustariippumattomia. Nuo kielet eivät poista sitä faktaa, että C# on alustariippumaton. Mono "ei tuo uutta alustaa" vaan oman implementaation EMCA-334 standardista ja ajoympäristöstä. Lisätietoja täältä: http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations ps. Näköjään C# on alustariippumattomampi kuin C++, sillä se toimii myös Symbianilla standardin mukaisesti editoitu: 11:20 7.1.09 Vteich 11:18 7.1.09 weicco kirjoitti: Siis häh? Mitä lisäpalikoita C# tarvitsee muuta kuin .NET ajoympäristön, eikä välttämättä sitäkään? Javakin tarvitsee virtuaalikoneen niin se on ilmeisesti poissa laskuista, tai ei ole koska se ei ole Microsoftin tekemä ja vaikka siihenkin saa 3rd party palikoita, niin ne on OK, mutta Mono ei ole, ja,ja,ja? Mitä ihmeen väliä sillä on mistä se virtuaalikone tulee, jos se toimii? Olet täysin hukassa ja vaikka teen nyt argumentointivirheen, niin sanon, että älä ala väittämään vastaan ihmisille, jotka ovat vuosikaudet koodanneet työkseen C#:lla. Mm. minä vuodesta 2004 lähtien (2002 tutustuin ekan kerran, mutta silloin emme vielä siirtyneet .NET:in MFC:stä). Sillä ei mitään helvetin väliä onko Java, Python, Ruby, Haskell, Perl, C, C++ (poislukien Symbian), whatever alustariippumattomia. Nuo kielet eivät poista sitä faktaa, että C# on alustariippumaton. Mono "ei tuo uutta alustaa" vaan oman implementaation EMCA-334 standardista ja ajoympäristöstä. Lisätietoja täältä: http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations Hengitä nyt välillä. Mitään Microsoft-vihaa jutuissani ei ole mukana. Olin väärässä, kun oletin C#:n olevan kiinni .NET-ympäristössä. Näin ei siis ilmeisesti ole, vaan ilmeisesti esim. Mono on ihan yhtä validi ajoympäristö C#-ohjelmille kuin .NET:kin. Ok. Toisaalta mielestäni on vähän kyseenalaista väittää kieltä täysin järjestelmäriippumattomaksi, jos alunperin C#:n ajoympäristöksi tarkoitettu .NET ei järjestelmäriippumattomuutta tarjoa, vaan se saavutetaan jonkun erillisen tekijän ympäristön kautta, kuten jo kerran taisin sanoakin. Ja entäs jos koodaa C#:lla .NET-ympäristössä Windowsilla ja haluaisi ajaa samaa koodia Monolla Linuxissa, saavutetaanko tällöinkin järjestelmäriippumattomuus? Tai toisinpäin? Javaa koodatessa kuitenkin on mahdollista käyttää vain yhden ja saman itse kielenkin kehityksestä vastaavan tekijän kehittämää Java-ajoympäristöä eri käyttiksillä, jolloin ainakin voi ihan rehellisesti puhua järjestelmäriippumattomuudesta ja saman Javalla tehdyn softan siirrettävyydestä alustalta toiselle. Ei tämä nyt joka tapauksessa ollut oleellinen pointti ketjun kannalta lähteä tästä vänkäämään ja voin hyvin myöntää virheeni ja tietämättömyyteni C#:n suhteen. weicco 12:04 7.1.09 Okei lievennetään kirjoitustyyliä :) Vteich kirjoitti: Toisaalta mielestäni on vähän kyseenalaista väittää kieltä täysin järjestelmäriippumattomaksi, jos alunperin C#:n ajoympäristöksi tarkoitettu .NET ei järjestelmäriippumattomuutta tarjoa, vaan se saavutetaan jonkun erillisen tekijän ympäristön kautta, kuten jo kerran taisin sanoakin. Mutta tämä ehto tarkottaisi sitä, että ajoympäristö olisi järjestelmäriippumaton vain siinä tapauskessa, että alkuperäinen kehittäjä julkistaisi joka alustalle ympäristön samassa julkaisussa. Tuon perusteella maailmassa ei olisi varmaan yhtään järjestelmäriippumatonta ohjelmointikieltä. Ei ainakaan C++, sillä siitä, kuten mainitsin, ei ole Symbianille standardinmukaista toteutusta. Ja entäs jos koodaa C#:lla .NET-ympäristössä Windowsilla ja haluaisi ajaa samaa koodia Monolla Linuxissa, saavutetaanko tällöinkin järjestelmäriippumattomuus? Tai toisinpäin? Kyllä, tietyin ehdoin. Jos kutsut jotain järjestelmäriippuvaista koodia, mikä on C#/.NET:ssä mahdollista, ohjelma ei tietystikään toimi muilla alustoilla. Lue Monon sivuilta. Rytmis 12:12 7.1.09 weicco kirjoitti: Kyllä, tietyin ehdoin. Jos kutsut jotain järjestelmäriippuvaista koodia, mikä on C#/.NET:ssä mahdollista, ohjelma ei tietystikään toimi muilla alustoilla. Lue Monon sivuilta. Tyypillisesti tämä tulee eteen jos joutuu käyttämään Windows Forms -ohjelmissa jotain natiivia Win32-funktiota. Jos tyytyy käyttämään pelkästään .NETin tarjoamia luokkia, Managed WinForms Monolla toimii moitteetta. Mono-projekti tarjoaa jopa p/invoke-redirectit ja toteutuksen GDI+ -kirjastolle, joten natiivikoodilla tehty piirtäminenkin toimii kaikkialla missä Monokin. editoitu: 12:20 7.1.09 Vteich 12:20 7.1.09 weicco kirjoitti: Kyllä, tietyin ehdoin. Jos kutsut jotain järjestelmäriippuvaista koodia, mikä on C#/.NET:ssä mahdollista, ohjelma ei tietystikään toimi muilla alustoilla. Lue Monon sivuilta. Niin, siis jos tekee vaikka .NET-ympäristössä C#:lla jotain graafista käyttöliittymää, niin toimiiko tuo myös Monossa vaikka Linuxilla? Olettaisin, että ei. Vastaavasta syystä en kyllä C++:aakaan väittäisi järjestelmäriippumattomaksi kieleksi. Javalla vastaavaa ongelmaa ei ole, vaan sama Javalla kirjoitettu softa pyörii kaikilla JRE:n tukemilla käyttiksillä. weicco 12:32 7.1.09 Rytmis vastasikin jo. Grez 12:49 7.1.09 Vteich kirjoitti: weicco kirjoitti: Jos kutsut jotain järjestelmäriippuvaista koodia, mikä on C#/.NET:ssä mahdollista Javalla vastaavaa ongelmaa ei ole Javalla on ihan just tasan sama ongelma. Eli jos Javasta kutsuu järjestelmäriippuvaista koodia, mikä on Javassa mahdollista (esimerkiksi Sampo pankki / Danske Bank idioottimaisuuksissaan käyttää tätä mahdollisuutta), niin se ei toimi kaikkialla. editoitu: 12:57 7.1.09 Vteich 12:57 7.1.09 Grez kirjoitti: Javalla on ihan just tasan sama ongelma. Eli jos Javasta kutsuu järjestelmäriippuvaista koodia, mikä on Javassa mahdollista (esimerkiksi Sampo pankki / Danske Bank idioottimaisuuksissaan käyttää tätä mahdollisuutta), niin se ei toimi kaikkialla. Niin, Javalla on toki mahdollisuus käyttää natiivikoodia, mutta ei sitä mitenkään normaaliolosuhteissa ole tarpeellista käyttää. Siis, jos normaaliolosuhteilla tarkoitetaan nyt vaikkapa käyttöliittymäkoodausta. En tiedä miten C#:lla "normaaliolosuhteissa", jos tehdään keskivertokäyttöliittymäkoodausta Windowsilla .NET-ympäristössä. editoitu: 13:14 7.1.09 Grez 13:13 7.1.09 Keskivertokäyttöliittymäkoodauksessa Windowsilla .Net-ympäristössä käytetään WinFormseja ja ne on Monossa tuettuina. Käytännön kokemusta ei tosin ole, että kuinka hyvin tuo käytännössä toimii. Mikään ei kuitenkaan varmaankaan estä koodaamasta Windowsissa Monolle, jos nimenomaan haluaa, että softa toimii varmasti myös Linuxissa ja Macissa. editoitu: 13:58 7.1.09 Jari_Kettunen 13:56 7.1.09 C# poikii erilaisia projekteja joista yksi on singularity eli miltä kuulostaisi c#:lla tehty kernel. Rytmis 09:15 9.1.09 Pitääpä muuten lisätä vielä, että C#:lla voi tätä nykyä vääntää mm. pelejä Wiille ja iPhonelle (AppStoressa on myynnissä jo aikamoinen läjä Mono-pohjaisia pelejä), ja Monoa ollaan kovaa vauhtia porttaamassa myös Androidille. :) Jonathan 13:43 29.1.09 Pienenä tarkennuksena, nuo AppStoresta löytyvät pelit eivät ole ihan suoraan Mono-pohjaisia. Ne ovat tehty kaupallisella middlewarella, Unityllä, jossa yhtenä kielivaihtoehtona on toki C#. RedEagle 14:11 29.1.09 http://mono-project.com/Supported_Platforms Tuolta saa kyllä ihan sen käsityksen, että mono softat toimii sellaisenaan myös iPhonessa. Pelit on toki voitu tehdä Unityä hyödyntäen. Käsittääkseni (http://www.go-mono.com/pdfs/Otee_v21.pdf) Unity nojaa vahvasti monoon ja sitä myöten se tukee myös iPhonea. Jonathan 14:36 29.1.09 Sellaisen käsityksen voi saada, se ei ole koko totuus. Kannattaa lukea myös alla oleva linkki, varsinkin kohta "No iPhone APIs have been exposed, so you get the very basic foundation" on ns. show stopper. http://mono-project.com/Mono:Iphone editoitu: 14:45 29.1.09 Rytmis 14:44 29.1.09 Juu, tuo pitää epäilemättä paikkansa. Vaan kysepä olikin siitä, että iPhonella tai Wiillä pyörivä, C#:lla koodattu peli on melko kaukana Windowsista, eiksje? Että se siitä kielen sidonnaisuudesta käyttikseen. .-) Jonathan 15:48 29.1.09 Siitä olen samaa mieltä, mutta kielen vakiokirjastot taas on sidottu aika tiukasti käyttikseen. Ainakaan en tiedä tapaa millä C#:lla ja sen peruskirjastovalikoimalla voisi tehdä järkevän usealla alustalla toimivan käyttöliittymän[1]. Monon forms-implementaatio ei oikein vakuuttanut. Sama ongelma on lähes kaikilla muillakin kielillä, ja niiden kanssa joutuu käyttämään Qt:ta, wxwidgetsiä tai vastaavaa. Edellämainittuja voi tietenkin käyttää myös C#:n kanssa. Java on harvinaislaatuinen poikkeus, sillä on mahdollista tehdä mukiinmeneviä käyttöliittymiä pääkäyttiksille ilman muutoksia tai suhteellisen pienin muutoksin (joko koodiin tai erinäisiin asetustiedostoihin). Kuitenkaan eräistä muista syistä johtuen en ehkä ensisijaisesti suosittelisi Javan käyttöä. Olen pääsääntöisesti sitä mieltä, että käyttöliittymät pitäisi tehdä natiivisti jokaiselle alustalle, mutta ymmärrän että läheskään kaikissa tapauksissa, varsinkin jos on kyse harrasteprojektista, tämä ei ole mahdollista eikä tuota riittävän paljon parempaa käyttökokemusta. [1] Näyttää ja varsinkin toimii kuten kohdejärjestelmän käyttöliittymä, myös jos ei olla Windowsissa (tai Linuxissa jos puhutaan Qt:sta) |
![]() Haku
|