Jump to content
php.lv forumi

python sucks


codez

Recommended Posts

  • Replies 46
  • Created
  • Last Reply

Top Posters In This Topic

video neskatījos, bet neizskatās, ka tas ir vērā ņemams arguments.

 

esmu rakstījis valodā, kur nevajag semikolus, kur funkciju nosaukumus var saīsināt, funkcijām nev neppieciešams noslēdzošās iekavas/apzīmējums, bet kad ir lielāks projekts, tad manuprāt ir grūtāk tajā visā orientēties. man tomēr patīk, kad ir strikta sintakse. piemēram tas pats coffee scipts manuprāt ir daudz nepārskatāmās tikai tāpēc, ka citi iedomājušies, ka rakstot īsāk ir pārksatāmāk.

Link to comment
Share on other sites

python sucks.

No Tevis šito negaidīju :)

 

Man liekas, ka nav tādas sliktas vai labas programmēšanas valodas... viss ir atkarīgs no tavām zināšamām un spejām rīkoties ar konkrēto valodu, turklāt pirms izstrādes ir svarīgi pieņemt pareizo lēmumu valodas izvēlē.

Ja runājam tieši par python, tad šī valoda man patīk ar to, ka sintakse ir ļoti stingra, un nav iespējams šeit uzrakstīt kodu bez atkāpēm :) turklāt pielietojums šai valoda ir nenormāli plašs.

Link to comment
Share on other sites

Šoreiz, codez lasa manas domas. Bravo. "Php-ista" acīm kaut ko var redzēt tikai "Php-ists". daGrevi, visu cieņu, bet Tev līdz šādam statusam kā līdz Alpha Cygni ar kājām. Atļāvos iztulkot Tavu rakstu. Varbūt sapratīsi, kur ir Tevis paša kļūdas.

 

No PHP uz Python jeb Pyhon valoda PH-Pista acīm

 

22. augusts, 2012. gads

Ir pagājuši jau gandrīz divi mēneši kopš mainīju savu darba vietu. Tagad esmu Python programmētājs, (jo divos mēnešos (vai mazliet vairāk) ir iespējams iemācīties močīt Python maistara Wu līmenī) un ļoti ceru, ka PHP valodai vairs nebūs «jāpieskaras» (, un arī es ceru [red]). Kas tas tāds ir — Python? Kādas ir galvenās atšķirības starp šīm divām valodām? Kas tad vainas PHP? (Un kāpēc es konstanti runāju par lietām, no kurām man ir tikai virspusēja jēga?) Par to šajā rakstā. :)

Par čūsku (Python)

 

Python ir vēl viena skriptu (scenāriju) valoda. Jauns tūlis manā tūlboksā! (Mammu, bez rokām, redzi?!!!) Sen jau bija doma mācīties jaunu programmēšanas valodu un, cik atceros, izvēle bija starp Python un Ruby (, un C++. Bet tam man akna par vāju un atmetu uzreiz). Abas valodas ir relatīvi skaistas (Hahah, Tu vispār lasi, ko raksti? [red]) un no abām arī zinu cilvēkus, kuri attiecīgās valodas arī lieto (ik pa reizei graužot nagus, kad Ruby aplikācija pie lielākas slodzes jāparraksta tajā pašā PHP vai Python, jo "dibens" par smagu). Beigu beigās izlēmu par labu Python (kaut cik prātīga izvēle. Bravo.), jo ar to arī bieži vien raksta CLI utilītas (biežāk nekā web lapas, starp citu) (Ja? gnome devi, pygtk lietotāji sajūsmā lauž krēslus. Tā pat, kā visi djangisti un pati Google tante), veido ne-tik-ļoti-blingy-bling 2D spēles (tetris, most of the time) un pat ļoti primitīvas GUI aplikācijas (Atkal - gnome devi sajūsmā lauž krēslus)! Ir iespējams palaist Python uz Android (Wow. Tāpat, kā jebko citu.) un Python ļoti bieži izmanto kā pluginu-valodu (kaut vai pašam ST2) (ST2 laikam ir viss, ko Tu zini, ja? Ā nu jā, pamatskolas lapas var rakstīt arī Win Notepad. Tur pēc ides toč nav vajadzības). Protams ar Ruby un, Dievs pasarg (!) (OMG es nejēdzu kaut ko izdarīt, tātad, pasarg dies, to nevajag darīt! :O), PHP arī to var darīt, bet... katrai lietai ir savs tūlis un Python, beigu beigās, tomēr būs piemērotāks CLI utilītām nekā Ruby. Bet Ruby arī ir ļoti jauks! ;D (Pēc šī paragrāfa visi Java, Perl, C un citu valodu lietotāji stūrī lej gaužas asaras)

