Web geliştirme için yeni bir programlama dili mi arıyorsunuz? [kapalı]


14

Programlama dillerinin ve amaçlanan hedeflerinin iyi, spesifik olarak gözden geçirilmesini sağlayan daha az önyargılı kaynaklar olup olmadığını merak ediyorum . Yeni bir dil öğrenmek istiyorum, ancak her dilin sitelerini ziyaret etmek işe yaramıyor. Her biri, zayıflıklarından veya belirli hedeflerinden fazla bahsetmeden ne kadar büyük olduğundan bahsediyor .

Ruby, basitlik ve üretkenliğe odaklanan dinamik, açık kaynaklı bir programlama dilidir.

Python, daha hızlı çalışmanızı ve sistemlerinizi daha etkili bir şekilde entegre etmenizi sağlayan bir programlama dilidir.

Yıllardır PHP geliştiricisi olan Vic Cherubini , durumumu iyi özetliyor:

PHP'yi iyi tanıyordum, kendi çerçevem ​​vardı ve hızlı bir şekilde çalışmaya başlayabilir.

MVC devrimi boyunca böyle programladım. Ben bir PHP geliştiricisi olarak daha iyi ve daha iyi işler (okuma: daha iyi ödeme, daha iyi başlık) var, ama tüm yol boyunca kendi zamanımda yazdığım kod harikaydı ve iş yerinde çalıştığım kod korkunçtu. Korkunçtan daha kötü gibi. İğrenç. OS Ticaret seviyesi kötü. Yan projelere sahip olmak beni aklı başında tuttu, çünkü işte çalıştığım kod beni mutsuz etti.

Bu yüzden yan projelerim ve yeni programlama girişimlerim için PHP'den emekli oluyorum. PHP ile harcadım. Yorgun, eğer istersen. Bir dil olarak en üstte olduğumu düşündüğüm bir seviyeye ulaştım ve yakında yeni bir dile geçmezsem, tamamen programlama ile bitireceğim ve bunu istemiyorum.

Baktığım diller arasında JavaScript (node.js için), Ruby, Python ve Erlang bulunmaktadır. Hatta Scala veya C ++ düşündüm.

Sorun, ihtiyaçlarımı en iyi şekilde karşılamak için hangilerinin üretildiğini bulmak.

Peki nerede bir yutturmaca atlamak ve bir platformun olgunluğu, toplumun büyüklüğü ve o dilin güçlü ve zayıf yönleri hakkında gerçek bilgi almak için gidebilirim. Bunları biliyorsam, web geliştirmeye devam etmek için bir dil seçmek kolay olmalı.

Güncelleme

Ben sadece bir dil ile yolda 4 ay almak ve berbat bulmak istemiyorum çünkü her iş parçacığı 4MB yükü vardır veya maksimum eşzamanlı bağlantıları 999, "X" özelliği yapmak için bir paket yok, ya da destek yeni bir dil dalı için aşamalı olarak kaldırılıyor.


14
Bu ihtiyaçları belirtmezseniz hangilerinin ihtiyaçlarınızı en iyi şekilde karşılayacağını söylemek zor.
vartec

3
Bu yüzden ihtiyaçlarımı tanımlamamıştım - Kişisel ihtiyaçlarım bunun yanında . İhtiyaçlarımı belirli bir programlama diliyle nerede eşleştirebileceğimi bilmek istiyorum. Çünkü ihtiyaçlarım değişebilir ve tekrar geri dönmem gerekecek.
Xeoncross

Bir programın yürütme hızından daha fazlası olduğunu da belirtmek gerekir . Gelişme hızı ve yolu size (dili nedeniyle) Uygulamanızı oluşturmak önemli bir rol oynamak zorunda.
Xeoncross

4
bu, diller hakkında daha az ve onlar için mevcut olan çerçevelerin olgunluğu ve özellik zenginliği hakkında daha fazladır.

1
Alex Martelli'nin bu mükemmel yazısına bir göz atmanı öneririm .
phant0m

Yanıtlar:


3

Bunu cevap olarak göndermeyecektim, ama Xeoncross benden istedi, işte başlıyoruz:

(Sidenote: Birisi küçük kod örneğindeki işaretleme sorununu çözebilirse, bunu takdir ediyorum.)

Gönderen: Alex Martelli comp.lang.python üzerinde : Ruby hakkında Python'dan daha iyi olan nedir? üzerinde 18 Ağu 2003, 17:50

Erik Max Francis şunu yazdı:

"Brandon J. Van Every" yazdı:

Ruby hakkında Python'dan daha iyi ne olabilir? Eminim bir şey vardır. Bu ne? Python insanlarından ziyade Ruby insanlarına bunu sormak daha anlamlı olmaz mıydı?

