Python?

Liittynyt
16.10.2016
Viestejä
8
Onko Pythonilla jotain annettavaa kun on PHP ja Perl hallinnassa? Python vaikuttaa niin trendikkäältä.
 
Python paras, muut varas. Web-devaus esim. Flaskilla on mitä parrainta.
 
Onko jotain hyvää yläkouluun sopivaa materiaalipankkia kun tuo ohjelmointi tulee?
 
vscodessa on myös hyvä Python addon. Myös debuggaus onnistuu.
 
Python on pieniin scripteihin ihan ehdoton, sillä on tosi nopeaa ja luontevaa tehdä asioita. Esimerkiksi PHP:n kanssa pitää joka kerta tarkistaa manuaalista että mites nyt katsottiinkaan onko joku avain arrayssä ja kumminpäin ne parametrit nyt menikään, pythonissa se on intuitiivisesti vaan "if key in array:" eikä sitä voi unohtaa. Vähemmän turhia hidasteita = parempi flow koodatessa.
 
Oppilaille ja lähinnä heidän kanssa läpikäytäväksi (eka opiskelen itse, sitten oppilaiden kanssa ja lopuksi oikeat ratkaisut) eli ns. koodauskerho on kyseessä. Onko noiden vastauksia saatavissa missään?
 
Oppilaille ja lähinnä heidän kanssa läpikäytäväksi (eka opiskelen itse, sitten oppilaiden kanssa ja lopuksi oikeat ratkaisut) eli ns. koodauskerho on kyseessä. Onko noiden vastauksia saatavissa missään?
En tiedä, mulla ei ole ton kanssa mitään tekemistä.
 
Oppilaille ja lähinnä heidän kanssa läpikäytäväksi (eka opiskelen itse, sitten oppilaiden kanssa ja lopuksi oikeat ratkaisut) eli ns. koodauskerho on kyseessä. Onko noiden vastauksia saatavissa missään?
Ratkot ne itse niin siinähän se tulee samalla opiskeltua ennen kuin alat opettamaan muita koodaamaan.
 
Itseopiskelun tueksi voisin suositella Codewars sivustoja, joka sisältää huomattavan määrän pieniä ohjelmointiongelmia. Sivusto ei ole mitenkään rajattu pelkästään Pythoniin vaan kieliä löytyy C:stä Haskelliin.
www.codewars.com/r/wxg_iA
 
Onko jotain hyvää yläkouluun sopivaa materiaalipankkia kun tuo ohjelmointi tulee?

Yläasteelle varmaan sopisi hyvin tämä Koodiaapinen. http://koodiaapinen.fi/ Vielä lokakuun loppuun asti saattaisi myös päästä tuon MOOC-kurssille (Massive Open Online Course) opiskelemaan noita materialeja. Tarjolla näyttäisi nimittäin olevan myös Pythonia Scratchin ja Racketin lisäksi. http://koodiaapinen.fi/mooc/
 
Python on pieniin scripteihin ihan ehdoton, sillä on tosi nopeaa ja luontevaa tehdä asioita. Esimerkiksi PHP:n kanssa pitää joka kerta tarkistaa manuaalista että mites nyt katsottiinkaan onko joku avain arrayssä ja kumminpäin ne parametrit nyt menikään, pythonissa se on intuitiivisesti vaan "if key in array:" eikä sitä voi unohtaa. Vähemmän turhia hidasteita = parempi flow koodatessa.
Oikeastaan tuo riippuu siitä, miten selkäytimessä kieli on. Minä aloitin php-koodarina ja laajensin myöhemmin pythoniin. Jouduin aivan samalla tavalla tarkistamaan manuskasta kaikenlaista pientä asiaa toistuvasti, kunnes ne alkoi muistaa pysyvästi.

Vaikka php on aika sekava kieli, niin siitä huolimatta python 2 on minusta kaikkine merkistöongelmineen niin surkea soppa, että ennemmin olisin opettelematta kieltä ollenkaan, mikäli python 3 ei jostain syystä ole vaihtoehto.
 
Oikeastaan tuo riippuu siitä, miten selkäytimessä kieli on. Minä aloitin php-koodarina ja laajensin myöhemmin pythoniin. Jouduin aivan samalla tavalla tarkistamaan manuskasta kaikenlaista pientä asiaa toistuvasti, kunnes ne alkoi muistaa pysyvästi.

