Yazılım Gündemi - 22 (16-22 Aralık 2019)

< Önceki Gündem    |   16-22 Aralık 2019   |     Sonraki Gündem >

Yazılım Gündemi ile ilgili gelişmeler hakkında bildirim almak için bu adresdeki konuya bakabilirsiniz. Yazılım Gündemine katkı sağlamak için yazılımın herhangi bir alanıyla ilgili karşılaştığınız haberleri sosyalde #YazılımGündemineMalzeme etiketi ile paylaşabilirsiniz.

.NET 5 için yol haritası açıklandı

.NET Framework çoğumuzun da bildiği gibi Microsoft'un çok uzun zamandır geliştirmekte olduğu, tüm ekosistemini üzerine kurduğu bir uygulama çatısıydı. .NET Core ise son 3-4 yıldır geliştirilmekte olan açık kaynak, platformlar-arası (cross-platform) çalışabilen ve modern bir yapıya sahip uygulama çatısı. Yazılım dünyasında değişen trendlerle birlikte ortama ayak uyduran Microsoft, özellikle CEO olarak Satya Nadella'nın gelmesinden sonra açık kaynak camiasına ve kendisinden pek beklenmeyecek hamleler de yaptı. İşte .NET Core'da bu yeni anlayışın bir ürünü. Visual Studio Magazine dergisinin internet sitesinde bu hafta yayınlanan bir yazıyla birlikte daha önce Build 2019 etkinliğinde duyurulan .NET 5 yol haritası da özetlenmiş oldu. O etkinlik yazılım gündemi yazıları yazmaya başlamadan önceki bir tarihe denk geldiği için bu yazıyı fırsat bilerek gündeme almak istedim.

Yeni .NET 5 Ekosistemi

Bildiğiniz tüm .NET'leri unutun! Bundan sonra tek bir .NET olacak, o da: .NET 5 (Biraz reklam metini gibi oldu ama :)). Microsoft'un tüm uygulama geliştirme çözümleri (.NET Framework, .NET Core ve Xamarin/Mono) tek bir isim altında birleşiyor ama bu sefer ne "Framework" ne de "Core" gibi ek kelimeler olacak; sadece ".NET 5". 2020'nin ilk yarısı Preview sürümünün yayınlanması bekleniyor.

Önceki yazılım gündemlerinden birinde (bkz: Yazılım Gündemi - 14), Microsoft'un, .NET Framework API'lerinin .NET Core projesine aktarılmasının tamamlandığını duyurmuştu. O haberden Microsoft'un yöneliminin .NET Core üzerinden devam etmek üzerine olduğunu anlamıştık zaten ve işte bugün de kendimizi doğrulamış oluyoruz. .NET, eski kapalı-kaynak, sahipli, sadece Windows'da çalışan kabuğundan sıyrılıyor ve yeni açık kaynak modern kimliğine kavuşuyor.

Yeni .NET 5 yaşam döngüsü

.NET 5 sürümünün herkes tarafından erişilebilir (General Available) ilk sürümü Kasım 2020 tarihinde duyurulması planlanıyor. Planlanan takvime göre uzun-dönem desteklenecek (LTS - Long-term support) sürümler sadece tek sayılı yılların Kasım ayında yayınlanacak ve 3 yıl boyunca desteklenmeye devam edecek. .NET 5 sürümünün geliştirilmesini takip etmek isterseniz bu GitHub sayfasını ziyaret edebilirsiniz.

Ruby 3.0 ile argüman işleme sistemi değişecek

Bu haber aslında geçtiğimiz haftanın konusu ama geçtiğimiz hafta gündemi biraz geç yayınlamak durumunda olduğum için bu haberi bu haftaya ertelemiştim. Bir programlama dili ile ilgili önemli sayılabilecek bir değişiklik olduğu için haberi atlamak da istemedim. Ruby programlama dilinin 3.0 numaralı sürümünde bizi geriye uyumluluğu olmayan bir takım temel değişiklikler bekliyor.

