İ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 🙂

 

Bu yazı toplam 721 defa görüntülenmiştir.