>Python on dynaamisesti tyypittävä
>ohjelmointikieli
Ou nou - juuri kun luulin, että niistä ollaan päästy kokonaan eroon. Historia toistaa itseään:)
>ohjelmointikieli
Ou nou - juuri kun luulin, että niistä ollaan päästy kokonaan eroon. Historia toistaa itseään:)
Vastaukset 16
Vanhimmat
muinaismuistolta.
Sitten noita vielä suositellaan ohjelmoinnin opetteluun ja porukka ihmettelee kun eivät tajua tietotyypeistä mitään.
Kertokaas nyt ihmeessä miksi se dynaaminen tyypitys on sitten niin huono?
Alotetaas siitä, että listaat ne tietokannat joissa käytetään käytännössä pääasiassa tota dynaamista tyypitystä. Sitten voitais kattoa niitten markkinaosuuksia.
Python on tietokantakieleksi melko uusi, eikä voida olettaa niin uuden kielen vielä tukevan tietotyyppejä.
Selkeetä trollausta taasen tavattavissa, mutta vastataan nyt kuitenkin että tulee perusasiat selväksi.
Ero dynaamisessa tyypityksessä verrattuna staattiseen on se, että muuttujan tyyppi määräytyy ajon aikana eikä sitä sidota käännösvaiheessa.
Itse muuttuja on vain "nimi", eikä sillä ole mitään tyyppiä. Vain muuttujan kohteella on jokin tyyppi.
Vaikka python onkin dynaamisesti tyypitetty, se
ei tarkoita että se ei olisi vahvasti tyypitetty. Eli esim. seuraava rivi nostaisi virheen koska merkkijonon ja luvun yhteenlasku ei ole määritty:
foo = "12345" 6
Tuossa vielä wikipedia artikkeli joka kertoo dynaamisesta tyypityksestä:
http://fi.wikipedia.org/wiki/Tyyppijärjestelmä
Alkoi tympiä keskustelun suunta. Turhaa lässytystä. Ei kenenkään ole pakko käyttää Pythonia mihinkään. Itse käytän sitä aktiivisesti töissä lukuisten asioiden automatisointiin, ja kodailenpa sillä joskus kotonakin (viimeksi 3D-grafiikkakokeiluja OpenGL:llä). En kuvittelisi käyttäväni jotain Javaa, C :aa, Ceesharppia tai muuta staattisesti tyypitettyä kieltä asioihin, joihin käytän Pythonia.
Kun tietää, mitä tekee, suorituskyky ei ratkaise ja tarvitsee vain saada aikaiseksi, hyvät dynaamisesti tyypitetyt kielet hallitsevat.
Siitä voi sitten jokanen miettiä ihan itte, miksi samaa ei sovelleta tietokannoissa.
Näköjään sovelletaan:
http://gadfly.sourceforge.net/
Tommosista tekijä oppii tekemään paremmin oikeillakin tuotantosysteemeillä.
Tuota noin... onko olemassa jokin perustelu että dynaamisesti tyypittävällä kielellä ei voi tehdä tietokantaa tuotantokäyttöön?
Jepulis Jeep on vakiotrolli. Aikalailla pihalla monestakin asiasta.
Et nyt vaan oikeen tajunnut kysymystä. Ei se mitään. Eli sanos nyt, että miksi noissa tietokannoissa ei tavata käyttää pahemmin tota dynaamista tyypistystä? Siis MySQL, Oracle, SQL Server.
Jos vaikka selviäisi miksi jotkut tahot tykkäävät välttää sitä ohjelmointikielissä.
En keksi mitään syytä dynaamiseen tyypitykseen liittyvää, mutta keksin kyllä syitä miksi väliin ei haluta virtuaalikoneita ym. sälää. Kerro sinä.
Vaikka tiedänkin tämän olevan turhaa, niin yritän kuitenkin. Pythonilla ei ole tehty relaatiotietokantoja siksi kun relaatiokantaohjelmiston tekeminen ei ole helppoa ja valmiina on paljon erinomaisia kantaratkaisuja. Toisaalta olemassa olevat ovat saaneet alkunsa parikymmentä vuotta sitten, kun python oli vielä lasten kengissään. Pythonilla voi suorittaa SQL-kyselyjä tietokantoihin, jolloin saatu vastausjoukko tyypittyy sitä mukaa kun vastaus pääsee pythoniin. Esim. ohjelman tekijä ei koodatessaan "tiedä" minkä tyyppistä dataa kysely tuottaa, mutta kyselyn jälkeen "tiedetään", että esim. nimi on merkkijono ja ikä on kokonaisluku. Tietokantaan tallennetaan informaatio aina tyypin kanssa, koska informaatio ilman tyyppiä on bittimössöä ilman merkitystä. Dynaaminen tyypitys ei tarkoita tyypittömyyttä vaan sitä että tyyppi määräytyy informaation mukaan silloin kun informaatio tulee saataville eli yleensä ajon aikana. Dynaaminen tyypitys on hyvin voimissaan myös muualla kuin vain pythonissa. Esim. ECMA-script, Ryby, VBA, VBScript jne. ovat dynaamisesti tyypittyviä kieliä (pari viimeistä ovat Microsoftin hengentuotteita). Web-sovellukset käytännössä pyörivät dynaamisesti tyypittyvien kielien varassa (Ajax, xhtml jne.). Microsoftin Visual Basic aiheutti sen, että COM-tekniikassa on mahdollisuus dynaamiseen tyypitykseen. Dynaaminen tyypitys ei aiheuta ongelmia tietotyyppien kanssa, koska tietotyypit eivät katoa mihinkään. Ne vaan arvontuvat vähän myöhemmin. Ja tästä aiheutuu joskus ikäviä virheitä, koska muuttujan tyyppi selviää vasta pitkällisen ajon jälkeen ja ko. kohdassa tehdään kahden eri tyypin epäyhteensopiva operaatio esim. "5" 5. Python on opetuskielenä ihan yhtä hyvä (tai huono) kuin Java tai C#. Minulle ei kuitenkaan vielä selvinnyt miksi dynaamista tyypitystä pitäisi välttää, koska ilman sitä tämäkin keskustelu voisi olla hankalaa tai jopa mahdotonta. Ota vaikka selaimestasi tämän sivun lähdekoodi näkyviin ja laske montako riviä dynaamisesti tyypittyvää koodia löydät. Toisaalta, tietokannoissa on blob:n käsite, joka taitaa olla bittimössöä ja on kannan suhteen tyypitön. Tyyppi on pultattu sovelluskoodiin. En näe juurikaan mitään estettä käyttää dynaamista tyypitystä tietokantojen yhteydessä, mutta relaatioalgebra ja SQL taitavat vähän sinällään hankaloittaa asioita.
Hyvä asenne sulla. Joo, ohan siellä se tyypitys olemassa. Vaan sitä ei näe koodista vaikka viemällä kursorin tietojäsenen päälle. Kysehän on oikeestaan pitkälti siitä, että miksi tommonen toiminnallisuus on tarpeetonta? Mun mielestä on tavattoman hyödyllistä nähdä tyyppi suoraan em. tavalla. Kannoissa tyypin näkee määrittelyistä koska se on siellä tehokas tapa toimia.