Yazılım dillerinin zorluk sıralaması nasıldır?

Konulara bakıyordum bir baktım da yazılım dillerinin zorluk sıralamasını söyleyen olmamış size göre sıfırdan yazılım öğrenecek birisi nereden hangi dilden başlamalı ne bilmeli ve yazılım dillerinin zorluk sıralaması nasıldır?

Yazılım öğrenmeye başlamadan önce öğrenmesi bilmesi gerekenler:
Algoritma.

Örnek programlama dil sıralaması:
Kolay: HTML.
Orta: C+
Zor.
Üst düzey:
Yazılım öğrenmek için bilmen gerekenler:
Programlama mantığı
Algoritma ve Veri Yapıları
Matematik
İngilizce

Örnek programlama dili sıralaması:
Yok

Hangi dilden başladığınının bir farkı yok aklında bir alan varsa o alandaki dilleri öğrenebilirsin direkt başlayalım diyorsan c/c++ ile birlikte algoritma ve veri yapıları konseptini öğren. Sonra istediğin dili rahatca öğrenirsin ve optimize edersin.
 
Herkesin web dev olmak istediğini sanmıyorum. İlk üç okay ama onlarında ikisi programlama değil zaten.

Konu sahibi için; Temel konseptleri öğrenmen lazım. Programlama nedir, ne değildir? Bilgisayar programı nasıl çalıştırır? Bellek nedir, heap ve stack nedir farkları nedir? Algoritma nedir? Veri yapıları nedir? Sonra alana yönelik gidersin. Temel konseptleri bilmeden alan öğrenmek genelde ezbere oluyor. Bir şeyler yapıyorsun ve bir şeyler oluyor ama niye neden yaptığını bilmiyorsun, ezberlediğini yazıyorsun gibi oluyor.

Başlangıç dili önemli değil. Genel programlama dillerinin hepsinde temellerde aynı şeyleri yapacaksın zaten. Looplar vs vs. Mantığı kavrayınca başka dile geçtiğinde de zorlanmıyorsun temel syntax öğrenirken.
Liste yazılıma başlamakla alakalıydı işin özü. Bahsettiğiniz şeyler güzel, ancak herhangi bir yazılım dili bilmeden bunların hepsi soyutta kalacak. Ki, bence ilk iki programlama dili çoğu insan için C olmalı. (Kesinlikle C++ değil.) Yani pratikte hem fikirim.

Ve benim fikrimce, herkesin bir şekilde HTML/CSS öğrenmesi gerekiyor. Ama elbette ki bunda uzmanlaşmaktan bahsetmiyorum. Basit bir blog yazısı, belgelendirme ya da bir çeşit Markdown kaçamağı için yine HTML/CSS yazmaya gerek oluyor. İşin ötesi, embedded içinde bile bir şekilde HTML/CSS insanın karşısına çıkabiliyor.
 
Son düzenleme:
Liste yazılıma başlamakla alakalıydı işin özü. Bahsettiğiniz şeyler güzel, ancak herhangi bir yazılım dili bilmeden bunların hepsi soyutta kalacak. Ki, bence ilk iki programlama dili çoğu insan için C olmalı. Yani pratikte hem fikirim.
Önce teorik olarak neyin nasıl olduğunu bilmeden pratik daha zor oluyor. Hiç dil öğrenmesin demiyorum. Dili öğrenmeden önce arkasındaki mantığı anladığında, dilde loopmuş, fonksiyonmuş ne işe yarar gibi sorulara gerek kalmıyor çünkü daha önceden bu soruların yanıtlarını veren kavramları görmüş oluyor. Rahatça kavrıyor. Üniversitelerde bu sebeple buna benzer bir sırayla başlıyorlar öğretmeye. Temel kavramları öğrettikten sonra algoritma ve veri yapıları genelde dil ile birlikte öğrenilir.

