Rehber Yazılıma nereden başlanır?

Selamlar. Artık son zamanlarda her gün 10 defa aynı tip nereden, nasıl başlanır? Konularının açılmasından ve insanların yasak döneminde programlamaya ilgisinin artmasından dolayı kendi çapımda ufak bir rehber hazırlamak istedim. Burada sadece öğrenmeniz gereken şeyleri ve bazıları için yardımcı olacak tavsiye ettiğim bağlantılar ekleyeceğim, bunun dışındakilerin tamamını Google üzerinden çok basit bir şekilde bulabilirsiniz. Konuyu çok fazla uzatmadan madde madde anlatmaya başlayalım.

1) İngilizce

Kesinlikle programlamaya başlamadan önce ilk yapmanız gereken şey en azından okuduğunuzu anlayabilecek, teknik dokümanları takip edebilecek bir seviyede İngilizce bilmeniz.

* Nereden öğrenebilirim?
- Ücretsiz dil öğren
- İngilizce A-Z™ (2020) | Elif Hoca'nın Keyifli Anlatımıyla!
- Özel Ders Formatında Sıfırdan Zirveye İngilizce Eğitim Seti
- Sıfırdan İleri Seviyeye İngilizce Eğitim Seti

2) Bilgisayar bilimleri

İngilizce öğrendikten sonra yapmanız gereken şey bilgisayarın temel çalışma prensiplerini, veri yapılarını, programlamanın ne olduğunu ve nasıl çalıştığı gibi basit teknik kısımları öğrenmeniz gerekiyor.

* Neleri öğrenmem gerekir?
- Bilgisayar, yazılım, donanım nedir ve nasıl çalışır.
- I/O nedir?
- Algoritma, program, programlama, programlama dili nedir?
- Bilgisayar nasıl çalışır.
- CPU, RAM, HDD/SSD, Çevre birimleri(Peripherals), İşletim sistemi nedir?
- Yazılım seviyeleri(Low Level, High Level) nedir?
- Yazılım geliştirme nedir?
- Derleyici, yorumlayıcı nedir?
- Yazılım geliştirme aşamaları(Sistem analizi, Sistem tasarımı, Algoritma, Akış şeması, Kodlama, derleme, bağlama(Linking), Çalıştırma/Test, dokümantasyon, servis) ve yaşam döngüsü nedir ve nasıl hazırlanır.
- Hata yakalama/hata ayıklama nedir ve ne işe yarar.
- Yazım hatası(Syntax error) nedir?
- Çalışma zamanı hatası(Run-time error) nedir?
- Mantık hatası(Logic error) nedir?
- Bug nedir, Debug nedir ve nasıl yapılır?
- Sözde(Pseudo) kod nedir ve nasıl yazılır?
- Sözdizimi(Syntax) nedir?
- Değişken(Variable) nedir?
- Veri tipleri(Data types) nelerdir.
- Operatör nedir?
- Şartlı ifadeler(Conditional Statements) nedir?
- Döngüler(Loops) nedir?
- Derleme(Compiling) nedir?
- Derleme aşamaları(Pre-Preprocessing, Compiling, Assembling, Linking) nedir?
- Kütüphane(Library), Altyapı(Framework), API, ABI nedir?
- Fonksiyon nedir?
- İşlev sözdizimi(Function syntax) nedir?
- Komut satırı nedir, Komut satırı argümanları nelerdir.
- Başlangıç noktası(Entrypoint) nedir?
- Çıkış kodu(Exit code) nedir?
- Kapsam(Scope) ve Global scope nedir?
- Dizi(Array), String nedir?
- Yorum satırı nedir?
- Versiyon kontrol sistemi nedir, Git nedir?
- OOP nedir?
- Sürekli entegrasyon(Continuous integration) nedir?

* Bunlar dışında öğreneceğiniz dillere bağlı olarak bazı yazılım kavramlarını da öğrenmeniz gerekebilir.
- İnternet nedir?
- Domain, IP, DNS, TCP, HTTP nedir?
- Veritabanı nedir?
- Front-end, back-end, fullstack, devops nedir?
- CMS nedir?
- Hybrid aplikasyon nedir?
- Responsive design nedir?
- Cloud programming, SaaS, PaaS ve IaaS nedir?

- Hexadecimal nedir?
- İşaretleyici(Pointer) nedir?
- İstisna(Exception) nedir?
- Hafıza, Dinamik hafıza, Heap, Stack nedir?
- Çağrı yıyını(Call stack) nedir?
- Bağlı liste(linked list) nedir?
- Hash tablosu(Hash table) nedir?
- Dosya işareleyicisi(File pointer) nedir?
- Yapı(Structure) nedir?
- Stack, Queue nedir?

* Nereden öğrenebilirim?
- CS50's Introduction to Computer Science
- Basics of Computer Science Tutorial - Tutorialspoint
- Computer Programming Tutorial - Tutorialspoint
- Computer Fundamentals Tutorial - Tutorialspoint

3) Algoritma geliştirme
- Algoritma nedir?
- Algoritma ne işe yarar.
- Algoritma nasıl oluşturulur.
- Algoritma da nelere dikkat etmek gerekir.
- Temel yazılım algoritmaları(Linear Search, Binary Search, Bubble sort, Selection sort, Recursion, Merge Sort) nelerdir, nasıl çalışır ve ne işe yarar.

* Nereden öğrenebilirim?
- Data Structure and Algorithms Tutorial - Tutorialspoint

4) Buraya kadar öğrendikten sonra yapmanız gereken şey amacınıza hizmet edecek bir programlama dili belirlemek.
- Programlamaya yeni başladıysanız ve basit uygulamalar, scriptler ya da günlük kullanım için otomasyon uygulamaları yapmak istiyorsanız Python ya da GO dili ile başlayabilirsiniz.
- Oyun geliştirmek istiyorsanız en doğru tercih olarak hazır oyun motorları kullanmanız gerekecek bundan dolayı Unreal Engine için C++ dili, Unity için C# dili ile başlayabilirsiniz ya da kendine has diller kullanan Godot gibi motorları kullanabilirsiniz.
- Arayüz içeren masaüstü uygulamaları yapmak için C# ile başlayabilirsiniz.
- Genel olarak belirli bir amacınız yoksa, her konuda işinize yarayabilecek bir dil arıyorsanız C++ ya da Rust dili ile başlayabilirsiniz.
- Web programlama yapmak istiyorsanız; Frontend için HTML, CSS ve JavaScript, Backend için NodeJS, TypeScript, GO ya da PHP ile başlayabilirsiniz,
- Mobil programlamaya yönelmek istiyorsanız Kotlin, Swift ya da React Native ile başlayabilirsiniz.
- Yapay zeka ve makine öğrenmesi konusuna ilgi duyuyorsanız Python ya da R dili ile başlayabilirsiniz.
- Gömülü sistem ya da Çekirdek seviyesinde(İşletim sistemi, Donanım vs) geliştirmeye ilgi duyuyorsanız C dili ile başlayabilirsiniz.

Konuda eksik ya da yanlış bir şey görürseniz ya da eklemek istedikleriniz olursa etiketleyip yazarsanız düzeltirim.

Umarım yeni başlayacak ya da kendini geliştirmek isteyen kişiler için yardımcı olur.
 
Son düzenleme:
Hangi programlama diliyle basladiginin cok anlamsiz bir soru oldugu gercegini idrak ederek.
Yazilim, %99 oranda programlama dili agnostik bir alandir.
Dil sadece bilgisayara komut verdigin basit bir aractir.
Baslangic dilini cok onemli zannediyor cogu bilgisiz insan. 2 gunde yeni dil ogrenirsin.
 
Hangi programlama diliyle basladiginin cok anlamsiz bir soru oldugu gercegini idrak ederek.
Yazilim, %99 oranda programlama dili agnostik bir alandir.
Dil sadece bilgisayara komut verdigin basit bir aractir.
Baslangic dilini cok onemli zannediyor cogu bilgisiz insan. 2 gunde yeni dil ogrenirsin.
Burada benim bazı dilleri belirtme amacım dilin o alandaki kullanım yoğunluğu, kolaylığı ve kaynak miktarı gibi genel kriterleri karşılamasına göre yazdım yoksa kesinlikle doğru her dil ile her işlem yapılabilir ancak yapılmalı mı?

Yeni başlayacak kişilere daha basit bir anlatıma gidelebilir.

Ve en önemlisi sorulara cevap vermeli. Örneğin "Hangi dili öğrenmek lazım" tarzı bir soruya bu rehber cevap olamaz yani bu rehber hedef kitlesi nereden başlanır değil yeni öğrenmeye başlayanlar için tavsiyeler olmalı.
Tavsiyeniz nedir?
 
Burada benim bazı dilleri belirtme amacım dilin o alandaki kullanım yoğunluğu, kolaylığı ve kaynak miktarı gibi genel kriterleri karşılamasına göre yazdım yoksa kesinlikle doğru her dil ile her işlem yapılabilir ancak yapılmalı mı?


