Yazılım öğrenmeye nereden başlanmalıdır?

Hangi seviyede ingilizce gerekir?
B1-B2 arası yeterli olur diye düşünüyorum. Kursları dinlerken, gerekli dökümantasyonları incelerken okuduğunuzu/dinlediğinizi anlıyorsanız yeterli gelir. Türkçe kaynağı bazı spesifik konularda bulamayabilirsiniz maalesef.
 
Matematik yoksa orta seviyeyi gecemezsin.
Ingilizce yoksa orta bile olamazsin.
Gercek bu.

Bu meslekle ilgili degil, genel olarak meslek seciminde ana kural kisinin yetenegi ve o ise olan bagliligidir. Onu acik diye meslek secilmez, cunku en iyi ihtimalle siradan olursun. Birden fazla seye kabiliyetin vardir, onlar arasinda onu acik olani secebilirsin ancak.


Ne yigitler onu acik diye genetik, tip, elektrik elektronik, mekatronik secip perisan oldular, CS icin de durum farkli degil.
 
Matematik ile programlama iç içedir.

En basitinden EBOB, EKOK vs. matematikteki fonksiyonlardır.
Programlamada da fonksiyonlar vardır ve programlamanın olmazsa olmazlarındandır. Öyle ki programın çalıştığı yer bile bir şekilde bir fonksiyona bağlı.

Veya değişkenler. Matematikte vardır ve önemli bir parçadır. Bilinmeyeni temsil eder.
Programlamada da değişkenler vardır ve programlamanın olmazsa olmazlarındandır.

Bu örnekleri çoğaltabilirim. Mesela formüller ve soyut fonksiyonlar, cebir ile object ilişkisi matematik ile programlamanın birbirini tamamlayan özellikleri.

@bitwise
Bu cok soruluyor.

Eger uzerinde calistigin proje icin ileri matematik gerekmiyorsa ve hazir kutuphaneleri kullanmak problemi cozmen icin yeterliyse gerek yok. Sadece 4 islem ve boolean algebra yapabiliyor olman kafi. Ozet olarak -> kiyiya yakin yuzeceksen hayir, acilacaksan kesinlikle evet.

Eger ozel ihtiyaclara proprietary cozumler gelistiriyor, standart kutuphanelerde bulunan ozellikler seni kesmiyorsa kesinlikle gerekli.

Ancak:

- Eger sifirdan web framework ya da isletim sistemi yazacaksan scheduling theory bilmen gerekir. ( Scheduling theory - Encyclopedia of Mathematics ) Kaynaklari optimal sekilde harcamalisin, starvation ve deadlock yaratmamalisin. Hic dusundunuz mu kullandiginiz isletim sistemi arkada acik onlarca process'i hangi sirayla calistiracagina nasil karar veriyor diye? En dogru karar nasil olmalidir peki? 4500 tane process var fakat 20 tane thread var, nasil karar verecegiz hangisini hangi sirayla calistiracagimiza? Cozum -> Scheduling theory.

- Veri tabani ya da Neural network icin pooling yapacaksan Lp pooling fonksiyonlarini bilmen gerekir.

- Snowflake gibi ( Snowflake Data Cloud | Enable the Most Critical Workloads ) non-structured data destegi veren RDBMS yaziyorsundur, Set theory bilmelisin. ( Fuzzy, Descriptive vs )

- Functional programming paradigmasini destekleyecek yeni bir dil uzerinde calisiyorsundur, Category Theory bilmelisin. ( Morphism, Monad vs Haskell yazanlar bilir az cok )

- Black Friday gunu tekil 200 kisiye hizmet veren bir yazilim ihrac ediyorsundur silikon vadisi firmalarina ( biz yapiyoruz bunu ) , O halde kullandigin dildeki default sort() fonksiyonu nasil calisiyor elin parmagin gibi bileceksin. Hangi algoritmayi kullaniyor, time ~ mem complexity nasil degisiyor. Data icin uygun mu? Bu da bizi suraya goturuyor -> Sorting algorithm - Wikipedia

- Elinde neye gore degistigini bilmedigin bir davranis datasi vardir, gradient descent algoritmasi yapiyorsundur ama sonuclar cok degisken oldugu icin momentum destegi vermek istiyorsundur -> Stochastic Gradient Descent with momentum

Yazilim muhendisleri yetistirilirken her alanda calisabilecek, Computer Science'in tum alt branslarina yonelebilecek formasyonda yetistirilirler. Bu yuzden evet, baya ciddi matematik bilgisi gerekir.

---

Sonuc olarak baskasinin yazdigi scheduling kutuphanelerini, pooling ve sort algoritmalarini kullanip sadece 3 satir kod yazarak "Web sitesi" olusturabiliyor. Piyasadaki yazilim ihtiyacinin %80'i icin 4 islem yeterli. Cunku geri kalan %20'yi baskalari sizin icin yaziyor.

Kullandigi kutuphanelerin arkada nasil calistigini bilmeyen, bildigini iddia ettigi programlama dilinin hangi sort algoritmalarini kullandigini dahi bilmeyen bebeler sagda solda bu is icin matematigin cok da gerekli olmadigi konusunda fazlaca sacmalayabiliyorlar. Zaten bunun bir adim sonrasi "copy + paste yapiyorlar" diyen tayfadir.

Tum bu dediklerime ek olarak, zaten matematiksel yaklasim ve analitik zeka programlama icin sart. Cok calismasina ragmen matematigi beceremeyen birisinde bu zeka yoktur ve cok calismasina ragmen muhtemelen programlamayi da beceremez. ( ileri seviyelerde )
Açıklamanızı makaleleştirirseniz çok güzel olur.
 

Technopat Haberler

Yeni konular

Geri
Yukarı