Pats Python ir interpretējams, strauji attīstās (diezgan nesen iznāca trešā versija un cilvēki čīkst par portēšanas problēmām :) (Jā, iedomājies? Cik grūti gan varētu būt noportēt desmitiem tūkstošu aplikāciju ar miljoniem koda rindu un iztērētiem desmitiem miljonu dolāru izstrādē. Taisni nesaprotu, kur varētu būt problēma.) ), relatīvi populārs (ne tik ļoti kā PHP vai Javascript, bet...) un pēdējā laikā pieprasījums pēc Python programmētājiem darba tirgū ir tikai cēlies (šis fakts sāk ieņemt lomu valodas izvēlē, kad tu ar to «pelni maizi») (bet vēl joprojām uz Python liela daļa čurā, jo biz aplikācijās izmanto Java, lielos, vidējos un mazos webos - PHP un Java. Tāpēc atcerieties, zēni un meitenes, Python mācamies kā papildus valodu. Lai nesanāk pagulēt zem dzelzceļa tilta. ). Priecē fakts, ka Python nosaukums ir cēlies no humora šova Monty Python (iesaku ieguglēt (iebingot?) par šo jebkuram, kuram patīk labi pasmieties) (kā visiem 15gadniekiem).

«Kas tas par pseido-kodu?»

 

Pirmais, kas, domāju, jebkuram (pareizāk jebkuram, kurš nāk no C-like valodas: C, C++, C#, Java, Javascript, PHP, Go utt. utjp.) liks teikt WTF (pamatoti), ieraugot Python, ir sintakse (jeb precīzāk, tās iztrūkums). Nav semikoli, nav braketi un viss izskatās, vienkārši, kā jau es minēju, pēc pseido-koda. (Man gan nav gluži daudz jausmas, kas tas ir, bet es domāju, ka tas ir tas, ko es domāju, kas tas ir...)

Koda gabali iz Python (tik pat labi tas varētu būt arī pseido-kods):

# Simulates «ls /spam/eggs/».

directory = sys.argv[1] if len(sys.argv) > 1 else "."

for item in os.listdir(directory):

print item,

def fib(n):

"""Genarates sequence of Fibonacci numbers."""

if n == 0: return 0

elif n == 1: return 1

else: return fib(n - 1) + fib(n - 2)

 

print fib(42) # 42th number in Fibonacci sequence.

# Searches for string in web-page and prints-out the result.

 

needle = "— You're flying! How? — Python!"

haystack = urlopen("http://dagrevis.lv/")

 

if needle in haystack.read(): print "Found!"

else: print "Not found!"

@app.route("/hello/<username>")

def hello(username):

"""Says hello."""

if username is None:

return "Hello, anonymous!"

return "Hello, {}!".format(username)</username>

(Faaaaaaaaaaaak, kas notika ar indentāciju? bļoooda!!!!!!1 Nekas neiet :()

(tas </username> ir bags Markdown implementācijā, tam tur nav jābūt :) (jo man ir līki pirksti, bet par to citreiz :) ) )

Galīgi nepierasti, vai ne? Sākumā es arī biju pārsteigts. Pat ļoti! (!!! W00t!!) Tomēr, jau sen esmu pieradis un, es droši varu teikt, ka šāda sintakse ir ērtāka un vieglāk lasāma. (un ar tupu iedzīšanu smadzeņu rievās tur nav nekāda sakara) Neredzu jēgu, tā teikt, «liekajiem semikoliem» katras jaunas rindiņas beigās. Neredzu jēgu «liekajiem braketiem», jo, beigu beigās, tāpat ir pieņemts kodu indentot un tas jau ir pietiekami, lai pats parseris varētu saprast kur sākas un beidzas bloks ar kodu. (Protams, uz nestotiem cikliem un funkcijām pajāt. Es taču nekad tālāk par 3 rindām koda un CRUD vienalga netikšu :()

Gadījums iz dzīves bija, ka jaunajā darbā pēc krietna Pythonisma nācās uzrakstīt dazās rindiņas ar Javascriptu. Tā kā manam ST2 (esmu hipsters, lietoju ziepeni) ir SublimeLinter plagins, uzreiz pirmajā rindiņā parādījās iespējamā kļūda. Es ilgi nevarēju saprast kur ir problēma, jo rindiņa izskatījās pareiza. Beigu beigās tomēr sapratu, ka nav noslēdzošā semikola. Lūk tas ir pieradums! :) (Alkoholisms un atrofija, es teiktu. Tikai citā "nozarē")

