İçeriğe geç

C# 7’nin Ayak Sesleri

Henüz C# 6.0 sürümü resmen kullanıma sürülmemişken geçtiğimiz haftalarda Microsoft’un Github hesabında yayınladığı habere göre C# dilinin 7. sürümü ile ilgili kolları sıvadığı anlaşıldı. Önem ve ihtiyaç durumuna göre gruplandırılan birçok özelliğin yer aldığı yazıya bu linkten ulaşabilirsiniz. Listede yer alan özelliklerin resmi olarak 7 sürümüyle birlikte geleceği kesin değil tabii ki, sadece niyetimiz ve yol haritamız bu şekilde, sizlerin görüşleri nedir, var mı bir isteğiniz… tarzında yazılım geliştiricilerin kulağına hoş gelen bir hareket gerçekleştirmiş durumda Microsoft.

Yazılım geliştirmek için kullandığımız diller zaman içerisinde gelişiyor, yeni özellikler kazanıyor ve biz yazılım geliştiricilere birçok kolaylık sağlıyor. Özellikle sosyal medyanın gelişimiyle birlikte dünyanın yazılım devleri artık ürünlerini geliştirirken kullanıcılardan ve profesyonellerden ciddi katkılar almaya başladı. Microsoft’un da son zamanlarda bazı ürünlerini açık kaynaklı hale getirmesi bu gelişmelerin bir sonucu diyebiliriz. https://github.com/dotnet adresinde göreceğiniz üzere Microsoft .NET tabanlı birçok kütüphaneyi açık kaynaklı hale getirmiş ve yazılım geliştiricilerden geri dönüşler almayı bekler durumda. İşte buna paralel olarak .NET platformunun ana dili olan C# dilinin 7.0 sürümünde getirilecek özellikler için de yazılımcı geliştiricilerin fikirlerini almayı istiyorlar.

Github’da yer alan haberdeki listeye göz attığınız zaman en üstündeki “Strong Interest” kısmında Microsoft daha çok veri yönetimine, performansa ve güvenliğe önem verdiğini görmekteyiz. Bu geliştirmeler başarıyla tamamlanırsa yazılım geliştiriciler açısından kodların yönetilebilirliği daha rahat ve performanslı olacaktır. “Some Interest” kısmında ise liste oldukça kalabalık. List ve dictionary tipleri, nesne tanımları ve parametre geçiş yöntemleri ile ilgili birçok maddenin olduğu bu kısımdaki tüm özellikler 7 sürümüyle gelir mi yoksa ilerleyen sürümlere mi kalır bunu zaman içerisinde göreceğiz. Ben Github’daki linke tıklamayanlar için listelenen özellikleri aşağıya iliştiriyorum.

Not: Listedeki özelliklerin yanında yer alan #347 şeklindeki linklere tıklayarak yeni gelecek özelliklerin ne şekilde kullanılacağına dair yapılan ön çalışmaları ve kullanıcıların bu konulardaki yorumlarını görebilirsiniz.

Strong interest

Tuples (Planlanan kullanım: #347)
Pattern matching (Planlanan kullanım: #206)
Records / algebraic data types (Planlanan kullanım: #206)
Nullability tracking (Planlanan kullanım: #227)
Async streams and disposal (Planlanan kullanımlar: #114, https://github.com/dotnet/roslyn/issues/261)

Some interest

Covariant return types (Planlanan kullanım: #357)
More support for expression trees (statements, more expressions) (Planlanan kullanım: #2060)
Syntax for lists
Syntax for dictionaries
Serialization and data binding support for records (see #1303)
Deterministic disposal (Planlanan kullanım: #161)
Immutable types (Planlanan kullanım: #159)
Type providers
Existing or other ways of adding attributes (cross-assembly?)
Scripting features back into mainline language
Ref locals and ref returns (Planlanan kullanım: #118)
readonly parameters and locals (Planlanan kullanım: #115)
Attributes on lambdas (Planlanan kullanım: #117)
Method contracts (requires and ensures) (Planlanan kullanım: #119)
Extension members (#112 et al)
Compile-time attributes (ability to disappear in IL or at runtime. Could be more expressive)
Attributes in more places (persistable and non-)
Supersedes

Small but useful

Allow extension methods in non-static classes
More betterness (generic constraints, static vs instance) (Planlanan kullanım: #250)
params IEnumerable (Planlanan kullanım #36)
Binary literals (Planlanan kullanım: #215)
Digit separators (Planlanan kullanım: #216)

Interesting but require CLR support

Additional generic constraints (some may not need CLR) (see also #129, #154, #158, #262).
interfaces that can only be implemented internally
default implementations in interfaces (see #73, #258)
Array slicing syntax (Planlanan kullanım: #120)
Static interface members

Probably not this time

“Metaprogramming”
Hooks on object initializers
Safe fixed-size buffers (Planlanan kullanım: #126)
Lambda capture lists (Planlanan kullanım: #117)

Probably never

INPC support
ISupportInitialize support (#2100)
Destructible types (Planlanan kullanım: #161)

Unbucketed

yield foreach (non-quadratic) (#15)
local functions (#259)
declaration expressions (#254)
expressing unreachable code (#59, #1226)

Tarih:C#

Tek Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir