İyi bir programcı olmak için matematikte iyi olmak zorunda mısınız? [kapalı]


78

Geleneksel bilgeliğin, iyi programcıların matematikte de iyi olduğunu öne sürdüğü görülmektedir. Ya da bu ikisinin bir şekilde kendine bağlı olduğu. Okuduğum birçok programlama kitabı, matematik problemlerine çözüm olan ya da bir şekilde çoğu insan için anlamlı olan bu örnekler gibi matematiğe ilişkin birçok örnek sunmaktadır.

Bu yüzden yüzmek istediğim soru şudur: İyi bir programcı olmak için matematikte iyi olmak zorunda mısınız?


1
@Mark mutlaka değil. Bir konuyu öğrenmek ve beğenmek iki farklı şeydir.
Saat

3
Sen kral mısın Veya yapışık ikizler? Hayır ise, kendinize atıfta bulunarak "I" ye bağlı kalmanızı öneririm.
drxzcl

1
@jk - Doğru olasılıkları en yüksek physics.about.com/od/alberteinstein/p/einsteinpro.htm hala programlamaya sanatın iyi bir miktar olduğunu düşünüyorum; p
Garet Claborn

3
Matematikten hiç hoşlanmadığımı sanıyordum. Hayatın ilerleyen zamanlarında, sadece sözdiziminden memnun olmadığımı fark ettim.
MrFox

1
Tüm programcılar her zaman matematiği kullanır, sadece farketmezler çünkü okulda öğretilen matematikten çok farklıdır. Gizli matematik, lambda matematiği, Boolean cebri, mantık (!) Her gün kullandığımız matematik dersidir.
rotman

Yanıtlar:


83

Ne tür bir programlama yapmak istediğinize bağlı olduğunu düşünüyorum. İş dünyasında bir programcı olduğu sürece, cevabın hayır olmadığını söyleyebilirim. Gelişmiş matematiği bilmeden harika bir programcı olabilirsiniz. Matematikle uğraşmak zorunda kalmazsanız, formüller genellikle iş gereksinimlerinde tanımlanır, bu yüzden sadece bunları kodda uygulama meselesi haline gelir.

Kapak tarafında, düşük seviyeli bir programcı olmak veya 3D grafik motorları oluşturmak demek istiyorsanız, matematik büyük bir rol oynayacaktır.


6
Matematikte bazı doktoralar gördüğümü ve fiziğin dehşet kod yazdığını eklemek isterim. Bu beceriler bir dereceye kadar örtüşür, ancak ayrı disiplinlerdir.
MrFox

133

Tahıllara karşı gidiyorum ve evet diyorum , matematik zihniyetine ihtiyacın var . Çoğu insan matematiği aritmetik veya ezberleyen arcan formülleri olarak düşünür. Bu, mükemmel bir yazım veya iyi bir yazar olmak için olağanüstü bir kelime haznesi ihtiyacınız olup olmadığını sormak gibidir.

Yazma iletişim ile ilgilidir ve matematik / programlama açık, mantıklı düşünme süreciyle ilgilidir (bir şekilde hata yapamayacağınız; denklem dengelenemez veya program derlenemez). Spesifik olarak, bu mantıksal düşünme şunları gösterir:

  • Sayılar arasındaki farkları tahmin etme / anlama yeteneği: O (n ^ 2) - O (lg (n)), sezgisel KB - MB - GB - GB, ne kadar yavaş RAM? Bir KB'nin GB'ye kıyasla ne kadar küçük olduğunu fark etmezseniz, önemli olmayan şeyleri optimize etmek için zaman harcarsınız.
  • Fonksiyonlar / fonksiyonel programlama (f (x) = x ^ 2 denkleminin, bu metodu nasıl yazdığınıza çok benzemesi bir tesadüf mü? "Algoritma" ve "fonksiyon" kelimeleri, matematik dünyasında çok daha önceleri matematik dünyasındaydı. ilk bilgisayar :-) doğdu
  • Kendi denklemlerinizi oluşturmak ve yeniden düzenlemek için temel cebir, ortalamalar, temel istatistikler

Bu yüzden, bir matematik zihniyetine ihtiyacınız olduğunu, programınızın yaptıklarının zihinsel modellerini gerçekler ve teoremler koleksiyonundan ziyade yapılandırabilen ve manipüle edebildiğiniz söyleyeceğim . Grafikler veya veritabanları gibi belirli alanlarda da ihtiyacınız olan bazı gerçekler olacaktır, ancak bana göre "matematikte iyi" olmanın özü bu değil.


1
Matematik temel vs matematik zihniyet: tüm fizik formülleri bilmek ve doğru bir arka bahçesinde 20 metre uzakta bir lastik top zıplayarak mümkün arasındaki fark gibi!
TehShrike

9
Pek çok iyi programcının satranç oynamayı ya da oynamayı bildiğini
eklerim

1
Çok fazla bilgisayar kodu temelde cebirdir, ancak bunu kendiniz çözmek yerine bilgisayar için ayarladınız. Cebir ile tamamen evde değilseniz, bunun için iyi bir iş yapmayı nasıl bekleyebilirsiniz?
Loren Pechtel

18
Matematiksel düşünme, programlamanın anahtarıdır. Tam olarak bunu vurgulamak için oyumu ekliyorum.
Gus

4
+1 Matematik , programlama dillerinin anlaşılmasında hayati öneme sahiptir çünkü bizim mesleğimizin temelidir. Günlük olarak kullandığımız programlama dili yapılarının çoğu lambda matematiği gibi matematik disiplinlerinden kaldırılmıştır.
MattDavey

53

Programlamanın birçok farklı alanı vardır ve bunların çoğu, özellikle yüksek bir matematik bilgisi standardı gerektirmez. Asla bir 3B motor yazamayacaksınız, ancak kesinlikle iş ve web uygulamaları geliştirebileceksiniz. Kabul edelim - çoğu bilgisayar programındaki en yaygın matematiksel işlem bir sayıyı bir arttırmaktır.

Çok mutluyum, özellikle matematikten hiç hoşlanmadığımı veya bunda iyi olmadığımı kabul ediyorum (aslında İngiliz Edebiyatı bölümünden mezunum!) Ve 12 yıldan fazla bir süredir profesyonel bir geliştirici olarak çalışıyorum. Çoğunlukla bu kadar matematiğe ihtiyaç duyan web uygulamaları geliştiriyorum. Daha da önemlisi, mantıklı düşünme, sorunları parçalara ayırabilmenin ve ilgili çeşitli teknolojiler ve çerçevelerin geniş bir anlayışa sahip olabilmesidir.

Bir programcı olarak, mevcut bir algoritmayı, tamamen yeni bir tane tasarlamaktan daha çok uygulamak zorundasınız . Diyelim ki, bileşik ilgi göstermek mi istiyorsunuz? Kendin çözmene gerek yok, sadece formüle bak ve uygula. Sorunların çoğu zaten çözülmüş durumda, çözümlerin seçtiğiniz dilde nasıl uygulanacağını bilmeniz yeterli. Bu, matematikte iyi olmanın bir avantaj olmayacağı anlamına gelmez ; Sadece tamamen gerekli değil .

80'li yılların ortalarında okuldayken çok yaygın olmayan ev bilgisayarlarında matematik ödevimi çözmek için sık sık programlar yazdım. Kafamın içinde sık sık yapamadım, ancak yazılım rutini için gerekli olan herhangi bir formülü uygulayabilirdim. Dik açılı bir üçgenin en uzun tarafını bulmak için başka bir Pisagor olmanıza gerek yok, yalnızca a² + b² = h²seçtiğiniz dilde kod yazmanız gerekiyor .


3
Eğer fiyatlandırma seçenekleri ya da onun gibi bir şey yapmıyorsanız finans ve muhasebe o kadar da kötü değil .

5
Bir noktan var Chris, ama finansal uygulamalarda bile, onları geliştirmekten daha fazla formül kullanma ihtimalin yüksek.
Dan Diplo

2
@Mark - Doğru, ancak yuvarlama sorunlarını anlama konusunda daha doğru bir kullanım şekli olduğunu düşünüyorum. (Örneğin) ondalık değerinin parasal değerler için kaymayacağından daha iyi olduğunu öğrenmek için matematikte iyi olmanıza gerek yoktur. Ve bir matematikçilerin kullanmak için doğru veri tipini otomatik olarak anlayacağını sanmıyorum - bu bir öğrenme meselesi.
Dan Diplo

3
@ SK-mantık: Daha kesin olarak, bir bilgisayarın yaptığı her şey mantıklıdır . Bu mantık işlemlerinin bazıları matematik olarak yorumlanır (ve bazı insanlar mantığın bir matematik dalı olduğunu iddia eder, bazıları filozofların öfkesine kadar).
Donal Fellows

3
@ Donal Fellows, biçimsel mantık bir matematiktir. Ve filozoflar yine de matematiğe tarihsel katkılarıyla ve aynı zamanda geri dönen matematikçilerle (örneğin 'monadoloji' gibi garip şeyler icat ederek) tanınırlar.
SK-mantık

30

Matematikte iyi olmak zorunda değilsin. Ancak, mantık ve problem çözmede iyi olmalısınız. Ancak mantık ve problem çözme konusunda iyi olan insanlar matematikte de genellikle iyidir. Bunun gerçekten matematiğin türüne bağlı olduğunu söyleyebilirim. Matematikte (benim gibi) korkunç olabilir ve yine de iyi bir programcı (benim gibi) olabilirsiniz. Fakat Ayrık Matematik ve Küme Teorisi ile ilgili sorunlarınız varsa, muhtemelen programlamanın oldukça zorlu yönlerini bulacaksınız.


"Problem çözme" de iyi olmak için mantıkta iyi olmanız gerekmez. Pek çoğu olmasa da, problemler mantıkla hiçbir şekilde ilgisi olmayan buluşsal yöntemler kullanılarak çözülebilir.
ElGringoGrande

1
İyi bir programlayıcı olduğuna emin misin? :)
Russell

17

Matematiği neden sevmediğinizi yakından incelemek önemlidir.

Akademik bir disiplinden hoşnutsuzluk, genellikle okulda olan bir şeydir ve öğretmenle bir tür veya başka bir çatışmaya düşebilir, bir konudaki kendi yeteneğinize güven duymamanız veya akran grubu baskısı olabilir.

Programlama! = Matematik Matematiği "hissetmek" bile istemiyor (benim için gayretli bir şekilde çalışmamasına rağmen matematikten zevk aldım). Matematikte kullanabileceğiniz birçok beceri, programlamada bile gereklidir, ancak çoğu programcı çoğunlukla kendilerini öğretir. Okuldaki matematikten hoşlanmamak, programlama beceriniz veya yeteneğiniz üzerinde büyük bir sıfır etkiye sahip değildir.


Matematiğin etrafında bir sürü kötü öğreti gördüm. Bunun özü, bir sorunu bilinen bir soruna dönüştürmek, sonra da fazladan bir kelime olmadan "çözülmüş" demek. Ancak, öğretimde ileriye gitmenizi ve daha düşük seviyelere kadar kanıtları yeniden uygulamanızı gerektirmesi muhtemeldir.
Balog Pal,

16

Matematik ve programlama çok yakından ilişkilidir, çünkü matematik gerçekten insanlar ve bilgisayarlar arasındaki evrensel dildir. Yüksek seviye programlama için çok fazla matematik bilmenize gerek yok, çünkü bunların çoğu sahnelerin arkasında, ancak daha gelişmiş programlama konseptlerinin anlaşılmasında yardımcı olacaktır. Daha düşük seviyeli programlama yapmayı planlıyorsanız (sistemler veya cihaz programlama), o zaman çok daha fazla matematik bilmeniz gerekir.


11
+1. Sinyal işleme, makine öğrenmesi, bilgisayarlı görü, 3B görüntü oluşturma, fizik simülasyonları, animasyonlar, hesaplamalı geometri, kriptografi ve muhtemelen doğru düşünemeyeceğim birçok alan gibi "üst düzey" şeyler yapmak istiyorsanız da matematiğe ihtiyacınız olacak. şimdi.
nikie

2
@ nikie: Evet, ama uygulamalı matematik. Büyük farklılık. ^^
gablin

Ugh. Aslında matematik evrensel bir dil değil. Mantık Ve Mantık, Filozofların alanıdır. Her neyse, bilgisayarların gerçekte nasıl çalıştığı konusunda, elektrik / elektronik mühendisliği ve biçimsel felsefeyi bilmek, matematikten daha iyidir. Sadece bir kariyer bağlamında programlama yapmayan bir bilgisayar bilimi yapıyorsanız sadece matematik ihtiyacınız var.
RibaldEddie

14

Bir iyi bir? Çok düşük bir ihtimal. Çoğu tasarım deseni matematiksel kavramlarda en azından bir temele sahiptir. Değişkenler, döngüler, prosedürler ve nesneler gibi programlama için gerekli olan şeyler cebir, matematik ve küme teorisi gibi matematiksel alanlardaki kavramlara benzerdir.

Ayrıca bilgisayar biliminin bir matematiğin alt kümesi olduğunu düşünün : tüm programlamanın dayandığı algoritmalar ve biçimsel mantık temelde matematiktir .

Eğer matematikten nefret ediyorsan, programlamadan nefret edeceksin .


13

Hemen hemen herkes cevap verdi: "İyi bir programcı olmak için matematiği bilmeniz gerekiyor mu?" Bunun doğru cevabı şudur: “Hayır, gerçekten değil, ama yardımcı olur”, çoğu kişinin söylediği gibi.

Fakat benim soruma dair yorumum "matematiksel yetenek ile programlama yetenek arasında güçlü bir ilişki var mı?" Bunun doğru cevabı şudur: "Evet, var." Cebir, geometri ve hesap aracılığıyla mücadele ediyorsanız, o zaman soyutlamalar ile başa çıkmakta ve / veya mantıklı düşünmekte çok iyi değilsinizdir. Eğer matematikte kötüyseniz, muhtemelen hiç iyi bir programcı olmayacaksınız. (Denememeniz gerekmiyor.)


