Programlama Dilleri ve C#

by eMRe 17. Aralık 2009 12:05

c sharp a giris

Herkese tekrar merhaba, bazı yazılarıma aldığım yorumlar ve iletişim kutusundan gelen mesajlardan anladığım kadarıyla, C# öğrenmeye meraklı bir kitle mevcut. Blogumu takip eden kişilerin de hali hazırda C# bilmeyen, ancak öğrenmek için can atan kişiler olduğunu anlamış bulunmaktayım. Madem C# konusunda kendinizi geliştirmek istiyorsunuz, madem blogumu takip ediyorsunuz. Bende elimden geldiğince sizlerle bildiklerimi paylaşıp, yardımcı olmaya çalışacağım. Aklınıza takılan her soruyu "yorum" yazmak koşulu ile sorabilirsiniz. Yorum yazmaya yöneltmemin sebebi, biz burda bilgi paylaşmaya çalışıyoruz, mümkün olduğunca insanın sorunlarına çözüm üretmeye çalışıyoruz. Siz sorularınızı yorum yazarak sorarsanız ve bende bunları aynı sekilde cevaplarsam, bu soru ve cevaplar halka açık olmuş olur. Ve yazdığım yazılar çok daha eğitici olmuş olur.

C# 'a giriş yapmadan önce belirtmek istediğim bir kaç şey daha var. Bu blogu C# konusunda uzman olan kişilerde elbet bir gün rastgelip ziyaret edeceklerdir. Onlara sesleniyorum ; burada anlattığım ve anlatacağım şeyler sokaktan geçen insanın anlayabileceği bir lisanla anlatılacaktır. Ve başlangıç seviyesinde bilinmesi gerekli olmayan bilgileri şimdiden paylaşarak insanların aklını karıştırmak, C#'tan ürkütmek istemiyorum. Amacım burda profesyonel coder'lar yetiştirmek değildir. İnsanlara c# 'ı sevdirip, basit eglenceli kısımlarını gösterip, c# a ısınmalarını saglamaktır. O yüzden makalelerimi değerlendirirken bu çerçevede değerlendirirseniz çok sevinirim.

C# Nedir ?

C# bir bilgisayar programlama dilidir :) Peki ya bilgisayar programlama dili nedir ? Ne işe yarar ? Programlama dünyasına uzak ama bu dünyaya dahil olmak isteyen kişileri de aydınlatacak seviyedeki bir noktadan giriş yapmak en doğrusu olacaktır.

Evet önce sadece bir toz bulutuyduk:) Bu toz bulutunun yogunlasmasıyla dunyamız meydana geldi, bir kaç jeolojik devri atlattıktan sonra biz çıkı verdik. İnsanların sonsuz istekleri ve hayatlarını kolaylaştırma arzusu teknolojiy, ve ardından da bilgisayarı doğurdu. Ancak bu bilgisayarlar çok aptal cihazlardı. Aptal ama bir o kadar da itaatkar. Hemde extreme derecede itaatkar. Çünkü siz sadece ne derseniz onu yapıyorlar. Ne eksik, ne fazla. Tıpkı bir bebeğe ne yapması gerektiğini tarif ederken herseyi adım adım anlatmak zorunda oldugunuz gibi. Yerde oturan bir bebeğe "ayağa kalk" dediğinizde sizi belkide anlamayacaktır. Önce ona ayakta durmak nedir, ayağa nasıl kalkılır, niye kalkılır öğretmeniz gerekecek. İşte bilgisayarlarda bu durumdan farksız değildir. Yapmaları gereken şeyi harfiyen ve en ince detayına kadar eksiksiz söylemeniz lazım ki sizi anlasın ve dediğinizi yerine getirsin. İşte bilgisayarlara bu dediklerimizi anlatabilmek için programlama dilleri icat edilmiştir. Bu dilleri kullanarak bilgisayarlara istediğimiz komutu, emri verebiliriz, tabi bu emirleri o dilin gramer kurallarına uygun bir şekilde nazikçe vermeniz gereklidir.

Programlama dillerindeki komutlar yada anahtar kelimeler yada hazır fonksion isimleri genelde ingilizcedir. Genel kültür olsun diye söylüyorum ; bütün programlama dilleri ingilizce değildir. Mesela Rapira, diğer adıyla Soviet++ tamamen rusçadır ve kiril alfabesiyle kodlanır. Eğitim amaçlı bir programlama dilidir.

