Garanti ediyorum bu rehberi okuduktan sonra yazılıma nereden başlamalıyım ile ilgili kafanızda soru işareti kalmayacak.

Nereden başlamalı bu yazılıma hadi gelin beraberce inceleyelim..

Son dönemlerde oldukça revaçta olan mesleklerden biri Yazılım geliştiriciliği… Oldukça fazla dala ayrılır. Eğer siz de hangi nedenle olursa olsun gerek hobi, gerek iş, yazılıma bir yerden başlamak istiyorsanız ama bunu nasıl yapacağınızı bilmiyorsanız işte bu yazı tam da size göre.

Yazılım yukarıda da belirttiğimiz gibi oldukça fazla dala ayrılır. Bu dallara birkaç örnek vermek gerekirse, bunlar arasında Mobil uygulama-oyun geliştirmek, web araçları ve siteleri geliştirmek, robotik kodlama, yapay zeka geliştirme, veri yönetmek ve veritabanı tasarlamak vb. örnekler verilebilir.

İlk yapmanız gereken ise sizin ilginizi hangi alan çekiyor , hangi alanda uzmanlaşmak istiyorsunuz bunu belirlemek… Bu yazımızda üstte verdiğimiz 5 örneği baz alarak konuşacağız. Hangi dili öğrenmek istediğinizi seçtikten sonra,doğrudan o alanda çalışmaya başlamadan önce algoritma öğrenmeniz gerekiyor.

Algoritma basitçe anlatmak gerekirse, bir sorunu çözmek için kullanılan basamaklar bütünüdür.

Algoritma Örneği:

Algoritma basitçe anlatmak gerekirse Bir sorunu çözmek için kullanılan basamaklar bütünüdür.

Hadi bir örnek verelim: Siz, kullanıcının size verdiği girdi ile yaşının 18 den büyük veya küçük oluğunu çıktı olarak veren bir program yazmak istiyorsunuz. Bunun içim nasıl bir algoritma kurmalıyız hadi inceleyelim..

Öncelikle kullancıdan bir girdiye ihtiyacımız var, bu doğum tarihi veya direk yaş olarak değişkenlik gösterebilir. Biz yaş üzerinden devam edelim. Kullanıcıdan yaş inputumuzu aldıktan sonra, bu girdiyi kontrol etmemiz gerekiyor. Eğer yaşı 18 den büyükse yaşınız 18 den büyük küçüse yaşınız 18 den küçük çıktısını vermemiz gerekiyor. Bunun için ilk önce bize verdiği inputa bir değer atamalıyız, örenğin: “yas” değerini atadık. Kullanıcı ne değer girerse girsin, artık bu bizim “yas” değişkenimizin üzerine yazılacak. Bundan sonraki adımımız ise “yas” değişkenini kontrol etmek olmalı. Bunu için ise eğer fonksiyonunu kullanabiliriz eğer “yas” 18 den büyük ise şunu yaz eğer “yas” 18 den büyükse şunu yaz şeklinde bir algoritma oluşturabilirz.

yazılım
Elimizde sonuç olarak böyle bir algoritma oluştu

Algoritmanın Önemi:

Bütün programlama değerleri algoritmalar üzerine kuruludur. Siz algoritmayı ne kadar iyi öğrenirseniz, programlama dillerini öğrenmeniz de o kadar kolaylaşır. Çünkü neredeyse bütün dillerde algoritma aynıdır, değişkenlik gösteren “Syntax’ler” yani o dilin yazım biçimidir. Dolayısıyla ilk işimiz algoritmayı mükemmel şekilde öğrenmek bunun için size verebileceğim öneri ise hangi alanda uzmanlaşmak istiyorsanız isteyin. Öncelikle Syntaxi basit olan bir dil öğrenmeye başlayın ve bu dili öğrenirken bol bol proje üretmeye çalışın. Bu sizin algoritma geliştirme becerinizi kayda değer biçimde geliştirecektir. Basit Syntax’li dillere ise Python veya C grubu dillerden örnek verebiliriz. Ben zamanında programlamaya Python ile başlamıştım size de öneririm başlangıç için bulunmaz bir nimettir ve kullanım alanı çok geniştir Python’da gelişirseniz istediğiniz çoğu şeyi yapabilirsiniz.

Artık alan seçmeliyiz:

