Programlamaya Nereden Başlamalı | Volkan Aktaş
Genel Yazılar ››
Volkan AKTAŞGenel Yazılar4 Yorum31 Ocak 2014
Bu konuda sıklıkla soru geldiği için bu konuda uzun zaman önce yazmış olduğum bir yazıyı bloğuma eklemeye karar verdim.
Öncelikle işe programlama dillerini genel olarak bir gruplandırma yaparak başlamak istiyorum; Programlama dillerini genel olarak makine diline yakın olup olmadığına şu şekilde gruplara ayırabiliriz. Bu noktada şunu belirteyim düşük ve yüksek seviyeli olarak 2 şekilde gruplandırılır şeklinde bir görüş olduğu gibi, düşük, orta, yüksek ve en yüksek seviyeli 4 şekilde gruplandırılır şeklinde bir görüşte mevcuttur. Ben ikinci şıkkı tercih ediyorum.
Önce şunu belirtelim, makine dili nedir?
Makine dili; 0 ve 1’ler den oluşan ve bilgisayar sisteminin içyapısında bilgisayarı oluşturan bileşenlerin birbiri ile iletişiminde kullanılan dildir.
1)Düşük Seviye Programlama Dilleri
Makine diline en yakın olan dil Assembly dilidir. Kısa komutlardan ve tanımlamalardan oluşur.
2)Orta Seviyeli Programlama Dilleri
Bu tür dillerde artık komutlar daha anlaşılır hale gelmiştir. Örneğin C Dili gibi.
3)Yüksek Seviye Programlama Dilleri
Komutların daha anlaşılır olduğu, ancak bilgisayar tarafından daha az anlaşılır olduğu ve yazılan programların daha yavaş çalıştığı dillerdir. Örneğin Pascal ve Basic dilleri gibi.
4)En Yüksek Seviye Programlama Dilleri
Artık yazılan programların daha anlaşılır olmasının yanında programcının görsel ortamı da kullanarak hazır bileşen ve kontrollerle program yazmasının kolaylaştırıldığı programlama dilleridir. Örneğin Visual Basic, C#, Delphi gibi.
Buradan sonuç olarak şu çıkarımı yapabiliriz:
Düşük seviyeli dillerin kaynak kodları uzundur, programcı tarafından daha zor anlaşılırlar ancak bilgisayar sistemi tarafından daha hızlı anlaşılırlar, bu dillerle yazılan programlar daha hızlı çalışırlar.
Yüksek seviyeli dillerin kaynak kodları kısadır, programcı tarafından daha kolay anlaşılırlar ancak bilgisayar sistemi tarafından daha geç anlaşılırlar, bu dillerle yazılan programlar daha yavaş çalışırlar.
Programlama dillerinin türlerinden sonra sıra en çok sorulan sorulardan birine geldi.
“Programlamaya nereden başlamalıyız?” Bence bundan önce şunu sormak gereklidir. Ben programlarımı hangi platform ya da platformlar için yazmak istiyorum. Ya da platform bağımsız programlar mı yazmak istiyorum.
Eğer Linux tabanlı programlamayı tercih edecekseniz, C, C++ dillerini tercih edebilirsiniz. Bu noktada bir iki alternatif daha var;
-MONO: .NET programlama dillerinin Linux altında çalışması için geliştirilmiş bir platformdur. Halen geliştirilmekte olan bir platformdur. Bu nedenle bu platform ile yazacağınız programların Linux ile %100 uyumlu olacağının söylemek henüz erken olur.
-KYLIX: Delphi dilinde yazılan uygulamaları Linux ortamına taşıyabilmek ve Linux ortamı için program üretebilmek için Delphi programlama dilinin linux’a uyarlanmış halidir. Kullanım oranı düşüktür.
PYTHON: Hem Linux hem de Windows platformlarda program yazabileceğiniz bir programlama dilidir. Ancak ağırlıklı olarak Linux sistemlerde kullanılmaktadır. Örneğin pardus işletim sistemini meydana getiren birçok bileşen python ile yazılmıştır.
Bundan sonraki aşamada programcılığın hangi alt dalları ile ilgileneceğimize karar vermeliyiz.
Sistem programcısı mı, veri tabanı programcısı mı, grafik ve oyun programlama mı, web programcılığı mı, mobil programcılık mı?
Sistem programcılığından kast ettiğim cihaz sürücüsü yazmak, işletim sistemi bileşenleri, eklentileri gibi programlardır. Bu tip işlemlerin en güzel şekilde yapılabileceği diller C, C++, Visual C++, C#, Assembly gibi dillerdir. Çünkü bu diller sistem erişiminde kullanabileceğiniz gerekli bileşenler ya da kütüphanelere sahiptir.
Veri tabanı programcılığında ise piyasada çokça kullanılan muhasebe, müşteri takip, stok takip programları gibi programları kast etmekteyim. Belki de en kolay yazılabilen ve buna rağmen en çok tercih edilen programcılık dallarından biri budur. Çünkü müşteri kitlesi geniştir. Burada ise Visual Basic, Visual Basic.NET ve Delphi gibi dilleri tavsiye ederim. Çünkü bu dillerde bu tip programlar yazabilmeniz için gerekli string komutları, veri tabanı komutları ve bileşenleri mevcuttur ve bu dillerin öğrenimi diğer dillere göre daha kolaydır.
Grafik ve oyun programlamada ise yine sistem programlamadaki gibi C, C++, Visual C++, C# dillerini tavsiye ederim. Çünkü bu diller grafik ve oyun programlama için gerekli olan DirectX, OpenGL, XNA gibi gerekli olan kütüphanelere ve komut setlerine sahiptirler.
Mobil programlama da ise kullanılacak telefon platformuna bağlı olarak tercih yapılmalıdır. Windows Phone ile programlama yapıyorsanız Visual Basic .NET ya da C#, Android için Java veya C++, IPhone için de Object C dili öğrenmelisiniz. Burada masaüstü ya da web programlamada öğrenip kullanmış olduğunuz programlama dillerini tercih etmeniz sizi yeni bir öğrenme sürecinden kurtarıp, yapmış olduğunuz masaüstü ya da web uygulamalarının mobil ortama entegrasyon sürecini de kısaltacaktır. Örneğin C# ile masaüstü uygulaması geliştiren birisinin aynı uygulamayı Windows Phone ortamına entegrasyonu daha kolay olacaktır.
Platform bağımsız programlar yazmak için ise JAVA düşünülebilir. JAVA özellikle mobil uygulamalar için tasarlanmış ve geliştirilmeye başlanmış bir dildir.
Evet şimdi hangi platform ya da platformlar için program yazacağımıza karar verdikten sonra sıra geldi öğrenme aşamasında ne tür bir yol izlememiz gerektiğine. İlk olarak şunu söylemek istiyorum;
Yukarıda programlama dillerinden bir kısmının avantaj ve dezavantajlarını sıraladık. Şu soruyu kendimize sormalıyız: “Ben tek bir programlama dilini öğrenip bütün programlarımı onunla mı yapmalıyım, yoksa birden fazla programlama dili öğrenip projeleri onlarla mı yazmalıyım?” Ben burada ikinci şıkkı yani birden fazla programlama dili öğrenmeyi seçiyorum. Bu şekilde istenen projenin niteliğine göre en uygun programlama dilini seçip projeyi o dille gerçekleştiriyorum. Bir veri tabanı projesini VB. NET ile yapmak bana daha elverişli geliyor. VB.NET’in string komut imkânları daha geniş ve veri tabanı erişimi için sağladığı imkânlar da yeterli iken örneğin C dilini burada kullanmak işimizi ziyadesi ile uzatacaktır. Hız gerektiren bir internet uygulamasında ise Perl ya da python gibi bir dil kullanmak yerine VB. NET ile gerçekleştirmeye kalkmak ise programın yavaş ve hantal çalışmasına neden olacaktır. Sonuç olarak fanatik olup da bir tek dili takım tutar gibi tutmaya gerek yok.
Öğretim yöntemine gelince bence bir dili ya da o dilin komutlarını tamamıyla öğrenmeden önce başlangıç aşamasında algoritmayı öğrenmeli ve algoritmayı bize kavratacak örnekler ve sorular çözmeliyiz. Örneğin bir web browser programı yapmaktan çok daha fazla bize programlama mantığı ve algoritmasını kavratacak olan örnek klavyeden girilen bir sayının faktöriyelini ya da karekökünü bulan program olacaktır. İkincisi kod olarak belki birincisinden çok daha kısa olacaktır ancak bize kazandıracağı çok daha fazla olacaktır. Program yazmanın başlangıç aşamasında çözeceğimiz bu tür problemler bizim kavramlar arasında ilişki kurma, program yapısını kurma, mantıksal bağlantılar ve çıkarımlar yapma gibi becerilerimizi geliştirmeyi sağlayacaktır. Bana göre bir programın algoritmasını kurmak programın % 90’ını, kodlamasını yapmak ise % 10’unu oluşturur. Bu aşamayı bitirip programcılık mantığını kavradıktan sonra artık yukarıda belirlediğimiz kriterler uygun olan dil ya da dillerin öğrenimine geçilebilir.”
Programlamaya Nereden Başlamalı Hakkında Yapılan Yorumlar
Ahmet Seyyah diyor ki:
Volkan Bey yazı için öncelikle teşekkür ederim.
Ben yıllarca teknolojiye olan merakım ve bir türlü yön veren olmadığı için kafamda bilgiler karma. Ben yazılımcı olmayı hobi olarak değil bir meslek olarak gördüğüm için artık bir yerden başlamam gerekiyor elimde kodlab ın bütün yayınları var sizin c# dahil. Şimdi benim amacım ilk etapta android için uygulama geliştirmek sonrasında windows ve ios. Şimdi java’dan denemeye başladım ama eğitimcinin hep yaptığı hata benimde bir türlü anlamadığım konu.
1.Programlama aşamaları nelerden oluşur.
2.Gördüğümüz konular nerde işimize yarayacak dahası nasıl birleştireceğiz.
3. Mesela bir oyun yapacağız grafikleri farklı bir programda mı kodlayıp oluşturacağız sonrasında oyunun programına dahil edeceğiz yoksa örneğin c++ ile visual studio içinde bunu yapabiliriz.
4. Ben oluşturduğum kodları Derleme denilen özellik bir tuşla mı oluyor yoksa kodlama sürecinde ki gibi zahmetli mi?
5. c# ile yaptığım kodları derleyip örneğin android için uygulama geliştirmede kullanabilir miyim?
Volkan AKTAŞ diyor ki:
07 Nisan 2014, 17:47
1. Programlamada öncelikle temel konuları (değişkenler, kontrol yapıları, döngüler, diziler gibi…) öğrenmenizi tavsiye ederim. Daha sonra bu konularda algoritmanızı geliştirecek bol örnek uygulama yapın. Yaptığınız örnekleri farklı hallere çevirerek uygulamalar yapın. Daha sonra kendiniz için ufak uygulamalar yapın (hesap makinesi, resim gösterici, mail ve link tarayıcı vs. gibi). Sonraki aşamada ise başkalarının bulunduğu yazılım projelerinde yer alarak kendinizi geliştirin.
2. 1. nin içinde bu cevap da mevcut.
3. Kullandığınız oyun geliştirme ortamına göre değişir ama genellikle arayüz ve grafikler farklı tasarım programlarında kodlama ise farklı ortamda olur. unity adlı oyun geliştirme motorunu tavsiye edebilirim. İnternette örneğin c# ya da c++ ile örnekleri mevcut.
4. Derleme işlemi Visual Studio içerisinde bir tuş ya da menü ile olur (Debug menüsü ya da F5 tuşu)
5. C# ile android uygulaması geliştirmek için Xamarin adlı SDK’yı indirip kullanabilirsiniz.
07 Nisan 2014, 21:23
Şimdi ben javadan başladım asıl sorun şu diziler, döngüler vs konularını anlatıyor ama bunu uygulamada göstermiyorlar veyahut diyelim konu tamamen bittikten sonra anlaşılması için uygulama yok. Misal bir web sitesi tasarlyacaksak html, css ‘e php den önce sahip olmak lazım. Lakin ben meseala sayfanın görüntüsünü oluşturacaksam html lazım. Biraz daha detay yapmak gerekirse üst menu şu boyutta olsun onuda falan kod ile ayarlarım.Yazar bana değişken vermiş console’da çıkan değeri gösteriyor. Motor,ayna, tekerlek bunlar tek başına anlam ifade etmez ama bu motor arabanın ana merkezidir kalbidir, bu motor ile arabamız çalışır bu bize her zaman lazım olacak, bu ayna aracı kullanırken sağı solu arkamızı görmemizi sağlar vs.. Şimdi saygıdeğer hocam biz bu PROGRAMALAMA MANTIĞINI NASIL YUTACAĞIZ. Saygılar
12 Nisan 2014, 06:19
Programlama mantığı en iyi, string işlemleri, diziler, kontrol yapıları, döngüler, metodlar konularıyla kavranılır. Bu konularda bol bol örnek uygulama yapmanız lazım. Bu konulardaki örnekler kısa ve başlangıçta işe yaramaz gibi gelebilir size ama sabırlı olmak lazım. Temelleri iyi kavradıktan sonra nesneye yönelik programlama konularına (kalıtım, miras, metodların aşırı yüklenmesi gibi konular) çalışabilirsiniz. Daha sonra uzun kod satırlarına sahip uygulamalara geçiş yapmanız daha sağlıklı olur bence.
Programlamaya Nereden Başlamalı Hakkında Yorum Yaz
Kitaplarım - 26.702 Tıklanma
HER YÖNÜYLE C# 5.0 | Volkan AKTAŞ - 23.329 Tıklanma
Hakkımda - 21.590 Tıklanma
Xamarin Nedir ? - 19.587 Tıklanma
Programlamaya Nereden Başlamalı - 11.057 Tıklanma
Netduino ve WPF İle Direnç Ölçme - 8.064 Tıklanma
Projelerim - 7.479 Tıklanma
Videolarım - 7.211 Tıklanma
Netduino Nedir? - 6.713 Tıklanma
Raspberry Pi GPIO (Giriş/Çıkış) Portları - 6.070 Tıklanma