Perl ya da bu proje için PHP veya başka bir şey kullanmak gerekir?

13 Cevap php

Ben gereken bir proje üzerinde atılmak üzereyim:

  • Süreç XML
  • Non-xml belgeleri Ağır metin ayrıştırma
  • Bir ilişkisel DB içine xml ve non-xml belgeleri veri ekleme.
  • Web sayfalarını kullanarak db kullanıcıya işlenmiş veri sunmak.
  • Çok iyi yükü işlemek gerekir.

Web sayfalarında (300 + ziyaretçiler birkaç dakika için bir dakika) çok ağır yüklerin kısa süreler tabi olacaktır, ama çoğu zaman (bir düzine ya da öylesine ziyaretçi bir dakika) boşta olacaktır.

Java ve web hizmetleri çok güçlü bir altyapıya sahip, ama benim beceri seti çeşitlendirmek istiyorum ben bu proje için Java kullanmak istemiyorum.

Ben iyi olduğunu düşünüyorum hangi dili üzerinde görüş için aramıyorum. Kendi deneyimlerinden tanıyabilir, bu dilleri kullanarak bazı artıları ve eksileri nelerdir?

13 Cevap

Ben bir PHP adam olduğum için, burada PHP hakkında sunabilir ne

Yani sorunun bir dil gereksinimleri PHP tarafından karşılanmaktadır.

Ancak, Perl, Python ve Ruby hatta serverside JavaScript (...) tüm ya için ne soruyorsun yapma yeteneğine sahip olmalıdır. PHP tuhaflıklar, bu yüzden diğer dilleri vardır yapmak. Bir Java Guy iseniz, bu sözdizimi için Ruby gibi olabilir, ama sonra tekrar, sadece siz karar verebilirsiniz.

Perl ile gitmek istiyorum. Modüllerin LibXML serisi, hızlı C çözümleyici tarafından desteklenen arabirimleri (vb DOM, XPath, XSLT) çeşitli verir.

Metin dilimleme ve dicing için Perl regex desteği hemen hemen eşsiz başka bir dil olduğunu. Eğer keyfi metin işleme sürü yapmak için bekliyoruz ve regex ile en azından biraz aşina iseniz, kendinizi teşekkür edecek.

Basit ama güçlü Mojolicious çerçevesinde ve kapsamlı Catalyst çerçeve dahil Perl için büyük web çerçeveler, bir dizi de vardır. Orada eski ve istikrarlı CGI kütüphane her zaman, ama Mojolicious veya Catalyst muhtemelen daha iyi bir seçenek olacaktır.

Bu nedenle, listedeki her bir öğe her iki dili kullanılarak yapılabilir. Eğer dikkate kendi güçlü ve zayıf yönlerini alarak en üretken hale getireceğine inanıyoruz birini seçmelisiniz.

Bu, gerçekten, çok öznel bir sorudur. Ben tamamen 2010 yılında, Perl veya PHP (ve hatta Python ya da Ruby) aynı şekilde böyle bir proje için size hizmet edebileceğini tasavvur edebilir. Fark araçları kadar dilin kendisi, en iyi uygulamalar ve toplumdan gelen gitmiyor.

Bu diller arasında ben Perl en aşina değilim, bu yüzden bana ihtiyaçları ile ilgili, bu bakış açısıyla bir cevap sunmaya çalışalım.

Text and XML parsing: Perl (sürece size don't slurp), hatta çok uzun dosyaları metin ayrıştırma için çok sağlam desteği vardır ve sağlar, güçlü, net ve kolay regex programming. Bu açık yerleşik Unicode support ve standart trans-kodlama araçları kullanıcı arayüzleri geldiğinde very kullanışlı (Encode modülü). Aynı zamanda, bir standart şeklinde libxml2 için bir doğrudan bağlanma vardır, hızlı ve modül bakımlı: XML::LibXML.

DBMSes bir dizi doğrudan SQL sorguları sağlar Relational DB Support: standart veritabanı arayüzüne ek olarak (DBI), hangi DB-to-Webdoc yönetim ise kolaylaştırmak için çerçeveler vardır hala güçlü. En ünlü muhtemelen olmak Catalyst.

HTML Document presentation: Mason benim favori web uygulama dağıtım motorudur. Perl ile entegrasyon so, zarif, henüz çiftleşmiş desen veya dil özelliklerini feda etmez.

Heavy load handling: çözmek için yük sorunları var gibi birçok çözümü vardır. Perl için bağlamaları sunuyor memcached: Cache::Memcached (Perl ile yazılmış) ve Cache::Memcached::Fast (C yazılı).

Sözdizimi ve genel dil felsefesi açısından kişisel tercihleri ​​ile bu dengelemek, ve çok çok yakında Enlightened Perl topluluğuna katılmak olabilir :)

