Pogčedajte punu verziju : Python/Ruby i deklaracije promenjivih
ivanhoe
06. 03. 2006., 05:26
Zasto u Pythonu i Rubiju ne postoji mogucnost da se namesti da bude obavezno deklarisanje promenjivih ? Ima li ikakvo razumno objasnjenje za to ?
ovo pricam posto imam dosta iskustva sa perlom (od koga je Ruby pokupio dosta ideja) i na svojoj kozi sam iskusio koliko je neuporedivo lakse debugovati perl programe kad se koristi strict pragma i koliko je brzi razvoj samim tim...
Zasto u Pythonu i Rubiju ne postoji mogucnost da se namesti da bude obavezno deklarisanje promenjivih ? Ima li ikakvo razumno objasnjenje za to ?
ovo pricam posto imam dosta iskustva sa perlom (od koga je Ruby pokupio dosta ideja) i na svojoj kozi sam iskusio koliko je neuporedivo lakse debugovati perl programe kad se koristi strict pragma i koliko je brzi razvoj samim tim...
Za python mozes da uradis umesto (IIRC) use strict - import pychecker.checker i tako dobijes nesto slicno.
Tja, mislim da je dovoljno da za to postoji odvojeni alat (*lint|checker) nego da to bude core language feature ;) kada se vec radi o dinamickim jezicima.
ivanhoe
08. 03. 2006., 00:13
pa kad vec sintaxom teras ljude da lepo formatiraju kod, sto ih ne naterati i da ga deklarisu kako treba... bar je to moj rezon...
blah vidim da postajem sve blizi sumanutoj ideji da sednem i napisem svoj jezik, pa makar ja bio jedini kome ce se dopasti...:D U stvari ako ikada zavrse parrot, to mozda i nece biti toliko tesko uraditi...
pa kad vec sintaxom teras ljude da lepo formatiraju kod, sto ih ne naterati i da ga deklarisu kako treba... bar je to moj rezon...
blah vidim da postajem sve blizi sumanutoj ideji da sednem i napisem svoj jezik, pa makar ja bio jedini kome ce se dopasti...:D U stvari ako ikada zavrse parrot, to mozda i nece biti toliko tesko uraditi...
100 ljudi = 101 jezik :D
Данило
12. 03. 2006., 05:18
pa kad vec sintaxom teras ljude da lepo formatiraju kod, sto ih ne naterati i da ga deklarisu kako treba... bar je to moj rezon...
blah vidim da postajem sve blizi sumanutoj ideji da sednem i napisem svoj jezik, pa makar ja bio jedini kome ce se dopasti...:D U stvari ako ikada zavrse parrot, to mozda i nece biti toliko tesko uraditi...
Не заборави и на то да је Питон и даље „strongly typed“ језик. То значи да променљиву не можеш да читаш ако јој већ ниси доделио вредност одговарајућег типа. Исто тако, не можеш „у ходу“ да промениш тип променљиве.
Мислим да то решава најчешћи разлог за увођење обавезног декларисања променљивих. Или грешим? Зашто ти још требају обавезне декларације? Који случај грешке би то покрило?
(ето и мене мало овде ;))
[edit: пошто су све променљиве референце на објекте, ипак можеш да промениш њен привидни тип, али не можеш да је користиш тамо где се очекује променљива другог типа]
ivanhoe
12. 03. 2006., 13:39
Не заборави и на то да је Питон и даље „strongly typed“ језик. То значи да променљиву не можеш да читаш ако јој већ ниси доделио вредност одговарајућег типа. Исто тако, не можеш „у ходу“ да промениш тип променљиве.
Мислим да то решава најчешћи разлог за увођење обавезног декларисања променљивих. Или грешим? Зашто ти још требају обавезне декларације? Који случај грешке би то покрило?
znaci interpreter upozorava na greske u kucanju imena promenjivih? Ok to je onda slicna funkconalnost kao deklaracije, nisam bio toga svestan...
Данило
12. 03. 2006., 19:08
znaci interpreter upozorava na greske u kucanju imena promenjivih? Ok to je onda slicna funkconalnost kao deklaracije, nisam bio toga svestan...
не баш увек...
нпр.
variable=5
for a in list:
varaible += 3
ће приметити грешку, док у следећем неће:
variable=5
for a in list:
varaible = a
Укратко, у многим случајевима би реаговао на грешку, али не у свим (с том разликом да се ради о грешци приликом рада [lazy/late evaluation], а не приликом компилације, па је неопходан услов и да при тестирању прођеш кроз тај део ко̂да).
Поента је да не можеш да имаш статичко декларисање променљивих и толико касну евалуацију као у Питону („што је касније могуће“ ;)).
Због свега тога, ипак „екстремно програмирање“ и „import unittest“ :)
vBulletin® v3.6.8, Copyright ©2000-2009, Jelsoft Enterprises Ltd.