Birinin amaçlarına bağlı olarak olabilir veya olmayabilir - örneğin, amaçlarının Python topluluğunun "sosyolojik bir araştırmasını" içermesi durumunda, o topluluğa soru sormanın, başka bir yere koymaktan daha fazla bilgi vermeyi kanıtlaması muhtemeldir. :-). Şahsen, Dave Thomas'ın son OSCON'daki bir günlük Ruby eğitimini takip etme fırsatını memnuniyetle aldım. Sözdizimi farklılıklarının ince bir kaplamasının altında, Ruby ve Python'u inanılmaz derecede benzer buluyorum - hemen hemen herhangi bir dil kümesi arasında minimum yayılma ağacını hesaplasaydım, Python ve Ruby'nin birleşecek ilk iki yaprak olacağından eminim bir ara düğüm :-).

Tabii ki Ruby, her blok sonunda aptal "uç" yazarak (yerine sadece unindenting) arasında, yorgun olsun - ama ben de daha-aptal yazarak önlemek için alabilirim : Python de gerektiren bir başlangıç arasında her blok, bu yüzden neredeyse bir yıkama :-). @fooKarşı self.fooveya Ruby vs Python'daki davanın daha yüksek önemi gibi diğer sözdizimi farklılıkları gerçekten de benim için önemli değil.