Gelim alanlara artık algoritmayı öğrendiniz ve bir programlama dili biliyorsunuz tam da bu anda bir alan seçmelisiniz. Gelin tek tek hangi alanda gelişmek istiyorsanız ne yapmalısınız bunu inceleyelim.

Mobil uygulama-oyun geliştirmek:

C++

Oyun geliştirmek için kullanılan diller: C ++ size nesne yönelimli programlamanın temellerini öğretecek olan üst düzey bir dil olduğundan, bunu öğrenmek iyi bir fikirdir. Ayrıca en büyük konsolu ve Windows oyunlarını oluşturmak için kullanılan dildir. C ++ bu oyunlarda C ve düşük seviyeli motor modülleri oluşturmak için assembly dilleri  ile tamamlanmaktadır. Python , Lua , UnrealScript gibi komut dosyaları veya bazı şirket içi komut dosyaları kod içinde işleyecektir. Ayrıca,  OpenGL veya benzer bir framework kullanır .

C #

C # ‘nın yararı XNA çerçevesinde yatmaktadır . Bu, Microsoft tarafından Xbox’taki veya Windows platformlarındaki oyunlar için özellikle uygun olan bir dizi araç ve çalışma ortamıdır. Fakat eğer C # ile C ++ ‘yı karşılaştırırsanız, C ++’ nın size parametreler, hafıza yönetimi vb. Üzerinde çok fazla kontrol sağladığını fark edersiniz.

Öte yandan, C #, otomatik vites bir araba sürmek gibi. Unity gibi bir oyun motorunda, kodladığınız dildir C#’dır.Ancak motorun çekirdeğinde C ++ vardır. Bir anlamda, sizin için yaratılan bileşenleri kullanarak, çerçeve içinde çalışmak zorundasınız. Bu nedenle, bir oyun motorunu kullanmak bir şekilde sınırlayıcı olabilir, çünkü motordaki tüm oyunlar benzer görünecektir.

Java

Oyun programcıları da genellikle Java kullanır, çünkü Java çoklu okuma ve soketleri destekler. Çoklu okuma, daha az bellek kullanır ve yoğun işlemler arka planda çalışırken kullanıcıyı engellemeden kullanılabilir CPU’dan en iyi şekilde yararlanır. Soketler, çok oyunculu oyunların oluşturulmasında yardımcı olur. Ayrıca, Java sanal bir makinede çalışır, böylece oyunun dağıtılması daha kolay olur.

Mobil cihazlar için Angry Birds Chrome gibi oyunlar yapmak için Java kullanıldı. Ayrıca , bağımsız şirketlerin Aveyond serisi, Barkley ve Eternal Eden gibi RPG oyunları yapmak için kullandıkları RPG Maker motorunu da destekliyor veriyor .

Web Geliştirme:

Web geliştirmeyi frontend ve backend olarak ikiye ayırabiliriz. Aslında bunları “web tasarım” ve “web geliştirme” olarak tanımlayabilriz. Web sektörüne uzak olan kişilere bu terimler karışık gibi gelse de aralarındaki fark asılnda çok basittir. En basit şekilde açıklamak gerekirse, Frontend bir web sitesine girdiğinizde karşınıza çıkan tasarım ve etkileşime geçtiğiniz bölümlerdir backend ise bu işin arkaplanında dönen altyapı ve server geliştirme aşamasıdır. Bir web projesi geliştirirken, HTML, CSS, JS, PHP, Python, Ruby, ASP, XML  gibi diller web teknolojilerine örnektir. Bu dilleri frontend ve backend teknolojileri altında iki kategoride toplayabiliriz. Web tasarım için frontend teknolojileri kullanırız. Bunlar HTML,CSS,JS gibi  betik dilleridir. Bu diller sunucu tarafında çalışmazlar.Bu dilleri direkt olarak tarayıcı tarafında çalıştırabilirsiniz. Şimdi bu diller nasıl kullanılır ve ne işe yarar onlara bakalım.

HTML

Açılımı Hypertext Markup Language( Hiper Metin İşaretleme Dili ) olan web sayfası oluşturmak için kullanılan işaretleme dilidir. Bunu bir maket iskeletin parçalarını kullanarak iskeleti oluşturma ile doğrudan ilişkilendirebiliriz. Birçok kişi bunu dil olarak kabul etmemektedir. Fakat html olmadan çalışan bir web uygulaması göremezsiniz.