Bu işin toplu sunumu daha fazla veri işleme olacak göründüğü gibi, benim görüşüme göre bu Perl en iyi yaptığı şeydir. Perl düzenli ifadeler ile çok iyi performans yapar ve CPAN modüllerin geniş bir dizi size olağan biçimlerini ayrıştırma yardımcı olabilir. Verilerin sunumunda hayatı kolaylaştıracak Perl iyi bir kaç çerçeveler vardır. Yeni başlayanlar için büyük bir dezavantaj, (XML ayrıştırma, web çerçeve, ORM vb), hangisi kullanmak gibi kararlar için zor olabilir karşılaşabileceğiniz çeşitli sorunların her biri için CPAN dağıtımları onlarca ile. Plack / PSGI sayesinde, son zamanlarda Perl ile webserverlarda konuşurken, çok daha iyi aldı.

Eğer bu artan yükü nasıl işleyeceğini iyi belirleyecek sistem mühendisi nasıl, bu "yük" tamamen dil agnostik bir sorun olduğunu önemlidir, bu yüzden seçtiğiniz hangi dili değildir. Perl, Java, PHP bütün yol net en ağır ticareti web sitelerinin bazı kadar küçük kurulumları kullanılmaktadır. Büyüme gelecekteki ihtiyaçları üzerinde ise, uygun olduğu ve gelecekteki genişleme için tasarım ilk decouple. Birden fazla veritabanı sunucuları, önbelleğe alma, mesaj / iş kuyruklar küçük ölçekte kullanılan ve işler küçük olduğunda koyarak daha fazla kaynak talep gerektiğinde onları yeniden yazmak veya hızlı bir şekilde kesmek zorunda daha kolay olabilir.

Sizin mimarlık ve algoritmalar dil seçimine göre hız ve ölçeklenebilirlik üzerinde daha fazla etkiye sahip olacaktır.

Perl, PHP veya Java tüm iş yapacak.

Ben de bunu biliyor ve (ben de iyi biliyorum) PHP tercih beri Perl bu yapardım. Sizin kilometre değişebilir.

Bildiğim kadarıyla ben farkında değilim gibi, PHP'nin regex PCRE library Perl geldi (Ben tahmin ediyorum ki kullanacağınız budur). Olmayan XML ayrıştırma çok şey var ise, o zaman hem de test ve daha hızlı çalışır hangisini görmek gerekir. Ben bir sen neededs için hangisinin daha hızlı olduğunu emin değilim.

Her ikisi de sap XML iyi (nihayet).

Ancak, PHP sadece büyük bir topluluktur. Büyük olarak gezegende başka betik dili vardır. Eğer altında-güneş onunla ilgili her şeyi bulabilirsiniz beri böylece sizin için önemli değilse o zaman PHP kullanabilirsiniz.

Ancak, Perl de büyük bir taraftar var ve ben öğreticiler bol yapmak istediğiniz her şeyi için vardır eminim.

Python da içine bakmak isteyebilirsiniz bir dildir. Herkes Ruby dünyaya Tanrı'nın hediyesi olduğunu fark beri Heck, çok patladı! Onlardan her birinin sözdizimi bakmak ve iyi gibi hangisini anlamaya gerek böylece honstly herhangi bir dilde istediğinizi yapabilirsiniz. Oradan size neededs için hızlı hangi dilde görmek için her biri basit bir örnek kriter çalıştırabilirsiniz.

Ne yaparsan yap - don't use a "framework" like wordpress or drupal. Onlar CMS değil çerçeveler vardır ve çok yavaş ve şişirilmiş. Wordpress sadece indeks sayfasını yüklemek için 8MB alır!

Biz bir PHP projesi vardı ve Java Guy bize katıldı ve yukarı ve o everthing asmak var bir kez veya iki hafta içinde koşuyordu.

Tüm belirtilen dilleri amaç için kullanılabilir olmalıdır. Ama bildiğim kadarıyla PHP (örn. çoklu bayt oluşur UTF8 karakteri için doğru dize uzunluğunu alma) UTF8 dizeleri ile ilgili biraz zor olabilir. Ama bazı adamlar yakında :-) yorum yoluyla PHP için iyi bir çözüm sağlayacaktır eminim

Benim kişisel favori Ruby. (Böylece taşlar denir) tüm ihtiyaçlarınızı gerçekten kolay ve güçlü API'ler sağlar gibi.

Common Lisp kullanmak istiyorsunuz.

  • Closure XML ayrıştırma XML
  • cl-ppcre, bir Perl uyumlu düzenli ifade kütüphanesi, ancak ayrıştırmak istediğiniz metin ne tür bağlı olarak, belki Common Lisp Directory de uzman ayrıştırıcılarını bulabilirsiniz.
  • Ben kullanmak istiyorum ne veritabanı biliyorum, ama Postmodern Postgres için çok güzel değil. Daha genel CLSQL bulunmaktadır.
  • Sen CL-WHO HTML sayfaları üretmek için, örneğin, bir web sunucusu olarak Hunchentoot kullanabilirsiniz. Saniyede 5 sayfa sorun olmamalıdır.

Eğer ne ve hedef kendinizi daha pazarlanabilir hale getirmektir deneyimi varsa, Perl kullanın.

Eğer 'mesleki deneyim' bölümünde hem girişleri savunmak için gerekirse sahte PHP deneyimi çok daha kolay.

Zaten önbelleğe destekleyen bir çerçeve düşünebilirsiniz sizin ihtiyaçlarınıza bağlı olarak, Drupal bir örnek ama diğerleri vardır. Çoğu çerçeveler genişletilebilir böylece tüm ayrıştırma ve sunum işlemek için eklentileri ekleyebilirsiniz.

Ben dili seçtiğiniz çerçevenin daha az önemli olduğunu düşünüyorum. Ben gerçek dünyada daha uygun olduğunu düşünüyorum çünkü ben şahsen, Perl üzerinde PHP seçiyor. Python başka güzel bir betik dili, ama php web dünyasında en çekiş vardır. Eğer amaç beceri daha pazarlanabilir ayarlamak yapmak için ise, PHP ile gitmek.

Why don't you try Ruby on Rails?

Sorunuza geri dönersek ben PHP söyleyebilirim. Eğer yeni bir şey öğrenmek için ve aynı zamanda size destek bulabileceğiniz büyük bir topluluk olmalıdır gerekir çünkü.

PHP Talep ettiğiniz tüm ne yapar.

Tamam, böylece herkes ben de benimkini ekleyeceğiz onların cevapları öznel olmuştur edilir.

Java kullanın, çekirdek hızlı Perl daha ihtiyacınız olan tüm (hiçbir çerçeveler gerekli), onun özgür, OS ve onun 2 veya 3 kez destekler - PHP.

Seriously... PHP is designed for Web projects, its easy, and support all you need to do (try Zend framework), it has a decent learning curve (Java is harder to learn), there is a huge community of developers out there to help you if you run into something unexpected (bigger than Pearl's and Java's). On performance, its a little slower than pearl (im talking about plain'old PHP scripts, no wierd-vodoo optimizations) but its enough for what you probably need.

Sonunda ben PHP kullanıyorsanız eğer daha küçük tutarlı app almak olacaktır eminim (ve tüm kodlama takip ve iyi uygulamaların tasarım ise) hiç Perl kullanarak alacak daha.

(Java şekilde daha iyi ... ama ben sözlü bazı PHP fanatik tarafından linç olmak istemiyorum)