C#'ın yerini algılayabilmek için önce öğrenmemiz gereken birkaç şey daha var. Bunlar da her programlama dilinin gücünün, esnekliğinin, ve amacının farklı olduğu gerçekleridir. Piyasada birçok programlama dili mevcuttur sayısı 1000'i rahat bulur belki de geçer. Ve hepsinin de yaratılış amacı farklıdır. Gördüğünüz gibi sırf eğitim amaçlı bir programlama dili çıkartmışlar Soviet++. Keşke bizim türkler de çıkarsa da programlamaya baslamadan önce ingilizce alt yapı gerekmese.

Şimdilik aklıma geldiği kadarıyla size programala dili türlerini sıralayacağım : Functional Programming , Structured Programming , Logical Programming , Object Oriented Programming ve Esoteric Programming dilleri.

Daha önce de söylemiş olduğum üzere 1000küsür tane olan programlama dilleri genelde bu 5 tipe mensuptur. Tabi programlama dili tipleri daha çok didiklenirse daha farklı kategorilere de ayrılabilir. Sunucu Tabanlı programlama dilleri, Masaüstü Programlama Dilleri , sistem programlama, kabuk programlama , network programlama gibi.. Gruplamayı ne amaçlı yaptığınıza göre değişir. Az önceki gruplama kullanım alanlarına göre yapılan bir gruplamaydı. İlk yaptığım gruplama ise programlama dilinin yapısına bakılarak yapılan bir gruplamaydı. Bir de yine çok kullanılan bir gruplama mevcut . o da bir dilin insan diline mi yoksa makina diline mi daha yakın olduğuna bakarak yapılan gruplamadır.

Bu gruplama da "Düşük Seviye - Orta Seviye - Yüksek Seviye"  şeklinde yapılır. Bir program yazarken kullandığınız programlama dili, insan konusma diline ne kadar yakınsa seviye o kadar yüksek olmuş olur. Makina diline ne kadar yakınsa o kadar düşük seviye olmuş olur.

Düşük seviyeli dillere örnek olarak  : Assembly dilini verebiliriz. Kodlarına baktığınız zaman pek birşey anlamanız mumkun olmaz. Bilen kişi tabiki anlar, ama benim burda demek istediğim şey, OKUNABİLİRLİĞİ düşüktür.

Örnek Kod :

intaddr equ 1ch*4    
segaddr equ 62h*4      
mfactor equ 17478    
whozat    equ 1234h    
color    equ 14h          

İşte size düşük seviyeli bir programlama dili :) bakınca insanın gözü korkuyor zaten :)

Birde orta seviyeli diller var. Mesela C dili. Bu dil orta seviye olduğu için hem düşük seviyenin gücüne sahiptir hemde yüksek seviyenin kolaylıklarını okunabilirliğini barındırır.

if(initmouse()==0)
 {
  closegraph();
  restorecrtmode();
  printf("
Mouse driver not loded");
  exit(1);
  }

gördüğünüz gibi komutlar felan bildiginiz ingilizce kelimelerden oluşuyor. İngilizce bilen biri şu koda baktığında az çok ne anlatmak istediğini anlayabilir.Ancak bazı kaynaklarda C dilini yüksek seviye diye gösteriyorlar ben buna asla katılmıyorum. Belirtmek isterim.

Bir de Yüksek Seviyeli dillerden örnek verelim. Bakınız Prolog,LISP bu programlama dilleri yapay zeka kodlamada kullanılırlar. Mantıksal programlama tipleridir. Ufak bir kod parçası :

(let ((length (length (queue-elements queue)))
(try (the fixnum (1+ ptr))))
(if (= try length) 0 try)))


LISP programlama dilinde "let" anahtar kelimesi çok meşhurdur :)



Şimdi bir de C# ' a bakalım nihayetinde. Sizce C# düşükmü ortamı yoksa yüksek mi ? Bunun cevabı çok enteresan :) Çünkü belli değil. Bana soracak olursanız C#'ın yeri Orta ile Yüksek seviye arasında bir yerde. Ama asla orta seviye değil asla da tam yüksek seviye değil. Bunun yanında C# programlama dili tipleri içerisinde "Object Oriented" yani nesne yönelimli, nesne tabanlı, programlama dili kategorisine girmektedir. C# 'taki her öğeyi bir nesne olarak ele alıyoruz. Nesnelerin mensup olduğu(türetildiği) sınıflar, bu sınıfların özellikleri, erişim seviyeleri, kalıtıldığı başka sınıflar olabiliyor. C# Dili daha çok java ve C/C++ dillerinin harmanlanmasından oluşmuştur. Ve .NET FrameWork'un resmi dilidir.

 

