Kirjoittaja Aihe: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?  (Luettu 9592 kertaa)

Toni Alenius

  • Käyttäjä
  • Viestejä: 1517
    • Profiili
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ä?
Ubuntu 24.04.01 LTS
16 GB DDR3
Intel® Core™ i5 CPU 760 @ 2.80GHz × 4
GeForce GT 730 2GB
2x480 GB SSD

T.M

  • Käyttäjä
  • Viestejä: 172
    • Profiili
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.

SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Perl on ihan hyvä kieli, mutta sen syntaksi on tosiaan suoraan helvetistä... Suosittelen pythonia minäkin :)
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
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 :)

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
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ä.
Janne

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
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.


mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
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.

SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
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.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
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.

Fa1r

  • Käyttäjä
  • Viestejä: 221
  • Reply #1!
    • Profiili
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
What you don't know can hurt you, only you won't know it.
--$(fortune)
Elastisen Linux-biisi

t3r0

  • Käyttäjä
  • Viestejä: 34
    • Profiili
    • www.raiteilla.org
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #10 : 08.07.07 - klo:17.48 »
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

Nakkis

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #11 : 08.07.07 - klo:20.21 »
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.

Koodia: [Valitse]
# -*- coding=merkistökoodaus_minkä_haluat_tulee_tähän -*-

SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #12 : 08.07.07 - klo:21.23 »
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.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #13 : 08.07.07 - klo:23.22 »
http://www.python.org/peps/pep-0263.html

Tuon tiesin ja siitä ei ollut tässä kysymys. Ongelmana oli tiedostojen lukeminen.

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #14 : 09.07.07 - klo:08.33 »
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.


SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #15 : 09.07.07 - klo:09.37 »
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.
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #16 : 09.07.07 - klo:10.06 »
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 ! :)


SuperOscar

  • Käyttäjä
  • Viestejä: 4063
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #17 : 09.07.07 - klo:10.10 »
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ä” 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.)
« Viimeksi muokattu: 09.07.07 - klo:10.12 kirjoittanut SuperOscar »
pöytäkone 1, NUC: openSUSE Leap 15.6, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; RPi 1: FreeBSD 14-RELEASE; RPi 2: LibreELEC 11

_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #18 : 10.07.07 - klo:08.48 »
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".


t3r0

  • Käyttäjä
  • Viestejä: 34
    • Profiili
    • www.raiteilla.org
Vs: Perl, kätevä skripti/ohjelmointikieli, muita näkemyksiä?
« Vastaus #19 : 10.07.07 - klo:13.48 »
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ä” 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..