Zakaj imam rad Python :P

Vse kar ne spada drugam spada sem.

Moderatorji: ahac, mrbrdo

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a azi » 19 Jan 2008, 22:38

tepko napisal/-a:A ti model si še vedno trd kaj??? A si prebral vse? S pravim IDE-jem je pisanje Java kode ali katerekoli druge kode krajše kot recimo pisanje kode v pythonu. A ti moram še preštet koliko tipk pritisnem jaz v IDEA-i in koliko jih on ko piše python program?

Hehe, nic ni treba stet - ze po tvojem odnosu v odgovorih je jasno da nimas pojma kaj govoris.

Tepko napisal/-a:A jebu dile, če boš pršu v službi s tako ven, da ti je en jezik beden, ker je preveč za pisat kode bojo takoj vedl da si črnogorc in verjemi mi, da boš hitro pogoru.


Cudne izkusnje mas ti z delodajalci na IT podrocju. Osebno sem namrec opazil, da je edini cilj, da napises kodo kvalitetno in hitro. Nobenega ne zanima ali si napisal 4000k vrstic ali 100. Ce torej napises v 100 vrsticah, toliko boljse zate.. Tvoji delodajalec pa zgleda zahteva od tebe doloceno stevilo vrstic za posamezno aplikacijo?

tepko napisal/-a:Dandanes noben pravi programer ne piše vse kode, ampak jo IDE piše namesto njega. Če pa vi še vedno uporabljate notepad za pisanje kode pa vam povem samo eno: get a life.


Zanimivo... Bom moral vprasati kaj Linux kernel, Apache,X.org developerje keri IDE uporabljajo ali pa celo mogoce IDE developerje keri IDE so uporabljali. Mogoce je pa cas, da opazis da pod programiranjem ni misljen samo web development in financne aplikacije?


tepko napisal/-a:Pa še to, v javi se lepo vidi recimo v printout stavku kateri izhodni tok se uporablja. V pythonu ga jaz ne vidim... Gre v datoteko, gre kam drugam? (ok default je terminal, kaj pa kaj drugega?) Zato imaš IDE, napišeš "sout" + tab in voila, print stavek je napisan namesto tebe. Pretežko? :devious:

Pointless debata o tem kateri programski jezik je boljsi, hitrejsi, preglednejsi.. Pa, cas je da opazis, da IDE-ji ne spadajo pod pojem programiranja...

tepko napisal/-a:Jaz danes ko programiram doma ali v službi uporabljam samo mnemonike in bljižnjice. Koda pa se piše skoraj sama. Samo imena spremenljivk in razredov moram pisat, pa še tu pomaga intelliSense...

Uff, zgleda res veliko programiras..

tepko napisal/-a: In poanta avtorja te teme je bila ta, da on v pythonu prišpara veliko vrstic, ker ima bogi 800x600 monitor in 10 let staro tipkovnico in seveda priljubljeni notepad. Python je bolj uporaben v določenih primerih vendar taka primerjava jezikov pade iz mej zdravega humorja...

Se strinjam, primerjava programskih jezikov je definitivno pointless. Iz moje strani je to vse - vidim, da debata ne vodi nikamor.
azi
Zvezda
 
Prispevkov: 265
Pridružen: 30 Sep 2007, 14:50

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a hugo » 19 Jan 2008, 23:15

Heh tepko ima očitno preveč časa, pa pač spama brez kakih argumentov, da dobi mau pozornosti :D
Na vsakem forumu se najdejo taki :mrgreen:
LIFE HURTS, ENJOY THE PAIN! (the master told him)
hugo
Star maček
 
Prispevkov: 145
Pridružen: 30 Okt 2004, 17:43
Kraj: tm nek zelo dalec

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a hugo » 24 Jan 2008, 21:24

Če želite kaj bol "konkretnega" napišite v Javi funkcijo, ki za dano stanje:
seznam = [("x","o","x"), ("o","x","x"), ("x","","o")]
Vrne "x" če je zmagal x, "o" če je zmagal o, "Tie" če je neodločeno in "" če nič od tega.
To je bila letošnja naloga pri ORI :)

Resitev v py:
Koda: Izberi vse
#==== 3 in a ROW ====
#Check if someone has won or if its a tie, else return ""
seznam = [  ("x","o","x"),
            ("o","x","x"),
            ("x","","o")  ]

