Minua kiinnostaisi tietää mikä on ohjelmointi kielistä nopein? mihin kieli voisi soveltua (esim: minkä tyyppisen ohjelman tekoon)? Alusta riippumattomat kielet?
Minun tietoni ovat varsin hataralla pohjalla, mutta epäilisin jotain C-pohjaista nopeimmaksi. Ja C(++) toimii kenties pelin tekemisessä parhaiten. Ja normaali C on tietääkseni alustariippumaton kuten Java ja Assemblykin. Korjatkaa, js olen väärässä.
Edit: Tai no... Kenties, kuten Linkku sanoikin, Assembly voisi olla nopein.
Assebmly? Se on nopein alusta riippumaton ohjelmointi kieli. Soveltuu kaikkeen.
Delphillä (object pascalilla) on nopea tehdä windows-ohjelmia tyyliin Muistio.
Java on helppo oppia ja on täysin alustariippumaton.
C/C++ on yleinen ja kysytty. Se on se on periaatteessa alustariippumaton, mutta ohjelmat pitää kääntää joka alustalle erikseen. Ja tietenkään kaikki lisäkirjastot ei toimi joka alustalla.
Onkohan lisp kovin nopea kieli?
ezuli kirjoitti:
Java on helppo oppia ja on täysin alustariippumaton.
Mutta hidas. Tai, kieli itsessään ei ole hidas, mutta virtuualikoneen käynnistysaika syö miestä - ainakin minua.
Deewiant:Mutta koska se ei hidasta itse ohjelmaa, niin se ei paljoa haittaa, jos kyseessä on "kunnon ohjelma" jota pidetään kauemman päällä yhteenkyytiin. (esim pelit)
Hmm, eikös assembly juuri ole todella alustariippuvainen? Kyl C on paljo alustariippumattomampi ja yleensä kivat C-kääntäjät osaa optimoida koodin melko nopeaksi <3
Eikä se Java _täysin_ alustariippumaton ole, koska kääntäjä ja JVM ovat alustariippuvaisia.
Ksäittääkseni käytännössä C/C++-kääntäjä optimoi koodin yleensä niin hyväksi että nopeuslisää Assemblyllä tarvitaan vain joissain tilanteissa.
Parasta kieltä ei ole, mutta itse suosittelen C++:aa: riittävän nopea, yleinen (mm. kirjastoja ja materiaalia sekä neuvoja löytyy). Lisäksi kääntyy yleisimmille alustoille.
Muita hyviä kieliä ovat Java, PHP ja VB. Jokainen sopii hyvin johonkin tarkoitukseen.
Mutta kuten jo sanottu, parasta kieltä ei ole. Tai no, paras kieli on se, jolla tarvittava homma voidaan tehdä parhaiten.
Kaikilla ohjelmointikielillä voi tehdä melkein mitä tahansa. Kielen valinnassa nopeutta - joka kaiken lisäksi riippuu käytetystä kääntäjästä tai tulkista - ei välttämättä kannata pitää tärkeimpänä ominaisuutena. Assembly vastaa suoraan tietokoneen ymmärtämiä komentoja ja on sen takia "nopein", mutta kaikkea muuta kuin alustariippumaton. Ja tsuriga on varsin oikeassa siinä, että eihän millään kielellä tehty ohjelma ole alustariippumaton, koska kaikille alustoille ei ole olemassa kielen toteutuksia.
Katsotaanpas, asmilla tehdyt ohjelmat eivät ole riippuvaisia niinkään siitä mikä käyttöjärjestelmä on alla. Moisella kun voi käyttää suoraan prossua ja näin ollen se ei vaadi mitään erikoista. Paitsi sen tietyn laitteiston että toimii.
C/C++ taas lienee enemmänkin jokin stardardihomma, jollainka moinen on täysin riippumaton laitteistosta. Tosin jonkinlainen käyttöjärjestelmä täytyy olla alla että C/C++ - kielellä tehty ohjelma toimii. Niin, C-kieli kun kehitettiin silloin kun tietokoneiden välillä ei ollut mitään stardardeja ja näin yhdelle koneelle tehdyt ohjelmat eivät toimineet missään toisessa koneessa. Sitten tuli C-kieli, joka oli tosin 30%, tai sinne päin, hitaampi kuin suoraan konekielellä tehdyt ohjelmat, mutta toimi!
Jotenka, sanoisin että tehokkaimmat ovat omalla tavallaan Assembly ja C/C++. Ainakin omasta mielestäni. Assembly nopeuden ja sen vuoksi että sillä voi tehdä mitä vain, kunhan ei tarvitse eri prosessoria käyttää. C/C++ etuna on sitten mukautuvuus. Tosin, Javastahan koetettiin tehdä myöskin mukautuvaa kieltä, vaan juuri siihen en ole perehtynyt kun kiinnostaa enemmänkin ne kielet joilla voi tehdö ohjelmia mitkä eivät vaadi tulkkia sitten myöhemmin. Vain kääntämisen ja ajamisen..
-Grey-
Yhtä ja parasta kieltä ei sinänsä ole. Jokaisella kielellä on hyvät ja huonot puolensa.
Joskus Java oli hieman hidas, mutta nykyisellään Javakin on vikkelää koodia ja ihan C++ verrattavaa nopeudeltaan. Luonnollisesti se, että miten benchmarkkaa nopeuksia niin vähän joka kielestä saa sen nopeimman.
Kielen valintaperusteita on tosiaan muitakin kuin vain ohjelman toimintanopeus. Muita ominaisuuksia ovat mm. kielen 'helppous', portattavuus, ohjelman ylläpidettävyys ja koodarin tuottavuus.
Nopeus:
Konekielillä saa tietysti aikaan nopeinta koodia, mutta vain jos on hyvä koodari ja tuntee alustan kaikki ominaisuudet. Usein hyvä kääntäjä tuntee alustan paremmin kuin keskivertokoodari.
C-kääntäjät ovat kuitenkin nykyään sen verran hyviä, että itse en alkaisi assemblyä käyttämään juurikaan missään tapauksessa.
C++ ei nopeudessaan aivan pärjää C:lle, mutta on ihan hyvä vaihtoehto suurempiin projekteihin, jotka vaativat olentomallia.
Kielen 'helppous':
Kielen helppous on ihan koodarista kiinni. Toisaalta, jos meinaa tehdä jotain koodaukseen liittyvää tulevaisuudessa pitää kuitenkin ne 'vaikeat' standardi-kieletkin opetella.
Jotkut väittävät, että VB on helppo. Eräs kaverini taas väitti, että Delphillä ohjelmien teko on niin kaukana oikeasta ohjelmoinnista kuin vaan voi olla :) Näissä helppous taitaa liittyä siihen, että graafisen ikkunan saa helposti auki.
Itse pidän kaikkia iteratiivia kieliä suunnilleen yhtä helppoina. Kaikista löytyy ne samat silmukkarakenteet ja ehtolauseet; on oikeastaan sama onko lohkojen erottimina kaarisulut vai begin-end -rakenteet.
Se, että monissa (semi)funktionaalissa kielissä listat on lisätty kielen perustietorakenteiksi, tekee monista hankalista asioista melko helppoja.
Portattavuus:
C-kieli on kaikista ohjelmointikielistä portattavin. Lähes kaikille alustoille löytyy C-kääntäjä muodossa tai toisessa. Ohjelman portattavuus tietenkin vaatii, että ohjelmaan ei ole sotkettu mukaan konekieltä tai mitään alustakohtaista koodia (kuten winapia).
Java mainostetaan sillä, että se toimii kaikilla alustoilla. Tämä tietenkin olettaa, että kyseiselle alustalle on olemassa Java virtuaalikone, joka tulkkaa ja kääntää java-koodia konekielelle (näin ei aina ole). Javan etuna on kuitenkin se, että koodia ei tarvitse kääntää uudestaan alustaa vaihdettaessa. Java ei kuitenkaan ole tällä hetkellä ole aivan 100%:n portattava; eri ympäristöjen virtuaalikoneiden väleillä on pieniä toimintaeroja esim. joidenkin graafisten elementtien fokusten hallinnassa tai muissa vastaavissa. Silti Java on tällä hetkellä oma suosikkikieleni.
Ohjelman ylläpidettävyys:
Ylläpidettävyys on oikeasti tärkeä ominaisuus kielellä. Jos ajatellaan vaikka, että joku on kirjoittanut pienen 10000 rivin ohjelman joskus vuonna 1 ja 2 ja nyt sinun pitäisi korjata siitä jokin bugi tai lisätä siihen uusi ominaisuus.
Tämä olisi HYVIN paljon aikaavievä ongelma, jos koodi on kirjoitettu assemblyllä, mutta kohtalaisen helppo homma, jos kieli on Java. C++:llakin on mahdollista saada ihan hyvin jäsenneltyä koodia, mutta pahimmillaa kukaan ei ota koodista selvää, jos koodari on innostunut käyttämään liiaksi kaikkia C++:n kivoja ominaisuuksia (kuten operator-overload).
Funktionaalisilla kielillä saadaan usein melko loogisia ja helposti ylläpidettäviä ohjelmia.
Koodarin tuottavuus:
Eli kuinka lyhyesti jokin ongelma voidaan kielellä kirjoittaa tai kuinka monta koodiriviä koodari saa viikossa aikaan.
Tämä riippuu tietenkin hiukan siitä mitä ollaan tekemässä, mutta kaikissa itseni näkemissä vertailuissa erilaiset funktionaaliset kielet tässä tilastossa kärjessä. Esim. Haskell:illa saadaan helposti 400 rivillä aikaan se mikä C:llä vie 1000-3000 riviä. Nopeuskoodauskilpailuissa kuulemma O'Caml on kova sana.
Ja onhan niitä muitakin kieliä
http://www.levenez.com/lang/history.html
Joku halusi "taas(?)" aloittaa tämän pyhän sodan kielten paremmuudesta. Jossain määrin tämän voisi tuomita trollauksesksi...
Mutta vastauksesksi on paras tarjota kysymystä... Eli:
Minkä laista ohjelmaa olet teossa?
Koska erikielet soveltuvat eri asioihin.
esim. Mikä on paras auto?
Formula auto on nopea, mutta yritäs tehdä lomareissu lappiin :D Eipäs pärjää kunnon farmariautolle...
Assemblyjähän on monenlaisia, eri prosessoriarkkitehtuureille, eli "assemblyn portattavuus" on vähän niin ja näin, sillä esimerkiksi PC:n assy ei toimi Commodore-koneilla, mutta samaa assyä voi kirjoittaa Linuxille ja Windowsille ja NetBSD:lle ja mille tahansa mitä käyttää PC:llä (tosin jotkut asiat saatetaan tehdä eri käyttiksillä hieman eri tavalla).
Ja onhan myös olemassa yksi Assembly vaikka kaikille prossuille, nimittäin tämä. Eh eh, huono juttu. :)
Antti Laaksonen ja FooBat ovarkin jo maininneet aika hyvin kaiken oleellisen tähän threadiin, muut viestit vähemmän hyödyllisiä. Lisäänpä vielä kuitenkin muutaman ajatuksen.
Eri kielillä on omat käyttöalueensa ja hyvät puolensa, käytettävä kieli on vain työkalu. Esim autoa rempatessa ei pärjää yhdellä välineellä ja monesti hommaa varten tehty erikoistyökalu on aivan eri luokassa kuin ns. yleistökalu. Erot tulevat esiin mm. siinä kuinka helppoa ja miellyttävää homman teko on ja kuinka nopeasti se onnistuu. Sama pätee myös ohjelmointikieliin.
Koodin nopeus tulee aivan liian usein esiin aloittelevien ohjelmoijien jutuissa. Eri kiwlten tai erilaisten algoritmien nopeuserot ovat yleensä kuitenkin suht merkityksettömiä. Käyttäjän nopeus on kuitenkin aivan eri luokkaa kuin ohjelmakoodin, oli se koodi tehty kielellä kuin kielellä.
Java-ammattilaisena pakko ottaa hieman kantaa siihenkin.
Ensinnäkin Java on todella nopea kieli, monissa testeissä päihittänyt mm. C++:n. Testeillä tosin ei mitään merkitystä, kuten joku jo totesikin niin C:llä esim saa nykykääntäjillä helposti nopeampaa koodia kuin Assyllä jos ei todella osaa hommaansa. Nykyprossuilla täydellinen optimointi on ihmiselle jo lähes mahdotonta, kääntäjä tekee yleensä parempaa jälkeä.
Java on parhaimmillaan palvelinohjelmistoissa, silloin saavutetaan käytännössä tuo "aja missä vain". Silloin saavutetaan myös erittäin hyvä suorituskyky. Graafista käyttöliittymää vaativissa ohejlmissa Javan käyttö on erittäin haastavaa. Laajan ympäristötuen takia joitain asioita on jouduttu tekemään hieman hankalammiksi, GUI-koodaus on siksi vaikeaa ja koodi helposti hidasta. Käyttisriippumattomuus myös hidastaa koodia pakostikin, yhden asian hyväksi on pakko uhrata toinen.
Cc kirjoitti:
mikä on ohjelmointi kielistä nopein? ... Alusta riippumattomat kielet?
Ehkä myös lopusta riippumattomia kannattaa harkita?
FrozenFire kirjoitti:
Minkä laista ohjelmaa olet teossa?
Koska erikielet soveltuvat eri asioihin.
Kaikki kielet ovat varmasti aivan yhtä hyviä siihen tarkoitukseen mihin ne on tehty. Todellakin, jos yrittää sahata vasaralla niin surkeaksi menee.
Erittäin tärkeää kaikissa kielissä näyttäisi olevan syntaksin oikeellisuus. Ohjelmoinnin nopeuteen vaikuttaa varmasti eniten tehtävien kirjoitusvirheiden määrä eikä niinkään kielen syntaksi.
vaimitäsano tte?
Aihe on jo aika vanha, joten et voi enää vastata siihen.