Ne PHP sonra öğrenmek için?

17 Cevap php

PHP ile bir ağır web dev bir arka plan var. Bir fonksiyonel programlama dilleri öğrenmek için benim nedenleri şunlardır:

  1. Benim programlama becerilerini geliştirmek. Bu ağır bir FPL öğrenmeyi yardımcı olduğu öne sürüldü. Ben iyi ve daha iyi olmak istiyorum, çünkü bu yüksek önceliğe sahiptir.
  2. scripting gibi görevleri çözmek için bir genel amaçlı programlama dili öğrenmek (vb OS scripting, metin manipülasyon.)
  3. web geliştirme PHP için bir alternatif olarak kullanılmak üzere.

Ayrıca hangi iyi topluluk desteği, öğreticiler ve kitaplar ve daha iyi bir web uygulaması çerçevesi var?

Diğer dilleri önermek için çekinmeyin.

17 Cevap

Fonksiyonel diller için learn both Scala ve Clojure . You'll learn new ways of thinking from both of them. Go learn some Reia and Erlang de senin bunu yaparken.

Cidden, kemer altında olması daha fazla dil, kapalı daha iyi ne olursa olsun kullanarak sonuna kadar dilin bir programcı olarak olacak.

Rant: "Ne dili ben öğrenmek gerekir?" sorular yorucu alıyorsanız. Cevaplar her zaman aynı olmalıdır, henüz hiç kimse doğru adaçayı tavsiye verir. Bunun yerine, herkesin üçlüsünden yayılır ve onların günlük iş için kullanmak için ne dil öğrenmeniz gereken biri olduğunu göstermektedir. Saçma.

Benim önerim JavaScript öğrenmektir.

I really bunu öğrenmek demek.

Ben benzer motivasyonları dayalı, son zamanlarda Scala ve Clojure hem denedim. İşte ne buldum:

Scala çok yönlü ve güçlü; Scala büyük bir hassasiyetle türlerini tanımlamak ve bunu veciz ve temiz DSL'lere tanımlamanızı sağlar sağlar. Scala bir Java fonksiyonel uzantıları bir grup dahil, vardı dilek serin yapıları bir yeri vardır. Doğru aşağı geldiğinde bütün o güzel şeyler karmaşıklığı bana boğulmuş çünkü Ama, ben Scala dili zorunlu Java kodlama sona erdi.

Ben geri Üniversitesi'nde bazı Lisp yaptım ve her zaman tekrar geri almak için bir hasret vardı. Bazı gerçekten harika üstün şeyler Lisp'te ve çok az hatlarında çok akıllı insanlar tarafından yapılır. Ben bu akıllı insanlardan biri olmak istedim, ya da en azından onlar gibi olmaya çalışın. Ama gerçekten Programı anlayamamışlardır ve Java benim "kütüphaneleri sonsuz kaynağı" kaçırdı. Kendimi Şema bir GUI yazma görmek ve sorun bir Web uygulaması öngören vardı olamazdı.

Sonra Clojure denedim ve her şey yerine tıklandığında gibi görünüyordu. Clojure kasten fazla yabancı dostu yapıldı: Parantez azaltmak ve farklı durumlar için farklı parantez noktalama kullanmak için bir girişim var. Diziler ve hashmaps için destek olduğu gibi dizi fonksiyonları bir dizi güçlü ile birlikte dizileri gibi diziler, metin ve XML gibi şeyler, tedavi, oldukça basit sorunların bir sürü yaptı. Bu fonksiyonel Java gibi (kasıtlı olarak) bulunuyor. Fonksiyonel mindeset alışmak biraz alır, ama hiçbir yerde Clojure de o kadar cana yakın ya da keyifli buldun. Benim kod neredeyse hiç daha döngüler gerekiyor, henüz o / sıralama loop, ve daha özlü nerede hakkında daha fazla açıktır. Gerçekten gerekiyorsa ben kesilebilir devlet yapabilirim, ama ben bu konuda açık olmak zorunda; karşılığında, devlet Clojure en eşzamanlılık mekanizması ile korunmaktadır. Eşzamanlılık, daha sonra, bazen kod benim kendi bilinçli bir çaba ile paralel olarak güvenle yürütür, neredeyse bir no-beyin olur.

