Şimdi Ara

Türkçe kaynak sıkıntısı olan dil önerisi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
661
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Orta seviyede ingilizcem var hem programlama hemde ingilizcemi geliştiriyorum. C,Java,Python,C# vs.. eski ve popüler diller oldukları için yeterince türkçe kaynak var bu dillerle ilgili. Hal böyle olunca zar zor anladığım ingilizce kaynaklar yerine kolaya kaçıp türkçe kaynaklara yöneliyorum. Türkçe kaynakların kötü olması ve bu durumun ingilizcemi geliştirme konusunda bana sıkıntı yaratması nedeniyle türkçe kaynak bulamayacağım bir dile başlayıp o dilde kendimi geliştirmek istiyorum. Zaten bir dili iyice öğrendikten sonra başka dillere geçip, o dilleri öğrenmek daha kolay oluyormuş. :) Zorunlu olarak ingilizce ile muhattap olacağım için ingilizcemde gelişecek bu sayede. İlk başlarda anlamada sıkıntı yaşayacağım kesin ama zamanla yazılımla ilgili terimleri, anlamlarını öğrendikçe bu iş kolaylaşır gibi geliyor. Türkçe kaynak sıkıntısı olan diller yeni çıkan, ülkemizde yavaş yavaş yükselmekte olan diller oluyor genelde. Bu dillerin bazıları gelecekte daha popüler hale geliyorken bazıları çok az kullanıldığıyla kalıyor. İster istemez bende bu gelecekte daha da popülerleşecek dillerden birini öğrenmek istiyorum ki daha bir anlamlı olsun. Bu konuda da siz tecrübeli arkadaşlardan yardım bekliyorum.

    Clojure,D,F#,Elixir,Go,Groovy,Haskell,Dart,Scala vs.. İlk bakışta bu ve benzeri diller dikkat çekiyor ama hangisi programlamaya başlangıç için uygundur bilemiyorum.

    İlk aşamada anlaması daha kolay olacağı için videolar yerine yazılı kaynaklardan çalışmayı düşünüyorum.
    1-2 ay boyunca C,C# ile vakit geçirdim biraz ama türkçe kaynaklar yetersiz gibi geldi bana. Kendimi geliştirmek istediğim alan web bu arada.







  • Ben olsam Scala'ya bakardım cunku hem cok kaliteli bir dil hem de işletmeler Java kod repertuarlarını Scala 'ya terfi etmeye başladılar ve galiba Türkçe kaynak olmayan bir dil soruyorsun, Scala'nın Türkçe Wikipedia makalesi bile sıfıra yakın, Türkçe hiç kaynak yok. İngilizce yığında kaynak ve ücretli/ücretsiz ebook'lar var. Scala'nın diğer iyi yanları, Big Data alanında en etkili dil olması, Android uygulamaları geliştirirken Java'ya alternatif kullanılabilmesi (JetBrains Kotlin'i Scala'dan esinlenerek geliştirdi) ve işletmelerin Scala'ya terfi etmesinden anlaşılabileceği gibi, işletme yazılımları geliştirmeyi de kolaylaştırması. Zaten Big Data, mobil ve işletme alanında iyi olunca geriye başka bir alan da kalmıyor.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Ben iki yıldır Scala'yla uğraşıyorum. Scala'yla Mllib, Breeze hatta Play Framework yazdım. Embedded FPGA'lerle Spark kullandım. Scala'yı konuşacak kadar bildiğimi varsayıyorum.

    Scala kesinlikle yeni başlayan birisi için kullanışlı bir dil değildir. Kesinlikle çok güzel dizayn edilmiş bir dildir ama yeni başlayan birisine kolaylıklar sunacak bir dil değildir. Nedenini açıklayayım:

    Fonksiyonel diller side-effect denilen bir kavrama çözüm sunar. Genel olarak side-effect soyutladığınız (abstraction) bir kavramın soyutlanmış başka bir kavramı değiştirmesidir diyebiliriz. Side effect'ler kötüdür çünkü genelde kafanızda oluşturduğunuz modelin istediğiniz gibi çalışmamasını sağlarlar. (bunun en basit örneği concurrency'de görülür mesela, sonra thread'lerim neden safe değil diye günlerinizi geçirirsiniz) FP dünyası bu gibi sorunlara çözüm sağlar. Fakat Haskell gibi, Lisp gibi dillerin buldukları çözüm von Neumann mimarisine aykırı olduğu için (ki bu mimari bilgisayar biliminin temelidir) bu diller bambaşka bir paradigmaya ihtiyaç duyarlar. Örneğin C++ öğrendikten sonra Java'ya çok rahat geçebilirsiniz. Ama Haskell öğrendikten sonra C++'a geçemezsiniz, FP öğrendikten sonra başka bir paradigmaya geçmek için programlamayı yeniden öğrenmeniz gerekir.

    Scala multi-paradigm bir dildir. OOP ve fonksiyonel konseptleri kullanmanıza olanak verir. Evet side-effect'i olan kod yazmanıza olanak verir ama Scala topluluğu bunu tavsiye etmez. Örneğin Scala'da loop yazmak en kötü pratiklerden biridir. Vaktinizi genelde işlemek istediğiniz veriyi nasıl mapping ederim diye geçirirsiniz. Bulduğunuz çözüm genelde tek satır tutar ve bu sizi dile aşık eder. Ama bu aşamaya gelecek kadar Scala öğrenmeniz için bayağı bir vakit harcamanız gerekir. Yazdığınız kodun okunurluğu azdır. Çünkü scala'da bir şeyin tek bir sentaksı yoktur. Örneğin fonksiyonları Haskell'da olduğu gibi çağırabildiğiniz gibi Java stilinde de çağırabilirsiniz. Scala yazdığınız süre içinde illa higher-order function'lar atamak istersiniz örneğin. Böyle şeyler yazdığını kodun okunabilirliğini boğar. Scala'nın en büyük eksiği OOP ve FP'yi bir arada tutarken adam gibi bir çözüm üretememesidir genelde. Bu yüzden bir sürü irregularite bilmeniz gerekir. Örneğin nerede metodun ne döndüreceğini belirtmeniz gerektiği teorik Scala öğrenmediyseniz bir muammadır.

    Scala gibi diller üniversite birinci sınıfta öğrendiğiniz abstract mathematics'i modellemek için vardır genelde. Hani derler ya bilgisayar işi matematiktir diye. Bunu scala yazarken anlarsınız. Basit veri yapıları modellerken Java'da olduğu gibi gerçek dünyayı kurgulayıp ona uygun bir abstraction yazamazsınız. Side-effect free olmak için bir anda matematiksel makaleler okurken bulursunuz kendinizi. Recursion kullanmanız gerekir (neredeyse her zaman hatta), ama yazdığınız metot tail-recursive değilse Scala compiler'ı patlar. Daha da ilginci, Scala abilerinden olan Haskell gibi kısıtlayıcı değildir. Kötü kod yazmanıza da olanak verir. Ekibinizde böyle insanlar varsa geceleriniz onların hatalarını düzeltmekle geçer.

    Scala'nın OOP modeli çok güçlüdür ve iyi bilen birinin elinde şiir gibi çalışır. Ama işte öğrenmesi zordur. Bilmeyen birisi için case class her durumda standart sınıflara üstünmüş gibi gözükür örneğin. Bunun yanında Java ile OOP yazmış insanlar Java'yla öğrendikleri paradigmalar Scala'da çalışmayınca çok şaşırırlar. Factory pattern'ı gibi pattern'lar Scala'da farklı çalıştığı gibi Monad gibi kavramlar bu insanlara bir garip gelir. Aynı zamanda Scala'nın geliştirdiği nesne hiyerarşisi de yeni başlayan birisi için karmaşıktır.

    Scala'da gerçekten kod geliştiren kimseler (Spark ekibi, ScalaNLP ekibi gibi) birkaç kütüphaneden yardım alırlar. Örneğin import scalaz._ gördüğünüz anda kodda anlamayacağınız şeyler çıkma olasılığı çok yüksektir. Bu gibi kütüphaneler fonksiyonel paradigmaların daha da içine çeker sizi. Monad standart scala'da sadece bir pattern iken scalaz ile içinden çıkılmayacak karmaşık bir şeye dönüşür. Functor'lardan, Monoid'lerden filan bahsetmiyorum.

    Biraz scala bilerek Spark'la big data filan yapabilirsiniz yine de. Ama öyle bir dil arıyorsan Scala yerine Python öğrenmek daha mantıklı. Scala Almanca gibi bir dildir yani, bilirsen çok ekspresiftir ama işte o raddeye gelene kadar çok efor sarf etmek gerekir.




  • onepl O kullanıcısına yanıt
    Güzel fakat bu soruya yanıt olmadı ki. Bu daha cok belli miktarda Scala ve iyi düzeyde Java bilen programcıların anlayabileceği bir yorum oldu bence. Arkadaş Türkçe kaynak pek olmayan bir programlama dili bakıp , zorunlu olarak ingilizce ile muhattap olmak suretiyle ingilizcesini geliştirmeyi de düşünüyor, Pyton'la bunu yapması mümkün değil. bir de Scala'yı önermek demek,illa ki Scala'nın gelişmiş özelliklerini öğren demek değil tabi ki, Java ile cok program geliştirmemişse Scala'nın case class 'ının getirdiği kolaylıkları takdir edemeyebilir, bu normaldir fakat o esnada IDE'sini açıp birkaç JavaBean örneği deneyerek case class'ın JavaBean yapısına getirdiği yeniliği görmemesi için tutan da yok, bu kişinin merağı ve çalışma şekline kalmış birşeydir :



    Recursion ise diller üstü bir konudur, Clojure gibi recursion 'ın rahat kodlanabildiği dili öğrenen kişi bile yıllarca tek bir satır recursion yazmadan tüm programları iterasyon yani bildiğimiz for, for each, while, vs şeylerle de yazabilir. Scala compiler 'ın patlamasına gelince Scala compiler hello world derlerken bile ağır çalışmaktadır fakat Scala nın derleme zamanlarının uzun olması zaten genel bir konudur ve Scala'ya bir kere alışmış kişiler için büyük bir sorun olarak gözükmemektedir.

    < Bu ileti mini sürüm kullanılarak atıldı >




  • Türkçe bu alanda genel olarak yetersiz bir dil zaten. Türkçe için Python düşünülerek yazılmış adam gibi veri yapıları kitabı yok mesela. Ülkemizde bu işlere merak salmış insanların yüzde doksanı programlamayı sentaks bilmek sandığı için Türkçe yazılmış kaynak çok algısı oluşuyor.

    Bu bağlamda senin dediğin kısa betikler yazarak da dil öğrenilebilir argümanı biraz havada kalıyor. Herkesin dibini düşüren Spark gibi kütüphaneler azıcık Scala bilerek iş yapmanı sağlayabilir örneğin. Bu yöntemle programlama öğrenebilir misin orası muamma ama. Stackoverflow'da bulduğun çözümün seni ne kadar geliştirebileceği gibi şeyler yani.

    Recursion'ın diller üstü bir kavram olması doğru. Ama böyle genellersen dilleri oluşturan her kavram diller üstüdür. Dili tasarlayan kişi veya ekip bu özelliğin getirdiği trade-off'a göre hangi özelliklerin dilde olacağına karar verir. Örneğin scala için yapılmış çoğu tercih dilin scability olması için yapılmıştır. Bu yüzden bence her yerinden imperative paradigmalar çıkan, Java gibi kod yazabilmek Scala bilmek değildir. Zaten bunu anlatmaya çalıştım. Scala'yı böyle öğrenmek iş ortamında da işe yaramaz. Scalability'i arttırmak için Future bilmek, lazy eval kullanabilmek, hatta tercihen Akka'yla Actor model oturtabilmek lazım. Bunların hepsi side-effect'i olmayan kod yazabilmekten geçiyor. "Orta düzey İngilizce" ile bunların ne kadarı öğrenilebilir bilmiyorum.

    Scala compiler'ının yavaş olması biraz da SBT ile alakalı. Dil ne kadar iyiyse, Scala'nın build sistemi de o kadar kötü çünkü. Yoksa O(n^n) recursion'ı (tail recursive ise) overflow olmadan, tık diye işliyor mesela.

    Ben başta Lua örneğini verdim çünkü Lua kolay, standart kütüphanesi zengin, IDE desteği var ve Lua ile oyun yazabiliyorsun, ML yapabiliyorsun. Yani öğrenme curve'ü düşük, aynı zamanda öğrendikten sonra dille yapabileceğin şeyler eğlenceli ve ilgi çekici şeyler. Lua ile ilgili yazılmış Türkçe kaynak olduğunu da sanmıyorum. Scala gibi ilk kez programlama mantığını çözmeye çalışan birini boğacak bir dil değil, çünkü dil geniş değil. Eğer FP öğrenmek istiyorsan ona da izin veriyor üstelik.

    (Tabii ki bunlar şahsi düşüncelerim)

    Edit: anlam kargaşası



    < Bu mesaj bu kişi tarafından değiştirildi onepl -- 13 Kasım 2017; 14:30:9 >




  • İkinizde teşekkür ederim yorumlarınız için. Ben Luaya bakayım o zaman Scalada ilerisi için aklımda bulunsun.
  • Tutorialspoint'in Lua ebook'u var:https://www.tutorialspoint.com/lua/lua_tutorial.pdf

    Türkçe kaynak sıkıntısı olan dil önerisi

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Teşekkürler yardım için
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.