Programlamaya Hangi Dil İle Başlanmalı?

Programlama Mantığını anlamak için bence temellere gitmek gerek.
Bence C mükemmel bir başlangıç.
C abartıldığı kadar zor bir değil.
C öğrenildikten sonra da Java/C#/Cpp gibi Object Oriented bir dilin öğrenilmesi çok daha kolay olacaktır.

--ekleme--

Web istiyorsanız HTML ve CSS değil JavaScript ve PHP vs öğrenmeniz gerekecektir.
Biz HTML ve CSS'i dilden bile saymayız.
 
Son düzenleme:
Sadece performans anlamında mı geride python? Üst seviye bir dil olmasının başka ne türlü dezavantajları var?

Birden fazla dezavantaji var. Overhead fazla. Ayni isi yapan low level dil, high level dile gore daha az yer kaplar. ( hem disk, hem memory footprint ) 1 MB in altinda memory ile Aya giden mikrochipi programlarsin C ya da Assembly ile. Python ile hello world yazamazsin.

Birden fazla "point of failure" var. Interpreter hata yaparsa program hata alir, python interpreter interprete ettigi kodu memory'e yukleyecek de, oradan machine kod derlenecek de. Cok fazla run-time is var hata yapilabilecek. Her programda bug olur. JVM de de bir suru bug var, python interpreterounde de. Senin kodun mukemmel dahi olsa alt katmandaki bug yuzunden hata almak istemezsin.

Cold-start suresi fazla. Pythonin calismasi icin once interpreterin ve kodu cevirecek olan diger alt sistemlerin ayaga kalkmasi gerekir. Ornegin JVM calismadan Java programi calismaz. Senin java programinin 1. satir kodunun calisma suresi = JVM'in ayaga kalkmasi + 1. satir kodun calistirilmasina esit. Bu sure scripting dillerinde daha uzun, low level dillerde yok, cunku zaten makine koduna cevrilmis durumda. CPU cycle bekliyorsun yalnizca.

Son olarak da, yavas. Ayni isi yapan C koduna gore python kodu ( ise gore degismekle birlikte ) cok cok daha yavas calisir. Web sitesi yapiyorsan bu farki anlamazsin, cunku IO beklersin genelde. Ama solid yakitli roket kumanda ediyorsan anlarsin.
 
Birden fazla dezavantaji var. Overhead fazla. Ayni isi yapan low level dil, high level dile gore daha az yer kaplar. ( hem disk, hem memory footprint ) 1 MB in altinda memory ile Aya giden mikrochipi programlarsin C ya da Assembly ile. Python ile hello world yazamazsin.

Birden fazla "point of failure" var. Interpreter hata yaparsa program hata alir, python interpreter interprete ettigi kodu memory'e yukleyecek de, oradan machine kod derlenecek de. Cok fazla run-time is var hata yapilabilecek. Her programda bug olur. JVM de de bir suru bug var, python interpreterounde de. Senin kodun mukemmel dahi olsa alt katmandaki bug yuzunden hata almak istemezsin.

Cold-start suresi fazla. Pythonin calismasi icin once interpreterin ve kodu cevirecek olan diger alt sistemlerin ayaga kalkmasi gerekir. Ornegin JVM calismadan Java programi calismaz. Senin java programinin 1. satir kodunun calisma suresi = JVM'in ayaga kalkmasi + 1. satir kodun calistirilmasina esit. Bu sure scripting dillerinde daha uzun, low level dillerde yok, cunku zaten makine koduna cevrilmis durumda. CPU cycle bekliyorsun yalnizca.

Son olarak da, yavas. Ayni isi yapan C koduna gore python kodu ( ise gore degismekle birlikte ) cok cok daha yavas calisir. Web sitesi yapiyorsan bu farki anlamazsin, cunku IO beklersin genelde. Ama solid yakitli roket kumanda ediyorsan anlarsin.
O zaman önemli olan hiçbir sistemde kullanılmaması gerekir scripting dillerinin değil mi? Paradigmalar'dan mı daha fazla yararlanıyor bu diller neden daha basit o zaman ki? Son olarak madem bu kadar sıkıntılı interpreter içeren diller, neden bunların hepsi neredeyse bütün işletim sistemlerinde çalışıyor ve makina diline çevrilen kodlar çalışmıyor? Teşekkür ederim :)
 
O zaman önemli olan hiçbir sistemde kullanılmaması gerekir scripting dillerinin değil mi? Paradigmalar'dan mı daha fazla yararlanıyor bu diller neden daha basit o zaman ki? Son olarak madem bu kadar sıkıntılı interpreter içeren diller, neden bunların hepsi neredeyse bütün işletim sistemlerinde çalışıyor ve makina diline çevrilen kodlar çalışmıyor? Teşekkür ederim :)

Iste bu "onemli sistem" den kasit mission critical olmali. Milisaniyelerin bile onemli oldugu, kesinti yasanmasinin insan hayatina etki edebilecegi sistemler. Askeri ya da saglik sektorunde kullanilan ekipmanlar, gudumlu fuzeler vs.

Bi kere kafadan garbage collector kullanan sistem ile yazamazsin, GC devreye girince milisaniyelik kesintiler yasanir. Web sitesi icin 20 ms hic onemli degil ama gudumlu fuze icin onemli : ) Ayrica her zaman uygulamadaki yavaslik programlama dilinden kaynaklanmaz, hatta %99 inin kaynagi IO yavasligidir. ( disk, network vs )

High level dili guzel yapan sey insan diline yakin olmasi ve bu sebeple daha anlasilir olmasi. Ayrica abstraction cok kolay yapildigindan 2 satir ile yazdigin seyi low level ile 200 satirda yazamazsin. Assembly de hello world kac satir merak eden bakabilir.

Tum sistemler sahiplerine gore "onemli" , o zaman her seyi C ile Rust ile Go ile neden yazmiyoruz sorusunun cevabi da iste yukarida gizli. O kadar ugrasmaya degecek mi, zaman = para cunku. Python ile 3-4 gunde cok fazla yol alirsin. Okumasi kolay, maintain etmesi kolay. C kodu spagettiye donmeye cok daha yatkin eger duzgun maintain edilmezse.

High level diller farkli interpretorler ya da VM ler ile geldigi icin her sistemde calisiyorlar. Spesifik sistemin spesifik islemci modeline gore farkli farkli interpretorler yaziliyor ve boylece calisiyor kod. Windows uzerinde calisan JVM ile, Android uzerinde calisan JVM ya da Linux Fedora uzerinde calisan JVM farkli. 32 bit CPU ya sahip Windows uzerinde calisan JVM ile 64 bit CPU ya sahip Windows uzerinde calisan JVM farkli. Bir nevi her dil icin farkli tercuman kullaniliyor ki ayni Java kodu her sistemde calissin diye. Python icin de ayni sekilde. Eh, sen aradaki tercuman katmanini ortadan kaldirma niyetindeysen, yazdigin kodu hedefledigin sistemin makine koduna kendin cevireceksin. O sebeple hedef sisteme yonelik compiler ve assembler bulup kullanirsin. Yazdigin kod sadece ve sadece o sistemde calisir ama cok optimize calisir. Trade off bunlar hep.
 

Geri
Yukarı