Java gelen değil, bu sizin için çok yararlı görünmüyor, ama Clojure Java, tam uyumludur. Sınıf dosyaları da dahil olmak üzere her şeyi yapabilir. En önemlisi, tüm Java kütüphaneleri ile arabirim ve bu tek başına yetenek PHP sizin için bir oyuncak dil gibi görünüyor yapacaktır.

Burada kendi kendine itiraf Clojure savunucusu Scala hakkında söyleyeceklerini bulunuyor. Tabii, kendi kararınızı verin, ama onun bakış açısı yararlı olabilir.

Ayrıca o PHP vs Clojure hakkında söyleyeceklerini ilginizi çekebilir.

Bu çok zor bir karar. Şahsen, ben Scala web geliştiricileri için genel bir dil olarak daha yararlı olduğunu düşünüyorum. Orada birçok web çerçeveler bunun içindir, ya da uyarlanmış. Çok hızlı ve kirli tarafında, örneğin, var Play. On tam teşekküllü mükemmel Comet destek tarafı var, Lift.

Ama bir fonksiyonel bir tarzda program öğrenme hakkında konuştuk. Bu bağlamda, Scala Clojure ile rekabet edebilecek hiçbir yolu yoktur. Scala fonksiyonel bir tarzda kullanılabilir, ancak bunu yapmak zorunda değilsiniz emin kılar. Clojure ile, diğer taraftan, işlevsel bir tarzda dışında hiç bir şey ağrılıdır.

PHP için bir alternatif istiyorsanız Yani, ben Scala bahse girerim. Eğer gerçekten işlevsel programlama, Clojure öğrenmek istiyorsanız.

Son olarak, ben Clojure genel amaçlı bir dil değildir, ya da web geliştirme için kullanılan olamaz sanmıyorum ki bana devlet. Ben sadece Scala her ikisi açısından daha olduğunu düşünüyorum.

, Çimento bir çanta alın sertleşmesine ve Learn You a Haskell, for Great Good!

  1. Bu purely işlevsel, yani gemi düşemez.
  2. Bu (bir web uygulaması yığın dahil) kütüphanelerin yükleri ile genel amaçlı, ve hiçbir VM başlangıç ​​zamanı cezası (Eğer JVM her zaman başlamak zorunda beri JVM dilleri, işletim sistemi komut dosyası ve benzerleri için büyük değildir).

PHP için iyi bir alternatif arıyorsanız, Python ve Ruby öneririz. Eğer web geliştirme için iyi bir destek ile bir Fonksiyonel dil ihtiyacınız varsa - Erlang öğrenirler. Burada Erlang yüksek ölçeklenebilir web uygulamaları oluşturmanıza yardımcı olacak bazı projeler / çerçeveler vardır:

  • Yaws - dinamik içerik web uygulamaları için çok uygundur Bir Erlang web sunucusu. (Ayrıca this Apache vs Yaws benchmark bakınız)
  • Erlyweb - Erlang yazılı ve Yaws ile çalışmak üzere tasarlanmış bir bileşen tabanlı web geliştirme çerçevesidir.
  • Erlang Web - Erlang Web geliştiriciye içerik yönetimi daha iyi kontrol vererek, HTTP protokolleri dayalı uygulamalar için açık kaynak kodlu bir çerçevedir.
  • Nitrogen - Erlang için bir olay-odaklı web framework.

Ayrıca özellikle hataya dayanıklı, dağıtık yazılım oluşturmak için tasarlanmış birkaç dillerinden biridir.

Bu Clojure ve Scala daha az basında alırken, ben gerçekten Fantom bakmak tavsiye ederim: http://fantom.org/

Bu her iki dünyanın en iyi ve gerçekten daha fazla dikkat hak olmalıdır gibi.