Diğerleri şüphesiz programlama dillerini seçtikleri bu tür meselelere dayandırıyorlar ve en sıcak tartışmaları üretiyorlar - ama bana göre bu Parkinson Yasası'nın sadece bir örneğidir (bir konu hakkındaki tartışma miktarı konuyla ters orantılıdır) gerçek önem). Önemli bulduğum bir sözdizimi farkı ve Python'un lehine - ama diğer insanlar şüphesiz tam tersini düşünecek - "parametre almayan bir işlevi nasıl çağırıyorsunuz". Python'da (C'deki gibi), bir işlevi çağırmak için her zaman "çağrı operatörü" nü uygularsınız - aradığınız nesnenin hemen sonundaki parantezleri (bu sondaki parantezlerin içinde çağrıda ilettiğiniz argümanlar gider - eğer hiçbir argüman geçirmiyorsanız, parantezler boştur). Bu, özel durumlar, istisnalar, geçici kurallar ve benzerleri olmaksızın, herhangi bir işlevin dahil edilmediği, herhangi bir işlevin dahil edilmediği, sadece nesneye yapılan bir başvuru olarak - herhangi bir bağlamda, özel durumlar, istisnalar, geçici kurallar ve benzerleri olmaksızın, sadece bir nesneden bahseder. Ruby'de (Pascal'da olduğu gibi), argümanlarla bir işlevi çağırmak için argümanları iletirsiniz (normalde parantez içinde, her zaman böyle değildir) - AMA işlev hiçbir argüman almazsa, işlevden dolaylı olarak bahsettikten sonra onu çağırır. Bu, birçok insanın beklentilerini karşılayabilir (en azından şüphesiz, daha önce programlama deneyimi Pascal ile olan veya Visual Basic gibi benzer "örtük çağrı" olan diğer diller) - ama bana göre sadece bir nesneden bahsetmek EITHER, nesneye bir referans, VEYA nesneye bir çağrı, nesnenin türüne bağlı olarak - ve sadece söz ederek nesneye bir referans alamıyorum bu durumlarda açıkça "bana bir referans verin, onu DONMAYIN!" aksi halde gerekli olmayan operatörler. Bunun işlevlerin (veya yöntemlerin veya diğer çağrılabilir nesnelerin) "birinci sınıfını" ve nesnelerin sorunsuz bir şekilde değiştirilmesi olasılığını etkilediğini hissediyorum. Bu nedenle, benim için, bu özel sözdizimi farkı Ruby'ye karşı ciddi bir kara leke - ama onlarla daha sert bir şekilde katılmıyorum olsa bile, başkalarının neden başka bir şey olacağını anlıyorum :-). Sözdiziminin altında, temel anlambilimde bazı önemli farklılıklara giriyoruz - örneğin, Ruby'deki dizeler değiştirilebilir nesnelerdir (C ++ gibi), Python ise onlar değişebilir değildir (Java gibi, ya da C # inanıyorum). Yine, öncelikle aşina olduklarına göre karar verenler, bunun Ruby için bir artı olduğunu düşünebilirler (elbette Java veya C # 'a aşina olmadıkları sürece :-). Ben, değişmez dizeleri mükemmel bir fikir olduğunu düşünüyorum (ve Java, bağımsız olarak bence, zaten Python olan bu fikri yeniden icat şaşırttı), ama ben de bir "değişebilir dize tampon" türü de sakıncası olmaz (ve ideal olarak Java'nın kendi "dize arabelleklerinden" daha iyi kullanım kolaylığı olan); ve bu yargıyı aşinalık nedeniyle vermiyorum - Java üzerinde çalışmadan önce, burada fonksiyonel programlama dilleri dışında Öncelikle aşina olduklarına göre karar veren insanlar bunun Ruby için bir artı olduğunu düşünebilirler (elbette Java veya C # 'a aşina olmadıkları sürece :-). Ben, değişmez dizeleri mükemmel bir fikir olduğunu düşünüyorum (ve Java, bağımsız olarak bence, zaten Python olan bu fikri yeniden icat şaşırttı), ama ben de bir "değişebilir dize tampon" türü de sakıncası olmaz (ve ideal olarak Java'nın kendi "dize arabelleklerinden" daha iyi kullanım kolaylığı olan); ve bu yargıyı aşinalık nedeniyle vermiyorum - Java üzerinde çalışmadan önce, burada fonksiyonel programlama dilleri dışında Öncelikle aşina olduklarına göre karar veren insanlar bunun Ruby için bir artı olduğunu düşünebilirler (elbette Java veya C # 'a aşina olmadıkları sürece :-). Ben, değişmez dizeleri mükemmel bir fikir olduğunu düşünüyorum (ve Java, bağımsız olarak bence, zaten Python olan bu fikri yeniden icat şaşırttı), ama ben de bir "değişebilir dize tampon" türü de sakıncası olmaz (ve ideal olarak Java'nın kendi "dize arabelleklerinden" daha iyi kullanım kolaylığı olan); ve bu yargıyı aşinalık nedeniyle vermiyorum - Java üzerinde çalışmadan önce, burada fonksiyonel programlama dilleri dışında Ben değişmez dizeleri mükemmel bir fikir olduğunu düşünüyorum (ve ben bağımsız olarak, bence Java, zaten Python olan bu fikri yeniden icat şaşırttı), ama ben de bir "değişebilir dize tampon" türü de (ve ideal olarak, Java'nın kendi "dizgi tamponlarından" daha iyi kullanım kolaylığı olan); ve bu yargıyı aşinalık nedeniyle vermiyorum - Java üzerinde çalışmadan önce, burada fonksiyonel programlama dilleri dışında Ben değişmez dizeleri mükemmel bir fikir olduğunu düşünüyorum (ve ben bağımsız olarak, bence Java, zaten Python olan bu fikri yeniden icat şaşırttı), ama ben de bir "değişebilir dize tampon" türü de (ve ideal olarak, Java'nın kendi "dizgi tamponlarından" daha iyi kullanım kolaylığı olan); ve bu yargıyı aşinalık nedeniyle vermiyorum - Java üzerinde çalışmadan önce, burada fonksiyonel programlama dilleri dışındatüm veriler değişmez, bildiğim tüm dillerin değişebilir dizeleri vardı - yine de Java'da değişmez dize fikrini ilk gördüğümde (Python'u öğrenmeden önce iyi öğrendim), hemen bana mükemmel geldi, çok iyi uyuyordu daha üst düzey bir programlama dilinin referans semantiği (makineye daha yakın ve C gibi uygulamalardan daha uzak dillerle en iyi uyan değer semantiklerinin aksine) birinci sınıf, yerleşik (ve güzel önemli) veri türü.

Ruby'nin temel anlambilimde bazı avantajları vardır - örneğin, Python'un "listeler ile tuples" un kaldırılması son derece ince bir ayrımdır. Ama çoğunlukla puan (ben tutmak gibi, basitlik ile büyük bir artı ve ince, akıllı ayrımlar dikkate değer bir eksi) Ruby karşıdır (örneğin, hem kapalı hem de yarı açık aralıklarla, a..b ve a gösterimleri ile .. .b [kimse hangisinin hangisinin açık olduğunu iddia etmek ister ? -)] aptalca - IMHO, tabii ki!). Yine, bir dilin özünde bir MINUS yerine bir PLUS, benzer ama kurnazca farklı şeylere sahip olmayı düşünen insanlar, elbette bunları "saymaktan" nasıl sayarım :-).

Bu karşılaştırmalarla iki dilin çokfarklı, dikkat et. Onlar değil. Ama "capelli d'angelo" yu "spaghettini" ile karşılaştırmam istenirse, bu iki çeşit makarnanın hemen hemen herkes tarafından ayırt edilemez olduğunu ve hazırlamak isteyebileceğiniz herhangi bir yemeğin yerine geçebileceğini belirledikten sonra, kaçınılmaz olarak uzunlukların ve çapların fark edilemez bir şekilde nasıl farklılaştığı, ipliklerin uçlarının bir durumda ve diğerinde değil, nasıl sivrildiklerinin mikroskobik incelemesine geçmek için - kişisel olarak neden capelli d'yi tercih ettiğimi açıklamak için herhangi bir et suyunda makarna olarak angelo, ama makarna gibi makarnalar gibi uzun ince makarna formları (zeytinyağı, kıyılmış sarımsak, kıyılmış kırmızı biber ve ince öğütülmüş hamsi için uygun soslar ile gitmek istiyorum, örneğin - ancak sarımsak ve biberleri kıymak yerine dilimlediyseniz, spagettininin daha ince bir şekilde evrimleşmesi yerine spagetti'nin daha sağlam gövdesini seçmelisiniz ve bunun yerine yeni bir yay fesleğen eklemeniz iyi olur. hatta sapkınım! - hafif nane ...] yaprakları - yemeğe hizmet etmeden önceki son anda). Üzgünüz, yurtdışına seyahat ettiğimi ve bir süredir makarna yemediğimi gösteriyor. Ama benzetme hala oldukça iyi! -) ve iyi bir görüşme önlenmesi ve yerine bazı taze bahar fesleğen eklemek için tavsiye edilir [veya hatta - ben bir sapkın ...! - hafif nane ...] yaprakları - yemeğe hizmet etmeden önceki son anda). Üzgünüz, yurtdışına seyahat ettiğimi ve bir süredir makarna yemediğimi gösteriyor. Ama benzetme hala oldukça iyi! -) ve iyi bir görüşme önlenmesi ve yerine bazı taze bahar fesleğen eklemek için tavsiye edilir [veya hatta - ben bir sapkın ...! - hafif nane ...] yaprakları - yemeğe hizmet etmeden önceki son anda). Üzgünüz, yurtdışına seyahat ettiğimi ve bir süredir makarna yemediğimi gösteriyor. Ama benzetme hala oldukça iyi! -)

Python ve Ruby'ye geri döndüğümüzde iki büyük boyuta (dilde uygun olarak - kütüphaneleri ve araçlar ve ortamlar, her dilin nasıl gömüleceği / genişletilebileceği, vb. şimdilik - her dilin tüm UYGULAMALARI için geçerli olmazlar, örneğin, Jython vs Klasik Python, Python dilinin iki uygulamasıdır!):

  1. Ruby'nin yineleyicileri ve kod blokları ile Python'un yineleyicileri ve jeneratörleri;

  2. Ruby'nin TOTAL, dizginsiz "dinamikliği", tüm yerleşik sınıflar dahil olmak üzere mevcut herhangi bir sınıfı "yeniden açma" ve çalışma zamanında davranışını değiştirme - Python'un varolan davranışını asla değiştirmeyen geniş ama     sınırlı dinamikliği yerleşik sınıflar ve örnekleri.

Şahsen, 1'i bir yıkama olarak görüyorum (farklılıklar o kadar derin ki, insanların ya yaklaşımdan nefret etmesini ve diğerini geri döndürmesini kolayca görebiliyordum, ancak BENİM kişisel ölçeklerimde artıları ve eksileri neredeyse eşit olarak görebiliyorum); ve [2] çok önemli bir konu - Ruby'yi "tinkering" için çok daha uygun hale getiren bir sorun, AMA Python büyük üretim uygulamalarında kullanım için eşit derecede daha uygun. Bir bakıma komik, çünkü her iki dil de diğerlerinden çok daha dinamik, sonuçta POV'umdan aralarındaki anahtar fark buna bağlı olmalı - Ruby bu konuda "onbirine gidiyor" (referans Burada tabii ki "Spinal Tap" için). Ruby'de,Bunu yapabilirim ! Yani, yerleşik dize sınıfını dinamik olarak değiştirebilirim, böylece

a = "Merhaba Dünya" 
b = "merhaba dünya" 
== b ise 
    "eşittir! \ n" yazdır 
Başka 
    "farklı! \ n" yazdır 
son
 

"Eşit" yazdırır. Python'da bunu yapmanın bir yolu yok. Metaprogramlama, deneysel çerçevelerin uygulanması ve benzeri amaçlar için, Ruby'nin bu şaşırtıcı dinamik yeteneği son derece çekici. AMA - geniş çaplı uygulamalardan bahsediyorsak, birçok insan tarafından geliştirilmiş ve farklı kaynaklardan her türlü kütüphane de dahil olmak üzere daha da fazlası tarafından korunuyor ve müşteri sitelerinde üretime girmeye ihtiyaç duyuyorsak ... çok dinamik bir dil, çok teşekkür ederim. Bazı kütüphanelerin farkında olmadan, bu dizelere farklı olan diğer ilgisiz olanları kırma fikrinden nefret ediyorum - bu, LOOK'un ayrı olması ve ayrı olması gereken kod parçaları arasında derin ve derinden gizlenmiş bir "kanal" türü büyük ölçekli programlama. Herhangi bir modülün diğer "davranışlarını" davranışını etkilemesine izin vererek,

