kodlama önemli mi? [kapalı]


9

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


32
Bir grup Programcıya kodlamanın önemli olup olmadığını soruyorsunuz ... tam olarak tarafsız bir yanıt alamayabilirsiniz.
Rachel

25
Profesörünüzün deyimine gereken saygıyla, eğer kod yazmazsa, başkalarına kod yazmayı öğretecek nitelikte değildir. Öğretimi tamamen teorik ise, yine de kodlama becerilerinden faydalanacaktır.
Robert Harvey

19
Yüzemeyen birinden yüzme dersleri alır mıydınız?
Steven A. Lowe

5
@Steven A. Lowe: Bence yüzücü olmayan profesör yüzmeyi değil su fizyolojisini öğretiyor. Yine de, yüzmezse, azot narkozunun nasıl hissettiğini bildiğinden şüpheliyim.
Javier

4
@Javier: Sualtı yıkımlarını öğretme olasılığı daha yüksek, ancak SCUBA sertifikası bile yok. Bunun gibi insanlar için teknik terim ("profesör" dışında) "poseur" ;-)
Steven A. Lowe

Yanıtlar:


27

Gerçekten algoritmayı anlayamayacaksınız iyi siz kod kadar.


3
bu mutlaka doğru değildir, bir algoritmayı anlayabilir ve gerçekte kodlamadan bir duruma veya soruna uygulayabilir.
aggietech

10
@aggietech: Bence buradaki anahtar kelime "iyi".
Robert Harvey

2
@aggietech, Robert doğru anladı. Algoritmaları papağanlayabilirim, ama gerçekten işe yaramaya çalıştığımda, bunun hakkında ne kadar öğrenmem gerektiğini öğreniyorum.

3
döngüler ve kabarcık türlerinden bahsediyorsanız, o zaman önemli değil, ancak genetik algoritma hakkında bir kitap okumak ve gerçekte onunla gerçek dünya sorunlarını çözmek arasında büyük bir fark var
Steven A. Lowe

2
@Steven, evet, karmaşıklığın onunla çok ilgisi var.

19

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.


3
Deneyimin sesi. Bu gördüğüm profesörlüğün en güzel özeti hakkında.
TehShrike

1
Evet, ve eğer başkalarına iyi "yapmayı" öğretecek olursanız, "do" yı uygulamanız gerektiğini de ekleyeceğim.
Beth Whitezel

@BitOff: Kabul ediyorum, ancak "if" da "sadece eğer". Asla kodlamayan bir profesörün işletme öğretme yazılımı geliştirmesi yoktur, ancak karmaşıklık teorisini öğretmek için mükemmel bir şekilde uygun olabilir. Bu durumda, öğrencilere öğrettiği şey teoremleri nasıl kanıtlayacağıdır, bu yüzden tek şart, teoremleri kanıtlayan (kodlama değil) pratik yapması gerektiğidir.
ShreevatsaR

@ShreevatsaR Evet katılıyorum. Ve aslında pratikte çok fazla kod yazmaları konusunda o kadar da katı değilim. İyi kodlayıcılar nadiren iyi öğretmenler yaparlar. Öğretmen hafta puanlarını bilirse telafi edebilir. Yerel olarak endüstri insanlarını sınıfa getiren bir programımız var. Öğretmen, öğretim konusunda uzmandır, kodlayabilir ve öğrencilerin yararına bilgileri sektörden nasıl çekeceğini bilir.
Beth Whitezel

16

Bilgisayar Bilimi bilgisayarlar hakkında astronomi teleskoplardan daha fazla değildir

- Edsger Dijkstra

Katılmaya eğilimliyim.


2
Tamam, ama bunun soru ile nasıl bir ilişkisi var?
Robert Harvey

2
"Kodlamanın bilgisayar biliminde iyi olması önemli mi?" Bir bilgisayar ilgili değilse, bilgisayarın fiziksel kodlaması nasıl önemli olabilir?
ElGringoGrande

1
@Robert Harvey: Bilgisayar Bilimi açıkça bilgisayarlarla ilgili değil ve birçok astronom cam merceğe bakarak çok az zaman harcıyor. Bazıları sadece sonuçları analiz eder. Bilgisayar programlamadaki önemli keşiflerin yarısı, bilgisayar bile gelmeden önce biliniyordu.
Orbling