Başka birkaç programlama dilinde de olduğu gibi Ruby dilinde de pozisyonel (positional) ve anahtar kelime (keyword) argümanları mevcut. Örnek üzerinden anlatmak gerekirse:

def foo(k: 14)
  puts k
end

h = { k: 24 }

foo(h)

Bu kod parçasındaki foo fonksiyonunda argüman keyword şeklinde tanımlanmış. Yani argümanın bir ismi var ve o argümana bir değer verilmediği zaman alabileceği bir varsayılan değeri var. Sonrasında ise h isimli Hash tipinde bir değişken tanımladık ve onu foo fonksiyonuna positional argüman olarak gönderdik. Bu durumda Ruby 2.7, positional olarak gönderilen argümanı alıp keywork şeklinde gönderiyor fonksiyona yani sorunsuz çalışıyor ama artık Ruby 2.7 bu kod parçası için Warning göstermeye başlayacak çünkü bu otomatik dönüştürme işlemi artık deprecate oldu ve Ruby 3.0'da bu kod parçası çalışmayacak, ArgumentError hatası verecek.

def bar(h, **kwargs)
  puts h
end

bar(k: 42)

Bu kod parçasındaki bar fonksiyonu ise argümanlar bir positional ve bir keyword şeklinde tanımlanmış. Sonrasında ise bar fonksiyonuna keyword şeklinde bir argüman göndermişiz. Bu kod parçası da Ruby 2.7'de, keyword'den Hash positional'a dönüştürülerek çalışıyor, tabii ki yine Warning göstererek. Aynı şekilde bu kod parçası da Ruby 3.0'da çalışmayacak ve ArgumentError hatası verecek.

"Peki bu tarz bir kullanım senaryosuna ihtiyaç duyduğumuzda ne yapacağız?" dediğinizi duyar gibiyim. Ruby geliştiricileri bu durumlarda kullanmak için şu özellikleri eklediler:

foo(**h)

bar({ k: 42 })

Bu şekilde kullandığınızda yine eskisi gibi kodlarınız çalışmaya devam edecek. Dediğim gibi her ne kadar birden bire desteği kesilmeyecek olsa bile bu değişikliğe uygun olarak kodlarınızı düzenlemeniz gerekecektir. Aklınızda bulunsun. Bu değişikliğin sebebi olarak ise keyword ve positional formattaki argümanların, birbirlerine çevrildikleri için karışıklık yaratması. Ruby 3.0'da çevrilmeyecekler ve fonksiyonlar hangi formatta argüman alması için kodlanmışsa o şekilde çalışacak.

Ayrıca bu hafta içerisinde Ruby'nin 2.7.0 Release Candidate 2 sürümü de duyuruldu. Final sürümünün ise 25 Aralık günü yayınlanması planlanıyor. Sanırım bir sonraki Yazılım Gündeminde "Ruby 2.7 ile gelen özellikler"i konuşacağız.

Eclipse 2019-12 duyuruldu

Her ne kadar genelde Java teknolojileri için kullanılsa da diğer birçok dil için de desteği olan geliştirme ortamı Eclipse, bu yılın son büyük numaralı sürümünü duyurdu. Yeni eklenen veya değişen çok fazla özellik var, hepsine burada değinemem elbette ama birkaç tanesini aktarmak gerekirse:

Diğer birkaç IDE ve metin editöründe de görmeye alıştığımız, tüm arama işlemlerinin tek bir pencere ya da popup panel üzerinden halledildiği arama özelliği sonunda Eclipse'ye de gelmiş. Artık aynı popup panel üzerinde hem Eclipse komutlarını ("Build", "Build&Run" vb. gibi menülerdeki her şey) hem de proje içerisindeki dosya isimlerini ve dosyaların içeriklerinde arama yapabileceğiz. Benim şahsen diğer IDE'lerde çok kullandığım bir özellik ve Eclipse'ye gelmiş olmasına sevindim. Bu özelliği kullanmak için menü çubuğunun hemen altındaki toolbarın en sağındaki kısımda bir büyüteç ikonu göreceksiniz ona tıklarsanız bahsettiğim popup panel açılır ya da CTRL + 3 kombinasyonlu kısayolu tercih edebilirsiniz.

Eclipse içerisinde aynı zamanda Git versiyon kontrol sistemi için entegre araçlar takımları da mevcut. Bu sürümde ise Git Repositories kısmına "Repository Group" özelliği geldi. İsminden de anlaşıldığı üzere birden çok git deposunu tek bir grup altında göstermeye yarayan bir özellik.

Bunların dışında java yetenekleri olarak da Java 13 ile birlikte gelen birçok özelliğe destek veriyor. Java 13 (JDK 13) ile gelen bir özellikten Yazılım Gündemi - 3 yazısında bahsetmiştim. O yazıda bahsettiğim çok satırlı String ifadeler özelliği artık Eclipse 2019-12'de destekleniyor. Yalnız bu özelliği öncelikle aktifleştirmek gerekiyor. Bunun için yukarıdaki ekran görüntüsündeki gibi bir kod yazıp, Quick Fix menüsünden ilgili özelliği aktifleştirebilir ya da menülerden Project > Properties > Java Compiler altındaki "Enable preview features for Java 13" yazısının yanındaki kutucuğu işaretleyerek aynı şekilde özelliği açabilirsiniz.

Eclipse 2019-12 sürümüyle birlikte gelen diğer özellik ve değişiklikler için konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Jetbrains, IntelliJ Platformu için 2020 yol haritasını açıkladı

JetBrains, yazılım sektörü için çok iyi araçlar ve diller üreten bir firma. Zaten yazılım sektörünün içinde olup ya da bu konulara ilgi duyup da JetBrains araçlarının en az birini kullanmamış olan yoktur diye tahmin ediyorum. Bu hafta içersinde de Java teknolojileri için geliştirdikleri IDE çözümü IntelliJ IDEA ve IntelliJ Platform tabanlı diğer IDE'ler için 2020 yılı yol haritasını açıkladılar. Yani bu yol haritası, Android Studio'yu da etkiliyor.

Yol haritasında öncelikli konu olarak "Performans" belirlenmiş. Geçtiğimiz yıl boyunca IDE'nin açılma hızıyla ilgili birkaç iyileştirme yapmışlardı. Önümüzdeki yıl ise indexing işleminin performansıyla ilgili iyileştirmeler üzerine çalışacaklarmış. IDE çalışırken gerek otomatik tamamlama özelliği için gerekse de diğer ihtiyaçlardan dolayı indexing işlemi yapıyor. Bir projeyi açarken en çok vakit alan kısım da zaten çoğunlukla bu oluyor. Bundan dolayı, indexing verilerinin takımlardaki kişiler arasında paylaşılabilmesini sağlamaya çalışacaklar. Yani bir proje sizin bilgisayarınızda indexlenmişse bunu başka bir bilgisayardaki IntelliJ ile açtığınızda tekrar indexing'e gerek kalmayacak. Bir de buna ek olarak bu indexing işlemi sırasında IDE'nin donmamasını sağlayacak iyileştirmeler yapılacakmış. Yani projeyi açıp, indexing işleminin bitmesini beklemek yerine kod yazmaya başlayabileceğiz ve indexing de arkaplanda olmaya devam edecek. Projeyi açtıktan sonra IDE'nin kendine gelmesini beklemek benim de pek sevmediğim bir durum o yüzden bu konudaki iyileştirmelere şahsen muhtacım.

Yol haritasındaki bir diğer konu ise özellikle 2019 yılında popülerliği oldukça artan "ortak düzenleme" (Collaborative Editing) konusu. Yani bir bilgisayarda çalışan IDE'ye başka bir bilgisayar üzerinden bağlanılması ve ortak bir çalışma ortamında kod yazılmasından bahsediyorum. Bu yönde çalışmaların devam ettiğini belirtmişler ve özelliğin öncelikle Rider isimli IDE'ye geleceğini daha sonra diğer IDE'lere de ekleneceğini belirtmişler ama bu özellik uzun soluklu bir efor gerektirdiği için öyle 2020'nin hemen ilk aylarında beklemeyin diyorlar.

Açıklanan yol haritasında çok daha fazla konu mevcut fakat hepsinden burada bahsedemem malumunuz eğer tüm yol haritası hakkında bilgi edinmek isterseniz konu başlığına eklediğim bağlantıya tıklayabilirsiniz.

Scala 3 için yol haritası açıklandı

JVM platformu üzerinde geliştirilen Scala programlama dilinin 3. sürümü için geliştirici takımı bir yol haritası yayınladı. Her ne kadar hiç deneyimim olmadığı bir programlama dili olsa da gündeme çeşitlilik katması açısından bunu da değerlendirmek istedim.

Öncelikle Scala 2.14 için çalışmayı bıraktıklarını ve o sürüm için planlanan her şeyin Scala 3'e aktarıldığını belirtmişler. Aslında Scala 2.13'ü bir ara geçiş sürümü olarak düşünmüşler ama sonrasında yaptıkları konuşmalardan sonra buna gerek olmadığına karar vermişler ve doğrudan 3 numaralı sürüme yükselmeye karar vermişler. İlk Release Candidate sürümünün 2020 yılı sonunda yayınlanması planlanıyor. Yani daha bir yıl var diyebiliriz.

Yol haritası yazısı boyunca en çok vurgu yapılan konu ise geriye ve ileriye uyumluluk mevzusu. Geriye uyumluluk (backwards compatibility) çok sık duyduğumuz bir kavram fakat ileriye uyumluluğu (forwards compatibility) ben de ilk kez duydum. Anladığım kadarıyla Scala 2.13 ve Scala 3 sürümleri hemen hemen aynı kodları çalıştırabilecekler. Bu uyumluluğun sağlanabilmesi için de standard library ismini verdiğimiz ana kütüphanede ekleme ve çıkarma yapmayacaklarmış, sadece olan sınıflar üzerinde geliştirmeler yapılacakmış. Fakat bu olay Scala 3.2 sürümüne kadar devam edecek, bu sürümden sonra ise kendine ait bir standard library ile yola devam edilecek. Anladığım kadarıyla Scala 3 bir geçiş sürümü olacak. Ayrıca Scala 2.13 sürümünde desteklenen macro özelliği Scala 3'te farklı bir hal alıyor, yani bu özelliği kullanan bir projeniz varsa o kısımları yeniden yazmak durumunda kalacaksınız.

Yol haritasındaki diğer detaylar için konu başlığına eklediğim bağlantıya tıklayabilirsiniz. Yanlış değerlendirdiğim bir durum varsa lütfen yorumlar bölümünde beni uyarın.

Yaklaşan Etkinlikler

Etkinlik İsmi Yeri Tarihi
PostgreSQL'de İleri Seviyede Performans Yönetimi Ankara 24 Aralık 18:00
NSIstanbul Aralık 2019 Buluşması İstanbul 24 Aralık 19:30
Artırılmış Gerçeklik Platformları Ankara 25 Aralık 18:00
Code.YapıKredi Vol 3: Efsaneler ve Gerçeklerle Yapay Zeka İstanbul 25 Aralık 19:00
Octopus Deploy ile CI/CD Süreçleri İstanbul 26 Aralık 18:00
Geldi Gelecek // Teknoloji Sohbetleri İstanbul 26 Aralık 19:00
Machine Learning Day İstanbul 28 Aralık 10:00
KVKK ve GDPR Kapsamında Veri Güvenliği Ankara 3 Ocak 18:30

Diğer Haberler

BeğenFavori PaylaşYorum yap
  • Eren Hatırnaz @erenhatirnaz

    Bu sefer sürpriz olarak geldi!

    Aslında duyurduğum [1] gibi 2 haftalık yazacaktım ama Pazar akşamı internetim gelince yazmaya başladım, dedim hazır yazmışken yayınlayayım haftaya çok uzun olmasın diye. Yine birkaç haberi bu haftaya bıraktım daha detaylı değerlendirmek istediğim için.

    [1]: https://teknoseyir.com/durum/1189921

  • Ali Kılıç @alinux

    bu webassembly ağır abi olabilir yakın gelecete

  • Yalçın Bahadır @ybahadir

    Yazılım ile uzaktan yakından ilgim yok ama büyük iş yapıyorsunuz. Teknoseyir çalışanı mısınız onu da bilmiyorum ama dikkatimi çeken şey şu; Teknoseyir takipçilerinin büyük çoğunluğu yazılımcı olmasına rağmen sanki hak ettiği ilgiyi görmüyor bu çalışma gibi geldi bana...

    Emeğinize sağlık

    • Eren Hatırnaz @erenhatirnaz

      Çok teşekkür ederim. Faydalı bir içerik oluşturabiliyorsam ne mutlu bana. Hayır, TeknoSeyir çalışanı değilim. İlk yazılım gündemi yazısında da belirttiğim gibi ben zaten sürekli bu tarz haberleri takip ediyordum, "e madem takip ediyorum öyleyse yazayım" dedim ve böyle bir içerik çıktı ortaya, gönüllü olarak yapıyorum yani. Sürekli takip eden belirli bir kitle var, beğenilerden takip ettiğim kadarıyla ama benim umduğum yorumlar bölümünün daha aktif olması, haberlerdeki konularla ilgili güzel sohbetlerin yapılmasıydı fakat pek olmuyor maalesef. Sanırım yazılı içeriklerin kaderi günümüzde biraz böyle. Zaman zaman arkadaşlardan "bunu video olarak yap" ya da "podcast olsa çok iyi olur" şeklinde istekler geliyor ama hem ben kendini konuşarak çok iyi ifade edebilen biri değilim yazılı olarak daha iyi ifade edebiliyorum hem de o yönde çok bir motivasyonum yok. Uzun yazılar okumaya da üşenebiliyor insanlar. Yanlış anlaşılmasın durumdan şikayetçi değilim, sonuçta devir video ve ses devri ama söylediğim gibi benim pek o yönde motivasyonum yok ama başka birileri o formatlarda da benim yaptığımı yapabilir. Ben "Yazılım Gündemi" konsepti üzerinde bir sahiplik iddia etmiyorum. Gönüllü olan herkes yapabilir. "Benim fikrimdi çaldınız" gibi bir söylemim olmaz. Açıkcası bu kadar devam ettirebilmiş olmama ben de şaşırıyorum 🙂

  • Martin @martin

    JetBrains'in IDE'lerinin yavaş açılması daha çok windows'un antivirüsünden kaynaklanıyor. Mesela indexlenmiş bir projeyi tekrar açarken de çok geç açılıyor. Program Files'taki JetBrains klasörüne exception tanımlamak hızlandırıyor açılışı.

  • Yiğit @yigit1

    Öncelikle ellerine sağlık Eren Hocam! 🙂

    "Google, memory-safe programlama dili Wuffs'un 0.2.0 sürümünü yayınladı."

    Rust, Wuffs ve nice programlama dili... Artık çoğu şirket, girişim daha güvenli programlar oluşturmak için buna uygun programlama dilleri üretmeye/kullanmaya başladı. Şu an olan ve olacak gelişmeler, yazılımcılar için daha zorlu süreçlere gidiyor gibi duruyor. Bu sayede daha güvenli yazılımlar çıkmış oluyor. Sanırım 10 sene sonraki-belki daha az süre- kullanılacak ve en çok aranan teknoloji belli oldu 🙂

    Eğer ileriye dönük plan yapabilen ve kariyerini bu alanda oluşturacak birisi varsa, şimdiden çalışmalara başlasın diyebilirim. Çünkü 10 sene sonranın furyası "memory-safe programlama dilleri" olacak gibi duruyor 🙂

  • Metehan Özbek @mthnzbk

    .net5 ile linux altında gui programlama yapılabilecek mi yani?

  • dendirit @pwdsfh

    Hocam elimde VS Enterprise 2017 key var tamamen orijinal. Bu key 2019 da çalışır mı?

Tüm blog yazılarını gör