#==== If someone won ====
def hasWon(sez, z):
    #Vertical + horizontal
    for i in sez + zip(*sez):
        if i == tuple(z) * 3:
            return True
    #Diagonal
    for x in enumerate(sez), enumerate(reversed(sez)):
        if [j[i] for i, j in x] == [z] * 3:
            return True
   
    return False

#==== Check ====
def winner(sez):
    if hasWon(sez, "x"):
        return "x"
    if hasWon(sez, "o"):
        return "o"
    #Tie?
    if len(filter(lambda x: "" in x, seznam)) == 0:
        return "tie"
   
    return ""

print "==============="
for i in seznam:
    print str(i)
print "===============" 
print winner(seznam)
LIFE HURTS, ENJOY THE PAIN! (the master told him)
hugo
Star maček
 
Prispevkov: 145
Pridružen: 30 Okt 2004, 17:43
Kraj: tm nek zelo dalec

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a HaKi » 24 Jan 2008, 21:46

Krizci in krozci a ni to tko bolj za prog 1 snov kot pa za ORO?

Mogoce velja se uciti tudi kaj o linerano skalabilnih arhitekturah a'la Space Based Architecture[1] itd. No ja, vazno, da se lepo, da resit krizce in krozce :D

[1] http://en.wikipedia.org/wiki/Space_based_architecture
int[] countdown = new int[]{0,0,3}
HaKi
Superstar
 
Prispevkov: 893
Pridružen: 29 Sep 2005, 11:52

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a KlemziX » 24 Jan 2008, 23:18

Uf tisto gor pa je nek oster algoritem. 8)
A to je tvoje avtorsko delo Mr.Hugo :=: ?
Slika
KlemziX
Superstar
 
Prispevkov: 2151
Pridružen: 24 Avg 2005, 17:45

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a T00L » 26 Jan 2008, 03:03

sem si vzel malo časa pa sprobal tole zadevščino...

nekaj stvari, ki so mi padle v oči:

python je interpretiran jezik, torej ni kompajlanja kode ampak direktno zaženeš source... to se mi je za majhne programčke, ki sem jih delal, zdelo priročno in hitreje kot compile/run cikel v javi (uporabljal sem Scinilla Text Editor z vgrajeno konzolo in barvanjem kode za Python). Ne vem pa, kako se to interpretiranje obnese za večje zadeve, kakšne so npr. primerjave hitrosti z drugimi jeziki.

python lahko deluje tudi v interaktivnem načinu (python -i), kjer v ukazni vrstici direktno vnašaš ukaze, ki se direktno izvedejo, lahko pa tudi vneseš kar nek izraz in se izpiše izračunan rezultat (recimo 2*4+3, lahko pa definiraš tudi spremenljivke itd.). To je priročno za hitro potestiranje kake zadeve, ne da bi moral za to prav napisati program.

ena dokaj opazna zadeva je, da python za določanje gnezdenih blokov kode uporablja kar zamike (whitespace). sicer na prvi pogled hecna odločitev, samo ima to dva plusa: s tem odpade nekaj sintaktičnega balasta (kot npr. vijugasti oklepaji in podpičja v Javi), pa tudi forsira oblikovanje kode.

Python ima dinamični typing, torej spremenljivkam ne določiš vnaprej tipa. Sicer mi to ne diši najbolje, sem pa zato bil prijetno presenečen, ko sem testiral preprost program za računanje fibonacci zaporedja:
Koda: Izberi vse
a,b=0,1

for i in range(1,1000):
    a,b = b,a+b
    print a

Zgoraj sem zanko "nabil" na 1000 ponovitev in sem pač pričakoval da se bo tako kot v javi zgodil overflow (in bo skočilo na negativno vrednost) pri maksimalni vrednosti npr. inta... Samo je python kar računal naprej števila z 100 in več decimalnimi mesti, brez izgube natančnosti :) Isto bi sicer dosegel v Javi z razredom BigDecimal, samo tukaj to deluje transparentno in tudi python verjetno odzadaj naredi pretvorbo v tak format samo po potrebi, npr. ob overflowu navadnega int-a ....

zgornji primer kaže tudi še en sintaktični cukr, multiple assignment, kjer lahko večim spremenljivkam, ločenimi z vejico v isti vrstici nastaviš vrednosti (v resnici se odzadaj dela s tuple-i)

