Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Eiffel-kielestä muutama kommentti

Sivun loppuun

vinsentti [03.01.2016 20:44:25]

#

Eiffel on viimeksi mainittu 2009. Tässä lista kielen luonteesta:

Imperatiivinen, komentorakenteissa ei lohkosulkuja.
Strukturoitu ohjelmointi, ei "käteviä" hyppyjä.
Olioajattelu, mukaanlukien perustyypit, funktio-objektit ja geneeriset luokat.
Moniperintä.
Hoaren teorian mukainen luokan semantiikka, mahdollistaa määrittelyn ja verifioinnin.
Nollapointeriturvallisuus.
Rinnakkaisuus.
Puhdas kieli, suppea ISO-standadi.

Antaa olla lyhyesti, kai tässä on tärkeimmät.

vinsentti [21.01.2016 14:56:16]

#

Toisaalla

groovyb kirjoitti:

class
    HELLO_WORLD
create
    make
feature
    make
        do
            print ("Hello, %N%
                    %World%N")
        end
end

Tässä näkyy, että Eiffelillä voi kirjoittaa vain luokkia. Perustyypitkin ovat luokkia. Asiat yksinkertaistuvat siten, että ISO-standardissa on vain 174 sivua, C# 553 sivua.

jalski [21.01.2016 18:58:38]

#

vinsentti kirjoitti:

Tässä näkyy, että Eiffelillä voi kirjoittaa vain luokkia. Perustyypitkin ovat luokkia. Asiat yksinkertaistuvat siten, että ISO-standardissa on vain 174 sivua, C# 553 sivua.

Joudut keksimään paremman perustelun saadaksesi minut kiinnostumaan Eiffelistä. Mielestäni OOP ei ole mikään kaiken mullistava keksintö, mikä automaattisesti parantaa koodin laatua. Miksi ohjelmoisin Eiffelillä mielummin kuin esim. modernilla Cobolilla?

class-id MainClass.

method-id main static.
procedure division.
  display 'Hello world!'
  invoke type Console::ReadLine()
  goback.
end method.

end class.

vinsentti [21.01.2016 22:11:11]

#

jalski kirjoitti:

Joudut keksimään paremman perustelun

Avauksessa luettelin jotakin.

jalski kirjoitti:

saadaksesi minut kiinnostumaan Eiffelistä. Mielestäni OOP ei ole mikään kaiken mullistava keksintö, mikä

OOP on kuitenkin lyönyt läpi. Mielenkiintoista nähdä, miten sitä tehdään kunnolla. Eikä yritetä kaikkea.

jalski kirjoitti:

Miksi ohjelmoisin Eiffelillä mielummin kuin esim. modernilla Cobolilla?

En tunne Cobolia, näkyy olevan end-puoluetta.

groovyb [21.01.2016 22:38:45]

#

miksi ohjelmoida noilla jäänteillä lainkaan? Tietty omaksi ilokseen voi noilla muinaisjäänteillä lottonumerogeneraattoreita väkerrellä, mutta siihen se sitten jääkin. Jos haluaa tutustua uuteen kieleen, kannattaa niihin käyttökelpoisiin tutustua, niistä voi olla jotain oikeaakin hyötyä. Varsinkin jos tätä alaa työkseen harjoittaa.

jalski [23.01.2016 14:03:39]

#

groovyb kirjoitti:

miksi ohjelmoida noilla jäänteillä lainkaan? Tietty omaksi ilokseen voi noilla muinaisjäänteillä lottonumerogeneraattoreita väkerrellä, mutta siihen se sitten jääkin.

Oletko kokeillut tehdä mitään Visual Cobolilla? Lopppujen lopuksihan sillä työskentelee oikeasti jo ihan mielellään ja koodi on helppolukuista ja helposti ymmärrettävää.

Grez [23.01.2016 22:03:55]

#

Visual Cobolia kuitenkin mainostetaan pelkästään ajatuksella "sinulla on 40 vuotta vanhaa koodia ylläpidettävänä." Jos Visual Cobolin tekijät pitäisivät sitä kiinnostavana kielellä kokonaan uusiin projekteihin, niin kai ne mainostaisivat sitä siihen itsekin.

vinsentti [24.01.2016 10:52:15]

#

groovyb kirjoitti:

Jos haluaa tutustua uuteen kieleen, kannattaa niihin käyttökelpoisiin tutustua, niistä voi olla jotain oikeaakin hyötyä.

Ainut varma kieli on C, se on ja pysyy alemman tason kielenä. Korkeamman tason kielissä tilanne elää. Esimerkiksi Javaa käytetään paljon, mutta sitä ei valita kilpailuetu mielessä.
Yksi investointipankki valitsee Haskellin ja toinen Eiffelin, samoin terveystietojen hallintajärjestelmän kehittäjä. Ne tekevät valinnan kilpailuetu mielessä, eivätkä tyrkytä kilpailijoille.

jalski [24.01.2016 19:25:29]

#

vinsentti kirjoitti:

Yksi investointipankki valitsee Haskellin ja toinen Eiffelin, samoin terveystietojen hallintajärjestelmän kehittäjä. Ne tekevät valinnan kilpailuetu mielessä, eivätkä tyrkytä kilpailijoille.

Niin ja silti lukemattomat vakuutus -ja pankkialan yritykset maailmalla ajavat ja ylläpitävät vuosikymmeniä vanhaa PL/I ja Cobol koodia. Mitähan kilpailuetua Eiffeliin siirtyminen antaisi, paitsi karmeat kustannukset kun korvattaisiin vuosikymmenien aikana suurkoneympäristössä toimivaksi testattua koodia.

vinsentti [24.01.2016 19:34:31]

#

jalski kirjoitti:

Mitähan kilpailuetua Eiffeliin siirtyminen antaisi,

Mikä siirtyminen? Toisinaan on tilaisuus valita.

jalski [24.01.2016 19:55:36]

#

vinsentti kirjoitti:

Mikä siirtyminen? Toisinaan on tilaisuus valita.

Pointtina oli, että miksi valitsisin Eiffelin esim. PL/I:n sijaan, jos kirjoittaisin finanssipuolen sovelluksia? PL/I:llä ainakin voin käsitellä suoraan desimaalilukuja ilman pyöristysvirheitä haluamallani tarkkuudella.

vinsentti [24.01.2016 20:14:00]

#

jalski kirjoitti:

PL/I:llä ainakin voin käsitellä suoraan desimaalilukuja ilman pyöristysvirheitä haluamallani tarkkuudella.

Tällaista perustelua oli paljon 40 vuotta sitten, mutta pitkiin aikoihin en ole kuullut. Puhuttiin teknistieteellisistä ja kaupallishallinnollisista kielistä, mutta ei enää.

jalski [24.01.2016 20:30:40]

#

vinsentti kirjoitti:

Tällaista perustelua oli paljon 40 vuotta sitten, mutta pitkiin aikoihin en ole kuullut. Puhuttiin teknistieteellisistä ja kaupallishallinnollisista kielistä, mutta ei enää.

Oma perustelusi tuntuu olevan pelkästään OOP Eiffelin eduksi. Miten OOP itsessään mielestäsi parantaa koodin laatua ja tehokkuutta? Vähän sama kuin aina miettisi jotain hienoa tietorakennetta ja oikeasti taulukko riittäisi hommaan.

Metabolix [24.01.2016 20:31:36]

#

vinsentti: En ole huomannut, että olisit esittänyt vielä yhtäkään konkreettista hyötyä Eiffelin käytöstä. Olet kertonut end-sanasta ja joistain yksittäisistä rakenteista, jotka kuitenkin ovat todellisen ohjelmoinnin kannalta ihan merkityksettömiä viilauksia ja yleensä jossain muodossa löytyvät muistakin moderneista kielistä. Mitä sellaista Eiffel tarjoaa, että sillä kannattaisi ihan oikeasti tehdä jokin iso sovellus?

Mitä olet itse ohjelmoinut ja millä kielillä, vai oletko ihan teoria- ja fiilispohjalta täällä ”mainostamassa”?

vinsentti [24.01.2016 20:58:42]

#

jalski kirjoitti:

Oma perustelusi tuntuu olevan pelkästään OOP

OOP on ohjelmoinnin viimeisin läpimurto ja selvin erottava tekijä matalan tason ja korkeamman tason kielten välillä. Se on tapahtunut tosiasia, josta ei vallitse paljoa erimielisyyttä. Liian laaja aihe tähän kirjoitettavaksi. Erimielisiä on aina.

Lisäys:

Metabolix kirjoitti:

Mitä sellaista Eiffel tarjoaa, että sillä kannattaisi ihan oikeasti tehdä jokin iso sovellus?

Avaukseen laitoin jotakin. Kokonaan omaa on Design by contract, joka voi olla seuraava läpimurto. Tähtäimessä ohjelman speksien mukaisuuden toteaminen kääntäjän toimesta. Lopullinen ratkaisu ei vielä ole saatavilla tavallisille ohjelmoijille soveltuvassa muodossa, mutta suureksi avuksi jo nyt.
Näillä kirjoituksilla ei ole mitään vaikutusta kielivalintoihin, mutta koko ajan tapahtuu.

Hansen [24.01.2016 21:52:50]

#

vinsentti kirjoitti:

OOP on ohjelmoinnin viimeisin läpimurto ja selvin erottava tekijä matalan tason ja korkeamman tason kielten välillä. Se on tapahtunut tosiasia, josta ei vallitse paljoa erimielisyyttä. Liian laaja aihe tähän kirjoitettavaksi. Erimielisiä on aina.

Olio-ohjelmoidahan voi esim. C:llä ja assemblyllä. Ei syntaksinamut tee olio-ohjelmointia.

vinsentti kirjoitti:

Lisäys:

Kokonaan omaa on Design by contract, joka voi olla seuraava läpimurto. Tähtäimessä ohjelman speksien mukaisuuden toteaminen kääntäjän toimesta. Lopullinen ratkaisu ei vielä ole saatavilla tavallisille ohjelmoijille soveltuvassa muodossa, mutta suureksi avuksi jo nyt.
Näillä kirjoituksilla ei ole mitään vaikutusta kielivalintoihin, mutta koko ajan tapahtuu.

Eikös 'design by contract' ole jo 20 vuotta vanha juttu. Assert-makroillahan tuota sovelletaan jo muissa kielissä.

vinsentti [24.01.2016 22:03:43]

#

Hansen kirjoitti:

Eikös 'design by contract' ole jo 20 vuotta vanha juttu.

Taitaa olla 30 vuotta ja Meyerin oma juttu, mutta ei ole vielä lyönyt läpi. Hoaren teoria on vieläkin vanhempi.

Hansen kirjoitti:

Assert-makroillahan tuota sovelletaan jo muissa kielissä.

Kyllä, mutta sillä on vähän tekemistä speksauksen ja verifioinnin kanssa. Kääntäjä ei auta, mutta voi tehdä paljon tällaisesta:

draw (amount : INTEGER)
    require
        amount > 0
        saldo >= amount
    do
        saldo := saldo - amount
    ensure
        saldo = old saldo - amount
    end

fergusq [24.01.2016 22:49:53]

#

vinsentti kirjoitti:

Meyer

Kuka tämä Meyer on?

Hansen [24.01.2016 23:05:51]

#

vinsentti kirjoitti:

Hansen kirjoitti:

Assert-makroillahan tuota sovelletaan jo muissa kielissä.

Kyllä, mutta sillä on vähän tekemistä speksauksen ja verifioinnin kanssa.

Sopimuspohjaisessa ohjelmoinnissa(löysin tälläisen suomennoksen) sopimusten suunnittelu ja speksaus on todella samanlaista kaikille kielille.

C:lle ja C++:lle löytyy näköjään kaupallinen verifioija. Syntaksi löytyy monille kielille mm. Perl 6.


Käsittääkseni sopimuspohjainen ohjelmointi on jo lyönyt läpi, muttei vaikuta ohjelmointiin juurikaan eikä siten pidetä ohjelmoinnin merkittävänä kehitysaskeleena.

vinsentti [24.01.2016 23:13:27]

#

fergusq kirjoitti:

Kuka tämä Meyer on?

Epäilen nevöhööd-sarkasmia.

groovyb [24.01.2016 23:23:34]

#

kannattaa myös tutustua Aspect orientated programming (AOP) tapaan, joka on myös erittäin käyttökelpoinen.

Mitä tulee ylläoleviin kirjoituksiin, niin PL/I, kuin eiffel,Cobol, Fortran ja muutkin ancient -kielet on vain legacysoftien ylläpitoon. Ei uusiokehitykseen.
Eli käytännössä: mitään uutta niillä ei kehitetä (ei saisi,eikä kuuluisi), ainoa järkevä käyttö on olemassaolevien mammuttisoftien ylläpito, joissa ei rahkeet ole vielä riittänyt modernisointiin.

Softa muuttuu läjäksi legacy -koodia, kun ohjelmistokehittäjiä ko. kieleen ei enää ole saatavilla markkinoilla, eikä uusia kouluteta. Ja tämä on tapahtunut ajansaatossa monille käyttökelpoisille kielille. Tämä taas tarkoittaa, että joko sovellus modernisoidaan vastaamaan nykyosaamisia tai luotetaan että erityisosaajia on jatkossakin saatavilla pienkehitykseen. Suurta kehitystä enää ei voida tehdä, kun tekijöitä ei tarpeeksi ole. Käyttökelpoisilla kielillä viittaan siis kieliin, joilla ei teknisiä rajoituksia ole "nykyaikaisiin" tekniikoihin (esim. TCP, HTTP/S, SOAP jne etc yms).

Syyt miksi softia ei modernisoida ovat monisyiset - ja syy ei ole se että ei nykyaikaisilla kielillä sitä voisi tehdä. Yksi iso syy on raha. Mammuttisoftien uudelleenkoodaus maksaa. ja paljon. Toinen syy on määrittelyiden tarve. Vanhat legacysoftat vaan pyörii, ja kukaan ei välttämättä tiedä miksi, ja miten ne toimii. Ketään ei ole enää kertomassa. Ja samat kompastuskivet jotka aikoinaan ylitettiin, tulisi uudestaan esiin. kolmas syy on luottamus, ei luoteta että uusi voisi toimia yhtä hyvin kuin vanha, onhan se tähänkin asti toiminut hyvin. Miksi sijoittaa 10 miljoonaa softan uudelleenkoodaukseen, jos se kerran vielä toimii?

Eli syy softan modernisointiin ei ole se uusi hieno ohjelmistokieli, joka nyt sattuu olemaan trendikäs. Jos sovelluksen elinkaarta pitää pidentää, pitää myös turvata sen ylläpidettävyys ja jatkokehittäminen. Itsekin olen ollut useissa projekteissa mukana, joissa taakkana painaa vanha legacykoodi, joka ei vaan taivu nykyajan määreisiin. Vai kuulostaako hyvältä esim 80-luvun alkupuolen ERP, joka vastaanottaa vain maksimipituudeltaan 255merkkisiä merkkijonoja. Ei kuulosta, kun pitäisi pystyä vastaanottamaan ketjutettuja tilauksia, joita tulee sanomina muutamien millisekuntien välein. Vaihtoehtona on joko uusi ERP, tai kuten tässä tapauksessa: annetaan tilausten kertyä viestijonoon ja toivotaan että yön hiljaisina tunteina tilausmäärät hetkellisesti tippuvat ja jono purkautuu. Toivossa on hyvä elää.

Meitä ohjelmoijia kaivaa ikuinen taakka. Vie vuosia opetella se oma "pääkieli" siihen pisteeseen, että oikeasti pärjää asiakasprojekteissa, ja työelämän haasteista. Ja kuten aina, ei haluta päästää irti siitä omasta pääosaamisesta, koska omasta mielestä se on yhä parempi kuin moni uusi kilpaileva ohjelmistokieli. Fakta kuitenkin on se, että jossain vaiheessa se meidänkin pääosaaminen jää legacykoodien ylläpitoon, ellei pysytä ajan hengessä mukana ja opetella niitä asioita jotka työelämän määreitä luo.

vinsentti [24.01.2016 23:23:49]

#

Hansen kirjoitti:

Olio-ohjelmoidahan voi esim. C:llä ja assemblyllä. Ei syntaksinamut tee olio-ohjelmointia.

Kyllä, mutta on tärkeää, että kääntäjä tekee mahdollisimman paljon työstä.

Hansen kirjoitti:

Sopimuspohjaisessa ohjelmoinnissa(löysin tälläisen suomennoksen) sopimusten suunnittelu ja speksaus on todella samanlaista kaikille kielille.

Mutta kielen ja kääntäjän tuki puuttuu. Se on vähän samaa kuin olio-ohjelmointi C:llä.

Lisäys:

groovyb kirjoitti:

kannattaa ...

Hyvä kirjoitus.

Grez [25.01.2016 08:29:10]

#

vinsentti kirjoitti:

Kokonaan omaa on Design by contract, joka voi olla seuraava läpimurto.

Voiko sanoa että kokonaan omaa jos parisenkymmentä kieltä tukee sitä ja lähes kaikkiin merkittäviin on olemassa lisäpalikat sille.

Olihan se oma juttu silloin kun Eiffel luotiin, mutta nykyisellään ei mielestäni merkittävä syy valita Eiffeliä uuteen projektiin.

jalski [25.01.2016 08:35:26]

#

hansen kirjoitti:

Assert-makroillahan tuota sovelletaan jo muissa kielissä.

Ilman Assert-makrojakin tuota voi soveltaa monessa ohjelmointikielessä. Esim. Mooseksen aikaisella PL/I kääntäjällä voi käyttää SELECT lausetta toimimaan halpana korvikkeena (nykypäivänä ASSERT on tuettuna).

groovyb kirjoitti:

Mitä tulee ylläoleviin kirjoituksiin, niin PL/I, kuin eiffel,Cobol, Fortran ja muutkin ancient -kielet on vain legacysoftien ylläpitoon. Ei uusiokehitykseen.
Eli käytännössä: mitään uutta niillä ei kehitetä (ei saisi,eikä kuuluisi), ainoa järkevä käyttö on olemassaolevien mammuttisoftien ylläpito, joissa ei rahkeet ole vielä riittänyt modernisointiin.

Niin Fortran kuin myös PL/I sopivat aivan hyvin uusiokehitykseen. Molemmat myös päivittyvät joka vuosi tukemaan uusia tekniikoita ja uutta rautaa.

groovyb [25.01.2016 09:05:14]

#

Käytännössä jäät legacykoodeja ylläpitämään. Ei ole järkeä toteuttaa isoja projekteja kielivalinnalla, johon ei ole enää normaalia saatavuutta tekijöille. Tuotteen elinkaareen vaikuttaa olennaisesti se, jos kehittäjien määrä on jo valmiiksi laskeva.

vinsentti [25.01.2016 09:21:12]

#

groovyb kirjoitti:

Käyttökelpoisilla kielillä viittaan siis kieliin, joilla ei teknisiä rajoituksia ole "nykyaikaisiin" tekniikoihin (esim. TCP, HTTP/S, SOAP jne etc yms).

Tarkoittaa, että ei ongelmia kirjastojen saatavuudessa ja laadussa?
https://groups.google.com/forum/#!topic/eiffel-users/q08jL9xX_M4
Nämä ovat paitsi ongelmia, myös todisteita elävyydestä. Toisaalta saavutuksiakin on, kuten Design Patters kirjastotuki ja joissakin tapauksissa suora kielituki.

vinsentti [06.02.2016 08:15:37]

#

Mitä on puhdas oliopohjaisuus?
-perustyypitkin perustuvat luokkiin, BOOLEAN ym
-funktionaalinen ohjelmointi perustuu luokkiin ROUTINE, PROCEDURE ja FUNCTION
-geneerisiä voivat olla vain luokat, niiden parametrit ovat tyyppejä

vinsentti [08.02.2016 07:42:17]

#

Hansen kirjoitti:

Käsittääkseni sopimuspohjainen ohjelmointi on jo lyönyt läpi, muttei vaikuta ohjelmointiin juurikaan eikä siten pidetä ohjelmoinnin merkittävänä kehitysaskeleena.

Swiftiinkin on saatu avainsana guard, jonka arvellaan olevan cool.

Natasha ei huomaa elefanttia huoneessa ja jää keskustelussa sivustakatsojaksi.
https://www.natashatherobot.com/swift-guard-better-than-if/


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta