Thread overview
Yazılım Geliştirmede Programlama Dili Nasıl Belirlenir?
Dec 03, 2015
İbrahim
Dec 03, 2015
İbrahim
Dec 03, 2015
İbrahim
Dec 04, 2015
agora
Dec 04, 2015
İbrahim
December 03, 2015

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!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 03, 2015

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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 04, 2015

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!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 04, 2015

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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 04, 2015

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!

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 03, 2015

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 03, 2015

Alıntı (İ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.

Alıntı:

>

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 04, 2015

Alıntı (İbrahim):

>

Umarım kızmazsınız

Hocam o ne demek! :)

Alıntı:

>

Çü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.yorumlay%C4%B1c%C4%B1

Konumuza dönelim... :)

Alıntı:

>

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 04, 2015

Alıntı (İ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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]