Ruby'yi bu kadar büyük bir uygulama için kullanmak zorunda kalsaydım, kodlama stili kısıtlamalarına, birçok teste (HERHANGİ bir değişiklik olduğunda yeniden çalıştırılmak için - tamamen ilgisiz olması gerekse ...) ve benzerlerine güvenmeye çalışırdım, bu dil özelliğinin kullanılmasını yasaklamak için. Ancak ilk etapta bu özelliğe sahip OLMAMAK daha iyi, bence - Python'un belirli bir sayıda yerleşik "çivilenmiş" olabilmesi durumunda uygulama programlaması için daha iyi bir dil olması gibi, bu yüzden örneğin, len("ciao")4'tür (daha doğrusu birileri adının bağlayıcı değişti olmadığı konusunda endişe subliminally zorunda kalmak yerine leniçinde __builtins__ ... modül). Umarım sonunda Python yerleşiklerini "çivi" yapar.

Ancak sorun önemsizdir, çünkü yerleşik isimleri yeniden hatırlamak Python'da oldukça yaygın değildir ve nadir bir uygulamadır. Ruby'de, bana büyük gibi geliyor - tıpkı diğer dillerin (örneğin Dylan gibi) çok güçlü makro tesislerinin kendi düşüncemde benzer riskler sunması gibi (Python'un asla bu kadar güçlü bir makro sistemi almamasını umuyorum, hayır "insanların dilin içine yerleştirilmiş kendi alan adına özgü küçük dillerini tanımlamasına izin verme" cazibesi - IMHO, Python'un uygulama programlaması için harika yararlılığını bozacak ve her programcının kalbinde gizlenir ...).

Alex


Bunu bir cevap olarak verdim, çünkü Ruby ve Python'un bir bütün olarak büyük, nispeten önyargısız bir görünümü. Dillerin nasıl çalıştığını ve çalışmadığını açıklama .
Xeoncross

27

İyi şanslar

Verilen örnek açıklamaların hiçbiri nesnel veya test edilemez. Hepsi aldatmaca ve fikir.

... basitlik ve verimlilik ... daha hızlı ... daha etkili.

Dene

Yapacağınız türden küçük bir örnek proje alın ve ilginizi çeken tüm dillerde deneyin. Sonra objektif incelemenizi gönderin ve hepimiz bilelim.


2
Kötü bir fikir değil, ancak gerçek dünyada işe yaramaz. Her dili tam olarak anlamak için zaman harcamadan - her sistemin sağlayabileceği tam tasarım deseni problemini ve faydalarını asla öngöremedim. Eminim, dilin üst düzeyde anlaşılmasını sağlamak her dilde aylarca çalışmayı gerektirir. Lastik uzmanlarından her bir tekerleği neden bu şekilde inşa ettiklerini anlamak için aylarca motor ayırmaktan ziyade duymak isterim. Yine de, bazı iyi adaylarımın ardından bunu kesinlikle yapacağım.
Xeoncross

1
@ Xeoncross: Denediğiniz her dilde deneyiminizi artıracak ve diğer dillerde de kullanabileceksiniz. Bir dile girmek için 4 ay asla kaybolmaz; ve eğer dil gerçekten boksa, öğrenmek için iki haftadan daha az zamana ihtiyacınız var.
tdammers

Bu doğru, bir şeyler oluşturmak sadece birkaç hafta sürecek ve diller genellikle diğer dilleri takip ettiğinden deneyimlerden faydalanacağım.
Xeoncross

3
Evet, iyi bir uyum bulmak için muhtemelen tüm bu dilleri denemelisiniz. Ancak sorun şu ki, yeni bir dil kullandığınızda, başlangıçta olması gerektiği gibi kullanmıyorsunuz. Sonunda sadece farklı sözdizimi ile nasıl kullanılacağını bildiğiniz dille yaptığınız aynı lanet şeyi yaparsınız. Her dilin daha ince noktalarını ve faydalarının gerçekte ne olduğunu anlamak biraz zaman alır.
radix07

3
Olsaydı çok şaşırırım herhangi anlamlı bir fark genel amaçlı çağdaş diller arasında. Orada, yüksek sesle söyledim. Ve italik olarak . Alevler başlasın!
Steven A. Lowe

8

Sorunun bir parçası, bir veya daha fazla dil hakkında anlamlı bir şekilde yorum yapmak için yeterli bilen herkesin bir önyargıya sahip olacağını düşünüyorum. Neredeyse 40 yıllık programlamada, sayabileceğimden daha fazla dilde çalıştım. Size bu dillerden birkaçı hakkında (bazıları tarihli) görüş verebilirim, ancak bu görüşlerin hiçbiri tarafsız olmayacaktır.