11

Programladığınız şeye bağlı. Örneğin, bir 3D oyun motoru, uygun matematiksel kavramları bilmeden herhangi bir tutarlılık derecesine göre çekmek için imkansız değilse de çok zor olurdu.


11

"Beğen" ve tamamen farklı şeyler "de yetkin olmak" - bu yüzden sürece düzgün numerate gibi o zaman ben neden bir sebep göremiyorum sahip matematik sevmeye.

Fakat burada kesinlikle açık olalım - programlama matematikte güçlü bir temele sahiptir ve er ya da geç neredeyse önemsiz olmayan herhangi bir gelişme hesaplamaları içerecektir - bundan saklanamazsınız.

Herhangi bir programlama mantığı (matematiğin temelini) içerir, çoğu modern programlama muhtemelen küme teorisini (açık olmasa bile) içeren şeyleri (SQL gibi) içerir ve bu durumda değilse alemler (oyun programlama gibi) daha da açıkça matematik temellidir (renderleme - matematik, AI -> olasılık ve rastgelelik - matematik ...) ve devam eder.

Yukarıdakilerin sonuçları, sayılarla rahat olmanız gerektiğidir - “Dünyada 10 tip insan var, ikiliyi anlayanlar ve anlamayanlar” komik olsun. Ama muhtemelen "2 + 2 = 5 ... 2 büyük değerler için" mazeretiniz var.


+1, bu gerçekten moral bozucu; Aslında şakaya güldüm.
Ben

10

Temel matematik kavramı, algoritmaları takip etmek, geliştirmek, anlamak, uygulamak ve kullanmaktır. Eğer matematik yapamıyorsanız, o zaman bu şeyleri yapamayacağınız ve bu şeyleri yapamayacağınız zaman etkili bir programcı olamazsınız.

Yaygın programlama görevleri belirli bir matematiksel bilgiye ihtiyaç duymayabilir (örneğin, örneğin 3B grafikler veya fizik simülasyonları gibi görevler yapmıyorsanız muhtemelen vektör cebirine ve hesabına ihtiyacınız olmayacak), fakat temel beceriler aynıdır ve yetenek eksikliği bir alanda, diğer alanda karşılık gelen bir yetenek eksikliği ile eşleştirilecektir.


9

Dürüst olmak gerekirse, okulda korkunç bir matematik öğrencisiydim. Cebir o zamanlar tamamen benim üstümdeydi ve bunda bir D'den daha yüksek olduğumu sanmıyorum.

Ancak birkaç yıl sonra profesyonel bir yazılım geliştiricisi olarak çalıştıktan sonra üniversiteye geri döndüm ve cebirle ilgili bir kursa gittim. Şaşkınlık için, sahip olduğum en kolay sınıftı ve içinde A aldım.

Gerçek şu ki, programlama bana cebir öğretti, çünkü neredeyse her şey sadece bir cebirsel ifadedir.

Yani hayır, başlamak için ihtiyacınız yok. Yardımcı olur, ancak gerekli değildir. Matematik öğretmenin bir aracı olarak yazılım geliştirme hakkındaki güzel şey, derleyicinin, hata ayıklayıcısını ve yürütme programının yanıtı doğru aldığınızı doğrulamanın harika yolları olduğudur. Bu bakımdan, özellikle hata ayıklama, öğrenme için büyük bir nimettir, çünkü kodda ilerleyebilir ve algoritmanızın değerlendirmesinin her adımını izleyebilirsiniz.


10 yıl yazılım geliştirdikten sonra okula devam ediyorum ve aynı şeyi yaşıyorum. Kavramların çoğunu yıllar boyunca yazdığım bazı işlevselliklerle ilişkilendirebildiğim için, Matematik ve İstatistikleri daha kolay buluyorum. Kendime SQL katıldığımı öğrettiğimde Venn diyagramlarını bilmediğimde sinirleniyorum. Hile yapmak gibi.
Heath Lilley

7

Kesinlikle tam olarak ne yaptığınıza bağlı, kesinlikle acıtamaz.

Örneğin, Bilgisayar Bilimi dalında uzman birinin diplomasını almak için çok fazla matematik harcaması gerekiyor. CS, genellikle yüksek seviye matematik tarzı kanıtlarla kanıtlanmış algoritmalara ve doğruluğuna odaklanır. Universitie'nin CS programlarının çoğu matematik programlarına o kadar yakındır ki, iki ana dal sadece birkaç ders ötededir. Bir yazılım mühendisliği uzmanı olarak bile, kendimi matematik dersinden 2 ders uzaktaydım.

Bununla birlikte, söylendiği gibi, öğrendiğim birçok kanıt, veri yapısı, arama yöntemi ve algoritma doğruluğu, okulu bitirdiğimden beri doğrudan kullanılamaz hale geldi. Ancak en azından bana iyi bir temel ve düşük seviyede ne yaptığımı daha iyi anlamadığımı söylemek zor olurdu.