Koodasin kaksi vuotta työkseni php:tä enkä ikinä oppinut sitä in_array järjestystä ulkoa, enkä ollut firmasta ainoa. Projektipäälliköllä oli post-it lappu näytön alalaidassa johon oli yleisimpien perusfunktioiden nimet ja parametrien järjestys kirjoitettu muistiin. En tiedä montako vuotta sitä PHP:tä pitäisi koodata että tuo menisi "selkärankaan", mutta pythonissa tuon "if key in array:" oppi päivässä eikä ikinä tarvinnut luntata tai mennyt väärin. Toisin kuin PHP jossa stringikäsittelyssä on yleensä haystack ensin, array-funktioissa needle ensin, reflectionissa haystack ensin, jne... ei kertakaikkiaan mene selkärankaan kun siinä ei ole mitään logiikkaa.

Python on ehdottomasti mukavampi kieli.
 
Koodasin kaksi vuotta työkseni php:tä enkä ikinä oppinut sitä in_array järjestystä ulkoa, enkä ollut firmasta ainoa. Projektipäälliköllä oli post-it lappu näytön alalaidassa johon oli yleisimpien perusfunktioiden nimet ja parametrien järjestys kirjoitettu muistiin. En tiedä montako vuotta sitä PHP:tä pitäisi koodata että tuo menisi "selkärankaan", mutta pythonissa tuon "if key in array:" oppi päivässä eikä ikinä tarvinnut luntata tai mennyt väärin. Toisin kuin PHP jossa stringikäsittelyssä on yleensä haystack ensin, array-funktioissa needle ensin, reflectionissa haystack ensin, jne... ei kertakaikkiaan mene selkärankaan kun siinä ei ole mitään logiikkaa.

Python on ehdottomasti mukavampi kieli.
PHP:ta takana 6 vuotta työkseni ja toistakymmentä harrastuksena, vieläkin lunttaan parametreja manuaalista :D

Composerin ja 5.3:n jälkeen PHP on ollut ihan tolkullinen ohjelmointikieli, standardi kirjasto on kuraa, mutta se on vain pieni osa ohjelmistokehitystä. Seiskan jälkeen on alkanut tulemaan kunnolla syntax sugaria, joka parantaa luettavuutta merkittävästi ja vähän helpottaa kuraista standardikirjastoa.

Pythonia on tullut jonkin verran naputeltua, UTF-8 on hirveää kuraa python2:ssa, kolmonen on ihan kiva jo, joskin vihaan sitä tiedostojärjestelmään kytköksissä olevaan moduulijärjestelmää, haluan itse päättää miten järjestelen tiedostoni :rage:.
 
Menee vähän ohi aiheen edellisten viestien kannustamana, mutta taidan jättää suosiolla sen PHP:n opettelematta, vaikka joskus onkin käynyt mielessä. Kuulostaa aika järkyttävälle enkä usko oikeasti tarvitsevani PHP:tä koskaan. :D Eiköhän sille ajalle ole parempaakin käyttöä.

Jos nyt väkisin sivutaan aihettakin vähän, niin Pythonistakin on tullut hitusen kokemusta. Nätti ja näppäräin oloinen kieli, mutta tyhjän tilan käyttäminen lohkojen merkkaamiseen tympii. Se on nätti ratkaisu, mutta se tuntui aiheuttavan välillä virheitä ihan vahingossa. Minulla ei ole mitään ongelmia oikein sisentämisen kanssa useimmissa kielissä, mutta Pythonissa se jostain syystä iski päälle ikävästi. Sen sijaan esimerkiksi Haskellissa, jossa myös käytetään sisennystä Pythonin tapaan, ongelma ei ole vaikuttanut yhtä pahalta omien kokemusteni perusteella. Kaipa tuon sisennyksen kanssa oppisi elämään, mutta toistaiseksi on kuitenkin jäänyt vähän paha maku suuhun. En myöskään oikein tykkää Pythonin tavasta hoitaa oliopuoli: metodien nimissä alaviivaa, self joka paikassa, attribuuttien määrittely konstruktorissa... Lisäksi Pythonin tyypitys taitaa olla aika voimakkaasti dynaamiseen päin kallellaan, jos en väärin muista? Muuten siis näppärän oloinen kieli, mutta näistä jutuista en tykkää yhtään.
 