ena luštna fora je tudi, da lahko množiš stringe in ti bo to potem naredilo string z toliko ponovitvami ("x"*5 postane "xxxxx")

v samo sintakso jezika so vgrajene dokaj priročne operacije z listi in stringi. v oglatih oklepajih lahko določiš začetek, konec in korak, potem pa ti ven izpljune nov string ali list z to vsebino. konec in korak sta neobvezna.

a[x] - element na poziciji x
a[x:y] - elementi od pozicije x do pozicije y (brez y)
a[x:y:z] - elementi od pozicije x do pozicije y, s korakom z

če za pozicijo določiš negativen indeks, se bo štelo od konca nazaj, a[-1] je zadnji element.

Koda: Izberi vse
>>> a="abcde"
>>> a[0]
'a'
>>> a[1:3]
'bc'
>>> a[2:]
'cde'
>>> a[:3]
'abc'
>>> a[-1]
'e'
>>> a[-2]
'd'
>>> a[:]
'abcde'
>>> a[::2]
'ace'
>>> a[0:5:2]
'ace'



ena zanimiva zadeva je tudi to, da lahko referenco na funkcijo shraniš v spremenljivko (sicer ma to tudi kak c, ampak java tega nima, edino mogoče posredno s kakim callback objektom ali pa reflectionom).

poleg navadnih funkcij lahko definiraš tudi lambda funkcije, to so preproste inline funkcije, ki so sestavljene samo iz vhodnih spremenljivk in nekega izraza.

Koda: Izberi vse
>>> f=lambda x,y:x+y
>>> f
<function <lambda> at 0x00A20DB0>
>>> f(1,2)
3


na listih in stringih lahko tudi uporabljaš vgrajene metode filter, map in reduce. Filter z neko (boolean) funkcijo filtrira list in vrne nov list z elementi ki ustrezajo filtru, map pokliče neko fukncijo za vsak element seznama in vrne seznam rezultatov, reduce pa vzame neko funkcijo z dvema parametroma in potem kliče to funkcijo in poda trenutni element zaporedja in prejšnji rezultat funkcije.

Koda: Izberi vse
>>> a="asdbqjhcoymwelashevbxnm"
>>> filter(lambda x:x>"g", a)
'sqjhoymwlshvxnm'

>>> b=[1,2,3,4,5]
>>> map(lambda x:x*x*x, b)
[1, 8, 27, 64, 125]

>>> reduce(lambda x,y:x+y, b)
15



Do toliko sem prišel, nisem obdelal še celega tutoriala, ampak bom enkrat ko bo čas :)

Tako da mislim da je python kar zanimiv jezik in ima lahko kako uporabo za kaj na hitro napisat...

lahko bi hugo res dal kak bolj pameten primer, ki kaže dejanske razlike proti Javi, preden smo začeli s tem flamewarom :)
T00L
Superstar
 
Prispevkov: 1098
Pridružen: 13 Jan 2005, 22:20
Kraj: Novo mesto

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a hugo » 26 Jan 2008, 11:22

Wow lepo si to napiso T00L :D
Sj CraZyNutt je dal en dobr link za primerjavo: Python Java side-by-side

KlemziX napisal/-a:Uf tisto gor pa je nek oster algoritem. 8)
A to je tvoje avtorsko delo Mr.Hugo :=: ?

Hvala Gospod Klemzi 8)

Jaz trenutno uporabljam: PyScripter - podobne pythonwin, z rahlo več funkcijami
Drgač pa imete še: http://wingware.com/ in pa http://pythonide.stani.be/ za kakšne večje projekte
LIFE HURTS, ENJOY THE PAIN! (the master told him)
hugo
Star maček
 
Prispevkov: 145
Pridružen: 30 Okt 2004, 17:43
Kraj: tm nek zelo dalec

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a HaKi » 26 Jan 2008, 12:57

Zanimiva debata o typingu v pajtonu

http://www.artima.com/forums/flat.jsp?f ... hread=7590

zanimivo, da obstajajo potem taki projekti kot so typecheck

http://oakwinter.com/code/typecheck
int[] countdown = new int[]{0,0,3}
HaKi
Superstar
 
Prispevkov: 893
Pridružen: 29 Sep 2005, 11:52

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a azi » 26 Jan 2008, 13:10