Örneğin benim okulumda, ilk sene programlama dili görmedik, temel konsept ve kavramları konuşuyorduk. İkinci sene C ile veri yapılarına başladık. İkinci senenin ikinci döneminde Object Oriented Programming kavramlarını ve algoritma işliyorduk. Üç ve Dört ise programlama içerisindeki çeşitli alanlara giriş dersleri ve profesyonelizm dersleriyle doluydu. Systems level programming, internet programming, database management, computer graphics, image processing, ai, ann vs vs. alanlara giriş dersleriyken, proje yönetimi, kalite kontrolü, testing vs vs ise profesyonelizm derslerimizdi mesela.
 
Önce teorik olarak neyin nasıl olduğunu bilmeden pratik daha zor oluyor. Hiç dil öğrenmesin demiyorum. Dili öğrenmeden önce arkasındaki mantığı anladığında, dilde loopmuş, fonksiyonmuş ne işe yarar gibi sorulara gerek kalmıyor çünkü daha önceden bu soruların yanıtlarını veren kavramları görmüş oluyor. Rahatça kavrıyor. Üniversitelerde bu sebeple buna benzer bir sırayla başlıyorlar öğretmeye. Temel kavramları öğrettikten sonra algoritma ve veri yapıları genelde dil ile birlikte öğrenilir.

Örneğin benim okulumda, ilk sene programlama dili görmedik, temel konsept ve kavramları konuşuyorduk. İkinci sene C ile veri yapılarına başladık. İkinci senenin ikinci döneminde Object Oriented Programming kavramlarını ve algoritma işliyorduk. Üç ve Dört ise programlama içerisindeki çeşitli alanlara giriş dersleri ve profesyonelizm dersleriyle doluydu. Systems level programming, internet programming, database management, computer graphics, image processing, ai, ann vs vs. alanlara giriş dersleriyken, proje yönetimi, kalite kontrolü, testing vs vs ise profesyonelizm derslerimizdi mesela.
Samimi şekilde konuşuyorum, böyle hiç düşünmemiştim. Ben genelde pratiğin uygulanışını görüp sonradan teorisi üzerine okumalar yapmayı seven birisi olduğumdan böyle bir yol olabileceğini düşünmedim. Şimdi öğrenirken takıldığım yerlerde neden takıldığımı anlıyorum.

Bunun ötesinde, kendileri öğrenmenin peşinde olan pek çok arkadaşım kendilerini "bir programlama dili öğrenme" cehenneminde kaybettiler. Önemli olanın programlama dili öğrenmek olmadığını, bilgisayar bilimleri olduğunu anlattığımda ise uzaylı gibi göründüm. Peki neden bilgisayar bilimlerinden öğrenilmeye başlanmasın ki? Daha az ilgi çekici ancak insanın ufkunu genişletmeye zorlayan bir yol olarak görünüyor.
 
Bunun ötesinde, kendileri öğrenmenin peşinde olan pek çok arkadaşım kendilerini "bir programlama dili öğrenme" cehenneminde kaybettiler.
Bu çok sık yaşanıyor. Python kolay diye öğrenmeye başlayan arkadaşlar açıyorlar burada konu fonksiyonları anlamıyorum, loop anlamıyorum vs diye. Neyin neden olduğunu tam anlamadıkları için de öğrenme süreci daha da uzuyor. İnsan anlamadığında bu işin devamını getirmek istemiyor çünkü işin tamamı anlamak üzerine. Hani oyun gibi değil, anlamadan tuş spamlayıp yapılabilecek bir meslek değil.

Önemli olanın programlama dili öğrenmek olmadığını, bilgisayar bilimleri olduğunu anlattığımda ise uzaylı gibi göründüm.
"Ya karşim ne gerek var, işte bunu yapınca kendi kendine tekrar ediyor, bak keyfine(!)" kafasıyla hareket eden insanlar için normal öyle görünmen. O adam template çakıp geçmekten fazlasını yapamıyor genelde zaten. Ezbere yazıp duruyor.
Peki neden bilgisayar bilimlerinden öğrenilmeye başlanmasın ki? Daha az ilgi çekici ancak insanın ufkunu genişletmeye zorlayan bir yol olarak görünüyor.
Meslekten para kazanacak adamın işi istese de istemese de düşüyor zaten bilgisayar bilimlerine. Alaylısıda bakıyor, okuyanı da. Mecbur. Anlamayacak yoksa. Azıcık sıra dışı bir şey yapmaya kalktın mı zaten ister istemez bilgisayar bilimlerine dokunduruyorsun.
 
