Miksi on niin paljon ohjelmointikieliä?

Käytössä on yli 250 ohjelmointikieliä. Jotkut niistä ovat laajalti käytössä liike-elämässä, kuten C ++, Java, JavaScript, Ruby ja Python. Toiset ovat ensisijaisesti akateemisia, kuten Lisp. Toiset ovat kuitenkin epäselviä ja esoteerisia. Saatat kysyä: "Miksi on niin paljon ohjelmointikieliä?"

Se on paljon kysyttävää, "miksi matematiikan aloja on niin paljon? Meillä on algebraa, miksi tarvitsemme geometriaa, laskelmia ja nestemekaniikkaa?" Jokainen ohjelmointikieli pyrkii ratkaisemaan tietyn ongelman. Useat kielet saattavat pystyä ratkaisemaan saman ongelman, mutta kukin lähestyy sitä eri tavalla.

Tässä on muutamia suuria eroja ohjelmointikielillä.

Luettavuus ja ylläpidettävyys

Jotkut kielet ovat helpompia ihmisen luettavaksi, mikä helpottaa yhden ohjelmoijan yhteistyötä toisen ohjelmoijan koodin kanssa. Esimerkiksi Pythonilla on mainetta, että sitä on helppo lukea. Se valvoo rivien tiukkaa sisennystä sen koodilohkojen määrittelemiseksi, mikä tekee ohjelmasta helpon katselun ja sen rakenteen selvittämisen. Muut kielet mahdollistavat myös syvennyksen, mutta tyylillisenä vaihtoehtona, ei vaatimuksena.

Sitä vastoin Perl on kieli, jonka avulla ohjelmoija voi kirjoittaa saman ohjelman monella eri tavalla, mutta ohjelman tarkoitus ei ehkä ole heti selvä toiselle lukijalle. Tällainen ohjelma voi olla kätevä kirjoittaa, mutta jonkun toisen on vaikea ymmärtää ja muokata.

Esitys

Jotkut kielet tulkitaan, ja jotkut niistä kootaan. Ennen kuin tietokone voi suorittaa sen, prosessori, kääntäjä ja linkkeri käsittelevät kootun ohjelman. Tämä erikoistunut väliohjelmisto suorittaa leksikaalisen analyysin, kääntäen ohjelman konekieleksi. Se voi myös optimoida saadut ohjeet etsimällä älykkäitä tapoja tehdä ohjelma nopeammin.

Kokonaisohjelmat toimivat tyypillisesti paremmin kuin tulkittuja ohjelmia. Esimerkiksi C, C ++ ja Objective-C ovat kieliä, jotka tyypillisesti kootaan erittäin nopeaksi konekoodiksi. Videopelit ja järjestelmäohjelmistot kirjoitetaan usein näillä kielillä, jotta kaikki suorituskyky puretaan CPU: sta.

Toisaalta tulkittuja kieliohjelmia hoitaa ohjelmisto, jota kutsutaan tulkiksi, joka suorittaa ohjelman ohjeet ilman, että ne kootaan ensin konekoodiksi. Vaikka tulkki jäsentää toisinaan ohjelmaa välikieleksi, mikä johtaa joihinkin optimointiin, suorituskyky ei ole koskaan yhtä nopea kuin koottu konekoodi.

Yksi merkittävä tulkittujen kielten etu on niiden mahdollinen vuorovaikutteinen kehitys. Koska koko ohjelmaa ei tarvitse koota ennen kuin se voidaan suorittaa, koodia voidaan käyttää interaktiivisesti. Tunnet tämän, jos olet käyttänyt käyttöjärjestelmän komentoriviä: annat komennon ja näet tulokset. Tällaista rajapintaa kutsutaan REPL: ksi tai "read-eval-print-loopiksi". REPL-ohjelman avulla voit suorittaa komentoja (tai komentokappaleita) erikseen ja tarkastella tuloksia. Lisp, Perl, Python, NodeJS, Ruby ja JavaScript ovat esimerkkejä tulkituista kielistä, joita voidaan käyttää REPL: ssä.

Interaktiiviset komentorajapinnat, kuten Windowsin komentokehote ja bash, ovat myös tulkittuja kieliä. Näiden "kielten" ohjelmia kutsutaan erätiedostoiksi tai kuoroskripteiksi.

Erityiset käyttötapaukset

Usein kielet ovat erityisen hyviä erityyppisten ohjelmien kirjoittamisessa. Esimerkiksi NodeJS on suunniteltu kirjoittamaan yksisäikeisiä sovelluksia verkossa. Sen ei-estävä tiedosto I / O sallii ohjelmien jatkamisen ("ei estetä"), kun he odottavat tarvittavien tietojen lähettämistä.

Toinen esimerkki on R-ohjelmointikieli, joka on erikoistunut tilastolliseen analyysiin. R: ssä kirjoitetut ohjelmat hyötyvät sisäänrakennetuista analyyttisistä testeistä ja malleista sekä työkaluista massiivisten tietomäärien tehokkaaseen käsittelyyn.

