✅ Bir [Fibonacci dizisi](https://en.wikipedia.org/wiki/Fibonacci_number), 0 ve 1'den başlayarak her sayı kendinden önceki iki sayının toplamı olacak şekilde bir sayı kümesi olarak tanımlanır.
✅ Bir [Fibonacci dizisi](https://en.wikipedia.org/wiki/Fibonacci_number), 0 ve 1'den başlayarak her sayı kendinden önceki iki sayının toplamı olacak şekilde bir sayı kümesi olarak tanımlanır.
## Programın Bileşenleri
Bir programdaki tek bir talimat *ifade* (expression) olarak adlandırılır ve genellikle komutun nerede bittiğini veya *sonlandığını* (terminate) gösteren bir karaktere veya satır aralığına sahip olur. Bir programın nasıl sonlandırılacağı her programlama diline göre değişir.
Bir program içindeki ifadeler, talimatları yerine getirmek için kullanıcı tarafından veya başka bir yerden sağlanan verilere dayanabilir. Veriler bir programın nasıl davranacağını değiştirebilir, bu nedenle programlama dilleri verileri daha sonra kullanılmak üzere geçici olarak saklamak için bir yol sunar. Bunlara *değişkenler* denir. Değişkenler, bir cihaza verileri hafızasına kaydetmesi talimatını veren ifadelerdir. Programlardaki değişkenler cebirdeki değişkenlere benzer, kendine özgün bir adları vardır ve değerleri zaman içinde değişebilir.
Bazı ifadelerin bir cihaz tarafından yürütülmeme ihtimali vardır. Bu genellikle geliştirici tarafından yazıldığında tasarım gereği veya beklenmedik bir hata oluştuğunda kazara olur. Bir program üzerindeki bu tür bir kontrol, onu daha sağlam ve sürdürülebilir hale getirir. Tipik olarak, kontroldeki bu değişiklikler belirli koşullar karşılandığında gerçekleşir. Modern programlamada bir programın nasıl çalıştığını kontrol etmek için kullanılan yaygın bir deyim `if..else` deyimidir.
✅ Sonraki derslerde bu tür ifadeler hakkında daha fazla bilgi edineceksiniz.
> 🎥 Programlama Araçları hakkında bir video için yukarıdaki resme tıklayın (İngilizce)
Bu bölümde, profesyonel geliştirici yolculuğunuza başlarken çok faydalı bulabileceğiniz bazı yazılımlar hakkında bilgi edineceksiniz.
Bir **geliştirme ortamı**, bir geliştiricinin yazılım yazarken sıklıkla kullandığı benzersiz araçlar ve özellikler kümesidir.Bu araçlardan bazıları bir geliştiricinin özel ihtiyaçlarına, geliştiricinin işteki önceliklerine, kişisel projelerini değiştirmesi veya farklı bir programlama dili kullanması durumuna göre zaman içinde değişebilir. Geliştirme ortamları, onları kullanan geliştiriciler kadar benzersizdir.
## Metin Editörler
Yazılım geliştirme için en önemli araçlardan biri metin editörüdür. Editörler kodunuzu yazdığınız ve bazen de kodunuzu çalıştırdığınız yerdir.
Geliştiricilerin editörlere güveni ek olarak bu nedenlere de dayanır:
- *Hata ayıklama* (Debugging), kod üzerinde satır satır gezinerek hataların ortaya çıkarılmasına yardımcı olur. Bazı editörlerin hata ayıklama özellikleri vardır; bunlar belirli programlama dilleri için özelleştirilebilir ve eklenebilir.
- *Sözdizimi vurgulama* (Syntax highlighting) koda renkler ve metin biçimlendirmesi ekleyerek okunmasını kolaylaştırır. Çoğu editör özelleştirilmiş sözdizimi vurgulamasına izin verir.
- *Uzantılar ve Entegrasyonlar* geliştiriciler için geliştiriciler tarafından geliştirilen özel araçlardır. Bu araçlar temel editörlerde yerleşik olarak bulunmaz. Örneğin, birçok geliştirici kodlarının nasıl çalıştığını açıklamak için yorum olarak dökümantasyon blokları yazarlar. Bunun için, belgelerindeki yazım hatalarını bulmaya yardımcı olması için bir yazım denetimi uzantısı yükleyebilirler. Çoğu uzantı belirli bir editörde kullanılmak üzere tasarlanmıştır ve çoğu editör mevcut uzantıları aramak ve indirmek için bir özellikle birlikte gelir.
- *Özelleştirme*, geliştiricilerin kendi ihtiyaçlarına uygun benzersiz bir geliştirme ortamı oluşturmalarını sağlar. Çoğu editör son derece özelleştirilebilir ve geliştiricilerin özel uzantılar oluşturmasına da izin verebilir.
#### Popüler Metin Editörleri ve Web Geliştirme Uzantıları
- [Visual Studio Code](https://code.visualstudio.com/)
Bir diğer önemli araç ise tarayıcıdır. Web geliştiricileri, kodlarının web üzerinde nasıl çalıştığını görmek için tarayıcıya güvenirler. Ayrıca HTML gibi, editörde yazılan bir web sayfasının görsel öğelerini görüntülemek için de kullanılır.
Birçok tarayıcı, geliştiricilerin uygulamaları hakkında önemli bilgileri toplamalarına ve yakalamalarına yardımcı olacak bir dizi yararlı özellik ve bilgi içeren *geliştirici araçları* (DevTools) ile birlikte gelir. Örneğin: Bir web sayfasında hatalar varsa, bunların ne zaman oluştuğunu bilmek bazen yararlı olabilir. Bir tarayıcıdaki geliştiri araçları bu bilgileri yakalamak için yapılandırılabilir.
Bazı geliştiriciler günlük görevleri için daha az grafiksel bir görünümü tercih eder ve bunu başarmak için komut satırına güvenir. Kod yazmak önemli miktarda yazı yazmayı gerektirir ve bazı geliştiriciler klavyedeki akışlarını bozmamayı tercih eder. Masaüstü pencereleri arasında geçiş yapmak, farklı dosyalar üzerinde çalışmak ve araçları kullanmak için klavye kısayollarını kullanırlar. Çoğu görev fare ile tamamlanabilir, ancak komut satırını kullanmanın bir avantajı, fare ve klavye arasında geçiş yapmaya gerek kalmadan komut satırı araçlarıyla çok şey yapılabilmesidir. Komut satırının bir diğer faydası da yapılandırılabilir olmalarıdır. Buna ek olarak özel bir yapılandırmayı kaydedebilir, daha sonra değiştirebilir ve diğer geliştirme makinelerine de aktarabilirsiniz. Geliştirme ortamları her geliştirici için çok özel olduğundan, bazıları komut satırını kullanmaktan kaçınır, bazıları tamamen ona güvenir ve bazıları da ikisinin karışımını tercih eder.
### Popüler Komut Satırı Seçenekleri
Komut satırı için seçenekler kullandığınız işletim sistemine göre farklılık gösterecektir.
*💻 = işletim sistemine önceden yüklenmiş olarak geliyor anlamında.*
- [Command Line](https://docs.microsoft.com/windows-server/administration/windows-commands/windows-commands?WT.mc_id=academic-13441-cxa) (CMD olarak da bilinir) 💻
Bir geliştirici yeni bir şey öğrenmek istediğinde, nasıl kullanılacağını öğrenmek için büyük olasılıkla dökümantasyona başvuracaktır. Geliştiriciler genellikle araçları ve dilleri doğru şekilde nasıl kullanacakları konusunda kendilerine rehberlik etmesi ve ayrıca nasıl çalıştığı hakkında daha derin bilgi edinmek için dökümantasyonlara güvenirler.
#### Popüler Web Geliştirimi Dökümantasyonları
- [Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web), [Firefox](https://www.mozilla.org/firefox/) tarayıcısının kurucusu Mozilla tarafından
- [Web.dev](https://web.dev), [Chrome](https://www.google.com/chrome/) tarayıcısının kurucusu Google tarafından
- [Microsoft's own developer docs](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers), [Microsoft Edge](https://www.microsoft.com/edge) için
✅ Araştırma Zamanı: Artık bir web geliştiricisi ortamının temellerini bildiğinize göre, bunu bir web tasarımcısının ortamı ile karşılaştırın.
---
## 🚀 Meydan Okuma
Bazı programlama dillerini karşılaştırın. Java'ya kıyasla JavaScript'in bazı benzersiz özellikleri nelerdir? Peki ya COBOL ve Go?
## Ders Sonrası Quiz
[Ders sonrası quiz](https://ashy-river-0debb7803.1.azurestaticapps.net/quiz/2?loc=tr)
## Ders Tekrarı ve Bireysel Çalışma
Programcıların kullanabileceği farklı diller üzerine biraz çalışın. Bir dilde bir satır yazmaya çalışın ve daha sonra bunu diğer iki dilde yeniden yazın. Ne öğrendiniz?
Bir web geliştiricisinin ihtiyaç duyabileceği birçok araç [istemci araçları için olan MDN dökümantasyonunda](https://developer.mozilla.org/docs/Learn/Tools_and_testing/Understanding_client-side_tools/Overview) vardır. Buradan derste ele alınmayan 3 araç seçin. Bir web geliştiricisinin bunları neden kullanacağını açıklayın ve bu kategoriye giren başka bir araç arayın ve belgelerini paylaşın. MDN dokümanları üzerinde aynı araç örneğini kullanmayın.
## Kılavuz
Örnek Niteliğinde | Yeterli | İyileştirme Gerekiyor
--- | --- | -- |
|Web geliştiricisinin aracı neden kullanacağını açıkladı| Nasıl kullanacağını açıkladı ancak neden kullanacağını açıklamadı| Bir geliştiricinin aracı nasıl veya neden kullanacağından bahsetmedi