İlk C# Programım ve Mac’de Mono
Dün internette gezinirken, “C# Design Patterns Essentials” isimli Amazon’da bayağı beğenilmiş bir kitaba rastladım ve biraz okumaya başladım. Sonra aklıma geldi, burada yayınladığım tasarım kalıpları ile ilgili Java kodlarının C# karşılıkları nasıl olur diye merak ettim. O sırada “C# on Mac OS” diye bir arama yaptım ve 15-20 dakika içinde kendimi Mac’imde basit bir editörle C# yazıp, terminalde mono ile derleyip çalıştırırken buldum 🙂
Açıkçası Java eğitimlerinde karşılaştığım C# arkadaşlara örnek vermek anlamında ara sıra C# kitaplarına bakıyordum ama sanırım hiç C# kodu yazmamıştım. Bence makinamda bir C# ortamı olması güzel. Belki bazı kalıplar için C# kodlarını da yazarım, kıyaslarım Java ile vs. Kıyaslamak insana çok daha güzel düşünme imkanı sağlıyor. Bu açıdan uzmanı olmasak bile farklı dillere en azından aşina olmak, oradaki yapılardan haberdar olmak güzel bir şey, ufuk açıcı.
Programlama dilleriyle ilgili sevgi ve beğeniyi bağımlılık durumuna getirmemek lazım. Sonuçta hiç birisi amaç değil, araç. Ama amacı gerçekleştirmek için iyi bilinmesi gereken araçlardan. Öyle her altı ayda bir yeni dil öğrendim denilecek cinsten şeyler değil, üstadı olmak için seneler verilen şeyler. Öyle Bilgisayar Mühendisliği’nde okuyan 20 yaşındaki bir gencin CVsine ard arda C, C++, Java, Ruby, Python, C# diye, “Çok İyi” ya da “İyi” dereceleriyle sıralanacak cinsten değil bu teknolojiler 🙂 Uzmanı olmak ciddi zaman, emek ve disiplinli öğrenme gerektiren şeyler. Tek başına zaman harcamak da bir insanı bir dilde çok iyi duruma getirmiyor açıkçası, üzerinde sistemli bilgilenme, düşünme olmadan, alelade bir programcılık emeği, insanı o dilde üstad yapmıyor. Farklı dillerle uğraşılmasa bile onlar hakkında okumak, ufak tefek kıyaslamalar ve bilgilenmeler yapmak bence bu açıdan önemli.
Neyse, C#’a dönersek tabi ki ilk yazdığım kod hem nesne-merkezli hem de “Selam” olur 🙂 Şöyle:
using System; public class Selam{ public string selamSoyle(string kime){ return "Selam " + kime + " :)"; } public static void Main(){ Selam nesne = new Selam(); string cevap = nesne.selamSoyle("Akin"); Console.WriteLine(cevap); } }
Beni tanıyanlar bilirler, ilk örneğimde bile statik yapılarla yetinmem, muhakkak nesne kullanırım. Öte taraftan “Hello World” ve “foo” gibisinden isimlere de gıcığım zaten. Kodlarımızı daima Türkçe yazalım demiyorum ama en azından ilk örneğimizde “hello” yerine “selam” demek çok daha tabi.
C# yazarken metot isimlerinin büyük harfle başlaması, benim en zorlandığım kısım oldu. Bu yüzden “selamSoyle()“i Java’daki gibi yazdım. Bence C#’ın bu konuda farklı bir standart benimsemesi pek anlaşılır değil, okuma kolaylığı sağlamıyor açıkçası, az da olsa yapılandırıcılarla karışma riski var.
Bir diğer garipsediğim nokta da “System” paketini kullanmak için “using System;” diye belirtmek zorunda olmam oldu. Sanki bunun gibi çok temel bir paketin otomatik olarak kullanılabilir olmasını bekledim, Java’daki “java.lang” paketi gibi.
Bir de küme parantezlerini koyduğum yerler var tabi, Java kodunu andıran 🙂 Bunun dışında her şey şimdilik güzel görünüyor.
C# ile ilgili yazı yazacağımı rüyamda görsem inanmazdım 🙂 Ama işte hayat bu, ne oldum demeyeceksin, ne olacağım diyeceksin 🙂 Dün bu konuda tweet atınca bir arkadaşım, “Yaptigin denemenin iler tutar hicbir yani yok… Anlik bir kendini kaybetme diyelim, unutalim…” ve “Mac de, C# ogrenen Java danismani mi olurmus Akin Hocam :-)))” yazmış. Haklı tabi, ben bir an hemen Twitter ve Google ile irtibata geçip, “abi silin, kazıyın şu tweeti evrenden” diyecek oldum açıkçası 🙂 Ama sonra kendime geldim, bu kadar C#’ın bir zararı olmaz diye düşündüm 🙂
Toplam görüntülenme sayısı: 1070
Pinar
13 Şubat 2015 @ 14:25
Hocam muthis bir sey buu. Hemen deniyorum
Orhan
13 Şubat 2015 @ 20:23
Hocam C# ve Java birbirine bu kadar yakın dillerken yıllardır hiç C# ‘la uğraşmamanız da ayrı bir ilginç doğrusu 😀 Java haricinde uzman olduğunuz farklı bir programlama dili veya farklı bir bilişim alanı var mı hocam? Mesela networklerden de anlar mısınız?
Akin
13 Şubat 2015 @ 20:44
Açıkçası Java-ekosisteminin teknolojik olarak ciddi zaman alacağı kadar geniş olduğu açıkken ve çalıştığım yerlerde önceleri C/C++ sonraları bir keresi hariç, tabi ki benim isteğimle, hep Java olması varken, C#’a ihtiyaç duymadım. Her daldan bal almak yerine daha az konuda uzmanlaşmak bence olması gereken şey. Kaldı ki ben bile kendimi Java’da çok dağınık hissetmiyor değilim. Emin olun ABD’de falan aysasaydım cok daha odaklı çalışırdım.
Öte taraftan Java dışında uzman olduğumu düşündüğüm alan olarak Software Engineering var 🙂 Networking, databases, vs. sonucta ihtiyacım kadar içine girdiğim konular.
Yorumunuz icin tessekur ederim.
mehmet
19 Kasım 2015 @ 19:58
HOCAM BEN C# ÖĞRENMEK İSTİYORUM BANA KAYNAK TAVSİYE EDEBİLİR MİSİNİZ?
Akin
02 Aralık 2015 @ 17:38
Mehmet bey, ben C# uzmanı olmadığımdan yardım etmem zor malesef 🙁
Java derseniz ayrı ama 🙂
Kolay gelsin.
mehmet
02 Aralık 2015 @ 19:40
hocam peki bilen bir tanıdığınız var mı beni yönlendirebileceğiniz C# kaynağı tavsiye verebileceği ve java da öğrenmek isterim şuanda üniversitede gördüğüm derste visual basic te C# ı gördüğüz için dersten geçebilmem için gerekli. Bu yüzden öğrenmem lazım. Ben C++ a daha çok merak sardım ve ve C# bittikten sonra java, delphi ile devam etmek istiyorum.
Akin
02 Aralık 2015 @ 21:03
Bana akin@javaturk.org adresinden email gonderirseniz yonlendirebilirim.