Programlamaya Nereden Başlamalıyım - Rehber

ihan3t

Kadim Üye
7 Şub 2012
5,018
24
Merhaba arkadaşlar, bu yazımda yardım merkezinde sıkça konusu açılan ve her yeni başlayanın kafasında soru işaretlerinin oluştuğu konuya değineceğim : "Yazılım Dilleri".​

Sizlere "yazılım dili" "programlama dili" nedir diye bir açıklama yapmayacağım, zaten bu yola giren kişilerin bahsettiğimiz konu hakkında temel bilgisi mevcuttur diye düşünüyorum. Eğer kafasında soru işaretleri olan varsa öncelikle "yazılım" "programlama" kavramlarını araştırsın.

Daha önceki konumda (http://www.turkhackteam.org/web-pro...-nereden-baslamaliyim-rehber-niteliginde.html) belirttiğim gibi "programlama nereden başlamalıyım" sorusu ardından bazı sorular getirir, ve bu soruların cevapları olmadan size "al şu dilden başla" "şu dili öğren sonra şuna geçersin" "şu dil en iyisi" gibi verilen cevaplar safsatadan ibarettir.

Programlama çat diye başlanmaz arkadaşlar, tamam programlama öğrenmeye karar verirsiniz, ama "şu şu işlere yönelik" programlama öğrenirsiniz. Örneğin kendinize dersiniz ki "ben web programlama öğrenicem web siteleri yapıcam" buna yönelik öğrenirsiniz. Veya bir dili çok seviyorsunuzdur örneğin "ben java dilini öğrenicem" veya "ben c# dilini öğrenicem" dersiniz daha sonra bu dile ait teknolojileri öğrenirsiniz.

Buna rağmen programalama-yazılım öğrenirken öğrenilmesi gereken mutlak temel kavramlar vardır. Değişkenler, döngüler, fonksiyonlar, karar yapıları, veri tipleri.. Ayrıca öğrenilmesi gereken programlama yaklaşımı vardır ki olmazsa olmazı OOP dir.

Az önce bahsettiğim "ben web programlama öğrenicem" diye karar verdikten sonra "ben c# ile öğrenicem" dediğinizde (burada verilen diller tarafsızca sadece akla gelen örneklerdir , c# veya java veya herhangi başka bir dilin propagandasını yapmıyorum yanlış anlaşılma olmasın !) direk web sitesi için neler gereklidir "session nedir" "sanal pos nasıl yapılır" gibi şeylerden önce temel kavramları öğrenirsiniz. Bunun yanında "algoritma" öğrenirsiniz, OOP bilginizde yeterli seviyeye gelikten sonra kariyer seçtiğiniz alana girişmeye başlarsınız.

Şimdik kısaca bahsettiğim kavramlar ve ön bilgiden sonra asıl meseleye gelelim. "Hangi dili seçmeliyim ?", deminde söylediğim gibi bu soru peşinde cevaplanması gereken sorular getirir. Şimdi bu soruları sıralayalım :

1-) Hangi alanda ilerlemek istiyorsunuz ?

I. Masaüstü
II. Web
III. Mobil

2-) Açık kaynak yazılım mı istiyorsunuz ?

3-) Platform bağımsız olmalı mı ?

4-) Hobi amaçlı mı yoksa kariyer hedefli mi öğreneceksiniz ?

Sorular daha fazla derinleştirilebilir fakat gerek yok. Örneğin web programlama istiyorsunuz dil seçeceksiniz Türkiye şartlarında mı dünya genelinde mi vs vs gibi fakat o kadarda fazla etkilemeyecektir cevapları, bu soruların derinliği bir kaç soru bir araya geldiğinde ortaya çıkar. Zaten o kadar ileriyi düşünüyorsanız zaman geçtikçe kariyeriniz belirlenecektir.