2
@Robert Harvey: Bilgisayar bilimi sadece nasıl programlanacağı ile ilgili değil, hesaplama bilimi. Saf ikili kodlamanın dışında, bilgisayar biliminin kuramlarını ve bulgularını uygulamak için bir soyutlama olan bir dil kullanırsınız. Bilgisayar biliminde (örneğin kuantum hesaplama), programlamanın tam olarak gerçekleştiremediği birçok fikir vardır. Söylediğim tek şey, bilgisayar biliminin tüm fikirlerinin bir programlama dili kullanılmadan tamamen ve zarif bir şekilde ifade edilebileceğidir. Yapamayan bir isim verin.
ElGringoGrande

3
@Orbling: Çok doğru. Örneğin, Turing'in ilk elektronik bilgisayar bile oluşturulmadan önce evrensel Turing makinesi kavramını icat ettiğini hatırlayın. Tonlarca kod yazmadığı gerçeği onu beceriksiz bir bilgisayar bilimcisi yapıyor mu?
mipadi

11

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.


1
NASA'daki tüm roket bilimcilerinin roket bilimi ve mekanik ve elektrik mühendisliği konusunda derinlemesine, uygulamalı deneyime sahip olduklarını söylemek doğru olur. Oh, ve genellikle kod yazmayı da biliyorlar.
Robert Harvey

3
Ben sadece nasıl teorize değil, birçok kez yörüngeleri hesapladıklarını düşünürdüm.

3
+1, başka bir örnek daha ekleyebilirim - şarap yapımında harika bir kişi (veya şarap tadımı yapan çocuklar ne olursa olsun) olmak için deneyim sahibi olmanız gerekmez.
Jas

2
@Jas: Korkunç benzetme. Bilgisayar bilimcileri son ürünün alıcıları değil. Bunlar şunlardır şarap yapıcıları.
doppelgreener

1
@Axidos Hayır, hayır, onlar üzüm çiftçileri .
Mark C

9

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.


Sorunun kalbine mükemmel cevap. Sorun şu ki, ikisini de öğrenmelisiniz: Endüstri ile ilgili Hesaplamalı Bilim ve Yazılım Mühendisliği. Çoğu üniversite diğerinden daha iyi, genellikle eskisinden daha iyi öğretir - bir üniversitenin doğası gereği, ikincisini tanıtan ve ikincisiyle ilgisi olmayan bir araştırma enstitüsü olduğundan, ikincisine ulaşmak aşırı kolay değildir. Bu, çoğu pratik alanda bir sorundur.
Aralık'ta Orbling

3

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.


2

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.


5
Ben matematik meraklısı ve algoritmalar bağımlısıyım. Her zaman kodlamayı severim. Ancak, algoritmalar kodlamanın arkasındadır. 1 kalem ve 1 kağıt algoritma ve bence hesaplama teorisi için yeterli. Bugünlerde yaptığım sadece algoritmaları düşünmek ve yazmak ama kodlamak değil
hilal

5
Herhangi bir profesörün söylediklerini bir tuz tanesi ile alın. Eğer ayrık bir matematik adamı ise, programlama veya yazılım mühendisliği hakkında konuşurken değil, ayrık matematik hakkında konuşurken onu ciddiye alın.
David Thornley

1
Ayrık matematik adamları alanın en önemlileri arasındadır, teori kodlayıcılar tarafından uygulanır, doğrulanması için uygulamaya gerek yoktur. Gerçekten bir tutam tuz.
Aralık'ta Orbling

@Orbling Ve programlayanların (geniş bir grup) söylediklerini, benzer bir askıya alınmış yargı ve sağduyu ile alın.
Mark C

@ Mark C: Evet, herkesi bu dozlara sahip herkes tarafından söylenen her şeyi almaya çağırırım.
Aralık'ta Orbling


2

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.


2

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.


3
İngilizce profesörleri, başkalarına film senaryolarının nasıl yazılacağını öğretiyorlarsa, film senaryolarının nasıl yazılacağını bilmelidir. Ancak tüm İngiliz profesörler gerçek bir kitap olmasa bile çok iyi bir tez yazabilmelidirler.
Robert Harvey

2
@Robert Harvey: OP'ın profesörü söylemedi olamaz o değil sadece, kodu. Zamanının çoğunu araştırmaya harcayan teorik bir bilgisayar bilimcisi olabilir. JB King'in belirttiği gibi, derleyici tasarımı veya yazılım mühendisliği dersleri vermediği sürece, alanında çok deneyimli ve yetkin olabilir.
mipadi

