Kodlamanın bilgisayar biliminde iyi olması önemli mi? İyi bilmek için algoritma uygulanmalı mıdır?
Bir cs profesörün " asla kod yazmam" deyimini hatırlıyorum
Kodlamanın bilgisayar biliminde iyi olması önemli mi? İyi bilmek için algoritma uygulanmalı mıdır?
Bir cs profesörün " asla kod yazmam" deyimini hatırlıyorum
Yanıtlar:
Gerçekten algoritmayı anlayamayacaksınız iyi siz kod kadar.
Kodlama, profesörünüz için önemli değildir, ancak bir şeyler yapmak için kendisine ödeme yapılmadığını unutmayın. Ona bir şeyler söylemek (ve bir şeyler yazmak) için para verilir.
Ben eski bir matematik profesörüyüm, bu yüzden bu dinamiği iyi anlıyorum.
Onun yolunu takip etmek ve teorik bir bilgisayar bilimcisi olmak istiyorsanız, evet, kodlama daha az önemlidir. Ancak bunu yaparsanız, maaşınızın, bir şeyler yapmayı seçenlerin kazandığı kaynaklarla ödendiğini bilerek alçakgönüllü olmayı sürdürmeyi unutmayın.
Bilgisayar Bilimi bilgisayarlar hakkında astronomi teleskoplardan daha fazla değildir
- Edsger Dijkstra
Katılmaya eğilimliyim.
Soyut, temel Bilgisayar Bilimi kavramları konusunda uzmanlaşmış saf bir Bilgisayar Bilimi akademisyeni olmaktan bahsediyorsanız, mutlaka değil.
Bir benzetmeyi bükmek için: bu, NASA'daki her roket bilimcisinin "iyi bir roket bilimcisi" olmak için uzayda uçması gerekip gerekmediğini sormak gibidir. Tabii ki değil. Bir astronot olmak uzay uçuş endüstrisinin bir parçası ve çok pratik bir parçasıdır, ancak bu, yer bilimcilerinin kendi başlarına olduğu kadar önemli olmadığı anlamına gelmez.
Bununla birlikte, gerçek bir programlama dilinde yazmasa bile, oluşturduğu algoritmayı uygulamak iyi bir fikir olabilir. Bu anlamda algoritma tasarımını matematiğin bir dalı olarak düşünebilirsiniz.
Kodlama, gerçek bir bilgisayar bilimcisi olmak için çok önemli değildir. Kod içinde düşünme, yararlı soyut kavramlar geliştirmeye çalışırken düşünmeyi kısıtlayabilir. Çoğu mükemmel kodlayıcı, karmaşık algoritmaları analiz etmek veya programlama dilleri, gelişmiş arama ve sıralama algoritmaları, sonlu otomata teorisi, dağıtılmış hesaplama teorisi, R-Ağaçları, hata tolerans protokolleri, güvenilir iletişim protokolleri, dijital gibi kavramları geliştirmek için entelektüel parçalara sahip değildir. sinyal işleme algoritmaları, kriptografik teori, performans analizi ve optimizasyonu, verimli önbellekleme, harita azaltma, güvenilir güvenlik protokolleri vb. Mükemmel kodlayıcılar ve bilgisayar mühendisleri genellikle bu teorileri geliştirmeye ve oldukça etkili bir şekilde yapmaya çalıştıkları sistemlerde kullanabilirler, ancak bu gerçekten bilgisayar sistemleri mühendisi veya bilgisayar programcısı alemidir.
Kodlama, bir bilgisayar programcısı olmak için kritik öneme sahiptir. Bilgisayar bilimcileri tarafından üretilen faydalı soyut kavramların çalışma koduna nasıl kodlanacağını anlamak da yararlıdır.
Bilgisayar bilimindeki büyük bir problem, günümüzün programlama problemlerini çözmede çok az faydası olan matematik problemlerine sıklıkla çözüm bulmak zorunda olmalarıdır. Bir çözümü kodlasalar bile, hiç kimse bunu gerçekten kullanamazdı. Dijital sinyal işleme teorisini düşünün. Fourier, Hilbert ve Shannon gibi insanlar tarafından icat edildi, ancak bilgisayarlı DSP sorunlarına başvuru yaklaşık 20 yıl öncesine kadar mümkün değildi.
Bilgisayar eğitimindeki en büyük sorun, bilgisayar bilimcileri tarafından öğretilen çoğu insanın bilgisayar bilimcisi olmayacağıdır. Ancak çok fazla bilgisayar bilimcisi bunu anlamıyor. Kodlama onlar için önemli olmayabilir, ancak sınıflarındaysanız, neredeyse kesinlikle sizin için önemli olacaktır.
Bilgisayar eğitimindeki bir diğer büyük sorun, birçok gerçek bilgisayar bilimcisinin yazılım geliştirme öğretiminde yararlı olacak endüstriyel deneyime sahip olmamasıdır. Aslında bilmedikleri bir şeyi öğretmeye çalışıyorlar. Bu onların güvenilirliğini kaybetmelerine neden olur. Endüstriyel bir ortamda önemli olan şeyler çoğu zaman bu bilgisayar bilimcilerinden bazılarına kaydolmaz.
Uzun ve kısa kodlama, "bilgisayar bilimcisi" olan çoğu insan için önemlidir, çünkü bu insanların çoğu bilgisayar programcıları ve bilgisayar sistemi mühendisleri olacaktır.
Profesörün bulunduğu alt alana bağlıdır.
Sayısal analizde yetkin olan herkes muhtemelen bir Fortran vızıltısıdır. Herhangi bir AI profesörü Lisp veya Prolog veya benzeri bir şeyle kod yazacaktır.
Daha matematiksel alanların bazılarında, gerçekten kodlamaya gerek yoktur. Hala şüpheli bir dokunuş olurdum, kendim.
Görünüşe göre daha farklı bir matematik adamı gibi ... sadece bilgisayar biliminin arkasındaki matematik ve teoriye. Bu tür profesörlerin söylediklerini bir tuz tanesi ile alın.
Sadece teoriyi anlamaktan kurtulabilirsiniz ama algoritmaları ve böyle 1000x'i kodladıktan sonra daha iyi anladım (örneğin Kabarcık sıralama ve Quicksort, örneğin Big-O'yu bilmek harika ama pratikte büyük verilerle görmek harika -sets, hesaplama karmaşıklığını ölçmek için belirli bir gerçek dünya takdiri verir).
Bulduğum ilginç bir şey, bilgisayar biliminin teorik yönlerini ne kadar çok araştırırsanız kodlamanın o kadar kolay hale gelmesidir. Bir noktada şeyleri belirli bir dilde düşünmeyi bırakırsınız, daha ziyade onları daha geniş bilgisayar bilimi kavramları olarak görürsünüz.
Bu, tüm İngiliz profesörlerin aklıma film, TV dizisi, roman, oyun ve şiir yazıp yazamayacaklarını sormaya benziyor. Benzer şekilde, eşit derecede tuhaf bir fikir için asla sayıları kullanmayan bir Matematik profesörü hayal edin. Yani, temel Bilgisayar Bilimi'ni öğretmede kodlamaya biraz önem veren bazı temel unsurlar vardır. Bu nedenle profesör, temel dil sözdizimini ve profesörün öğrettiği dersler kadar karmaşık programların nasıl yazıldığını bilmelidir. Profesör derleyici tasarımını öğretiyorsa ve daha önce hiç derleyici yazmamışsa, bu büyük bir sorun olurdu. Daha önce hiç pişmemiş veya bir pasta yememiş bir aşçı pişirdiğinizi düşünün. Aye carumba.
Bunu bilmek için bir algoritmanın uygulanmasının bazı avantajlarını görebilsem de, bunun bir gereklilik olduğundan şüpheliyim. Sonuçta, bir kişi, bir algoritmanın nasıl uygulandığını anlamak için uygulamanın tavşan deliğinden ne kadar aşağı ilerlediğini merak edebilir mi? Örneğin, birisinin herhangi bir algoritmayı alması ve bunu gerçekten tanımak için prosedürel, Nesne yönelimli ve fonksiyonel programlama gibi çeşitli paradigmalar altında uygulaması gerekir mi? Derleyicilerin tüm kodu nasıl çevirdiğini ve elektron-elektron düzeyinde bitleri nasıl hareket ettirdiğini bilmek zorundalar mı?
"Asla kodlamam", geçmişin yanı sıra şimdiki zamanın da bir şekilde barındırılmasını ima eder. Ayrıca, bazı çevrelerde iyi gitmeyebilecek oldukça olumsuz bir ton taşıyabilecek ifadeyi görüntülemek için profesörün altında düşük bir şey olarak "kodlama" örtülü bir varsayımı da olabilir.
Profesyonel bir yazılım geliştiricisi olmasına rağmen, Makine Mühendisliği bölümünden mezun oldum.
Çok az deneyime sahip yapı ve işleme parçaları ile iyi bir mekanik tasarımcı olabilirsiniz, bu işi makinistlere bırakırsınız. Ancak parçaları nasıl yapılandıracağınızı ve işleyeceğinizi bilmek sizi daha iyi bir mühendis yapacaktır, çünkü tasarladığınız her şeyi imal etmek ve monte etmekle ilgili zorlukları tahmin edebilirsiniz.
Aynı şey yazılım için de geçerli. Bir "kodlayıcı" bir makinist veya teknisyenken, bir yazılım mühendisi de mühendistir. Birçok yerde, bir kişi her iki işi de yapar. Bu imkansız değil ve bazı çok soyut konularda "sadece mühendislik" pozisyonu işe yarayabilir.
Ancak büyük çoğunluk için, kodlamayı reddetmenin kesinlikle bir yararı yoktur.
Eğer düşünmüyor ve durma problemine son vermedikçe, her zaman Bilgisayar Bilimi'nin her alanında kodlama için bir kullanım vardır.
Hiçbir programlama yapmadan aldığım tek CS sınıfı teoriydi. Orada "Asla denemiyorum" diyen çok sayıda fizikçi olduğunu hayal ederdim ama muhtemelen "Hiçbir şey keşfetmedim" diyenler de olabilir. Ve umursarlarsa şaşırırdım.
Bilgisayar Bilimi öğrencisi olarak, ilk başta yazılım geliştirmeyi içeren kavramları anlamak daha iyi olur. Yazılımın arkasındaki fikri ve bir bilgisayarla nasıl etkileşime girdiğini öğrendikten sonra, kodlama ve belirli uygulama sorunlarıyla başa çıkma zamanı.
Bu tıpkı "Yazılım İstisnaları" gibidir, ilk başta sadece onlarla ilgilenirsiniz çünkü yapmanıza izin verilmeyen bir şey yapmışsınızdır. Onları öğrendiğinizde, kodunuzu daha ayrıntılı yapmak için kodunuzla aynı şeyi yapmaya başlayın.
Bence uygulamalarında normal bir iş akışı olarak İstisnalar kullanan programcılar gibi kavramları önemsemeyen insanlar. NASIL biliyorlar ama gerçekten NEDEN alamıyorum.
Profesörünüz için başka bir deyim var:
Yapabilenler, yapanlar, yapamayanlar öğretir.
imo, konuşma ucuz. Herkes durmadan 'teori' hakkında tartışma yapabilir ve buna 'bilgisayar bilimi' diyebilir. Fakat gerçek pratiğe girinceye kadar teori çok yararlı değildir, çünkü bunu doğrulamanın bir yolu yoktur. Bir konuda bir prof görüşünü alacağını çok daha ciddi ben o aslında var bilse çözüldü o sadece veya herhangi bir destekleyici kanıt olabilir veya olmayabilir 'teorisini' regurgitating eğer daha kodunda belirli bir sorunu yedeklemek kendi bakış açısından.