Forum: Diğer Konular RSS
Yazılım Geliştirmede Programlama Dili Nasıl Belirlenir?
İbrahim #1
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Yazılım Geliştirmede Programlama Dili Nasıl Belirlenir?
Selamün Aleyküm Arkadaşlar;

Bildiğimiz üzere github gibi siteler mevcut. Buradan facebook, google vb. ürün kodlarına bakıyorum. Mesela facebook, birçok ürün geliştiriyor. Mesela facebook hhvm, rocksdb yazılımlarını C++'da, presto adlı yazılımı Java'da, flow'u ise OCaml dilinde geliştiriyor. Benim merak ettiğim şey ise böyle yazılım geliştirmede dili nasıl kararlaştırıyorlar? Yani ihtiyaçlarını, hangi dilin daha iyi sonuç vereceğini nasıl hesaplıyorlar?

Teşekkürler!
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Başka herhangi araç seçiminden farkı yok aslında. Nasıl vida için tornavida'nın daha uygun olduğunu biliyorsak dil seçiminde de benzer biçimde karar veriyoruz. Buradaki sorun, tornavidayı (neredeyse) herkes biliyor ama çok fazla programlama dili var.

O zaman insanların her zaman yaptığı gibi genellemelere gidiliyor veya başkalarının yaptıklarına bakılıyor: "Hız için şu dil olmalı", "falanca firma filanca dili kullanmış" gibi...

Facebook her dile açık olan bir firma. Her yeni projede kullanılan dil tamamen o projeyi gerçekleştirecek olan kişiye (veya gruba) bağlı. Doğal olarak, kendileri o dile hakim olduklarından çözüme o dille gidebileceklerini de biliyorlar.

Ali
İbrahim #3
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Cevap için teşekkürler.
Aslında mantıken dil seçimini tahmin edebiliyorum. Fakat merak ettiğim mesela Flow adlı yazılımın amacı javascript'te statik tipleri denetlemekmiş (bkz. http://flowtype.org/). Fakat bu dil OCaml denen bir dilde yazılmış. Fakat bu iş için bence Python, Ruby, Java hatta Javascript'in kendisini kullanmak çok daha matıklı sonuç verir. Çünkü bu diller daha çok kişi tarafından biliniyor ve kullanılıyor. Geliştiren topluluk aralarında acaba nasıl karar veriyorlar? Çünkü örnek olarak flow için biri OCaml der, biri Java der, biri Python der vb.
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İbrahim:
bu iş için bence Python, Ruby, Java hatta Javascript'in kendisini kullanmak çok daha matıklı sonuç verir. Çünkü bu diller daha çok kişi tarafından biliniyor ve kullanılıyor.

İşte dil aynen öyle seçiliyor. :) Başka birisi de OCaml'ın neden daha iyi olduğunu söylüyor; tartışıyorlar ve birisinde karar veriyorlar.

Geliştiren topluluk aralarında acaba nasıl karar veriyorlar? Çünkü örnek olarak flow için biri OCaml der, biri Java der, biri Python der vb.

Bana herhangi başka bir karardan daha farklı gelmiyor: Çeşitli seçenekler var; her birisinin iyi ve kötü tarafları var. Konuya sahip olan kişiler tartıp karar veriyorlar.

Ali
İbrahim #5
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Cevap verdiğiniz için teşekkür ederim Ali Hocam.

Umarım kızmazsınız, ben bir uygulama için seçilecek herhangi bir dil değil de mesela OS geliştirmek istediğimizde C, C++, D gibi diller seçmemiz lazım, bu iş için mesela Python, Java vb. diller sağlıklı olmaz. C, C++, D gibi dilleri hızlı çalışması gereken uygulamalar olunca kullanmamız gerekiyor fakat bir topluluğun Python mı Java mı diye diller üzerinde düşünmesi nasıl oluyor? Çünkü baktığımızda Python ve Ruby yorumlanan, Java, C# gibi diller ara bir dile çevrilen diller. Yani Python mı Ruby mi veya Java mı C# mı diye karşılaştırınca kolay oluyor ama Python mı Java mı denince çok farklı sonuçlar ortaya çıkar çünkü biri yorumlanarak çalışan, diğeri ise ara dile çevrilerek çalışıyor. Yani asıl sormak istediğim dilden öte dilin çalışma prensibine göre nasıl belirlemeliyiz?