Çünkü nasıl bakarsanız bakın, en düşük seviyede, yaptığınız her şey matematiğe düşüyor.


7

Matematik olmadan iyi bir yazılım geliştiricisi olabilir misiniz? Evet bencede. İnsanların her zaman hakkında konuştukları bir tür kahramanca programcısı olabilir misiniz? Bence değil.

Sorun, hepsinin olmasa da çoğu kahramanca programcıların (bence Dennis Ritchie) bilgisayar bilimi ya da matematik geçmişine sahip olmasıdır. Gerçekten harika bir programcı olmak için, algoritmaları yüzeysel olmaktan öte bir düzeyde anlamanız gerekir, bu da resmi bilgisayar bilimine dalmaya zorlandığınız anlamına gelir. Bilgisayar bilimi ise sadece uygulamalı matematiktir.

Benzer şekilde, lambda matematiği anlayışı bir işletim sistemi mimarı veya bir dil tasarımcısı için paha biçilmez olacaktır.


7

Bu konunun ileri geri savunduğunu gördüm. Matematikte dereceleri olan ve progam çıkarabileceklerini düşünen insanlarla çalıştım ve bir veya iki yıl içinde kariyerini değiştirdim. Birlikte çalışmaktan zevk aldığım en iyi programcılardan biri Biyokimya alanında doktora derecesine sahipti ve okulda resmi bir programlama / CS dersi almadı, ancak kendi kendine ders verdi ve başarılı bir yazılım şirketi kurdu!

Sonuçta, harika bir programcıya iyi gelen şey, mantığı, iş akışlarını anlayabilen, örnek olarak öğrenebilen ve bir çözüm araştırmaya istekli olan kişidir. Ayrıca, başvurularınız için olan İŞLENME ÖĞRENMELİDİR. Muhasebeciliği anlamadıklarını ancak muhasebe uygulamaları yazdıklarını söyleyen programcılardan nefret ediyorum. Her zaman yanlış varsayımlar yaparlar ve gelişmeyi gerçekten yavaşlatırlar.

Hangi okula giderseniz gidin, okul dışında bir yılda, 4 yıllık okuldan daha fazla öğreneceksiniz. Okul size temel beceri seti ile nasıl öğreneceğinizi öğretiyor - fakat gerçek dünya deneyimi zaman içinde çok daha değerli.

Tecrübe en iyi öğretmendir ve işi öğrendiğiniz sürece matematiği yazılım geliştirmeye uygulamak zorunda olduğunuzda - iyi olacaksınız. Ayrıca, daha önceki bir yazının söylediği gibi, bir 3B grafik motorunda veya GIS uygulaması gibi grafik koordinat sistemlerinde çalışmaya çalışmadığınız sürece, liseden öğrendiğiniz matematik gerçekten ihtiyacınız olan şeydir.

Muhasebe ve Faturalandırma sistemleri üzerinde çalıştım - ve hiçbir zaman genel bir defteri tutmak veya veri girişine izin vermek için Log (x), SIN, COS vb. Yaşlanma Günlüğü "yüksek matematik" değildir, AP konularını değerlendirmede kritiktir.

Bir düşünün, masasında bilimsel hesap makinesi olan bir muhasebeci ile hiç karşılaşmadım!


5

Kısa cevap hayır. Sanırım biraz efsane ama ilerletiliyor çünkü matematik problemleri genellikle bilgisayarlar tarafından çözülmeye çok uygun.

Böylece, üniversitede, insanlar compsci konularında çözmeleri gereken matematik problemleri alırlar, ancak genelde bulacağınız şey, matematiğin çözümü çözmek için gereken koddan daha zor çözmesidir.

Gerçek dünyaya girdiğinizde, sorunların sizin için büyük ölçüde çözüldüğünü giderek daha fazla anlayacaksınız, işiniz onları sadece kodda uygulamak olacaktır.


5

Ya matematik öğrenmelisin ya da kendininkini yaratmalısın. Her iki durumda da, bir şekilde veya başka bir konuda iyi olmak önemlidir.

Sürece değerlerle çalışmak ve ne yaptıklarını, neden ve ne anlayabilir olarak yapmak yapmalarını, daha sonra geleneksel matematik her zaman gerekli olmayabilir. Bazen bile engel oluyor.

Bir baytın değerini sayılardan başka bir şekilde görselleştirmenin alternatif yolları vardır, ancak bunlar kesinlikle yöntemden sonra en çok düşünülmüş olanlardır. Örneğin, tüm değerleri bir renk olarak düşünerek bir program yazmak mümkün olacaktır.