@Robert Harvey: Sanırım mipadi'nin burada bir anlamı var, profesör sadece "Asla kod yazmam " dedi, aciz değil.
Aralık'ta Orbling

@JB King, @Orbling: teklifin bir çeviri olduğuna bahse girerim, bu yüzden kelimenin tam anlamıyla aşırıya kaçmayın.
Javier

@Javier: İyi olabilir, bu durumda daha az net kesim olurdu.
Aralık'ta Orbling

2

Profesörünüz biraz haklı olabilir, bunun için bir profesör olarak kodlamanız gerekmez, ancak teori hakkında çok şey bilir. Ancak bu üniversite sınırları dışında çalışmaz.


1

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.


2
Ancak, dediğin gibi, sen bir makine mühendisisin ve yazılım mühendisliğinden bahsediyorsun . Mühendisler bir şeyler yaparlar. Fakat söz konusu profesör bilgisayar bilimini öğretiyor .
mipadi

1

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.


1
Bilgisayar derecemde (uluslararası bir ilk 10 üniversitede olduğu için topal bir şey değil), sınıflarımın en az üçte birinin içinde hiç programlama olmadığını söyleyebilirim. Bilgi işlem, koddan çok daha fazlasıdır.
Aralık'ta Orbling

Tamam, görünüşe göre ilk on üniversiteye de gittim, hatta aynı üniversiteye gitmiş olabiliriz ve kendi beğenilerimize veya beğenmediklerimize göre farklı sınıflar almış olabiliriz veya bir ilk ya da diğerinin profesörlerini rastgele aldık.
Peter Turner

0

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.


-6

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.


6
Einstein, Aristoteles, Webster, Ayn Rand, Thoreau, Konfüçyüs ve Booker T. Washington öğretmenlerdi. Ne eğitimsiz bir açıklama.
JeffO

4
-1 Öğretmenlere son derece hakaret edici bir yorum için. Sık sık alıntı yapıyorum biliyorum, ama hep saçma. George Bernard Shaw'un asıl açıklaması "Yapabilen, yapabilen. Yapamayan, öğreten" idi. den Man ve Superman, 1903 - o da söyledi: "öğretimde insan kurtuluş yalanlar tek umudu Bana göre." ve London School of Economics'in (LSE) kurucu ortağıydı, bu yüzden onun görüşüne karar veriyorsunuz.
Aralık'ta Orbling

2
Einstein hayatında asla fiziksel bir deney yapmadı - başkaları tarafından yapılan ve (bir istisna dışında) tam olarak tahmin ettiği gibi ortaya çıkan birkaç düşünce deneyini tarif etti. Einstein'ın "sınıf dışında önemli bir başarısı" olmadığını söyleyebilir misiniz? Neden profesör son kullanıcılar tarafından doğrudan kullanılabilecek bir şey uygulanmadı etti diye o, diyelim ki, yeni bir algoritma araştırılmış olmadığını Varsayalım ki bir alanda programcılar tarafından kullanılan? Aslında, profesörün işinin öğrencilere nasıl kod yazacağını öğretmek olduğunu bile varsayıyorsunuz !
ShreevatsaR

3
Dostum, (MIT) benim bilgisayar bilimleri profesörü sürü korku veren ve topluma çok önemli katkılarda bulunmuştur ve bunlar yapmak "kendi alanlarında şeyler" - Çok! Ancak alanlarının kodlama ile çok az ilgisi vardır ve en azından nadiren kodlarlar. (Cidden, kuantum hesaplama üzerinde çalışan birinin, var olmayan kuantum bilgisayarlar için kod yazmasını mı bekliyorsunuz?) Bilgisayar bilimi hakkında çok dar bir görüşünüz var gibi görünüyor. ( Mühendislik değil, bilgisayar bilimi olduğunu unutmayın .)
ShreevatsaR

2
@BrandmasterB: Bir bilgisayar bilimi profesörü hesaplama teorisine odaklanırsa, nadiren kod yazması muhtemeldir. Bu, alanında hiçbir şey yapmadığı anlamına gelmiyor - muhtemelen hesaplama teorisi hakkında makaleler yayınlıyor! Sen conflating ediyoruz programlama ile bilgisayar bilimleri .
mipadi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.