Simpsons Posted April 10, 2013 Report Share Posted April 10, 2013 Nezinu par konkrēto freimvorku, bet statiskiem tipiem ir milzīgas priekšrocības salīdzinot ar dinamiskiem. Padomā, tas nozīmē to, ka tu jau kompilēšanas laikā vari būt drošs, ka ar tipiem viss ir kārtībā. Un dinamiski piešķir tipus ir iespējams arī Javā kaut vai ar polimorfisma palīdzību. Javā tāda iespēja kā "generics" agrāk nebija, to speciāli ieviesa, lai pataisītu datu struktūru tipus vēl statiskākus jeb konkrēts tips bija jānodefinē arī visiem saturošajiem elementiem (to var arī neizmantot, ja grib, tā ir tikai iespēja), kas principā palīdz vēl labāk pārliecināties jau kompilēšanas laikā, vai ar tipiem viss kārtībā un tā ir iespēja, kuru ieviesa Javā vēlāk, jo saprata, ka tas ir vajadzīgs. Par veiktspēju gan neko nevaru spriest, vien to, ka, cik man zināms, veiktspēju ietekmē daudzi mainīgie un programmēšanas valoda ir tikai viens no tiem. Gan jau ir kaut kādi pētījumi, kur ir testēts "Hello world!" programma ar kādu cilpu un pāris standarta darbībām un tas izdarīts dažādās valodās un palaists uz vienas mašīnas nemainīgu konfigurāciju un fiksētiem lokāliem resursiem (lai neietekmē tīkli), lai salīdzinātu - jā tie testi varētu būt kaut cik objektīvi, taču kaut ko stāstīt par programmu, kas uztaisīta python un viss notiek pie daudziem lietotājiem un tāpēc python ir labākais, ir klaja demagoģija. Par "verbose" jeb liekvārdību, te ir jātiek skaidrībā - vai tiek runāts par tādu lietu kā, lai izdarītu kādu darbību, jāizsauc daudz vairāk komandas vienā valodā, nekā otrā? Vai arī mēs izmantojam tipiska sociopāta hakera definējumus ar nosaukumiem "xyz", "yU8", "b2b", "huj", ierakstam 20 atsevišķas darbības vienā rindā, lai kods kļūtu nelasāms, un saucam to par NEliekvārdību? Tas, protams, nekam neder un kā zināms, kompilējamām valodām ir tāda priekšrocība, ka kompilators pats visu saīsinās un optimizēs. Bet citādi attiecībā uz liekvārdību jeb 1 komandas vietā rakstam 5, varu pateikt, ka tas ir atkarīgs no pieejamām bibliotēkām. Jo tas ir atkarīgs no tā, cik daudz gatava koda ir pieejams. Ā, protams, Javā jāvēršas pie objektiem, kuriem jābūt pieejamiem utt. Tas ir jautājums par programmēšanas prasmi un programmas dizainu. Gluži otrādi, tas palīdz izvairīties no spageti koda, kur viss notiek vienā metodē, kā arī palīdz atdalīt lietas, kas jāatdala. Principi "high cohesion" un "loose coupling". Quote Link to comment Share on other sites More sharing options...
codez Posted April 10, 2013 Author Report Share Posted April 10, 2013 (edited) Kad atklāju šo freimworku sapratu, ka laiks pāriet uz JVM, bet pirmās dienas vēl svārstījos un pētīju, ko izmantot labāk, bet ātri vien nonācu pie secinājuma, ka labāk to visu darīt caur Scalu, nevis JAVU. Kurss ar kuru var sākt apgūt Scalu: https://www.coursera.org/course/progfun Par verbosity varu teikt, ka, lai arī tag scalā darbojos kādas nepilnas 2 nedēļas, bet jau ekvivalents kods scalā ir vismaz 2 reizes īsāks kā PHP, neizmantojot neko kriptisku, bet plusi, kurus iegūstu ir: 1)statiski tipi (mazāk kļūdu - visas kļūdas tiek izķertas kompilācijas laikā (patiesībā kompilātors darbojas IDEē, līdz ar to jau IDĒ tās tiek parādītas) 2)ātrums - JVM + PLAY + AKKA ir aplikācijas, kuras uz ekvivalentu jaudu strādā 5-10x ātrāk par PHP ekvivalentām aplikācijām. Un tas attiecas ne tikai uz kopējo noslodzi, bet arī uz aplikāciajs atbildes laikiem. 3)community un tools - Scalā var izmantot arī prakstiski visas JVM bibliotēkas un tā kā JVM ir viena no visizplatītākajām platformām, ja ne pati izplatītākā, tad var atrast ļoti plašas un daudz bibliotēkas par jebkuru tēmu, dažas 3rd party PHP izmantotās bibliotēkas tag aizvietoju ar daudz efektīvākām JAVA bibliotēkām (strādā 10-50 reizes ātrāk) un API ir patīkamāks. 4)funkcionālā programmēšana - brīžiem datu apstrādē uzraksti dažus .map, . filter, .foldLeft, . reduceLeft un ar 1-2 rindiņām aivieto ekvivalentu 20-30 rindiņu php kodu. 5)lazy val un call by name, ļauj pašam veidot dažādus interesantus paternus (lazy loading, streams, utml.), kas konkrētās darbības veic tikai un tikai tad, kad ir nepieciešamas pats gala rezultāts. respeketīvi, vari definēt, kas ir kas un neuztraukties, ka tas tiks lieki rēķināts - tas tiks rēķināts tikai tad, ja patiešām būs vajadzīgs gala rezultātam. Edited April 10, 2013 by codez Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 10, 2013 Report Share Posted April 10, 2013 > "huj" LOL. Sakritība? > Kad atklāju šo freimworku sapratu, ka laiks pāriet uz JVM, bet pirmās dienas vēl svārstījos un pētīju, ko izmantot labāk, bet ātri vien nonācu pie secinājuma, ka labāk to visu darīt caur Scalu, nevis JAVU. _No offence_, bet izklausās pēc TV shop. :D Kopumā, būs jāiemēģina! :) Bet, par dinamiskajiem tipiem, tā ir savādāka pieeja un nav salīdzināma. Nāk prātā... http://assets.diylol.com/hfs/7a4/447/005/resized/dwight-schrute-meme-generator-question-which-bear-is-best-false-black-bear-fact-bears-eat-beets-bears-beets-battlestar-galactica-747c20.jpg Quote Link to comment Share on other sites More sharing options...
F3llony Posted April 10, 2013 Report Share Posted April 10, 2013 (edited) 1. Tev vienkārši ir problēmas ar atmiņu. Nekas. Tā gadās. 2. Benchmarkus studijā?! 3. Tā pat, kā jebkurā citā valodā, kas kompilējas uz JVM. Un? 4. Es nezinu kā pie velna tu spēj minēto .map, .filter, .foldLeft, .reduceLeft uzrakstīt 30 php rindiņās. Poor knowledge maybe? 5. Tiešām?!!! Tiks aprēķināts tad kad izsaukts?! OMG OMG izskatās gandrīz kā metode/klase jebkurā citā programmēšanas valodā! WTF WTF. (PS Skalas leizy load downkompilējas uz metodi...) Un ir jābūt absolūtam morālam tizlenim lai salīdzinātu PHP ar JVM valodām. Tik pat labi salīdzini arī C# ar JavaScript. Edited April 10, 2013 by F3llony Quote Link to comment Share on other sites More sharing options...
rpr Posted April 10, 2013 Report Share Posted April 10, 2013 Pilns internets ar visādiem morāliem tizlņiem, tajā skaitā mani :D Quote Link to comment Share on other sites More sharing options...
Simpsons Posted April 10, 2013 Report Share Posted April 10, 2013 Salīdzināt var visas valodas:http://en.wikipedia.org/wiki/Comparison_of_programming_languages PHP ar Java var salīdzināt, jo abām ir līdzīgi mērķi:Java - "Application, business, client-side, general, server-side, Web" PHP - "Server-side, Web Application, Web" Kā redzams, PHP pielietojums ir šaurāks, bet šī pielietojuma robežās ("web app", "server-side app") jau nav aizliegts šīs valodas salīdzināt. Quote Link to comment Share on other sites More sharing options...
rpr Posted April 10, 2013 Report Share Posted April 10, 2013 man ir aizdomas, ka php tiek izmantots plašāk, ne tikai priekš veba. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 10, 2013 Report Share Posted April 10, 2013 Kur, piemēram? Quote Link to comment Share on other sites More sharing options...
Simpsons Posted April 10, 2013 Report Share Posted April 10, 2013 Kur, piemēram? Nekur! Tur jau tā lieta, ka PHP radīja viens cilvēks, lai vienkāršotu web lapu izveidi un PHP atšifrējums ir "Personal Home Page", kas ir fakts. Quote Link to comment Share on other sites More sharing options...
rpr Posted April 10, 2013 Report Share Posted April 10, 2013 tad kas būs, piemērām, PHPUnit ? Weblapa? Labāk pasakiet, ko es nevaru ar php izdarīt, ko var izdarīt ar citām valodām! es domāju, ka caur "ž" varēs praktiski jebko izdarīt. Quote Link to comment Share on other sites More sharing options...
codez Posted April 10, 2013 Author Report Share Posted April 10, 2013 1. Tev vienkārši ir problēmas ar atmiņu. Nekas. Tā gadās.Kam negadās, svarīgākais, ka tādas problēmas vairs neietekmē koda kvalitāti.2. Benchmarkus studijā?!Lūk PHP benchmarks: http://phpixie.com/blog/php-framework-benchmark/ Vidējais populāro PHP FW atbildes laiks 350 - 700 ms Ar Play un Scalu vidēji atbildes laiks līdzīgam piemēram, līdzīgos apstākļos ir 30-50 ms Pie tam pateicoties Event driven serverim, RAM patēriņš ir salīdzinoši mazāks un netā ir kaudze piemēru, kur Play aplikācijas bez problēmām griežas pat uz 64MB servera. 3. Tā pat, kā jebkurā citā valodā, kas kompilējas uz JVM. Un?PHP nekompilējas. Pietam arī tā kā JVM ir pielāgota statiskiem tipiem, tad visas dinamiskās valodas, kuras kompilējas uz JVM ir aptuveni 5 - 10 reizes lēnākas, piemēram, JRuby ir vidēji 10 reizes lēnāks par Scalu un Javu. 4. Es nezinu kā pie velna tu spēj minēto .map, .filter, .foldLeft, .reduceLeft uzrakstīt 30 php rindiņās. Poor knowledge maybe?Iepriekš PHP izmantoju pašveidotu ORM Modeļu klasi. Kopējais klases garums bija ap 250 rindām. Tagad to pašu funkcionalitāti + vēl to, lai viss strādātu ar statiskiem tipiem, pārrakstot scalā, sanāca 50 rindiņas un tas vēl ņemot vērā to, ka neesmu vēl 100% piešāvies programmēt skalā.5. Tiešām?!!! Tiks aprēķināts tad kad izsaukts?! OMG OMG izskatās gandrīz kā metode/klase jebkurā citā programmēšanas valodā! WTF WTF. (PS Skalas leizy load downkompilējas uz metodi...) Jā, lazy load tiek pārveidots uz aptuveni 15 rindiņu JAVA kodu un līdzīgas funkcionalitātes realizēšana citās valodās būtu arīdzan līdzīgi sarežģīta. Pie tam kombinējot vairākus lazy load tiek panākti interesanti un noderīgi paterni, kurus realizējot citā valodā vajdzētu desmitiem lieku rindiņu. Dažās valodās to varētu abstrahēt, bet, piemēram PHP, abstrahēt lazy loading ir diezgan sarežģīti un galu galā tik un tā būs jārakst vienmēr papildus boiler kods. Kas attiecas uz streamiem un call by name, tas šo šeit izteiksmju paŗveidošana jau notiek scala kompilātorā un kā tas notiek un kādi efekti un labumi no tā rodas vari ļoti labi saprast, ja noskatīsies iepriekš minēto coursera kursu, kuru vada pats Scala izveidotājs Martins Oderskijs. Un ir jābūt absolūtam morālam tizlenim lai salīdzinātu PHP ar JVM valodām. Tik pat labi salīdzini arī C# ar JavaScript.Uzdevums - izveidot skeiloties spējīgu, ātri darbojošos web aplikāciju ar persistentu datu glabāšanu. Iespējami rīki: 1)Apache, PHP, (Simphony, CI, Zend, Kohana, utt.), Mysql, Memcahed 2)Netty, Scala, Akka, Play2!, Mysql, Memcahced Un salīdzinām, kura komplektācija der labāk un rada labāku rezultātu. Salīdzināšanas faktori: Koda kvalitāte, Izstrādes ātrums, Aplikācijas ātrums, piejamie rīki, pieejamās 3 puses bibliotēkas un to kvalitāte, pieejamais izstrādātaju pools. Quote Link to comment Share on other sites More sharing options...
codez Posted April 10, 2013 Author Report Share Posted April 10, 2013 _No offence_, bet izklausās pēc TV shop. :DVienam garlaicīgi, jāpareklamē, lai vairāk domu biedru. ;) Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi. tad kas būs, piemērām, PHPUnit ? Weblapa? Labāk pasakiet, ko es nevaru ar php izdarīt, ko var izdarīt ar citām valodām! es domāju, ka caur "ž" varēs praktiski jebko izdarīt.Telefona aplikācijas. Operācju Sistēmu. Jebkuru aplikāciju, kurai vajadzīgs multithread (šis ir ļoti plašs spektrs). ... Quote Link to comment Share on other sites More sharing options...
F3llony Posted April 10, 2013 Report Share Posted April 10, 2013 Uzdevums - izveidot skeiloties spējīgu, ātri darbojošos web aplikāciju ar persistentu datu glabāšanu. Iespējami rīki: 1)Apache, PHP, (Simphony, CI, Zend, Kohana, utt.), Mysql, Memcahed 2)Netty, Scala, Akka, Play2!, Mysql, Memcahced node + mongo + couchbase Nginx + fpm + mikrofreims + couchbase + mongo/postgre/mysql/11g java + jetty + spring + couchbase + anydb Skeilošanās nav atkarīga no valodas, skeilošana ir arhitektūras darbs. Katram no šiem komplektiem ir savi plusi un mīnusi. PHP ir viegli distributējams, uzturams un izstrādājams, kā arī prasa zemākas izmaksas. Node ir create-run pasākums un developeru uz nodes arī netrūkst. Java ir Enterprise risinājums, kur prasās daudz nopietnāks darbs pie bāzes aplikācijas - integrācijas, komunikācija, etc etc, izstrāde ir dārgaka un speciālistus ir grūtāk atrast, kā arī grūtāk uzturēt pašu aplikāciju. Arī skeilošanas ir dažādas katrai arhitektūrai. Un tavs ielinkotais benchmarks neko nepasaka - uzveido vienu un to pašu aplikāciju abās vidēs ar puslīdz vienādu funkcionalitāti un nobencho uz vienas un tās pašas mašīnas, lai būtu objektīvi. Quote Link to comment Share on other sites More sharing options...
Simpsons Posted April 10, 2013 Report Share Posted April 10, 2013 Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi. Šim gan es varētu piekrist, bet uzskatu, ka tad jau nosaukumam vairs nevajadzētu būt php.lv, bet kaut kādam tur web developer forumam vai jebkam, kas ar to spēcīgi asociējas. Bet bāze varētu palikt šis pats forums, kur visi biedri uzreiz dabūs tos pašus loginus un šī foruma datubāzi varētu pārnest uz jauno, jauno varētu strukturēt labāk, mūsu izstrādātājiem laiks iznākt no tumšajiem hakeru kaktiem un arī iemācīties lietot plašu tehnisko forumu, par ko varētu arī šo pataisīt. Protams, jaunā foruma apakšforumā ar nosaukumu "PHP" jau varētu būt visa šī pati atmosfēra, kas te ir tagad. Tā lūk. Java foruma Latvijā nav, C# forumu ar neesmu redzējis, Python, Ruby arī nē, arī ne specializēto Javascript... Te ir darbalauks šo visu apvienot vienā, jo latviešvalodīgā interneta vide ir pārāk maza, lai taisītu n-tos forumus, kurus arī jāuztur (citādi tie jau ir miruši). Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 10, 2013 Report Share Posted April 10, 2013 > Vispār PHP foruma admini varētu izveidot pa foruma daļai populārākajām citām valodām/platformām, kuras arī tiek izmantotas web izstrādē, savādāk šis forums ir tā labi savācis pietiekami lielu web izstrādātāju skaitu un taisīt jaunu tik mazā valstī kā LV būtu nelietderīgi. Man pieder domēns developers.lv, kur, es, labprāt, uzhostētu projektiņu ar forumu programmētājiem, kuri programmē **ne tikai PHP valodā**, lai šeit nebūtu tik daudz _unrelated stuff like this_. Vienīgais, vajag cilvēkus.... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.