Bugünün programlaması, değerlerin çoğunu 1 ve 0'ları farklı veri türleri olarak temsil etmekten kaynaklanıyor. Gerçekte bu 1'ler ve 0lar sayılar olmasa da, elektrik dalga boyu değişiyor olsa da, matematik fizik kadar oyunda değildir, ancak ... ne olduğunu büyük ölçüde anlamak için çok önemlidir. diğer programcılar diyor ve kodluyor.

Yine de matematiksiz iyi bir programcı olmak mümkün , ancak zor.


1
Tüm değerleri renk olarak düşünmek, DAHA FAZLASI anlamındadır. Spektrumun bir ucundan çok uzağa gittiğinde, karşı ucuna
yaklaşırsın

Dereceler (0 - 360'ta olduğu gibi, 0 - 256 hariç) bazen de yardımcı olur =) Değerin ne kadar “tam” olduğu kadar renkler veya dereceler için sayısal anlamda düşünmeniz gerekmez.
Garet Claborn,

5

Sadece ayrık matematik bir intro ders bitmiş ve ben bunu buldum zaten hakkında neredeyse her şeyi biliyordu yüklem mantığı programlama sayesinde; tüm bunlar yeni sözdizimiydi - temel olarak sadece booleanlarla çalışıyordu.

Kısacası: belki de açık bir şekilde matematik öğrenmek zorunda değilsiniz , ama sadece bir programcı olarak muhtemelen farkında olmadan biraz matematik öğrendiniz. Yani, "iyi bir programcı" olarak, siz de gerçekten bir dereceye kadar matematikçi oluyorsunuz.

Curry-Howard Yazışmalar temelde, matematiksel deliller ve bazı bilgisayar programları aynı şeyi yazma farklı yolları vardır, yani "izomorfik" olduğunu belirtmektedir: Ne demek istediğimi göstermektedir. Tabii ki, aslında bundan daha karmaşık, ama ben matematikçi değilim, bu yüzden verebileceğim en iyi açıklama bu. Umarım işaretten fazla uzak değildir.

Özet olarak, yalnızca CS'de ve programlamada birçok alan değil, çok fazla matematik gerektirir, fakat temel programlama fikirleri (örneğin, boolean'ler) temelde gizlenmiş olarak matematiktir.


4

Bu, cevaplanması çok zor bir sorudur ve muhtemelen çok fazla tartışmaya yol açacaktır.

Bu sorunun neden bu kadar zor olmasının sebeplerinden biri, kısmen ne tür bir iş yaptığınıza bağlı olmasıdır. Çoğu iş uygulamasıyla ilgili çok fazla matematik yok, bu yüzden cebir ve işletme matematiğini sağlam bir şekilde anlayabilirsiniz. Bununla birlikte, daha ileri uygulamalar daha ileri matematik gerektirir ve matematiğe, doğrusal cebire ve benzerlerine dair sağlam bir anlayışa ihtiyacınız vardır.

Bununla birlikte, bu, sadece programlama pratiği için hala belli bir dereceye kadar matematiğe ihtiyacınız olduğu için denklemin sadece bir kısmıdır. Temel bir cebir kadar basit bir program yazabilmek için mantıkla rahat olmanız gerektiğini söylemeden devam ediyor. Sadece basit bir programın ötesine geçmenin ötesine bakarak, belirli bir problem için kullanılabilecek iyi bir algoritmayı neyin yapacağı konusunda karar verebilmek için ayrık matematiğin belirli yönlerini anlamanız gerekir.

Ancak sorunun kalbine geri dönmek için. Şahsen iyi bir programcı olmak için matematikçi olmanız gerektiğini düşünmüyorum; Ancak, iyi bir genelci programcı olabilmek için matematik konusunda rahat olmanız gerektiğini düşünüyorum.


4

Evet kesinlikle.

Değirmen işletme programlamasının işletilmesi bile matematikte biraz beceri gerektirir.

Değirmen işletmeciliği programlamanın çalışması için veritabanı becerileri gerekir. İyi bir veritabanı programcısı olmak, veritabanlarının nasıl çalıştığını ve sorgu işlemcinin sorgularınızı çevirirken kullandığı algoritmaların ne olduğunu anlamayı gerektirir. Sınırları ve türevleri anlamadan (ya da y = x satırının y = x ^ 2 satırını iki kez kestiği temel anlayışı bile anlamadıkça), iç içe geçmiş bir döngü birleşimiyle bir karma eşleştirme iç birleşim sorgu planını doğru bir şekilde karşılaştırmak mümkün değildir. sorgu planı.

Ayrıca, iyi bir programcı, biraz çalışmaları şartıyla hemen hemen her alanda çalışabilir: oyunlar, simülasyonlar, gömülü geliştirme, derleyiciler, işletim sistemleri, web sayfaları, veritabanları, vb. tüm bunları nasıl hızlı bir şekilde öğrenebildiğimizi doğru bir şekilde öğrenebilmeniz için) çok iyi bir matematik bilgisine ihtiyacınız var.