Scala veya Clojure form PHP atlayarak büyük bir kültür şoku olacak. . Scala veya Clojure olsun önce fonksiyonel programlama dilleri düşünce üzerine belli bir doğruluğu ve soyutluğunda zorlamak oysa, :) - PHP çok (kirli son% 10 ile temiz / kirli hızlı alma yapılan şeylere (veya% 90 üzerinde odaklanmıştır 'inbetween şey istiyorum gidiyoruz. benim olsaydı, ben ederim

  1. (Anladığım kadarıyla) Eğer Scala gibi saf bir şey daha hemen daha kullanışlı hale Clojure ile tüm Java standart kütüphane olsun bu yana, Clojure olarak benim nihai hedef almak

  2. Ben sadece bir kesinlikle yazılı OO dil için bir fikir almak için, Java şey inşa biraz zaman harcamak istiyorum. Eğer Clojure varmak kez yararlı olacağına çünkü ben C # (hatta ZendFramework tarzı PHP) üzerinden Java aldı. Google Web Araçları bu başlangıç ​​için iyi bir yer olabilir. Bu web geliştirme naziksiniz, ama çok çok Java gibi ve tüm HTML / PHP gibi.

  3. JQuery cesareti bakarak biraz zaman geçirin, ve kendi jQuery modülünü geliştirmek veya bir çekirdek özellik eklemek ya. Eğer aşina bir sorun bunu uygularken Bu, size düşünme işlevsel şekilde kullanılır alacak.

Tavsiye Final bit: seçtiğiniz dil / platform ortak yöntemlerini benimsemesi için deneyin. Ya dile PHP kodlama tarzınızı getirmek için çalışmayın. İlk bakışta kolay gibi görünüyor ve sonuç çeşit elde sağlayacak olsa da, sorunlar hakkında farklı ve daha geniş düşünmek, hangi egzersiz noktasını özleyeceğim.

İyi şanslar!

Ruby muhtemelen de komut dosyası için iyi en "fonksiyonel" ana dilidir. Python bir yakın ikinci, ama örtük bir fonksiyon / bloktaki son ifadenin sonucunu dönen Ruby'nin alışkanlık benim için tiebreaker olduğunu.

Her ikisi de mükemmel web çerçevelerin (sırasıyla Raylar ve Django) var, ve her ikisi de kesinlikle programlama PHP sonra ufkunuzu genişletecek. Aynı zamanda onlar artırımlı öğrenme için fırsat çok sağlayacaktır.

İkisi de S-ifadeleri kullanın ve her iki zorunlu programlama İZİN emir style cold Türkiye'yi vermeye zorlamak için bir şey olmayacaktır.

Sonunda çok yakındı-TCL bir scripting ve uzatma dil olarak temelde Scheme. Ben bu günlerde nerede emin değilim, ama ArsDigita Topluluk Sistemi TCL yazılmış.

I Clojure için yeni bir dönüştürmek değilim. Benim fikrimi genişletmek yapıyor ama eğlenceli ve üretken olmak için yeterli cana bulunuyor. Ben mutlu bir müşteri değilim.

But

PHP ve Clojure farklı evrenlerde yaşıyor. Ben Clojure kucaklayan önce diğer Lisps içine FP dillerde bazı tanıtım dabbling ve birkaç yanlış başlar yaşadım. PHP düz gelen az deneyimli geliştirici için, Clojure bir kültür şoku çok fazla olabilir.

Ikisi arasında makul bir uzlaşma, ve yerine bir dalma daha degrade üzerinde FP yaklaşım izin Scripty yeterli bir dil olarak, ben Ruby öneririz. Yakut, modern, temiz ve zarif. Onun JRuby cisimleşmiş hali olarak, hatta hızlı. Ruby öğrenme ve Rails ile oynarken keyifli ve öğretici.

Though Scala is my favorite language for now, i think it's not the best choice to learn FP. It's mainly OOPL with good support of FP. I would suggest to start from Haskell to quickly dive into FP. You will learn how the following concepts of FP work (which are not just supported, but enforced and ubiquitous in Haskell): 1) powerful static type system with type inference 2) lazy evaluation 3) side-effect free computing

Sonra dinamik yazdığınız "pragmatik" PHP ve saf fonksiyonel "akademik" Haskell programlama dilleri oldukça tam bir resim olacak manzara.

Web geliştirme TAMAMEN bağlıdır: web-çerçeve Öncelikle, kalite ve gelişme için ikinci araçları. Programlama, web uygulamaları için fonksiyonel dillerde taşımak istiyorum neden bilmiyorum.

Python programlama için bazı fonksiyonel yapıları verir ve çerçeveler ve araçlara sahiptir. Lua fonksiyonel programlama aynı düzeyde sağlar ve ancak sadeliği / ilkel-doğanın kendi şıklığı, web geliştirme veya araçları için yüksek kaliteli çerçeveler ya yoktur.

D: Şimdi püriten olarak ben Haskell'e göz derdim, ama bu karşı-üretken. Sen benim arkadaşım Python arıyoruz. Ben Ruby değerlendirilir değil, ancak bazı fonksiyonel yapıları olabilir.