Python valoda PHP programmētājam

 

Jau minēju, ka kādreiz (ne)biju PHP programmētājs. Tagad, cik nu (ne)objektīvi spēšu, salīdzināšu šīs divas valodas.

Pirmais, kas likās nedaudz jocīgi, ir tas, ka viss ir kā modulis. Pašam Pythonam ir astoņdesmit funkcijas. (Php par sevi vispār nav funkciju. Bet labi. Kurš gan to skaita?) Pārējais — smuki sakārtots pa moduļiem. Tā teikt, OOP approach. (LOL) Tiem, kas nezin — iekš PHP ir varbūt pat daži tūkstoši iebūvētās funkcijas (pofigs, ka PHP kā tāds ir tikai dzinējs un visas šīs funkcijas vienalga atrodas moduļos), kas ir prefiksotas ar, gluži vai, random nosaukumiem (kuru jēgu es vienkārši nesaprotu. Mans Do ir par vāju). Tas nenozīmē, ka PHP ir vairāk funkcionalitātes (, tas nozīmē to, ka PHP ir vairāk tiešās pieejas funkcionalitātes). Tas nozīmē, ka iekš Python viss ir skaisti sakārtots un pieejams tikai, kad pieprasīts (tieši tā pat, kā PHP. Es šo pieminēju tikai tāpēc, ka esmu muļķis un nezinu, ko gvelžu).

Ja jau sākam runāt par kārtību valodā, Python valoda pati seko development guidlines. Attiecīgi, nav redzēti tādi brīnumi, ka visas funkcijas iekš modeļa ir, teiksim, ar under_score nosaukiem, bet viena, ļoti īpaša, ir camelCase'ā. (Protams arī PHP nekas tāds nekad nav redzēts. Man vienkārši patīk izzīst kaut ko no pirksta nezinot, piemēram to, ka tiešpieejas funkcijas PHP vienmēr un klasiski rakstāmas lower case ar _ bet netiešas pieejas - camelcase) Tas pats arī attiecas uz parametru kārtību — ja funkcija ar nosaukumu «foo» pieņem argumentus secībā «x» un «y», tad funkcija ar nosaukumu «reversed_foo», kas dara to pašu, tikai otrādi, pieņems argumentus tādā pašā, visnotaļ loģiskā, secībā. (?!??!?!!!!!WAt?!?!!?!)

Ja jau sākam par argumentiem... kas man pašam ļoti, ļoti patīk — «named arguments». Iedomāsimies funckiju, kurai ir desmit argumenti (no kuriem deviņiem ir defaultā vērtība).

Labojums: Parasti funkcijai nevajadzētu būt vairāk par trīs argumentiem. Tomēr, ir gadījumi, kad tas nav ievērots un «ir kaudze» ar defaultajiem argumentiem.

Situācija, ka nepieciešams izsaukt šo funkciju ar desmito argumentu kā True.

Iekš PHP: foo(42, null, null, "", 0, 0, array(), 0, null, true)

Iekš Python: foo(42, bar=True)

Attiecīgi, varam norādīt argumenta nosaukumu un nenorādīt visus astoņu pa vidu esošo argumentu defaultās vērtības. Patīkami, ne?

(Vēl tikai vēlējos piebilst, ka nezinu, ka labais tonis nemaz neļauj veidot tik stulbas funkcijas. Jebkurā valodā. Tam domātas klases. Un to sauc par kompleksitātes robežu - funkcionalitātes daudzumu, pēc kura funkcionalitātes enkapsulāciju nepieciešams pārcelt jaunā līmenī, šajā gadījumā - objektā)

KKur lasīju, ka PHP 5.5 ir doma ieviest «default» kījvordu, kas, attiecīgi, būs pieejams kā arguments un nosetotosies uz defaulto vērtību.