Sadece bilmediğim, merak ettiğim için soruyorum, umarım can sıkmamışımdır.

Teşekkürler!
agora #6
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Eğer Java seçeceksen sistem hakimiyetin tam olamaz. Bellek yönetimin JVM ne kadar izin verirse o kadar olur. Hazır GC mekanizmalarından bahsetmiyorum.

JVM labelı bazı noktalarda işe yarıyor ama en nihayetinde onun kısıtlamalarıyla bir şeyler yapılıyor.

Python için JVM tarzı bir şey var mı tam manasıyla emin değilim ama daha özgürsün. Bellek yönetimi konusunda ise çatallamalarda gayet iyi işler var. PyPy gibi.

Son olarak yorumlayıcının her dilde olduğunu düşünüyorum. (Ali hocam daha hakim o doğrusunu söyler) Sadece bazı diller yorumlandıktan sonra derlenir.

Interpreter ramde çalışıyormuş hissi var bende.

Derlenenler ise kalıcı bellekte saklanıyor.
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #5
İbrahim:
Umarım kızmazsınız

Hocam o ne demek! :)

Çünkü baktığımızda Python ve Ruby yorumlanan

Sözünü keserek daha önce de bahsettiğim bir düzeltmeyi hatırlatmak istiyorum: Dilleri yorumlanan ve derlenen diye ayırmak doğru değilmiş ve ben bu konuda yanlış bilgi yayıyormuşum çünkü teorik olarak her dilin yorumlayıcısı ve derleyicisi olabilirmiş. O yüzden şöyle değiştirmiştim:

  http://ddili.org/ders/d/derleyici.html#ix_derleyici.yoruml…

Konumuza dönelim... :)

dilden öte dilin çalışma prensibine göre nasıl belirlemeliyiz?

O çalışma prensiplerinin ne getirdiklerinden başlayabiliriz:

  • Python kullanalım çünkü derleme filan için vakit kaybetmeyiz.

  • .NET kullanmak istiyoruz (veya zorundayız) o zaman onun üzerindeki dilleri kullanalım

  • Java kullanalım da platformdan bağımsız olsun ve dil fazla zor olmasın

  • vs.

Ondan sonra karşıt gerçeklere bakılır:

  • Evet, ama Python'da birden fazla iş parçacığı işletilemiyor (GIL denen kilit yüzünden). Bizim ise birden fazla bağlantıya cevap vermemiz gerek. O yüzden Python kullanamayız. Hayır, kullanabiliriz çünkü birden fazla Python programı başlatacağız.

  • Evet ama bizim program süper hız gerektiriyor, .NET kullanınca şu ve şu durumlarda yavaş kalırız. Evet ama o durumlar zaten giriş çıkış işlemlerinin hemen ardından geliyor; sistem zaten saniye düzeyinde beklemiş durumda; farketmez.

  • vs.

Kusura bakma ama ben ilk yanıtımdan farklı yanıt bulamıyorum. :) Gerçekten, getirilerine ve götürülerine bakarak karar verilen bir durum.

Ali
İbrahim #8
Üye Eki 2015 tarihinden beri · 156 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Sabır ile cevap verdiğiniz için teşekkürler Ali Hocam. :)

Şimdi sorumu anlatabildiğimi hissettim. Dil seçimindeki kriterleri vermişsiniz, o halde o şekilde yapıyorlar diye bitiriyorum.
O zaman mesela Flow yazılımını ben geliştirsem (atıyorum) Python ile geliştirdim ve herhangi bir performans vs. sıkıntı yaşamazdım diyebilirim (Yazdıklarınızdan bunu çıkardım).

Tekrardan teşekkürler!
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
İbrahim:
mesela Flow yazılımını ben geliştirsem (atıyorum) Python ile geliştirdim ve herhangi bir performans vs. sıkıntı yaşamazdım diyebilirim

Kesinlikle! :) Hemen hemen her dilde her şey yapılabiliyor.

Python kodlarındaki hataların bazılarını yakalayan ve o açıdan Flow'a benzeyen 'pylint' var. Mesela, o da Python'la yazılmış. Gayet de güzel çalışıyor.

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 08:05:55 (UTC -08:00)