Pythonista tulee muuten huomenna odotettu 3.6 versio ulos. Itse ainakin pidän näistä uudistuksista, varsinkin nuo f-stringit ovat kivoja. Esim. nyt voi tehdä näin:
Koodi:
nimi = 'Erkki'
sukunimi = 'Erkkinen'
ika = 49
print(f'Minun nimi on {nimi} {sukunimi} ja olen {ika+1} vuotta vanha')

  • PEP 468 , Preserving Keyword Argument Order
  • PEP 487 , Simpler customisation of class creation
  • PEP 495 , Local Time Disambiguation
  • PEP 498 , Literal String Formatting
  • PEP 506 , Adding A Secrets Module To The Standard Library
  • PEP 509 , Add a private version to dict
  • PEP 515 , Underscores in Numeric Literals
  • PEP 519 , Adding a file system path protocol
  • PEP 520 , Preserving Class Attribute Definition Order
  • PEP 523 , Adding a frame evaluation API to CPython
  • PEP 524 , Make os.urandom() blocking on Linux (during system startup)
  • PEP 525 , Asynchronous Generators (provisional)
  • PEP 526 , Syntax for Variable Annotations (provisional)
  • PEP 528 , Change Windows console encoding to UTF-8 (provisional)
  • PEP 529 , Change Windows filesystem encoding to UTF-8 (provisional)
  • PEP 530 , Asynchronous Comprehensions
 
Viimeksi muokattu:
Mitä IDEä käytätte? Onko niissä oleellisia eroja vai onko kyse lähinnä omista mieltymyksiä? IDLEllä olen nyt opetellut mutta ajattelin koittaa Eclipseä sen ilmaisuuden vuoksi.
 
PyCharm (community edition) + VIM-plugin. En tiedä muista ympäristöistä, mutta PyCharmissa on kivaa se, että ainakin aloittelija oppii sitä käyttäessä samalla PEP 8:a.
 
Täältäkin ääni PyCharmille. Community editionilla on hyvin pärjännyt.
 
Vim on ollut pääasiassa käytössä. Windowsin puolella Atom.
Eli ei ole ollut tarvetta IDElle. Tuota PyCharmia voisi kyllä testata jossain vaiheessa.
 
Viimeksi muokattu:
Omaan makuuni nuo idet ovat tuntuneet raskailta, hitailta tai paradoksaalisesti muuten vain työläiltä. Pääasiallisesti koodaan itsekin Atomilla.
 
Vaikka en Pythonia juurikaan koodaile, mutta PyCharmille kanssa plussaa täältä suunnalta. Jetbrains ei pahemmin ole vuosien saatossa työntänyt mitään roskaa ulos.
 
Onko Pythonilla jotain annettavaa kun on PHP ja Perl hallinnassa? Python vaikuttaa niin trendikkäältä.

Python on myös yleistynyt kovasti matematiikka/tilasto/koneoppimispuolella. Jonkinlaista siirtymää tapahtunut Matlabistä kohti Pythonia. Monella tavalla mukava ja ilmaisuvoimainen kieli, jolla saa pienellä vaivalla toimivaa!
 
Jos todella hauskat ja visuaaliset koodauspähkinät kiinnostavat, niin suosittelen www.codingame.com. Tuolla pääsee vääntää kaikennäköisiä algoritmeja, tietorakenteita, stringin käsittelyä yms. Ikinä ei ole koodaus ollut niin kivaa. Löytyy myös multiplayer bottikoodausta joissa kilpaillaan muiden botteja vastaan. Ja kaikki on ilmaista ja ohjelmointikieliä +25.
 
Minulla on 3 saraketta ja 5 riviä joissa numeroita.

1 2 3
1 2 3
1 2 3
1 2 3

Näistä pitäisi saada laskettua erivaihtoehdot niin että jokaiselta riviltä otetaan yksi numero. Eli lopulta on 5 numeroa jotka lasketaan yhteen.

Miten tämä olisi fiksuin toteuttaa niin että kaikki mahdolliset vaihtoehdot tulee lasketuksi?
Nyt noista muodostuu 243 erilaista mahdollisuutta. Kaikkia näitä ei huvittaisi laittaa omaksi koodiksi varsinkaan jos rivejä tuleekin lisää.