Bir kere programlama dillerinin kolayligi ve zorlugu subjektiftir. Zor ve kolay diye ayrim yapmayiz. Ornegin dynamic typed dillerde x = 3 yazip sonra x = "3" yazdiginizda hata almadan programiniza devam edersiniz, "x" in tipi sizin icin dinamik olarak degisir. Bu bir kolaylik gibi gorunse de bazen bug'lara yol actiginda kimisine gore zorluk olarak da gorulebilir. Sahsen ben static tiplemeyi daha cok severim ve bana daha kolay gelir okumasi ve yazmasi. "uint x = 3" yazan bir programmer'in kafasindaki x degerinin negatif olmayan bir integer olarak tanimlandigini gayet net anlarim. Bunun gibi ornekler cogaltilabilir.

Yeni baslayan insanlar algoritma va data structure yapisini daha kolay anlayabilsinler diye genelde high level diller tercih edilse de bir gun elbetter pointer aritmetigi ve memory allocation mekanizmasini da ogrenmeleri gerekecegi icin aslinda sadece "zorlugu" otelemis olurlar. O sebeple tutup da C ile de gayet baslanabilir.

Genelde sagda solda "Python kolaydir" diyen insanlarin eski bir python versiyonu ile yazilmis projeyi hic daha ust seviye bir python versiyonuna adapte etmeye calismadiklarina da eminim. Ornegin Java7 ile compile ettigin bir programi Java17 ile de sorunsuz calistirirsin. Yeniden compile etmene gerek yok.

Herhangi bir yazilim projesinde karsiniza cikacak olan zorluklar buyuk oranda programlama dilinizden bagimsizdir. Projeye uygun dil secmemissinizdir, yanlis mimari yapi kurgulamissinizdir, problemi yanlis sekilde cozmeye calisiyorsunuz ya da complexity management i duzgun yapamamissinizdir. Bazi isleri bazi dillerle yapmak zordur ve bu zorlugun sebebi o dil degildir. Sadece yanlis arac tercihi yapmissinizdir, cekic ile vida cevirmeye calisiyorsunuzdur.
 
Konulara bakıyordum bir baktım da yazılım dillerinin zorluk sıralamasını söyleyen olmamış size göre sıfırdan yazılım öğrenecek birisi nereden hangi dilden başlamalı ne bilmeli ve yazılım dillerinin zorluk sıralaması nasıldır?

Yazılım öğrenmeye başlamadan önce öğrenmesi bilmesi gerekenler:
Algoritma.

Örnek programlama dil sıralaması:
Kolay: HTML.
Orta: C+
Zor.
Üst düzey:
kişiden kişiye değişir sıralama
 
En kolayı Lua 😅 en zoruda Assembly ve makine dili herhalde.
Makine kodunu binary yada hex şeklinde yazıp bir program yapabilirsin ama zordan çok uğraştırıcı olur çünkü çok fazla dönüşüm yapman ve aklında çok fazla şeyi tutman gerekir.
 
Yazılım dili?
Programlama dili?

Terimleri düzgün kullanacaksak, yazılım her şeyi kapsar. Yazılım dili diye bir terim yok.

Kolaylık açısından en kolayı bence çalma listeleri yazmak. Bir den fazla formatları var. Bir ara .pls formatında listeleri el ile yazmak hoşuma giderdi. Wikipedia'dan bulmuştum örneğini.
Programlamaya giriş için iyi bir alıştırma olabilir.

HTML'de iyi bir giriş olabilir. Web ilgini çekmiyorsa sıkıcı bulabilirsin.

Batch (cmd) diğer kolay öğrenilebilecek seçenek. Ve her zaman gerek duyulabilir.

NetLogo çok fazla terim içerir, ama tamamı hiç bir satır kod yazmadan sürükle bırak şeklinde yazılabilir yada tasarlanabilir.
 

Technopat Haberler

Geri
Yukarı