byte.buster
Hectopat
- Katılım
- 27 Ocak 2021
- Mesajlar
- 1.767
- Çözümler
- 21
Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
Öğrenir ama ilerleyen zamanlarda attığım vidodaki ilk denemeleri gibi olur
Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
Öğrenir ama ilerleyen zamanlarda attığım vidodaki ilk denemeleri gibi olur
Şöyle örnek vereyim, annelerimiz pek çok tarif bilirler, biz bilmeyiz. Bunlara algoritma diyebiliriz, yemek yapmanın temeli olan soğanı küp küp ya da yarımay şeklinde doğrama gibi şeyler temel algoritma olsun, yemeğin içinde neyin hangi sırayla konacağı ya da etin kaç dakika fırında, sosunun kaç dakika ocakta pişeceği, nasıl karıştırılacağı vb. diğer bilgiler de ileri algoritma olsun.Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
Programlama öğrenmek algoritma ve veri yapılarını da kapsadığı için böyle bir şey olmaz. Bir programlama dilini öğrenmek için algoritma bilmeniz gerekmez. Zaten genel olarak üniversitelerde önce bir programlama dilinin temel prensipleri öğretilir ondan sonra algoritma bilgisi verilir.
şekilde, 3 sayı nasıl toplanır, dosyas nasıl açılır, nasıl okunur vb. temel algoritmalar öğretilmeden bunun programlamasına (uygulama) geçilmez. Teorik olarak bir dilin komutlarını ezberlemek mümkün, hayatında bilgisayara oturmamış ezberi kuvvetli bir sözelci bulun ezberlesin 1 haftada ancak bu dili öğrenmek olmuyor.Mesela algoritma bilmeyen birisi programlama nasıl öğrenemez?
Özelikle "programlama" olarak sorduğum soruyu tekrar ediyorum şimdi, peki algoritma öğrenmeden nasıl "programlama dili" öğrenilmez? Şu an yaptığın açıklama algoritmanın uygulanmasıyla ilgili, yani "programlama" dediğimiz paradigma kümesinin kapsadığı bir kavram.Algoritma öğrenmeden nasıl C# öğrenilir anlamadım
Aslında bu dediğiniz şeylerin içinde algoritma mevcut. Uygulama babında açıklarsam; ya algoritma öğrenip aynı anda bir dilde bunun uygulamasını yaparak dili de öğreniyorsunuz (klasik yöntem), ya da seçtiğiniz bir dilde bir şey öğrenmeye çalışırken bunu öğrenmeden önce yine algoritma öğreniyorsunuz. Yani algoritma öğrenmeden dili de öğrenememiş oluyorsunuz. Temel bir bilgi seviyesinin üzerindeki birisi class nedir bilir mesela, siz şu anda herkes class bilir, for döngüsü bilir, return nedir bilir gibi düşünüyorsunuz gibime geliyor. Hayatında bilgisayara oturmamış birisi class nedir bilmez. Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi). Bu algoritmayı öğrenince bu şahıs class nedir, ne işe yarar anlıyor. Bu algoritmayı bilmeden class, variable vb. şeyleri öğrenemez. Bunları öğrenmeden mesela basit linked data structure öğrenemez, onun ne işe yaradığını anlatmak gerekir bak bu node, next node u tutuyor, next nodeu çağırırsan bu geliyor vs. diye, bu da bir algoritmadır. A kişisi Java, B kişisi C# öğreniyor olsun, veri yapısı noktasında bu algoritmayı öğrenmeden dilde de ilerleyemezler. Bu kafalarında oturduğu zaman aradan bir tane node nasıl çıkarılır, cycle durumu nasıl tespit edilir gibi sorunların çözümü için algoritmaları düşünmeye başlayabilirler.Özelikle "programlama" olarak sorduğum soruyu tekrar ediyorum şimdi, peki algoritma öğrenmeden nasıl "programlama dili" öğrenilmez? Şu an yaptığın açıklama algoritmanın uygulanmasıyla ilgili, yani "programlama" dediğimiz paradigma kümesinin kapsadığı bir kavram.
Buradan anlaşılacağı üzere decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok. Kaldı ki bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz.
Aslında bu dediğiniz şeylerin içinde algoritma mevcut. Uygulama babında açıklarsam; ya algoritma öğrenip aynı anda bir dilde bunun uygulamasını yaparak dili de öğreniyorsunuz (klasik yöntem), ya da seçtiğiniz bir dilde bir şey öğrenmeye çalışırken bunu öğrenmeden önce yine algoritma öğreniyorsunuz. Yani algoritma öğrenmeden dili de öğrenememiş oluyorsunuz. Temel bir bilgi seviyesinin üzerindeki birisi class nedir bilir mesela, siz şu anda herkes class bilir, for döngüsü bilir, return nedir bilir gibi düşünüyorsunuz gibime geliyor. Hayatında bilgisayara oturmamış birisi class nedir bilmez. Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi). Bu algoritmayı öğrenince bu şahıs class nedir, ne işe yarar anlıyor. Bu algoritmayı bilmeden class, variable vb. şeyleri öğrenemez. Bunları öğrenmeden mesela basit linked data structure öğrenemez, onun ne işe yaradığını anlatmak gerekir bak bu node, next node u tutuyor, next nodeu çağırırsan bu geliyor vs. diye, bu da bir algoritmadır. A kişisi Java, B kişisi C# öğreniyor olsun, veri yapısı noktasında bu algoritmayı öğrenmeden dilde de ilerleyemezler. Bu kafalarında oturduğu zaman aradan bir tane node nasıl çıkarılır, cycle durumu nasıl tespit edilir gibi sorunların çözümü için algoritmaları düşünmeye başlayabilirler.
Kısaca demek istediğim şey şu; dil öğrenmeye çalışan birisi algoritma öğrenmektedir. Algoritmayı öğrenmeden dili öğrenemez, "bunları öğrenirken aslında algoritma kavramına da bir giriş yapmış oluyorsunuz." dediğiniz şeye katılıyorum, "decision structures, control flow, variable types, functions, class, template vs... gibi temel kavramları öğrenmek için algoritma bilmenize gerek yok" buna katılmıyorum. Değişken tiplerini öğrenirken neden int diye bir değişken var diye sorguladığınız anda (çünkü stringleri toplayamayız, int memoryde böyle tutulur, binary olarak iki sayı böyle toplanır, eğer virgüllü sayı lazım ise float kullanırız vb.) işin algoritmasına (istenen şey/düzeltilmesi gereken sorun -> çözüm yolu) giriş yapmış oluyoruz, bu temel kavramları öğrenmek için algoritma da bilmemiz gerekiyor yani, aksi durumda bu dil öğrenmek olmuyor. Eğer bu temel kavramları bilen birisi iseniz yeni bir dil öğrenirken algoritma öğrenmenize gerek kalmıyor zaten bildiğiniz için ve algoritmadan bağımsız görüyorsunuz bu kavramları diye düşünüyorum.
6.006 alabilmek için önce 6.001 dersi alınması gerekiyor diye geçiyor. Algoritma öğretmeden python nasıl öğretiyorlarmış diye internetteki ders başlıklarına, slaytlarına göz attım, MIT6_0001F16_Welcome | Introduction to Computer Science and Programming in Python | Electrical Engineering and Computer Science | MIT OpenCourseWareÖrgün eğitimde böyle bir yöntem yok ama, örneğin MIT algoritmalara giriş (6.006) dersi için; "A firm grasp of Python (6.001) and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.01 (Introduction to EECS I) and 6.042J/18.062J (Mathematics for Computer Science)." şeklinde bir beyanı var, aynı şekilde ITU ve ODTU CS programında da önce programlama dili ve matematik veriliyor ardından algoritmalara giriş dersi veriliyor.
Bunun dışında önce algoritma dersi verilip sonra programlama dilinin öğretildiği bir eğitim modeline ben rastlamadım.
Benim bu dediğim doğrultuda, bir bilgisayar nasıl çalışırdan, memory, ALU, interpreter vb. nedirden girmiş,Mesela ona önce programın işleyişi anlatılır bu diller için örnek verirsem; main method var, class diye bir yapı var, değişken diye bişey var classlar onu tutuyor, programı run edince main çalışıyor, bak burada tanımlama yapılıyo, burada şu import ediliyo vs. bu da compilerın çalışma algoritmasıdır (bir kısmıdır tabi).
Benim gene bu tarife benzetmem doğrultusunda,Şöyle örnek vereyim, annelerimiz pek çok tarif bilirler, biz bilmeyiz. Bunlara algoritma diyebiliriz, yemek yapmanın temeli olan soğanı küp küp ya da yarımay şeklinde doğrama gibi şeyler temel algoritma olsun, yemeğin içinde neyin hangi sırayla konacağı ya da etin kaç dakika fırında, sosunun kaç dakika ocakta pişeceği, nasıl karıştırılacağı vb. diğer bilgiler de ileri algoritma olsun.
Primitiflerden başlamış, tip çevrimi, operatörler, expression nedir vb. diye devam etmiş. Anlatırken öncelikle bunu pythondan bağımsız olarak anlatıyor benim baktığım slaytlarda, yaniDeğişken tiplerini öğrenirken neden int diye bir değişken var diye sorguladığınız anda (çünkü stringleri toplayamayız, int memoryde böyle tutulur, binary olarak iki sayı böyle toplanır, eğer virgüllü sayı lazım ise float kullanırız vb.) işin algoritmasına (istenen şey/düzeltilmesi gereken sorun -> çözüm yolu) giriş yapmış oluyoruz, bu temel kavramları öğrenmek için algoritma da bilmemiz gerekiyor yani, aksi durumda bu dil öğrenmek olmuyor.
C# öğrenmek istiyorum. Ama bir türlü başlayamıyorum. Nasıl yazılım öğreneceğim?
Örgün eğitimde böyle bir yöntem yok ama, örneğin MIT algoritmalara giriş (6.006) dersi için; "A firm grasp of Python (6.001) and a solid background in discrete mathematics are necessary prerequisites to this course. You are expected to have mastered the material presented in 6.01 (Introduction to EECS I) and 6.042J/18.062J (Mathematics for Computer Science)." şeklinde bir beyanı var, aynı şekilde ITU ve ODTU CS programında da önce programlama dili ve matematik veriliyor ardından algoritmalara giriş dersi veriliyor.
Bunun dışında önce algoritma dersi verilip sonra programlama dilinin öğretildiği bir eğitim modeline ben rastlamadım.
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.