Otetaan esimerkki
1 1 2 2 3 olisi valikoitunut numeroiksi. Nämä summataan yhteen niin saadaan 9 toinen rivi olisi vaikka 12223 jolloin tulee 10

Nämä 243 eri vaihtoehtoa olisi sitten riveittäin laitettu listaksi.
Eli tyyliin
9
10
15
11
Jne.

Ymmärsikö tästä nyt kukaan? Numerot riveillä eivät ole vakiot 1 2 3 vaan olisivat muuttujia pelihahmon statseista luettuna.
 
Uteliaisuuttani kysyn: Kerrotko vielä sen varsinaisen ongelman, jota tässä olet ratkaisemassa? Eli mitä tuolla lopullisella listalla sitten tehdään?
Siitä generoidaan erilaisia tilanteita "tappelupeliini". Mitään kaupallista peliä en ole tekemässä, mutta pienimuotoista demoa python opettelun ohessa koitain rakennella. Eli eri luku viittaa aina eri lopputulemaan. Varmasti tähän on parempiakin tapoja, mutta tämä oli se mitä halusin koodiini testailla.
 
Osaako joku kertoa, että mikä olisi paras tapa havaita Pythonilla Windowsin uloskirjautuminen ja logittaa uloskirjautumisen aikaleima? Ymmärtääkseni luotettavinta olisi tarkkailla WM_WTSSESSION_CHANGE:n WTS_SESSION_LOGOFF:ia?
 
Firman rautaan on tehty tietyt ohjelmat Pythonilla ja kieltämättä onhan tuo näppärä monessa kohdassa esimerkiksi C:hen verrattuna.
 
Eiköhän toi Pythonin nousu ole aika pitkälti sulatetuista johdannaisia juttuja, kun RPi ja BB tms vastaavat kortit tuppaa tuota Pythonia suosimaaan melko pitkälti.
 
Tuskin pelkkä yksi juttu noin kovaa ja pitkään jatkuvaa nousua ylläpitää, täytyy olla monia syitä. RPi ja BB jne. luultavasti suosivat Pythonia mm., koska aloittelijan on helppo päästä siihen sisään opiskelematta "turhuuksia" kuten tyypit ja muistinhallinta.
 
Yksi tekijä myös varmaan Pythonin yleistyminen tiedepuolella Matlabin korvaajana. Vaikuttaa myös suositulta analytiikan saralla.

Eikä ihme, Pythonilla saa nopeasti paljon aikaiseksi. Ihan kiva, että yleistyy.
 
Onko Python sitten niin suorituskykyinen, että sillä pystyy korvaamaan jopa Matlabin tapaisia kieliä? Ainakin olen ollut sellaisessa käsityksessä, että Pythonilla saa nopeasti riipaistua sen mvp-tuotteen ja kohta ovella onkin sitten assember/assembly/c-miehet.
 
Onko Python sitten niin suorituskykyinen, että sillä pystyy korvaamaan jopa Matlabin tapaisia kieliä? Ainakin olen ollut sellaisessa käsityksessä, että Pythonilla saa nopeasti riipaistua sen mvp-tuotteen ja kohta ovella onkin sitten assember/assembly/c-miehet.

Ei tällä vuosikymmenellä ole tarvittu konekieltä tai käännettäviä kieliä enää.

Käyttämällä säikeistettyä laskentaa ja tehokkaita algoritmeja saadaan paljon tehokkaammin tehtyä asioita. Lisäksi on GPUt, ASICit ja muut laskentaraudat, jotka tekevät sitä raskasta laskentaa tehokkaammin.
 
Onko Python sitten niin suorituskykyinen, että sillä pystyy korvaamaan jopa Matlabin tapaisia kieliä? Ainakin olen ollut sellaisessa käsityksessä, että Pythonilla saa nopeasti riipaistua sen mvp-tuotteen ja kohta ovella onkin sitten assember/assembly/c-miehet.
Jos puhutaan numeerisesta laskennasta niin kyllä pystyy korvaamaan matlabin. Esim NumPy käyttää optimoituja lineaarialgebrakirjastoja eli käytännössä siellä alla pyörii C/Fortran/ASM optimoitu kirjasto joka ne laskut tekee. Toisekseen, nykyään pythonissa on hyvä tuki esim. CUDA:lle jolla saa mukavasti nopeutettua laskentaa tarvittaessa.