İş için doğru dili kullanma yaklaşımını kullanıyorum. Özellikle web geliştirme hakkında soruyorsunuz , ancak bu hala oldukça geniş bir kategori - fotoğrafla ilgilendiğinizi söylemek gibi. Mikro? Astro? PHP'nin çalışmak için duygusal olarak tatmin edici bir dil olmadığını kabul etsem de, birçok müşteri için herhangi bir sayıda faktöre dayanan doğru dildir, en azından ayrıldıktan sonra siteyi düzeltmek için programcıları bulmak için uzun vadeli bir yetenek değildir. ve / veya bir otobüse çarptı.

Bu yüzden, belki de kendilerini farklı bir şeye borç veren projelere ilgi duyan müşteri türlerine bakmalı ve daha sonra kendilerini ilginç hale getirmeye çalışmalısınız.


PHP'de çok iyiyim - hala iyi bir yaşam sürdüğüm için üzerinde çalışmaya devam edeceğim. Çoğunlukla kendi projelerim için yeni bir dil düşünüyordum . Hayatıma biraz lezzet katmaya yardımcı olacak bir şey. Aklınıza gelebilecek web geliştirme, NLP, Metin ayrıştırma, CMS, API'ler, depolama vb. Konularında çalışıyorum. Ayrıca, birçok dilde deneyimi olan birisinin tek bir tasarım süreci olan insanlardan çok daha az önyargısı var.
Xeoncross

Ah. Sonra "en iyi dil" tipi sorulara standart cevabımı vereceğim: Python. "Yapılması mümkün olan" önemli boşlukları göz ardı ederek, benim için mükemmel bir dile yakın. Buna ek olarak, Python API'leri ile inanılmaz sayıda çok kaliteli kütüphane var. Örn; NLTK, Doğal Dil Araç Seti ( nltk.org ).
Peter Rowell

Ah, ama Python ile daha iyi yapan nedir? Çoğu dil aynı araç setlerini paylaşır - iş parçacığı, eşzamanlılık, VM gereksinimleri, derleme / yorumlama, kalıcılık vb.
Şeyleri

Python programlamak sadece eğlencelidir. Bana bunu "daha iyi" yapan şey budur. Sadece kodlamak için büyük bir IDE'ye ihtiyacınız olmayacak kadar basit. Ama aynı zamanda nesneler, fonksiyonel programlama yetenekleri, birçok mevcut kütüphane / çerçeve / araç ve çok sayıda açık / ücretsiz belge içeren başarılı ve hevesli bir topluluk gibi birçok ilginç özelliğe sahiptir.
John Gaines Jr.

2
Doğru. En basit açıklama, Python'un beynim gibi çalıştığı ve bu beni daha üretken kıldığı; Kendimi, "Şimdi bunu Python'da nasıl yaparım?" GIL (Global Tercüman Kilidi) biraz sorun olmakla birlikte, beni çok etkilememektedir çünkü çok işlemli durumlarla (özellikle çok aşamalı NL işleme boru hatları) çoklu görevden daha sık uğraşıyorum . Ayrıca yeni harici kütüphanelere erişmek için çeşitli arayüz seçeneklerini seviyorum: ctypes, Boost, vb.
Peter Rowell

7

piton

Bunların en evrensel ve genel amacı, aynı zamanda web programlama durumunda daha geniş ürün seçenekleri sunar. Standart WSGI arabirimine sahip olmak, çerçeve ve sunucular arasında mükemmel birlikte çalışabilirliği garanti eder. Dikkate değer Python web ürünlerinden bazıları:

  • Django - gelişmiş ORM, şablonlama sistemi, form işleme, vb. İle tam teşekküllü, olgun yüksek düzeyli çerçeve.
  • Twisted - olay güdümlü (asenkron) ağ programlama çerçevesi, sohbetler, soket sunucuları, web hizmetleri için kullanılabilir, adını siz koyun.
  • Tornado - ayrıca olay odaklı çerçeve, ancak bu asenkron web hizmetleri için tasarlanmıştır.

Yakut

Ruby de oldukça evrensel bir dildir. Ama açık ara en dikkat çekici ürün Ruby on Rails. Tasarımı birçok kişi için ilham kaynağı olmuştur (yukarıda belirtilen Django dahil).

JavaScript

Şu anda JS için tek sunucu tarafı seçeneği node.js'dir. Tornado ve Twisted'a çok benziyor (ilham aldığı). Bununla birlikte, hala üzerine inşa edilmiş Django veya RoR'ye benzer tam teşekküllü bir çerçeveden yoksundur.

Scala

İşlevsel dil olarak, genel amaçlı web programlama söz konusu olduğunda, örneğin FourSquare tarafından kullanılan RoR'dan esinlenen Lift - web çerçevesi olduğu için büyük ölçüde paralel bilgi işlem için harikadır.