Tavsiyeniz nedir?

Rehberinize hedef kitle belirleyin ve öyle makale yazın.
 
Hedef kitle belli zaten makale de ne yanlış onu anlayamadım.

Eksikleri:
  1. Yazılım temeli ve mantığı yok.
  2. Hangi dil ne işe yarar yok.
  3. "Diller neden var?" yok.
  4. "Diller ile ne yapılır?" yok.
  5. "Yazılım öğrenmeye nereden başlanabilir?" yok.
Nereden başlanır yerine nasıl öğrenilir ve öğrenirken nerelere dikkat etmeli tarzı bir başlık kullansaydınız doğru olurdu.

Yani bu başlıkla konu alakasız bu başlıkta konuya giren bir insan hangi dili öğrenmeli sorusuna cevap bulmalıki yazılıma başlasın.
 
Eksikleri:
  1. Yazılım temeli ve mantığı yok.
  2. Hangi dil ne işe yarar yok.
  3. "Diller neden var?" yok.
  4. "Diller ile ne yapılır?" yok.
  5. "Yazılım öğrenmeye nereden başlanabilir?" yok.
Nereden başlanır yerine nasıl öğrenilir ve öğrenirken nerelere dikkat etmeli tarzı bir başlık kullansaydınız doğru olurdu.

Yani bu başlıkla konu alakasız bu başlıkta konuya giren bir insan hangi dili öğrenmeli sorusuna cevap bulmalıki yazılıma başlasın.

"Yazılıma nereden başlanır?" makalesinde dillerin amacını, hedefini, yazılım tanımı, temelini mi anlatmalıyım yani?
Hangi dilin ne işe yaradığını kısmen hangi alan için hangi dil seçilmeli şeklinde yazının sonunda belirttim zaten.
Google gibi bir kaynak varken ayrıca her konu için tek tek kaynak belirtmeyi doğru bulmuyorum şahsen.

Konu bence amacını karşılıyor, tavsiye için teşekkürler yinede.

Bir özel hoca yardımıyla öğrenmek mi daha kolay olur, yoksa internetten araştırarak mı?

Bu tamamen sizin nasıl öğrenmeye eğilimli olduğunuza kalmış bir şey kendi kendinize öğrenebilen biriyseniz yazılımın zaten en temel şeylerinden biri araştırmaktır, iki türlüde öğrenebilirsiniz.
 
"Yazılıma nereden başlanır?" makalesinde dillerin amacını, hedefini, yazılım tanımı, temelini mi anlatmalıyım yani?
Hangi dilin ne işe yaradığını kısmen hangi alan için hangi dil seçilmeli şeklinde yazının sonunda belirttim zaten.
Google gibi bir kaynak varken ayrıca her konu için tek tek kaynak belirtmeyi doğru bulmuyorum şahsen.

Konu bence amacını karşılıyor, tavsiye için teşekkürler yinede.

Senin konun "yazılım öğrenmeye nereden başlanır" sorusuna cevap veriyor.
"Yazılıma nereden başlanır" tarzı temel bir soruya cevap vermiyor.

Tek veya fazla kaynak vermene gerek yok kaynaklardan bak birleştir makaleni yaz sonra son olarak en yararlı olan kaynakları eklersin.
İyi bir şey için uğraşmak zorundasın.
 
Senin konun "yazılım öğrenmeye nereden başlanır" sorusuna cevap veriyor.
"Yazılıma nereden başlanır" tarzı temel bir soruya cevap vermiyor.

Tek veya fazla kaynak vermene gerek yok kaynaklardan bak birleştir makaleni yaz sonra son olarak en yararlı olan kaynakları eklersin.
İyi bir şey için uğraşmak zorundasın.

Kendi görüşümü belirttim hocam uzatmaya gerek yok, başlığın ya da makalenin yanlış olduğunu düşünüyorsanız konuyu rapor edin modaratörler ilgilenir.
 
Burada benim bazı dilleri belirtme amacım dilin o alandaki kullanım yoğunluğu, kolaylığı ve kaynak miktarı gibi genel kriterleri karşılamasına göre yazdım yoksa kesinlikle doğru her dil ile her işlem yapılabilir ancak yapılmalı mı?
Benim hatam.
Rehber konusuna yazinca sanki dillerin kullanim alani yokmus gibi algilanabilir olmus, halbuki tam tersi.
 

Geri
Yukarı