Python ve Ruby yeni nesil olan özellikleriyle dikkatleri üzerine çeken iki ayrı programlama dilidir. Ortaya çıkma tarihleri birbirine oldukça yakın olan bu programlama dilleri sıkça karşılaştırılmaktadır. Yazımızda bu dillerin farklılıklarını ele alarak bu karşılaştırmayı teknoloji.org gözüyle okumanıza vesile olacağız. O halde başlayalım.
İlk başta bu iki programlama dilinden kısa da olsa bahsetmemiz gerek. Eğer detaylı okumak isterseniz, şanslısınız ki iki programlama dilinin detayları sitemizde mevcut. Sizler için linkleri aşağıya bırakıyorum.
“Ben tek tek okumak istemem, bahset biraz burada” derseniz, sizler için ne olduklarına bir kısa bakış atalım.
İçindekiler
Ruby Nedir?
1995 yılında Yukihiro Matsumoto tarafından yaratılan Ruby dili için Matsumoto C, Perl, Java ve C++ gibi dillerden esinlenmiştir.
Ruby açık kaynak, dinamik ve de nesne yönelimli bir programlama dilidir.
Ruby’nin geliştiricisi Matsumoto dili makineler için değil insanlar için geliştirdiğini vurgulayarak, dili kullanan herkesin eğlenmesini amaçlamıştır.
Yorumlanabilir, genel amaçla kullanılabilen Ruby, aynı zamanda sunucu odaklı bir script dilidir. Bu konuda Python ve Perl’e benzediğini dile getirebiliriz.
Python Nedir?
1991 yılında Guido Vvan Rossum tarafından yaratılan Python dili için, Rossum C/C++, Java, Lisp, Perl ve ICON gibi dillerden esinlenmiştir.
Python, nesne yönelimli, yorumlanabilir ve dinamik bir programlama dilidir.
Birden fazla işletim sistemi üzerinde çalışma özgürlüğü veren Python dili aynı zamanda açık kaynaktır.
Neden Web Teknolojilerinde İkisinin Adını Sıkça Görüyoruz?
Web geliştirmede karşımıza sıkça çıkan bir kavram var: Framework. Bir çatı diye çevirebileceğimiz bu kavram ile geliştiriciye paketler, kütüphaneler ve bir ortam sunulmaktadır. Bu sayede daha hızlı ve de kolay bir ortamda geliştirme yapılabilmektedir.
Ruby ve Python programlama dillerinde de iki ayrı framework görmekteyiz.
Bunlar: Ruby on Rails ve Django.
Ruby on Rails MVC (Model – View – Controller) yapısına sahip bir framework’tür. Kısaca bahsetmek gerekirse bir proje içerisinde ön yüz (view) , veri ( model) ve bu iki kavram arasında geçişleri (controller) birbirinden ayırmaktadır. Bu sayede bu kavramlardan birinde yapılan bir değişiklik diğerini etkilemeyecektir.
Örnek vermek gerekirse bir website dizayn ettiğimizi düşünelim. Ön yüz dediğimiz kullanıcıyla etkileşime geçen kısım zaman içerisinde değişiklik gösterebilir. Eğer biz MVC yapısına sahip bir framework kullanmıyorsak, yaptığımız değişiklikleri arka planda da değiştirmemiz gerekecek. Bu ise iş yükü olarak bize geri dönecek. Bu konuda MVC gibi yapılar geliştiriciye fazlasıyla yardımcı olmaktadır.
Django MVC yapısında fakat minik bir farklılığa sahiptir. MVT (Model – View – Template) yapısını görmekteyiz Django dilinde. Bu yapı çalışma mantığı olarak MVC’ye fazlasıyla benzemektedir. Ruby’de Controller dediğimiz kavram View ve Model arasında bir köprü görevini görürken, Template yönlendirmeyi üstlenmiştir. Bir köprü olmadığından View ve Model birbirleriyle haberleşmektedirler.
Ruby on Rails Twitter, Airbnb, Github ve Shopify gibi şirketler tarafından tercih edilmektedir.
Django Instagram, Spotify, Youtube ve BitBucket gibi şirketler tarafından tercih edilmektedir.
Ruby on Rails Avantajları
- Ruby Python’a göre daha esnek bir dildir.
- Yeni projeler daha hızlı hayata geçirilebilir.
- Daha az kod ile fikirler hayata geçirilebilir.
- Geliştirilen sitenin yayınlanması daha kolaydır.
Ruby on Rails Dezavantajları
- Esnek bir dil olduğundan bahsetmiştik. Bu bir dezavantaja da dönebiliyor. Birçok şekilde yazılabilen kodu anlamak konusunda ekip çalışmalarında zorluk çekilebilir. Yeni bir geliştirici aralarına katıldığında projenin hızına yetişmesi zor olabilir.
- Ruby’nin içinde yer alan bazı kütüphaneler yeni geliştiricilerin kavraması konusunda zor bir yapıya sahiptir.
- Ruby web geliştirme dışındaki alanlarda etkin bir dil değildir. Veri Analizi gibi konularda geliştiricilere alternatif sunmamaktadır.
Django Avantajları
- Python çok yönlü bir dildir.
- Kodun nasıl çalıştığı kavranabilir, az kodla çok iş gerçekleştirme gibi bir düşüncesi yoktur.
- Python web geliştirmenin yanında veri analizi, veri bilimi gibi konularda da kütüphaneler sunduğundan karma web teknolojileri gerçekleştirilebilir. (veri analizi içeren bir websitesi gibi)
- Proje geçişleri, yeni birinin projeye katılması kolay gerçekleşmektedir. Nedeni ise bir kodu yazmanın tek bir yolu olmasıdır.
Django Dezavantajları
- Monolitik bir yapıya sahiptir.
- Aynı anda birden fazla işlem gerçekleştirme yeteneğinden yoksundur.
- Küçük projeler için çok fazla sorun yaratabilir.
Python ve Ruby : Farklılıkları Neler?
- Python akademik, veri bilimi, bilimsel programlama gibi alanlarda kullanılabilmekte iken Ruby we geliştirme ve fonksiyonel programlama alanlarında kullanılmaktadır.
- Python tamamıyla nesne yönelimli bir programlama dili değildir. Ruby ise tamamıyla nesne yönelimli bir dildir.
- Python metodlara sahiptir. Ruby fonksiyonlara sahiptir.
RUBY | PYTHON | |
DİL | Gerçekleştirmenin birden fazla yolu var. (magic) Tamamıyla nesne yönelimli bir dil. 1995 yılında Yukihiro Matsumoto tarafından yaratıldı. | Gerçekleştirmenin tek bir yolu var. (direct) Kütüphane imkanı fazlasıyla geniş. 1991 yılında Guido Van Rossum tarafından yaratıldı. |
AVANTAJ | Web geliştiriciler için sunduğu imkanlar üst düzey. Etkileyici, verimli ve güçlü bir kod. | Öğrenmesi kolay. Hızlı, verimli ve okunabilir kod. |
DEZAVANTAJ | Debug yapması zor. Web alan dışındaki alanlarda yeterli değil. | Dinamik olduğundan hata göstermesi run-time gerçekleşir. (run-time; programın çalışması, çalışırken hataları göstermesidir.) |
WEB FRAMEWORK | RUBY on RAILS | DJANGO |
KOD ÖRNEĞİ | def fib(n) n < 2 ? n : fib(n-1) + fib(n-2) end alias :fibonacci :fib | def fib(n): if n < 2: return n else: return fib(n-1) + fib(n-2) |
TERCİH EDEN ŞİRKETLER | Hulu, Basecamp, GitHub, ve Airbnb | YouTube, Instagram, Spotify, Reddit, Dropbox |
Popülerlik Yarışında Kim Önde?
İki dil sıkça karşılaştırılmaya tutulsa da birinin diğerinden daha iyi olduğunu söylemek imkansız. Farklı alanlarda iki dil de kendisinden söz ettirmektedir. Ruby için web geliştirme ön planda iken, Python için bilimsel ve akademik programlamanın daha ön planda olduğunu söyleyebiliriz. Çıkış noktaları ve birbirlerine benzerlikleri ile bu iki programlama dilleri kendilerine özel bir yol çizmişlerdir.
Ruby odaklandığı geliştiricilere istediklerini yapabilme özgürlüğü tanımaktadır. Ruby ile birden fazla şekilde aynı sonucu alabilecek kod yazılabilmektedir. Python ise öğrenmesi kolay ve tek bir yol üzerinden gerçekleştirilebilen bir yol haritası edinmiştir.
Popülerlik sıralamasında, farklı kulvarlarda birincilik yarışında olan bu programlama dilleri için gelecekte bizi neler bekleyeceğini birlikte göreceğiz.
Siz bu iki dilden hangisini kullanmaktasınız? İkisini kullandıysanız size göre farklılıkları neler? Yorumlarda düşüncelerinizi bizimle paylaşmayı unutmayın!