Bir web uygulamasını güçlendirecek yeni bir dil için engellemeyen yanıtlar, bellek kullanımı, eşzamanlılık ve diğer faktörler gibi şeylerin pazarda çok büyük olduğunu belirtmek gerekir.
Xeoncross

Django için +1. Bunu öğrendiğimde aklımı aldı ... ya da şaşkın bir stupordaydım çünkü aynı anda ve Python'u öğrendim. Her iki durumda da, onu her zaman zor olan "boş zamanım" a yeniden bakmak istiyorum.
zourtney

1
"... hala tam teşekküllü bir çerçeveden yoksun" Düğüm için Express'e göz atın - expressjs.com
T. Stone

@T: evet, Express'e baktım. Django ve RoR'nin güçlü noktalarından biri ORM'dir. Ekspres görünmüyor.
vartec

3

En son web projemde PHP ile başladım çünkü daha önce web projesi için kullandım (hızlı başlangıç), ancak dille ilgili birçok sorun yaşadım, örneğin kötü UTF-8 desteği ve dinamik yazım. Ayrıca bazı Java geçmişim var ve gerçekten statik yazım ve iyi yeniden düzenleme araçlarının tadını çıkarıyorum. Java ayrıca PHP ile karşılaştırıldığında iyi bir performansa sahiptir. Ama aynı zamanda fonksiyonel programlamanın dışavurumunu da seviyorum.

Scala ve Play Çerçevesi

Yukarıdaki deneyim ile, Scala programlama dilinden gerçekten zevk alıyorum, statik olarak yazılmış, hem nesne yönelimli hem de fonksiyonel programlama için destek var ve web geliştirme için kullanılan diğer dillere kıyasla iyi bir performansa sahip. Ancak Java ve sunucu uygulamaları için web çerçevelerini beğenmedim ve hem Scala hem de Java için desteği olan ve çok hızlı bir geliştirme döngüsüne sahip Play Framework'ü buldum - dosyayı kaydedin ve web sayfanızı güncelleyin. Geçen ay Scala & Play Framework'ten çok memnun kaldım. Ancak Play Framework'teki Scala desteği henüz çok olgun değil ve hiçbir takım desteği de yok.

Kısacası Scala'yı programlama dili olarak ve Play Framework'ü web çerçevesi olarak öneriyorum.


Oyun harika görünüyor, ama gerçekten ( gerçekten ) test sürüşü yapma şansı olmadı . Benzer bir php arka plan geliyor, ben Lift kavramak oldukça kolay bulundu . Ayrıca Play'den biraz daha olgun gibi görünüyor, ancak Scala için kesin olmak için çok yeniyim.
yannis

3

Aslında, muhtemelen üç tür kaynağa bakıyorsunuz:

  • Dilin temellerini ve onu neden kullanmak istediğinizi açıklayan,
  • Birkaç dili karşılaştıran dil.
  • Bir dilin bazı yönlerini eleştiren.

Bu kaynakların her ikisi de taraflı olacaktır.

  • Bir dil hakkında bir şeyler açıkladığınızda çoğu zaman okuyucuyu dili kullanmaya ikna etmeye çalışıyorsunuz. Yani nadiren dilin berbat olduğunu söylerdiniz.
  • Birden fazla dili karşılaştırdığınızda, bunlardan biri için daima kişisel bir tercihiniz olur.
  • Bir şeyi eleştirdiğinizde, tarafsız olmak neredeyse imkansızdır.

Nötr bir karşılaştırma yapma şansınız olabilir, ancak bir tane yazmak çok zor. Şahsen, PHP'yi her zaman eleştirmeden gerçek bir dil ve PHP arasında bir karşılaştırma yapamazdım. Ve eminim ki yeterince tarafsız olamadığım için yalnız değilim.


Farklı diller hakkında genel bir bilgi edinmek istiyorsanız, bunları kendiniz öğrenmek ve çok okumak zorundasınız . Öğrenerek, dilin temellerini bilmek, ancak kendi fikrinize sahip olabilmek demek istiyorum . Çünkü bu dilde neyin iyi neyin kötü olduğunu açıklayabildiğinizden bir Ruby kılavuzu okuduğunuz için değil.

Bu, pratik yapmak için zaman (aylar hatta yıllar) harcamanız gerektiği anlamına gelir. Veya çok şey okuyabilirsiniz. Ama çelişkili şeyler okumaya çalışın . Bazıları PHP'den nefret ettiğini yazıyor ve PHP, Ruby, C # veya Java gibi gerçek dillerle karşılaştırıldığında şimdiye kadarki en kötü dillerden biri ise, PHP'nin harika olduğunu ve kullanımı daha kolay olduğunu söyleyen birini bulmaya çalışın C #, Java'dan çok daha hızlı ve çok ... (Gerçekten ne olduğunu bilmiyorum) Ruby'den.