Helppokäyttöisyys

Jotkut kielet mahdollistavat nopean prototyypin: ohjelmoija voi "vain aloittaa kirjoittamisen" ja rakentaa komponentin komponenttiin, kunnes ohjelma on täysin muodostettu.

Esimerkiksi sivusto Reddit kirjoitettiin alunperin Lispissä. Kun Reddit on käynnistynyt, koko sivusto kirjoitettiin uudelleen Pythonissa monista syistä, sekä teknisistä että logistisista syistä. Vaikka kaikki koodin refaktorointi oli merkittävä yritys, sivuston omistajat eivät pahoittaneet. Vuonna 2005 julkaistussa blogiviestissä he huomauttivat, että Lisp antoi heille mahdollisuuden luoda jotain tietämättä, mitä siitä tulee.

Käytettävissä olevat kirjastot

Yleensä kun aloitat uuden ohjelmaprojektin, et halua keksiä pyörää uudelleen. Eli et halua kirjoittaa funktioita tavallisiin tehtäviin, kuten neliöjuuren laskemiseen, tai merkin ensimmäisen esiintymisen löytämiseen merkkijonossa. Tästä syystä lähes jokainen ohjelmointikieli tarjoaa joukon tavallisia yhteisten toimintojen kirjastoja. Ohjelmoijat saattavat mieluummin kieltä sen tarjoamien kirjastojen takia.

Esimerkiksi C-standardikirjastot tarjoavat erittäin suorituskykyisiä toimintoja monille matalan tason järjestelmän toiminnoille. Perl tarjoaa monia vahvoja kirjastoja sekä myös ladattavien ja ohjelmassa käytettävien moduulien CPAN-arkiston. Python tarjoaa laajan valikoiman sisäänrakennettuja toimintoja ja moduuleja lähes kaiken auringon alla. JVM: llä toimiva Lisp-kaltainen kieli Clojure hyötyy siitä, että se kykenee suorittamaan koodia Java-objektien ja -menetelmien laajasta olemassa olevasta kirjastosta.

turvallisuus

Kaikki kielet eivät voi kirjoittaa turvallista koodia. Esimerkiksi C-ohjelmointikieli on tunnettu siitä, että sillä on ominaisuuksia (tai niiden puuttumista), joka voi johtaa tuhoisiin haavoittuvuuksiin, kuten nollaosoittimen dereferenssiin. Muut kielet yrittävät käsitellä näitä huolenaiheita tiukemmilla säännöillä.

Joissakin kielissä on esimerkiksi rajoituksia sille, mitä toimintoja voidaan suorittaa eri tietotyypeillä. Näitä kielten tiukimpia kutsutaan joskus "voimakkaasti kirjoitetuiksi", ja ne voivat tarjota mielenrauhaa ohjelmoijille, jotka asettavat turvallisuuden ja vakauden ohjelmistokehityksessä. Esimerkkejä voimakkaasti kirjoitetuista kielistä ovat Rust, Nim, Ocaml ja Haskell.

Kielet voivat myös asettaa rajoituksia "mutaatiolle", joka on tietobjektin kyky muuttaa tilaa. Niiden kohteiden sijaan, joiden arvot korvataan, nämä kielet suosivat "muuttumattomia" objekteja: muistissa olevia arvoja, joita ei voida muuttaa ilman nimenomaista poikkeusta. Muuttumattomat kohteet ovat herättäneet kiinnostusta, koska monisydämiset CPU: t ovat yleistyneet, koska niiden taipumus edistää "langan turvallisuutta". Lanka-turvallisessa ohjelmassa useampi kuin yksi prosessori voi toimia yhdellä tietokokonaisuudella, jolla on huomattavasti pienempi virheriski. Kielet, jotka asettavat etusijalle muuttamattomat objektit, ovat Rust ja Clojure.

Yhteisön tuki

Kun kirjoitat ohjelmaa uudella kielellä, se auttaa pääsemään aktiiviseen, intohimoiseen kehittäjien yhteisöön, jotka käyttävät aktiivisesti ja edistävät toistensa työtä. Ennen ohjelmointikielen valitsemista saat lisätietoja kielen yhteisöstä. Joillakin kielillä on jännittävä, dynaaminen, elinvoimainen käyttäjäkanta, jonka haluat ehkä olla osa ja muilla kielillä voi olla vain vähän tai ei lainkaan yhteisöä.

ilmaisukyky

Kun kirjoitat ohjelmaa, ohjelmoijan ajatukset ja ongelmanratkaisukyky ovat "puhuvia" kyseisen kielen kautta. Tämän seurauksena ohjelmoijat suosivat kieliä, joissa he viihtyvät. Kuitenkin kielen ja ohjelmoijan yhteistoiminta on vaikea määritellä. Viime kädessä ainoa tapa tietää, mikä kieli on mukava on käyttää eri kieliä eri projekteihin ja verrata niitä itse.