Sicer sem se kar lesen v pythonu (nisem mel casa nabrusit skillzov). Mam pa rad zadeve kot :

List comprehensions
Recimo,da imamo funkcijo isp(n) ki vrne n-to prastevilo :

Koda: Izberi vse
prvih_n_prastevil = [isp(i) for i in xrange(n)]


Reversanje listov, stringov :

Koda: Izberi vse
>>> x = [1,2,3]
>>> x[::-1]
[3, 2, 1]


Funkcije ki vrnejo vec vrednosti, in prirejanje le-teh :

Koda: Izberi vse
def xx() : # primer res grde prakse
   return 3, "FOOBAR"
num, str = xx()


Prav mi pride tudi potencni operator, tako da na hiter nacin korenim/potenciram

Koda: Izberi vse
x = 16**0.5


Tesko je zdaj prikazat vse primere kjer mi python pride prav, tako da vec primerov ko se spomnem. Drugac pa, dober post TOOL , res.
azi
Zvezda
 
Prispevkov: 265
Pridružen: 30 Sep 2007, 14:50

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a radicalb » 10 Feb 2008, 13:11

Moj naljubši IDE je MS Word, najljubši programski jezik pa Slovenščina. :lol: No o prednosotih in slabostih pythona bi bolj težko govoril, ker nisem še nič delal v njem. Jaz osebno najraje delam v Delphiju, ker zelo dobro podpira mojo lenobo. :D Poleg tega mi je Delphi tudi všeč zato, ker dela bolj po principu "Piši kao što govoriš"(lepo vse na dolgo, tako, da lahko kodo bereš kot šolski spis - kar nažalost tudi pomeni več pisanja - več časa). Je pa tudi res, da so "grši" jeziki ponavadi tudi bolj zmogljivi, kar pa zame ne predstavlja ravno neko grozno prednost, saj v Delphiju vsaj ne morem sfukat mojga kompa :mrgreen: .

Pa sori za rahel offtopic.
radicalb
Star maček
 
Prispevkov: 126
Pridružen: 16 Okt 2007, 07:53
Kraj: Trnovo

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a T00L » 10 Feb 2008, 14:21

radicalb napisal/-a:Poleg tega mi je Delphi tudi všeč zato, ker dela bolj po principu "Piši kao što govoriš"

A pol ti pri govorjenju ogromno podpičij uporabljaš, pa pred besedami za tip dajaš odspredaj T_ ? :P

radicalb napisal/-a:saj v Delphiju vsaj ne morem sfukat mojga kompa

Potem se pa še nisi dovolj potrudil :) Moj bivši cimer je za službo enkrat delal en program v delphiju ko je slike obdeloval in je naredil ogromno nekih temp datotek. Te je potem hotel s programom zbrisat, ampak je rutini namesto temp direktorija podal root C: :) Ko mu je program laufal že kake par minut je pogruntal da nekaj ne štima in hitro ustavil zadevo. Stvar mu je zbrisala tudi neke source, ki jih ni imel kje drugje (ja, vem, source control ftw), tako da je potem moral uporabit undelete programe da mu je datoteke nazaj zrihtal (ker njegov program je zbrisal samo reference na datoteke, ne samih podatkov).
T00L
Superstar
 
Prispevkov: 1098
Pridružen: 13 Jan 2005, 22:20
Kraj: Novo mesto

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a radicalb » 11 Feb 2008, 10:39

A pol ti pri govorjenju ogromno podpičij uporabljaš, pa pred besedami za tip dajaš odspredaj T_ ? :P


var Marjetka:TMarjetka;
begin
Ja;
Sam ne vem, zakaj mi je Marjetka vedno pri šolskih spisih prečrtala vsa dvopičja;
end;

:D
radicalb
Star maček
 
Prispevkov: 126
Pridružen: 16 Okt 2007, 07:53
Kraj: Trnovo

Re: Zakaj imam rad Python :P

OdgovorNapisal/-a wingback » 25 Feb 2008, 13:05

a je kdo kej implementiru upload datoteke s pythonom, mam velik tezav s tem :) pomoč?
wingback
Star maček
 
Prispevkov: 172
Pridružen: 02 Jun 2005, 11:52

Prejšnja

Vrni se na Whatever

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 0 gostov