Birinin aşağıdakilerle ilgili bir noktada bir deneyim yaşaması gerektiğini söyleyebilirim:

  1. Calc 3 Dönemi
  2. Diff Eşit
  3. Lineer Cebir
  4. Modern Cebir
  5. Temel olasılık, sayma ve istatistik

4

Matematik sadece formüllerden daha fazlasıdır. Küme teorisi ile ilgili bazı matematiksel prensipleri anlamak, tip sistemleri üzerindeki karmaşık kavramları kavramak için çok yararlıdır, çünkü karmaşıklığı verimli veri yapısı kullanımları için çok önemlidir.

Grafik teorisi, bir çok programlama probleminin bir grafik ile modellenebildiğinden, ayrıca son derece kullanışlıdır. Bir iş uygulaması geliştirirken, en kısa yol teoremlerinin sahip olduğum dikenli bir soruna zarif bir çözüm sunduğunu bulmak için çok şaşırdım!


4

Hep bir şey olmak programlama kabul var ama matematik.

Sadece lise cebirine benzemiyor.


4

Matematik, programlamanın ön odasıdır.

Soyutlama katmanları, modelleri, fonksiyonların "nesnelleştirilmesi", dönüşümler ve zamansal kavramlar üzerinde katmanlar ile çalışabilmek, matematik tüm bunlar için mükemmel bir eğitim alanıdır.

Programlamaya doğru zihniyeti matematik olmadan geliştirmek mümkündür, ancak bu çok daha zordur.

Bununla birlikte, uzmanlık alanları bir yana, sadece matematiği anlamak önemlidir, her şeyin adını ve verilen bir teoremin nasıl kanıtlanabileceğini bilmek önemlidir. Yani matematikte iyi notlara sahip olsanız bile, her şeyi gerçekten anlamadan öğrendiniz, yine de programlama ile mücadele edeceksiniz.


4

Matematik bilgisi bazı uygulamalar için iyidir (oyun, yapay zeka, bilgisayar grafikleri vb.), Ancak matematik size sadece formüllerin veya karmaşık denklemlerin ötesinde bir şey öğretir.

Matematik öğrenmek, yeni bir programlama dili öğrenmek gibidir. Aslında, programlama matematik uygulanır. Yeni bir dil öğrendiğinizde, sizi daha iyi bir programcı yapan birçok şey öğrenirsiniz. Matematiği farklı değil, ama gerçekten matematikte ustalaşırsanız, sonsuza dek daha iyi bir programcı olacaksınız, işinizde ileri matematik kullanmasanız bile.

Nedeni basit: matematik dünyayı diğer gözlerle görmeyi öğretiyor. Zorunlu olarak programlama yapmadan farklı yaklaşımlarla sorunları çözmeyi öğretir. Bu yeni düşünce tarzı, işinizi yapmanın daha iyi bir yolunu sağlar.

Programlama bir sanattır. Matematik bir sanattır. İkisini birleştirirseniz daha iyi bir sanatçı olacaksınız.


Programlama temelde sadece uygulamalı mantıktır ve aslında matematik de uygulamalıdır.
RibaldEddie

3

Hayır.

Tıpkı çoğu bilim disiplini gibi, matematik kavramlarını iyi anlayabilmek, özellikle verimlilik gibi şeyleri değerlendirirken yardımcı olacaktır. Ancak çoğu programlama görevi için matematik yeteneğiniz ancak çözdüğünüz problemin matematikle ilgili olması durumunda geçerlidir.

Bilgisayarlar matematik yapmakta mükemmeldir, bu nedenle erken bilgisayarların çok sayıda karmaşık matematik işiyle ilişkili 'büyük iş' yapmak için yoğun bir şekilde kullanıldığı anlaşılmaktadır. Yazılımın bir çok hala yok bu durumda daha iyi bir programı yazmak yardımcı olacak Matematikte iyi olmaktan, karmaşık matematik problemleri çözmek, ama size iyi bir programcı yapar bu değil.


3

Genellikle, çoğu işi yapmak için hesap veya trig denklemlerini bilmeniz gereken anlamda değil. Ağır grafikler / oyun programlama yapıyorsanız, evet. Bir ünlü matematik kesmek Quake için buna iyi bir örnektir. Ancak, üst düzey matematikle uğraşırken girmeniz gereken düşünce kesinlikle programlama için geçerlidir; programlama ile kendi mantık yapınızı, kendi işlevlerinizi, kendi “kanıtlarınızı” geliştiriyorsunuz.