Tātad: foo(42, default, default, default, default, default, default, default, default, true)

Iekš Python, tā pat kā Javascript, viss ir objekts. Mēs varam mantot klasi no stringa vai jebkura cita datu tipa. Mēs varam klases instancei modificēt atribūtus. Tā kā funkcija arī ir objekts, mēs varam pieprasīt jebkuru funkcijas atribūtu (objektiem taču ir atribūti, vai ne? :) ). Mēs varam jebko mētāt apkārt, jo viss, viss ir objekts! (Varvīksnes! VARAVĪĪĪKSNEĒĒEEESsss!!!111 OBJEKTITITTITIT!!11111 STĪVS OBJEKTĪVSS11!!! INSTAGRAMS!!111)

Ir vēl daudz, daudz mazi un arī ne tik ļoti mazi sīkumi, kas padara Python savā ziņā labāku par PHP valodu. Bet tas viss ir sīkums, jo atcerējos, ko nesen runāju ar @laadinjsh (Ruby programmētāju). Sekojoši: galvenais valodā ir prieks, bauda (kaifs?) to lietot un, man rakstīt Python valodā ir nesalīdzināmi patīkamām nekā PHP. :)

Labojums: Šis raksts ir izpelnījies lielu kritiku no PHP programmētajiem. Nesaprotu kāpēc ir jāaizstāv kāda no valodām... tie visi ir tikai tūļi, kas palīdz nonākt pie labāka rezultāta. Es nesaku, ka PHP ir slikta valoda, bet saku, ka Python manā uztverē, maniem uzdevumiem der labāk. Man pieredze ar PHP ir ~3 gadi (muļļājot visādu figņu šur un tur) un nav gluži tā, ka neko par to pats nesaprotu — tā kā man ir viedoklis par to. Ar Python esmu profesionāli strādājis apmēram divus mēnešus (LOL PROFESIONĀLI?!!1111 *Ļoti rupjš krievu lamuvārds šeit*) — šie ir tikai pirmie iespaidi. Esmu drošs, ka laika gaitā atradīsies simts un viena lieta, kas Python padarīs ne tik ļoti pievilcīgu kā tagad. ...un es vēlreiz uzsveru, ka tie ir tikai tūļi darba paveikšanai. Izskatās tā, ka daži no jums «ir iemīlējušies savā valodā» un aizstāv to «ar putām uz lūpām». :) (Vai arī es esmu cirvis, un nesaprotu, ka lielākā daļa devu šeit strādā ar 2-3 valodām, ja ne vairāk. Nav nekāda iemīlēšanās. Ir tikai reidžš pret kārtējā meistara no pirksta izzīstajiem faktiem, kam ar realitāti nav nekāda sakara un kurš bez pamata noliek normāli lietojamu instrumentu.)

 

Lai vienreiz beigtu šo idiotisko argumentu starp Python stulbeņiem un PHP-istiem, PHP ir izveidots tikai un vienīgi darbam ar Web - CLI, HTTP, SSScript. Punkts. Viss ar to ir izteikts. Python, Ruby un citi hipsteru radījumi nekad, nekādā veidā un nekādā aspektā nebūs labāki par PHP jomā, ko PHP bija radīts darīt - darbā ar wide-variety web aplikācijām. Iekal to savajā tukšajā paurī un pietaupi šito figņu. Lai pēc tam nav jāsūdzas, ka Tevi par šito figņu grib uz mieta uzsēdināt tie, kas ar PHP strādā n reizes ilgāk un vairāk, kā Tu.

Es varu vienkārši aizmigt uz klaviatūras un pateikt vairāk, kā tu, cenšoties. Fak off un pazūdi nafig no php komūnas. Ej popularizē savu pitonu tiem, kuriem jams interesē. Nu pietiek taču vienreiz mākties virsū tiem, kam uz jamo ir diezgan daudz nospļauties. Jibio.

/thread

Edited by F3llony
Link to comment
Share on other sites

Atļāvos iztulkot Tavu rakstu. Varbūt sapratīsi, kur ir Tevis paša kļūdas.

Ne kā personīga pret daGrevis, bet tulkojums iespārda - vitamīnu deva vakaram.

 

Kas attiecas uz python tik ļoti cildināto skaistumu, nu nav jau nemaz tik, tik. izteikts.

