Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Toni Alenius - 29.06.07 - klo:15.03
-
Lukeminen loppui, joten lainasin kirjastosta kasan IT -alan kirjoja (taas, viimeksi tulin vahingossa aloittaneksi Linuxin käytön) ja yksi niistä perehdyttää Perliin, sähelsin eilen illalla tunnin pari Perl -skriptejä, ja olen koukussa.
Kätevä skripti- ja ohjelmointikieli, eläköön Larry Wallin nimi.
Onko muilla eriäviä/vastaavia näkemyksiä?
-
Omat kokemukset:
Ihan kiva omiin ropelluksiin mutta jälkikäteen tekeleet näyttävät käsittämättömiltä. Saati sitten jos joku muu joutuu niitä lukemaan.
Itse teen yleensä pythonilla tai php:lla mutta perlin etu on se että löytyy melko varmasti joka *nix-myllystä eikä Perl:n opettelu hukkaan mene.
-
Perl on ihan hyvä kieli, mutta sen syntaksi on tosiaan suoraan helvetistä... Suosittelen pythonia minäkin :)
-
Jos tässä suositusten linjalle lähdetään niin ilmoitan minäkin oman suositukseni joka on Tcl.
Koodamisen kannalta hyvin tehokas ja yksinkertainen kieli mutta kuitenkin helposti laajennettava. Tcl ei pelkästään tarjoa mahdollisuutta ampua itseään jalkaan vaan se mahdollistaa itse aseenkin rakentamisen ;)
Mahdollisesti sama onnistuu Pythonissakin mutta ei sitä ole ainakaan yhtä helpoksi tehty.
Itseäni Pythonissa on häirinnyt eniten ongelmat merkistökoodausten kanssa. Vika on luultavasti minussa eikä kielessä mutta tuohon liittyvien ongelmien takia tuskastuin siihen viimeksi. Muistaakseni en saanut luettua tiedostoa jossa käytetty merkistökoodaus oli joko UTF-8 tai ISO-8859-1. Skandeja kohdatessaan Python heitti poikkeuksen ilmoittaen että tiedostossa oli laittomia merkkejä. Se siis luki tiedostoa väärällä merkistökoodauksella eikä sille mielestäni pystynyt kertomaan oikeaa koodausta mitenkään järkevästi.
Tcl:n kanssa en ole vastaaviin ongelmiin törmännyt. Se vain toimii :)
-
Lukeminen loppui, joten lainasin kirjastosta kasan IT -alan kirjoja (taas, viimeksi tulin vahingossa aloittaneksi Linuxin käytön) ja yksi niistä perehdyttää Perliin, sähelsin eilen illalla tunnin pari Perl -skriptejä, ja olen koukussa.
Kätevä skripti- ja ohjelmointikieli, eläköön Larry Wallin nimi.
Onko muilla eriäviä/vastaavia näkemyksiä?
no, minä olen tosiaan aika samoilla linjoilla kuin muutama muukin vastaaja. pidän enemmän pythonista.
tosin täytyy myöntää, että kun aikoinanin ostin kamelikirjan ja aloin opettelemaan perliä, se teki minuun aika suuren vaikutuksen. se tuntui hauskalta ja tietyissä jutuissa varsin tehokkaalta, mutta tosiaan ajan kanssa selvisi, että koodin pitäminen luettavana vaatii koodaajalta hyvin paljon itsekuria ja suuremmissa projekteissa vielä enemmä.
-
Scriptikielistä huomionarvoinen on myöskin täysin oo-pohjainen Ruby.
Myöskin sen ympärille tehty wep-framework Ruby on Rails, jota voi lämpimästi suositella
php:n tilalle.
-
Scriptikielistä huomionarvoinen on myöskin täysin oo-pohjainen Ruby.
Myöskin sen ympärille tehty wep-framework Ruby on Rails, jota voi lämpimästi suositella
php:n tilalle.
Pitäisi joskus kokeilla tuota Ruby on Rails -ympäristöä kunnolla. Viimeksi olen kokeillut Python-pohjaista Djangoa joka on varsin pitkälle Ruby on Railsin vastine, mutta Djangon tietokantarajapinta osoittautui käytössäni riittämättömäksi. Pitäisi testata pärjääkö RoR yhtään sen paremmin.
Sääli etten enää muista mitä täsmälleen olin tekemässä kun Django osoittautui riittämättömäksi. Omasta mielestäni se ei ollut hirveän monimutkaista. Tietysti Djangossakin pystyy kyselyt kirjoittamaan käsin mutta se jossain määrin tuhoaa koko ympäristön idean.
-
Itseäni Pythonissa on häirinnyt eniten ongelmat merkistökoodausten kanssa. Vika on luultavasti minussa eikä kielessä mutta tuohon liittyvien ongelmien takia tuskastuin siihen viimeksi. Muistaakseni en saanut luettua tiedostoa jossa käytetty merkistökoodaus oli joko UTF-8 tai ISO-8859-1. Skandeja kohdatessaan Python heitti poikkeuksen ilmoittaen että tiedostossa oli laittomia merkkejä.
Vian on täytynyt olla tavassa, jolla tiedostoa luit. Ei Python sinänsä piittaa tiedoston sisällöstä, olkoonpa vaikka puhdasta binaaria.
-
Vian on täytynyt olla tavassa, jolla tiedostoa luit. Ei Python sinänsä piittaa tiedoston sisällöstä, olkoonpa vaikka puhdasta binaaria.
Epäilemättä :)
Nyt kun asiaa mietin niin todennäköisesti olen lukenut ISO-8859-1 muodossa olevaa tiedostoa ja yrittänyt käyttää luettua tekstiä suoraan ilman että olen tehnyt mitään muunnosta merkistökoodauksille. Luulisin että tämä on voinut aiheuttaa kokemani ongelmat.
Hmm... Olisinkohan kompastunut noin yksinkertaiseen virheeseen. Harmittaa kun en enää muista täsmällistä ongelmaa.
-
Perl perl.. "Does anybody know regular expressions?" "Oh yes, the Perl Man does!"
Elokuvassa ´The Matrix*´ toisinaan esiintyvät mustalla pohjalla alaspäin valuvat vihreät merkit ovat Perliä. Lähde (http://bash.org/?1180)
-
Scriptikielistä huomionarvoinen on myöskin täysin oo-pohjainen Ruby.
Myöskin sen ympärille tehty wep-framework Ruby on Rails, jota voi lämpimästi suositella
php:n tilalle.
+1 :)
ps. kannattaa käydä vilkaisemassa myös www.raiteilla.org
-
Vian on täytynyt olla tavassa, jolla tiedostoa luit. Ei Python sinänsä piittaa tiedoston sisällöstä, olkoonpa vaikka puhdasta binaaria.
Epäilemättä :)
Nyt kun asiaa mietin niin todennäköisesti olen lukenut ISO-8859-1 muodossa olevaa tiedostoa ja yrittänyt käyttää luettua tekstiä suoraan ilman että olen tehnyt mitään muunnosta merkistökoodauksille. Luulisin että tämä on voinut aiheuttaa kokemani ongelmat.
Hmm... Olisinkohan kompastunut noin yksinkertaiseen virheeseen. Harmittaa kun en enää muista täsmällistä ongelmaa.
http://www.python.org/peps/pep-0263.html
Eli suomeksi: lisää tämä kommentti tiedoston alkuun.
# -*- coding=merkistökoodaus_minkä_haluat_tulee_tähän -*-
-
Pythonin kolmosversiossa oletusmerkistöksi pitäisi tulla UTF-8, jolloin tarve tuohon tiedostonalkuiseen kommenttiin (lähes) katoaa. Nykyiselläänkään sitä ei tietysti tarvitse, jos tiedosto on ASCIIta, mutta kun niitä ääkkösiäkin haluaa käyttää...
Rubysta sen verran, että olin alkuun aika innostunutkin siitä. Se on lähempänä Perliä kuin Pythonia, mistä on etunsa (mm. sääntölausekkeet!), mutta syntaksia on rutkasti siistitty. Siltikin siihen on jätetty paljon tyhmää kikkailua, esim. useampia lähes samoja tapoja tehdä sama asia. Pythonin ideologiahan sen sijaan on, että jokaisen tehtävän tekemiseen pitäisi olla mieluusti vain yksi tapa, ja sen mahdollisimman intuitiitivinen.
-
http://www.python.org/peps/pep-0263.html
Tuon tiesin ja siitä ei ollut tässä kysymys. Ongelmana oli tiedostojen lukeminen.
-
Pythonin ideologiahan sen sijaan on, että jokaisen tehtävän tekemiseen pitäisi olla mieluusti vain yksi tapa, ja sen mahdollisimman intuitiitivinen.
Näin ammattiohjelmoijana kuulostaa huonolta. En ole ikinä pythonia käyttänyt, mutta minusta monimuotoisuus on plussaa. Kaikki ei taatusti ajattele ja toimi "yksi tapa" (tm) periaatteella.
-
Näin ammattiohjelmoijana kuulostaa huonolta. En ole ikinä pythonia käyttänyt, mutta minusta monimuotoisuus on plussaa. Kaikki ei taatusti ajattele ja toimi "yksi tapa" (tm) periaatteella.
Kerrotko, mitä ihmeen hyötyä voisi olla esim. siitä, että Rubyssa lohkoa voi osoittaa sekä aaltosulkeilla {} että do...end-komennoilla (joiden välillä on pieni, epäintuitiivinen ero)? Monimuotoisuus tässä mielessä ei ole plussaa vaan aiheuttaa pelkästään sekavaa ja vaikeasti ymmärrettävää koodia.
-
Kerrotko, mitä ihmeen hyötyä voisi olla esim. siitä, että Rubyssa lohkoa voi osoittaa sekä aaltosulkeilla {} että do...end-komennoilla (joiden välillä on pieni, epäintuitiivinen ero)? Monimuotoisuus tässä mielessä ei ole plussaa vaan aiheuttaa pelkästään sekavaa ja vaikeasti ymmärrettävää koodia.
Tuo on pelkkää semantiikkaa.
Eli merkityksetöntä.
Mulle on ihan sama, määritelläänkö lause { } sisään vai do..end tai johkin muuhun. Itse ohjelmointi ei silti muutu miksikään.
Jos kiinnittää huomioo tuollaisiin pikkuseikkoihin, ei imo ole true ohjelmoija aka SOODAJA ! :)
-
Mulle on ihan sama, määritelläänkö lause { } sisään vai do..end tai johkin muuhun. Itse ohjelmointi ei silti muutu miksikään.
No niin minullekin sikäli kuin ohjelmointikielessä olisi jompikumpi – mutta kun on kumpikin?! Eivätkä ne edes ole täydet synonyymit, vaan toinen sitoo tiukemmin kuin toinen, mitä koodia silmäilevä ei taatusti voi tajuta, ellei osaa Rubya jo ennestään hyvin. Jos tätä vertaa Pythoniin, Pythonin ”Zenissä” (http://www.python.org/dev/peps/pep-0020/) on suoraan sanottu, että eksplisiittinen on parempi kuin implisiittinen: jos halutaan tuollainen ero saada aikaan, sen pitäisi olla mahdollisimman näkyvästi esillä koodissa.
(Eikä ero muuten ole semanttinen kuin sen sidontaeron osalta: muutenhan se nimenomaan on syntaktinen.)
-
Rybyä (ja muitakin kieliä) pitää osata hyvin, jotta sillä voi tehdä oikeasti jotain. Siksi en nyt näe että on mikään ongelma tuo "kaksinaisuus".
-
Mulle on ihan sama, määritelläänkö lause { } sisään vai do..end tai johkin muuhun. Itse ohjelmointi ei silti muutu miksikään.
No niin minullekin sikäli kuin ohjelmointikielessä olisi jompikumpi – mutta kun on kumpikin?! Eivätkä ne edes ole täydet synonyymit, vaan toinen sitoo tiukemmin kuin toinen, mitä koodia silmäilevä ei taatusti voi tajuta, ellei osaa Rubya jo ennestään hyvin. Jos tätä vertaa Pythoniin, Pythonin ”Zenissä” (http://www.python.org/dev/peps/pep-0020/) on suoraan sanottu, että eksplisiittinen on parempi kuin implisiittinen: jos halutaan tuollainen ero saada aikaan, sen pitäisi olla mahdollisimman näkyvästi esillä koodissa.
(Eikä ero muuten ole semanttinen kuin sen sidontaeron osalta: muutenhan se nimenomaan on syntaktinen.)
Minusta tuo on pelkästään hyvä asia. Mikäli yhtään enemmän koodailet Rubya huomaat että kummallekkin on oma paikkansa missä niitä tulee käyttää.. Ja Ruby yhteisö vahvasti ohjaakin ruby koodareita käyttämään näitä oikein. Se että on mahdollisuus käyttää selkeämpää syntaksia tietyissä tilanteissa ei tee huono / vaikea lukuista koodia ;) pikemminkin päinvastoin.
Ja mitä noiden eroihin tulee niin se on käytännössä ihan sama asia kun että käytätkö 'and' vai '&&' ehtolauseessa..
-
Ja mitä noiden eroihin tulee niin se on käytännössä ihan sama asia kun että käytätkö 'and' vai '&&' ehtolauseessa..
Aivan – ja sen takia Pythonissa on vain "and" :)
En epäile sitä, etteikö kummallekin voisi keksiä käyttöä, mutta aiaks hyvin piiloon se varsinainen "juttu" niissä kyllä onnistutaan panemaan. Itse arvostan eksplisiittisyyttä: jos tarkoitetaan X, se myös näkyy koodissa, ja mielellään tavalla, jota vasta-alkajankaan ei tarvitse arvuutella.