İşimde matematiğe rastladığım tek zaman (dahili kurumsal iş akışı ve uygulamalar), istatistik bilgisi gerektiren bazı raporlama uygulamaları yaptığım zamandı, ancak bu yalnızca gereksinimlere doğrudan uygulanabilir olduğu içindi.


3

Mutlaka gerekli olmadığını söyleyebilirim. Bazı programlama disiplinleri (kripto, grafikler, fizik motorları vb.) Kesinlikle matematiksel olarak eğimli olarak belirgin bir avantaja sahip olacaktır, ancak diferansiyel denklemlerin iyi bir şekilde anlaşılmasının örneğin web programlama için özellikle yararlı olacağını sanmıyorum.

Boolean mantığı muhtemelen iyi bir programcı olmak için bir zorunluluktur, ancak lise matematiğinde iyi notlar almayan birçok insanın programlamada iyi olduğu ortaya çıkması beni şaşırtmaz.


3

İyi bir programcı olmak için kesinlikle matematikte iyi olmanıza gerek olmadığını söyleyebilirim.

Programcı olarak ilk işim B-52 ve Cruise Missile görev planlaması için 3D grafikler yapmaktı. Yoğun matematik gerektiren bir uygulamaydı, ancak gerçekten de matematikte iyi / harika olan insanlara erişime ihtiyacım vardı. İki nokta arasındaki büyük çember mesafelerini hesaplamak için bir formül bilmem gerekmiyordu. Bir programlama dilinde çalışabilmesi için formülün nasıl dönüştürüleceğini bilmem gerekiyordu. Uçuş simülasyonu ile aynı. Boeing uygulamamız gereken bütün matematiği yaptı.

Bu deneyim aynı zamanda kimin iyi bir programcı olacağı ve kimin olmayacağı hakkında bir fikir edinmeme yardımcı oldu. İş, programcılar olarak görev turu yapan ve programcıların görevin ihtiyaçlarını anlamalarına yardımcı olacak pilotlara ve navigatörlere sahipti. Genelde birkaç hafta içinde pilotların ve navigatörlerin bu konuda ne iyi olacağını söyleyebilirsin. Matematik dalları genellikle hemen programlamaya başladı.

Bu yüzden matematikte iyi olmanın programlamada iyi olmanızın daha muhtemel olduğunu söyleyebilirim ama matematikte o kadar iyi olmayan pek çok iyi programcı biliyorum.


3

Matematik sevmiyorum ve her zaman düşük matematik notları var. İyi bir programcı olduğumu söylemek istemiyorum, ancak yazılım endüstrisinde 10 yıldır çok başarılıyım.


1
Tamamen matematik notlarınla ​​ilgiliyim. Aslında, kötü bir Programcı olmadığımı ve Math'da korkunç olmadığımı hissediyorum, ancak nedense, denemem ne kadar zor olursa olsun, My Math kurslarında "Ortalama" notunu geçemiyorum.
Bryan Harrington

@Bryan, bununla ilgili olabilirim
jasonco

3

Matematiği sevmeyen insanlar için iyi bir programcı olabilir mi?

Hayır, hayır-hayır, hayır, evet ve hayır!

Hayır, çünkü sık sık buna ihtiyacın var.

(! (a | (! (b && c) || d) && (! e)))

Neden çalışmıyor

foo ('a', 'b', 19, g(h))
bar ('c', 'd', 44) 

daha soyut bir şekilde yeniden yazılabilir mi?

968 ms daha fazla mı, 0.7 s'den az mı? Ne kadar MB'a ihtiyacınız var, makinede kaç tane GHz var? Bir bayt yeterli olacaktır - matematik işin her gün parçasıdır. Bazen açıkça ve daha yüksek matematik.

Her zaman dolaylı olarak daha düşük matematik.

Matematik, hesaplamadan matrise, geometriye, mantığa, istatistik, kategori teorisine, grafik teorisine kadar geniş bir alandır. Eğer matematik kullanmadan programlama yaptığınıza inanıyorsanız - belki de yanılıyorsunuzdur.

Proje Euler sayfasındaki sorunlara bakarsanız, bir fikrim olmadığı yerde matematiği çözmek için nasıl kullanıldığını bildiğiniz bulmacaları bulacaksınız. (Onları matematiksiz çözemezdim.) Problem boyutunun normalde bu kadar büyük olduğunu, kaba kuvvetle çözemediğinizi unutmayın.

Ancak - çoğunu çözemediğimden (şu an yaklaşık 2 / 3'ü), matematiği sevmediğim anlamına mı geliyor?

Eğer matematik çalışmadıysanız, programlama dahil, günlük hayatınızı nerede bulabileceğinizi bilmiyor olabilirsiniz.

Sadece GUI bileşenlerini ekranda hareket ettirmek için uzman görünseniz bile, bir şekilde matematik yapıyorsunuz.

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.