Bir şeyi hatırlayın: Bir dili zaten iyi biliyorsanız, başlangıçta başka bir dil öğrenirken çok eleştireceksiniz, zaten bildiğiniz dilin daha iyi ve daha kolay kullanıldığına inanıyorsunuz. Windows'tan nefret eden Linux kullanıcıları ve Linux'tan nefret eden Windows kullanıcıları gibi: aslında, hiçbiri daha iyi değil; sadece bir Linux kullanıcısının Windows'u nasıl kullanacağını bilmemesi ya da tam tersi. Sadece ikisinde de yeterli deneyimi edindikten sonra hangisinin sizin için daha iyi olduğuna karar verebileceksiniz.


Sıklıkla unutulan son şey: bir dilin "çevresini" değerlendirebilmek de çok önemlidir:

  • Çerçeve (veya en çok kullanılan çerçeveler) ne kadar iyi?
  • Bir barındırma hizmeti bulmak kolay mı? IDE'yi takdir ediyor musunuz?
  • Çok sayıda iyi yazılmış üçüncü taraf kütüphanesi var mı?
  • Topluluk, son derece profesyonel geliştiricilerden mi, yoksa genel olarak ne programlama hakkında ne de dilin kendisi hakkında hiçbir şey bilmeyen yeni başlayanlardan mı oluşuyor?
  • Belgeler ayrıntılı, aranması ve anlaşılması yeterli ve kolay mı?
  • Dil ve çerçeveler sık ​​sık güncelleniyor mu?
  • vb.

Tamamen katılıyorum. Cevap aradığım bu sorular. Çok okumaktan bahsediyorsunuz - ve yapmaya çalıştığım şey de - bakmak istediğim diller hakkında okumak için çok fazla kaynağa ihtiyacım var. Önyargısız bir inceleme yapmak mümkün olmasa da, bazıları çok daha dengeli ve istediğim bu.
Xeoncross

2

Ölçütlerinizden biri "çalışmak eğlenceli" gibi göründüğü için, önyargılı bilgi bulmak isteyeceğinizi düşünüyorum. Bir şeyin yazarı seçim dili konusunda tutkulu ise, önyargılı bir değerlendirme yapma şansı oldukça yüksektir.

Belki de diğer yönden yaklaşmalısınız. Bir hobi yerine kariyer yapmaktan bahsettiğinizden söz ettiğiniz için, belki de bazı iş ilanlarını araştırmalı, bazı ilginç teknolojiler / diller bulmalı ve bunlara bakmalısınız.

Belirli hedeflere sahip diller için, birçok dilde bu diller yoktur. Listelediğiniz dillerin çoğu genel amaçlıdır. Örneğin, Ruby dili birçok görev için uygun olan oldukça genel amaçlı bir dildir. Rails gibi , ona bir çerçeve ekledikten sonra , bunun oldukça spesifik bir hedefi vardır.


1

Bu tam olarak sorduğunuz şey değil, ama beni bir web geliştirme profesyonelinden çıkarmak için bir şey arıyordum, yine de bu deneyimi ve kişileri kullanırken, Android ve iPhone uygulamaları yazmaya başlardım. Bir müşterinin web sitesini tamamlayan bir uygulama satabilmek, mobil cihazlarla giderek erişilen bir internet için gelişmenizi gerçekten ön plana çıkarabilir.


Bu gerçekten kötü bir fikir değil. Ayrıca tasarımlarım üzerinde çalışan illustrator ve Photoshop'ta daha fazla zaman geçirmeyi düşünüyordum. Yine de, orada web uygulama seçenekleri hakkında daha fazla bilgi edinmek istiyorum.
Xeoncross

0

Gerçekten PHP sınırına mı, yoksa bildiğiniz gibi sadece PHP sınırlarına mı ulaştınız ?

Drupal'a baktın mı ? İyi kodlama standartlarını ve uygulamalarını güçlü bir şekilde teşvik eden PHP tabanlı bir CMS ve programlama çerçevesi. (Önceki işlerde OSCommerce ile çalışmak zorunda kaldım, orada acınızı hissediyorum.) PHP tabanlı olmasına rağmen, saf PHP'de bir şey yapmanın "doğru" yolunun Drupal'da yapmanın doğru yolu olmadığı kadar farklı, ve gerçekten ustalaşmak için tırmanmak için iyi bir öğrenme eğrisine sahip olacaksınız. Bununla birlikte, bir dil olarak PHP'nin yetenekleri ve bir bütün olarak web geliştirme konusundaki bakış açılarınızı değiştirebilir.


Drupal (4 & 5) baktı son kez oldukça kötüydü. Belki de yeni sürümleri artık uygun standartları kullanıyor. Yine de, yavaş olduğu kadar orada müthiş çerçevelere bağlı kalmayı tercih ederim.
Xeoncross
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.