Pāris dienas atpakaļ sanāca dažus olipiāžu tipa uzdevumu atrisinājumus parakstīt pythonā, bet fišķa bija, kurš uzrakstīs to īsākā kodā.

Šeit viens risinājums. Kad sapratīsies, ko kods dara, paziņojiet maniem mazbērniem:

open("hotel.out","w").write(str(max([max([sum(map(int,z.split())) for z in " ".join(x).split('0')]) for x in zip(*[sum([['0']*len(x)+[str(len(x))] for x in x.strip().split('*')],[]) for x in open("hotel.in").readlines()[1:]])])))

Ar to gribēju pateikt, ka koda lasamība nav tik daudz atkarīga no valodas, cik no programmētāja, jo arī python-ā var bez problēmām uzrakstīs nesaprotamu/kriptisku kodu.

 

Pildod dažus uzdevumus pamanīju, piemēram, ka arī ne visur ir ievērots arī python iebūvētajām funkcijām vienots stils:

map(len,['abc','efgh','ijk'])
#un
max(['abc','efgh','ijk'],key=len)

Kā redzams map funkcijā pirmais parametrs ir funkcija un tad ir masīvs, savukārt max funkcijā pirmais parametrs ir masīvs, bet funkciju kas nosakā pēc kā salīdzināt vērtības, vispār jāliek klāt ar named parametru.

 

No savas pieredzes (drošvien atkārtojos) varu teikt, ka python ir pietiekami labs, lai ātri uzrakstītu īsus cli rīkus, bet webā (esmu mēģinājis) es nekad nedotu priekšroku salīdzinājumā pret PHP.

Savukārt websocketu nepieciešamības gadījumā pythonam viennozīmīgi ieliek node.js

 

Kas attiecas uz python 3, tad vēljoprojām nav portētas daudzas bibliotēkas, daudzi piemēri un bibliotēkas, kuras savukārt balstās uz tām, neiet. Pirms 1-2 gadiem situācija vispār bija dramatiska.

 

Kas attiecas uz python OOP, tad kādas velna arhitektūras pēc izdomāts, ka katras metodes pirmajam parametram jābūt self. Un statisko mainīgo, nestatisko mainīgo veidošana, konstruktori un viss pārējais pythonā ir izveidots diezgan dīvaini. Protams var iemācīties un pierast, bet 10 citās valodās to dara savādāk.

Paņemsim kaut vai šādu piemēru:

>>> class Test(object):
...	 i=3
...
>>> Test.i
3
>>> t = Test()
>>> t.i
3
>>> t.i=5
>>> Test.i
3
>>> t.i
5

It kā mainīgais ir statisks, bet izveidojot instanci, tai ir nestatisks mainīgais ar statiskā vērtību. Kāds sakars statiskajiem mainīgiem ar nestatiskajiem, pie tam pēc tam tie ir dāžādi mainīgie, kur izmainot vienu, mainās otrs.

Protams atkal varam pierast, bet 10 citās valodās to dara savādāk.

Labi pietiks.

Edited by codez
Link to comment
Share on other sites

Gudrāks tu neesi palicis... :D

Da bļin nespried par visiem pēc sevis, okei? Lai arī cik gudrs vai negudrs es nebūtu, Tev vienalga vēl jāaug garā un spēkā lai varētu vispār pīkstēt manā virzienā.

Ļurkajis PHP 3 gadus un vienalga īsti nesaprot no kā sastāv valoda, ar kuru jamam ir 3 (!!!) gadu pieredze! Un problēma protams ir manī un visos citos, ja? Get out.

Es varu pilnīgi saderēt, ka vienā jaukā brīdi Tu šitā pat apgramstītu Pitonu nomainīsi pret kaut ko "krutāku" un turpināsi cept garadarbus par itin similāru tēmu.

 

Jack of all trades, master of none.

Link to comment
Share on other sites

Nu beidziet, jebkurā reliģijā jauniņie cenšas skaļi visiem sludināt sevis atklāto patiesību. Tajā nav nekā neparasta.

Par valodām, kā saka viedie: "Use the right tools for the right job." Toties citi saka, ja tev ir jātaisa projekts un tev ir java programmētāji, tad taisi Javā; utt. Savukārt par gaumi nestrīdas - par to maksā. ;)

daGrevis labāk pēc kāda laika varētu uzrakstīt honorāra izmaiņas, kopš nomainīja programmēšanas valodu.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...