Şimdi 1. soruya dikkat çekmek istiyorum . Bir yazılım dili seçmeden önce en önemli etken hangi alana yönelmek istediğinizdir, ben forumda çok rastlıyorum adam kendi kafasında takılcak merak salmış bir kaç masaüstü uygulama yapcak cevaplar geliyor yok c++ öğren c öğren ya kardeşim bu kişi zaten acemi visual studio yu bile açtığında gözlerine perde inecek kalbi yerinden oynayacak sen bir de neden bu adama üzerinde profesyonelleşmesi yıllar yıllar alan diller öneriyorsun ki bu adamın işine bile yaramayacak. Tamam c/c++ yaygın kullanılan gücü tartışılamaz diller fakat "ihtiyaç sahibinin amacına yönelik değil".

Şimdi şöyle bir değerlendirme yapalım , kişi programlama öğrenmek istiyor, ama nereden başlayacağını bilemiyor. Diğer tarafta programlama bir şekilde atılmış üç beş şey sağdan soldan öğrenmiş!(veyahut ezberlemiş) hazır kodlar üzerinden editleme yapıp spagetti kod yazmaya çalışan kişi gelip adama "şu dile başla sonra şuna geç şunuda yap bunuda et" diyor. Sizce bu kişiyi dinlemek matıklı mı ? Daha kendine hayrı yokken..

Benim bir arkadaşımın söylediği bir söz vardır bunu size aktarmak istiyorum : "Bir tarlayı 20 farklı yerinden 1 er metre kazacağına , tek bir yerini 20 metre kaz, hiç değilse su çıkartırsın."
Aynen öyle arkadaşlar, şu dile biraz bakayım şunada bakayım sonra şuna geçeyim derseniz bu iş olmaz. Bu işin kuralı budur. Tek bir dile yoğunlaşmanız gerekir , eğer ki profesyonel olmak istiyorsanız.

He diyenler olursa ki , "e peki sadece tek dil mi öğrenilir bu millet farklı farklı diller biliyor nasıl olacak bu iş ?" bir kişi birden fazla dil "bilebilir" ama sadece birinde uzman olabilir. "E peki o adamlar nasıl bir dilden diğerine geçebiliyor, onlar yapıyorsa biz neden yapmıyoruz ?", o adamlar önce bir dilde belirli bir seviyeye geliyorlar daha sonra ihtiyaçtan dolayı farklı bir dili teknolojiyi kullanmak zorunda kalıyorlar.
Arkadaşlar zaten bir dili öğrendikten sonra daha doğrusu programlama mantığını oluşturduktan sonra , bildiğiniz bir dilde olduktan sonra farklı bir dile geçmek o kadarda zor değil.

Her neyse konu dağıldı hafiften toparlayalım meraklı arkadaşlarda sıkılmadan izleyecekleri yolu anlatalım dilimizden geldiğince.

Arkadaşlar zaten konu başında da bahsettim web programlama isteyen arkadaşlara, verdiğim linkteki konuyu okuyabilirler. Bunun dışında "masaüstü programlama" isteyen arkadaşlar sadece hobi amaçlı meraktan sardıysanız bu işe, c# ve vb.net gerçekten sizin gibiler için biçilmiş kaftan gerek sürükle bırak tasarım imkanı gerek bolca Türkçe kaynak olsun öğrenmesi kolay olsun diyorsanız bu diller sizin için uygundur.

Diyorsanız ki ya ben kararsızım programlama öğreniyim ama ilerde webe de yönelebilirim öyle bir şey olsun ki hepsine birden yazabileyim öğrendiğim boşa gitmesin; c# - java bu ikisi arasında seçim yapmalısınız. Çünkü ikisi ilede masaüstü-web-mobil programlama yapılabiliyor. Eğer ki ben android taraflı mobil düşünüyorum derseniz hiç düşünmeden java seçebilirsiniz. Yok ben windowsphone kullanıcısıyım o taraflı geliştiricem derseniz tabiki c#. Ben mobil değilde web taraflı geliştiricem masaüstünden sonra diyorsanız : c# için web taraflı geliştirmede türkçe kaynak bolca bulabilirsiniz fakat java için neredeyse hiç yok. Yani eğer ingilizceniz yoksa javayı unutun arkadaşlar. Basılmış Türkçe kitaplarda bile ya şu kaynak tamamen yeterli diyebileceğim bir şey yok malesef. Yani bu konuda tercih sizin ikiside web taraflı yaygın kullanılan dillerden fakat yabancı dil mevzusu var. Ve java bir tık daha karmaşık çünkü çok fazla seçenek var elinizde.