Yleisestikin pythonin suorituskyky on aivan riittävä nykyisin, kunhan kirjoittaa koodin järkevästi (tämä tietysti pätee jokaiseen kieleen).
 
Nii, siis tuolla Pythonilla hoidetaan vain data noille kirjastoille ja lopputulosten tallentaminen/visualisointi.
 
Ja kaiken kaikkiaan on aika älytöntä väittää jotain kieltä kategorisesti liian hitaaksi. Riippuu täysin tilanteesta, aiheutuuko jokin suorituskykyongelma juurikin kielestä, vai (kuten yleensä) jostain ihan muusta. Syypää hitauteen on kohtuullisen usein jossain muualla kuin ohjelmointikielessä. Ja kuten yllä todettiin, voi kielen puutteita paikata tekemällä jokin kriittinen kirjasto rautaläheisemmällä kielellä - jos tosin lähes aina joku on sen kirjaston jo tehnyt devaajan puolesta. Ja yhtä usein ongelma johtuu devaajasta itsestään: käytetään esim. hidasta algoritmia tai vääriä/hitaita tietorakenteita. Monessa ongelmassa pullonkaulat taas ovat ihan muualla kuin ohjelmointikielessä (verkon viiveet, tietokannan hitaus jne.). Mutta tilannetta pitäisi aina katsoa tapauskohtaisesti.
 
Jos puhutaan numeerisesta laskennasta niin kyllä pystyy korvaamaan matlabin. Esim NumPy käyttää optimoituja lineaarialgebrakirjastoja eli käytännössä siellä alla pyörii C/Fortran/ASM optimoitu kirjasto joka ne laskut tekee. Toisekseen, nykyään pythonissa on hyvä tuki esim. CUDA:lle jolla saa mukavasti nopeutettua laskentaa tarvittaessa.

Kuinka laajat kirjastot Pythonille löytyy tähän tarkoitukseen? Kiinnostaisi tietää, kun en ole koskaan käyttänyt Pythonia Matlabin korvikkeena.

Entä miten tulosten visualisointi onnistuu Pythonilla? Siinä missä Octavella hoituu laskenta ihan hyvin, visualisointi ei mitenkään pärjää Matlabille. Siinä on ainakin kolme vaihtoehtoa grafiikan piirtämiseen (Qt, Gnuplot, FLTK) eikä yhdelläkään saa kunnollista jälkeä. Matlabilla kuvasta saa sellaisen kuin haluaa ja suunnilleen missä muodossa tahansa. Viimeksi kun käytin Octavea, piirtoruudusta piti käytännössä ottaa ruutukaappaus, jotta kuvasta sai tyydyttävän.
 
Kuinka laajat kirjastot Pythonille löytyy tähän tarkoitukseen? Kiinnostaisi tietää, kun en ole koskaan käyttänyt Pythonia Matlabin korvikkeena.

Entä miten tulosten visualisointi onnistuu Pythonilla? Siinä missä Octavella hoituu laskenta ihan hyvin, visualisointi ei mitenkään pärjää Matlabille. Siinä on ainakin kolme vaihtoehtoa grafiikan piirtämiseen (Qt, Gnuplot, FLTK) eikä yhdelläkään saa kunnollista jälkeä. Matlabilla kuvasta saa sellaisen kuin haluaa ja suunnilleen missä muodossa tahansa. Viimeksi kun käytin Octavea, piirtoruudusta piti käytännössä ottaa ruutukaappaus, jotta kuvasta sai tyydyttävän.
Matplotlib on ihan hyvä, syntaksi samanlainen kun matlabissa. En tosin ole mikään visualisointiguru matlabin suhteen, joten en tiedä taipuuko tuo kaikkeen mitä matlabilla voi tehdä, tuossa yllä olevassa linkissä on hyvä lista erilaisista visualisointikirjastoista.
 

Statistiikka

Viestiketjuista
261 456
Viestejä
4 538 506
Jäsenet
74 800
Uusin jäsen
Eemu04

Hinta.fi

Back
Ylös Bottom