CSS

açılımı Cascading Style Sheets( Basamaklı Stil Şablonları) olan ve html yapıları üzerinde renk, boyut, konumlandırma gibi özellikleri ayarlayan bir web teknolojisidir. Bunu da Html ile  oluşturduğumuz iskete bir kıyafet giydirmek gibi ona güzel bir görüntü vermek için yapılan işlemler olarak düşünebiliriz.

JS

Açılımı Javascript olan web sayfalarında dinamik alanlar ve sayfaya hareketli bölümler oluşturabilmek için kullanılan bir betik dilidir.

Bu dil istemci tarafından yani bir tarayıcı tarafından yorumlanır.Bunu Html ve Css ile oluşturduğumuz iskete hareketlilik katmak gibi düşünebiliriz.

Robotik kodlama:

Artık yaptığımız her işin içerinde siz farkında olasanız da çeşit çeşit robot var ve gün geçtikçe de hayatımıza dahil olmaya devam ediyorlar. Buna bir otomasyon sisteminden, mixere, arabalara fırınlara, trafik ışıklarına kadar bir çok örnek verebiliriz. Peki nasıl kodlanıyor bu robotlar.

Robotik kodlamada genlede Ardunio ve Raspberry Pi gibi araçlar kullanırız. Bunlarla beraber örneğin  bir Ardunio kodlayacaksanız sadece dili bilmeniz yeterli değil kodlayacağınız şeye göre bir Ardunio kartı ve teçhizatlara ihtiyacınız var. Unutmayın robotik uçsuz bucaksız bir dal. Aklınıza gelen her şeyi robotik ile kodlayabilrisiniz.

Yapay Zeka (Machine Learning):

Yapay zeka günümüzde sadece yazılım için değil nerdeyse tüm sektörler için mihenk taşı haline geldi. Günümüzde makine öğrenmesi ile çeşit çeşit yapılabilirken gelecekte çok daha ileri boyutlar kazanacağına inanılıyor o yüzden bu listede gelceğe dair en iyi yatırım yapay zeka programlamayı öğrenmek olabilir.

Yapay zekada kullanılan dillere birkaç örnek

Python

Sadeliği sebebiyle Python, yapay zeka için en ideal programlama dili olarak görülüyor. Söz dizimi basit olan ve kolay öğrenilebilen Python, yapay zeka algoritmalarının uygulanması için de son derece uygun. Nesne yönelimli, fonksiyonel ve prosedür yönelimli programlamayı destekliyor. Çok sayıda kütüphane, bu konuda yazılımcıların işini kolaylaştırarak Python’ı daha da ideal bir dil haline getiriyor. Örneğin, NumPy, bilimsel hesaplamalar konusunda yardımcı olurken PyBrain, makine öğrenmesi için kullanılıyor.

Java

Java, yapay zeka geliştirmek için oldukça iyi bir seçim olabilir. Çünkü bu alanda arama algoritmaları, yapay nöral ağlar ve genetik programlama kullanmanız gerekecek. Tüm bu işler için Java biçilmiş kaftan.

Java, kolay kullanım, debugging kolaylığı, paket servisleri ve büyük ölçekli projelerde sadeleştirme, verinin grafik sunumu ve başarılı kullanıcı etkileşimi gibi avantajlar sunuyor.

Tam bu esnada yazımızın sonuna gelmiş bulunmaktayız. Size dilim döndüğünce ve deneyimlerime dayanarak bir rehber oluşturmaya çalıştım. En başta hatırlarsanız size Pythonu önermiştim. Şimdi okuduklarınıza dönün bir bakın nerdeyse hepsinde Python bir şekilde kullanılıyor. Ne kadar geniş kullanım allanları olduğunu anladığınızı düşünüyorum. Umarım bu yazıyı  okuduktan sonra kafanızda yazılıma nasıl başlamalıyım ile ilgili bir soru işareti kalmamıştır. Eğer merak ettiğiniz veya anlamadığınız bir şey varsa yorumlar bölümünde belirtebilrisiniz. Bilgim dahilinde yardımcı olmaya çalışırım. Bu yazı sıfırdan sizin için Kodcular.net ekibi tarfından hazırlanmıştır.