Kimisi şey diyor "ya ben hack yapcam ona uygun bir dil öğrenmek istiyorum" . Buna ne denir ki şimdi ? Arkadaşım böyle bir şey söylüyorsan zaten konuya olduğunca yabancısındır, programlamayı bir kenara koy daha genel kavramlar hakkında bilgi sahibi ol. Hack o kadar geniş bir alandır ki . Şahsen ben "hacker" olmak isteseydim ya sistemci olurdum ya network taraflı kariyer yapardım. Hack alanında ilerlemek istiyorsanız kimse kusura bakmasın "lamerliği" bir kenara bırakıp hazır programlarla kali linuxta gelen penetrasyon araçlarıyla uğraşmayı bırakıp , sistem veya network alanına sıfırdan başlayıp kendinizi geliştirin. Programlama dili konusuna gelirsek zaten ihtiyacınıza göre dil kullanırsınız, sistemci olcaksanız c/c++ kaçınılmaz bir şey. Dilden ziyade bilmeniz gereken protokoller, işleyiş sistemleri vs var.

Ayrıca python dili exploit yazımında ve linux yönetiminde işlevsel bir dil, c ve c++ tan da daha kolay bir dil. Çok derine inmek istemeyenlere tavsiye edilir.​

Tabi her şeyden önce hangi alana yönelmek isterseniz isteyin yabancı dil şart arkadaşlar. Bu bir sabittir yazılımın dili ingilizcedir. Hele ki kariyer istiyorsanız yazılım olsun hack olsun ingilizce olmazsa olmaz. Neden diye soracak olursanız cevabı belli olmakla beraber alacağınız sertifikaların hepsinın eğitimi ve sınavı ingilizce odaklıdır.

Verebileceğim tavsiyeler, algoritma öğrenin arkadaşlar, algoritma şu değildir "bir program yapcam önce şunu yaparım sonra şunu yaparım tasarımı şöyle olur" bu algoritma değildir. Bu bir süreçtir. Algoritma örneğin graph gezme algoritmaları,sıralama algoritmaları , en kısa yol problemleri (basit bir soru gibi durulabilir kullanım alanlarını duysanız şaşarsınız), veri yapıları öğrenin mutlaka.


Yazıyı şöyle bir toparlayıp sonuna gelirsek, yazılım için hedefinizi belirleyin , size uygun dilleri araştırın yukarıda saydıklarım sadece en yaygınları ve kaynak olarak en bol olanları işinizi görmek için hızlı ve kullanımı kolay. İngilizce öğrenin, mutlaka ama mutlaka ingilizcenizi geliştirin. Programlamada temel kavramları sağlam bir şekilde öğrenin, OOP mimarisini iyice öğrenin, algoritma , veri yapılarını öğrenin. Bir dil üzerine yoğunlaşıp uzmanlaşmaya çalışın. İlerledikçe zaten kendi yolunuzu çizmiş olacaksınız o saatten sonra "dil" in bir önemi olmayacak arkadaşlar.

Konumuzda fark ettiyseniz alın şu dili kullanın mantığından ziyade programlamaya nasıl başlayacağınız nasıl ilerleyeceğinizi anlattım. Dil bir şekilde öğrenilir, önemli olan "yazılım" öğrenebilmek.

Hepinize iyi çalışmalar dilerim umarım kafasında soru işareti olan arkadaşlara faydalı olur.
 
Son düzenleme:

kankurus09

Yeni üye
19 Ağu 2011
16
0
eyvallah ustad agzına saglık bir nebzede olsa kafamızdaki karanlıga aydınlık oldun nereye yöneleceğimizden çok neye ihtiyacımız oldugunu söyledin sağolasın
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.