Şimdi programlama dili nedir ne değildir, ve C# 'ın bunların arasındaki yeri neresidir biliyorsunuz. Bir sonraki yazımda C# nasıl çalışır. Diğer dillerden farkı nedir. Bunlardan bahsedeceğim. Arkadaşım yazıyon yazıyon ama daha bi satır kod göremedik! demeyin lütfen. Bu yazdıklarımı iyicene sindirdikten sonra hayat sizin için çok daha kolay olacaktır bana inanın. Sadece kod yazmayı öğrenmekle dil öğrenilmez. Çalışma mantığını bildiğiniz zaman, dili tanıdığınız zaman, birisi sana birşey sorduğunda bu dediğin c# la yapılır, yada yapılmaz, diyebilirsiniz. Çünkü dili tanıyorsunuzdur. Yapısı nedir bilirsiniz. Nelere muktedir oldugunu bilirsiniz. Önce bunları öğrenelim sonra yapabilceklerimizi nasıl icraata gecirebiliriz onları düşünelim.

Saygılarımla.

Sorularınız olursa yorum yazmanız yeterlidir. Elimden geldiğince yardımcı olmaya çalışırım. sevgiler..

FacebookDigg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Etiketler: , , , , , , , , , ,

Bilgisayar | Programlama

Yorumlar

17.12.2009 15:13:13 #

mehmet soylu

güzel bir yazı olmuş. c# için .net olması ve c temelli daha yüksek seviye bir dil olamsı dışında bilgim yok. ama programcı olarak başka bilgiler eklemeden edemedim.

programlama dilinin syntaxının yanısıra yazılımla iligli işlerde bir o kadar önemli bir kaç boyut daha var. yapacağınız projeyi plan, proje, kaynak, dökümantasyon yönetimi çok önemli. hemen örnek vereyim. Yardım kısmı olmayan çok basit bir cms hazırladık. kullanması vs. çok çok basit. ama ilk sürümde müşteriler yardım kısmına ihtiyaçları olduğunu söyledi. biz eposta atma işlemini herkesin bildiğini varsayıyorduk ama müşterilerimizde epostayı outlook simgesi sanıyormuş Smile

unutmama lazım ki bunları öngörebilmek için illaki tecrübe etmekte gerekmiyor. feedback değerlendirmek vs.  çok çok önemli. benzer feedbackler gelebilecek bir kaç yazılım için gelmiş feedbackleri üretilen yazılımda kullanabilmekte önemli. asıl kalite bu kısımlarda yatıyor sanırım.

süper kodladığınız bir proje başarısız olmuşsa, plan,proje,kaynak ve dökümanstasyon yönetiminizi ekipçe gözden geçirin derim.

mehmet soylu Turkey | Reply

17.12.2009 15:21:32 #

eMRe

Mehmet kardeşim eline sağlık güzel yazmışsın. Yorumun için teşekkürler. Ama biz daha bir toz bulutuyuz Smile Sen işi hemen proje aşamasına getirdin Smile Daha dur .NET nedir Framework nedir onları anlatacaz yolumuz uzun proje lafını kullanmak için.

Ama söylediklerinin hepsine katılıyorum. Özellikle "yardım" sayfası, dökümantasyon çok çok önemli. Ama ben yardım sayfasında satır satır yazı yazmayı hiç sevmiyorum. Onun yerine sesli görüntülü video izletmek hem hazırlayan için daha kolay oluyor hemde öğrenmek isteyen için. Ama öyle yada böyle yardım sayfası ve dokumantasyon şart, okulda bize hep şöyle derlerdi : bir program yazıyorsan yada bir web sayfası hazırlıyorsan, o web sayfasını yada programı, sanki dünyanın en aptal adamı kullanacakmış gibi varsayarak tasarlaman lazım.

Senin yaşadığın tecrübelerde bizleri zaten bu şekilde davranmaya zorluyor..

eMRe Turkey | Reply

17.12.2009 17:33:51 #

Taylan Kartum

Bu işe niyetlenmen bile beni çok mutlu etti Emre. Daha önce de dediğim gibi yazılım ve programlama konusunu işin içinde aktif olarak çalışan birinden dinlemek bizlere çok şey katacaktır.

Şimdiden teşekkür ederim...

Taylan Kartum Turkey | Reply

15.12.2010 13:44:59 #

ak.zoom

  Functional Programming , Structured Programming , Logical Programming , Object Oriented Programming ve Esoteric Programming dilleri kapsamındaki paylaşım aydınlatıcı oldu.

ak.zoom Turkey | Reply

Yorum ekle


(Gravatar simgesini gösterecek)

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading



Son Yorumlar

Comment RSS