Çok süslü görünür, ama ben şiddetle JavaScript önermek olmayabilir.

Yıllardır bir sürü önce PHP gelişimi de güçlüydü, ama sonra Java üzerinden açık, C #, C, Objective-C. Benim Java süre zarfında ben JavaScript derinliklerine attı ve onunla bazı oldukça serin şeyler yaptım. Biliyorum Birisi tüm istemci tarafı geçici hafif DBMS geliştirdi. Sadece onlar JavaScript ile ne Ext.js bakabilirsiniz. O kadar hafife, ama bunu hak etmiyor. Sana "Douglas Crockford Video" için google öneririz. Douglas Crockford gelen ve "JavaScript - Definitive Guide" - Yahoo başta o JavaScript hakkında birkaç mükemmel sunumlar yarattı, ayrıca ben size kitabı "İyi Parça JavaScript" almanızı öneririm. Hem mevcut en iyi JavaScript kitaplar. Ve aslında ne mümkün ve ne güzel bir dil şaşıracaksınız. Aslında, daha çok "soğuk" bir şey aslında yok, bu Lambda var, onunla AI yapabilirsiniz! Sadece clientside kodlama için kullanılan ne bir pitty. Birkaç kişi JavaScript yanı serverside programlama için kullanılabilir biliyorum, ama bu iyi belgelenmiş değil / çok nadir görülür.

Ve Adobe Air için teşekkürler Masaüstüne için JavaScript getirebilir.

Bu PHP bilginiz için optimal bir katkı olacaktır. Bu ilgili şeyler yapmak için her zaman iyidir. Sen iyi Web Developer, ya da iyi Masaüstü Yazılımı Architekt olabilir. Ama beynimizi birden fazla yönde olmak Guru günümüzde ihtiyaç duyulan tüm mesleği, kavramak için çok yavaştır. Guru beeing başarısı için gerekli olduğunu, sanırım. Bazı arkadaşlarım sadece bir şey yapmak: Guru Beeing. Onlar tüm yaşam küçük bir konuyu incelemek ve son derece başarılı. Onlar herhangi bir I-can-do-it-all-ama-know-sadece-% 5-in-bu-konu-Geliştirici sadece bir zaman çeyreğinde de 5 kat daha fazla kazanın.

Bu yüzden de öneririm: 600 sayfa PHP kitabı tamamen farklı bir şey yaparken before size PHP bilginizi unutmak yazın.

I did PHP ve JavaScript hakkında bildiği hemen her şeyi unutur, ama o günlerde ben kesinlikle başkalarına bir sürü gösterdi uzman adamlardan biriydi. Şimdi benim küçük beyin bunları hatırlamak için tekrar çok temel sormak zorunda bir ağrı. Bu kitap çünkü kitap yazarak, sizin beyin, beyin, uydurma, hatta farklı bir şey yapmanın birkaç yıl sonra çok hızlı PHP uzmanlık hatırlamak gerekir. Ve hatta başka bir şey yapıyor birkaç yıl sonra PHP-uzman statüsünü kaybederler değil edeceğiz.

İyi şanslar.

Ben Scala denedim ve bunu biraz fazla (nasıl kullanılacağını hatırlamak zorunda operatörler büyük miktarda) bulundu. Ama bu sadece benim olabilir. Ben Clojure daha fonksiyonel saf ve Lisp yakın olduğunu duydum, ama kontrol değil.

F# fonksiyonel dillerde Microsoft'un almaktır, bunu kontrol etmek isteyebilirsiniz. Ben sektöründe çeşitli projeler için kullanılır olmuştur duydum.

Benim 0,02 $ Perl kontrol etmektir. Perl CPAN (http://cpan.org) ve çok çok çok yararlı çevrimiçi kaynaklara sahip olduğu bir moruk gibi gelebilir ama akılda tutmak olabilir.

Böyle (vb ASP.NET + C #) Java EE (Java EE [JSP / JSF] + Java) veya. NET gibi web ön ucu ötesinde çerçeveler var dil öğrenme öneririm . Bu size kariyer seçenekleri ile biraz daha fazla gecikmeyi verecek ve (göreceli) kolaylığı ile bir web ön uç sunucu bileşenleri bağlamak mümkün olacaktır.