Bilgisayar bilimi ve programlama arasındaki fark nedir?


32

Bilgisayar bilimi ve programcılığında yeniyim ve merak ediyorum, bilgisayar bilimi ile programlama arasında bir fark var mı? ve üniversitede onlardan sadece birini mi yoksa ikisini birden mi seçmeyi seçtin?


42
Kötü analoji zamanı.
Mike Weller

10
Mimarlık ve inşaat arasındaki fark nedir?
Oded

6
jeoloji ve hendek kazma kadar uzaktalar
Steven A. Lowe

27
Bilgisayar bilimi öğrenmek için ödediğiniz paradır. Programlama yapmak için para alıyorsunuz.
jfrankcarr

5
Fark, baloncuk sıralama yerine smoothsort kullanmanıza neden olan şeydir.
deadalnix

Yanıtlar:


68

Bilgisayar bilimi, bilgisayarların neler yapabileceğinin incelenmesidir; programlama bilgisayarları bir şeyler yapma pratiğidir.

Kursun CS kursu, programlama kursu, başka bir şey (örneğin Yazılım Mühendisliği) veya yukarıdakilerin bir kombinasyonu olup olmadığını öğrenmek için ilgilendiğiniz üniversiteler tarafından sunulan kurslara / müfredatlara bakın. "Bilgisayar bilimi" olarak tanıtılan birçok kurs, kursun teorik bölümlerini uygulamaya koyabileceğiniz veya program yapma becerisini öğrenebilmeniz için kendi amaçları için olabilecek önemli bir programlama bileşeni sunar.


1
Sorunun pratik kısmını cevaplamamasına rağmen, çok iyi cevap;)
back2dos

@ back2dos Tamam, cevabı genişlettim.

Bilgisayar Bilimi derslerinin çoğunun teorik CS ile de hiç ilgilenmediğini not etmek önemlidir, TCS en azından CS'nin programlamadan olduğu gibi pratik CS'den ayrı olduğunu unutmayın.
Ben Brocka

3
CS'yi (ismine rağmen) bilgisayarlara çok yakın bağlaman gerektiğini düşünmüyorum: her şeyden önce bilgi çalışması . Sadece "bilgisayar" terimi, bilgi ile çalışmak için kullandığımız farklı fiziksel araçların çoğunu kapsar, bu yüzden neredeyse her bilgi çalışması bir bilgisayar programlaması yapmayı gerektirir.
Tikhon Jelvis

Taksonomi, bilgi biliminin tercihine uygun olabilir. Fakat beni CS altında mükemmel bir şekilde uymuyor. Disiplinler arası anlamda kullanışlıdır, ancak CS, bilgisayarlarla yapabileceğimiz şeyler hakkında ayrılmaz bir şekilde, IMO. "Bilgisayar" ın tanımını daha genel, ancak CS'nin tanımı yapmadan yapabilirim.
Erik Reppen,

36

Bir uyarı: 'Bilgisayar Bilimi' modern zamanlarda çamurlu bir alan haline geldi, çünkü (en azından ABD'de) üniversitelerin "programlama" dereceleri yok. Bu, programlama ile ilgilenen kişilerin Computer Science derecelerine kaydolmaları gerektiği ve Computer Science programlarının programlamayı gittikçe daha fazla vurguladığı yönünde bir tepki olarak anlamına gelir.

Yani Bilgisayar Bilimleri kendisi olduğunu söyledi şiddetle Hesaplamalı Matematik daha iyi bir terim olabilir - matematiksel bilim. Grafik teorisi, algoritmik karmaşıklık, biçimsel mantık, otomat ve genel olarak girdi - algoritmalarına dönüşümü veya cevabı tanımlayabilen herhangi bir mantıksal yapı çalışmasını içerir. Klasik anlamda bir Bilgisayar Bilimcisi, mevcut mimarideki uygulama detaylarını mutlaka bilmeden, herhangi bir bilgisayar sistemini (modern bilgisayarlar dahil) yöneten kurallar hakkında mantıklı olabilir. Computer Science'ın güçlü bir geçmişi, size verimli, ölçeklenebilir algoritmalar geliştirme (veya hatırlama) yeteneği, mantıksal düşüşleri öngörme ve neyin izlenebilir olduğu hakkında mantıklı bir neden sunma yeteneği sağlar.

Programlama, aksine, bir kişinin bir algoritmayı makinenin yapabileceği bir şeye dönüştürmek için bir programlama dili kullandığında yaptığı şeydir. (Bu, Bilgisayar Bilimi ile olan kesin bağlantıyı açıkça ortaya koymalıdır ve karışıklığın çoğunun nereden geldiğini açıklamalıdır.) Bir programcı (bir çevreye ve dile göre) hemen hemen her türlü algoritmayı alabilmeli ve bunları her iki insana da dönüştürebilmelidir. - ve kod yazarak makinede okunabilir. Programlamadaki güçlü bir altyapı (çoğu CS derecesinin sağlayacağı şekilde) daha iyi kod yazmanıza olanak tanır - 'daha iyi' kod başkaları tarafından daha kolay anlaşılır ve uyguladığınız algoritmayı ifade etmede daha başarılı olur.

Elbette büyük miktarda karışma söz konusudur ve birindeki yüksek düzeyli bir deneyim diğerinde gelişen deneyim ile güçlü bir şekilde örtüşecektir - belirtildiği gibi, bir CS uzmanı neredeyse her zaman yetkili bir programcı ve tecrübeli bir programcı aldı CS birçok ilke. Fizik ve Mühendislik düşünün.

Farkı hatırlamanın iyi bir yolu şudur: Programlamanın işe yarayıp yaramadığını görmek için bir bilgisayara ihtiyaç duyuyorsa - bunu kalem ve kâğıtla yapabilirseniz, Computer Science.


4
Evet, bu son cümle ovuştur, değil mi? Buruşuk profesörlerin kıvırcık saçları ve parşömenlerin etrafındaki dalgalanan kireçli parmakları görüntülemesini sağlar ve "bilgisayar bilimi astronomi teleskoptan daha fazla bilgisayardan ibaret değildir" gibi alıntılara yol açar. Bilim nihayetinde bir makineye giremezse, o zaman amaç ne? Aklı başında hangi astronom teleskoptan asla bakar?
Robert Harvey,

Son 30 yılda hiç bir algoritmayı “makinenin yapabileceği bir şeye dönüştürmem” istendiğini sanmıyorum. Düşündüğünüz şey bir programcı değil, bir derleyicidir.
gnasher729

2
@ gnasher729 Tamam, diyelim ki "Listedeki her bir kelime için, A ile başlıyorsa, başa git." Hangi derleyiciyi önerirsiniz?
shanef22

18

Bilgisayar bilimi, bilginin teorik temelleri, hesaplama ve bunların uygulanması ve uygulanması için pratik tekniklerle ilgilenir. http://en.wikipedia.org/wiki/Computer_science

~

Bilgisayar bilimi, astronomi ile teleskoptan ziyade bilgisayarlar hakkında değildir. Edsger Dijkstra

Programlama, bilgisayar programı oluşturma işidir.


11

Bilgisayar Bilimi, benim görüşüme göre, Fizik gibi Sert bir Bilim olması gerekiyordu.

Derleyiciler ve derleyiciler üreteçleri, donanım mimarisi kavramları, çeşitli sayı sistemleri biçimleri, algoritmalar ve algoritmik verimlilik / performans ve işlemci üzerindeki aritmetik işlemlerin arkasındaki teori çalışmasını içerir. Üniversitede CS yaptığımda, derleme, bağlama ve yorumlama, vb. Arasındaki farkı öğrenmek için assembler ile uğraşarak çok zaman geçirdik.

Bunların çoğu programlama yoluyla yapıldı - yani, daha sonra bir tercüman aracılığıyla derlenen veya çalıştırılan ve bir problemi çözmek için sonuç üretmek amacıyla kod yazma eylemi. Yani, Programlama, Bilgisayar Bilimi bilgisiyle açıklanabilecek problemleri çözme eylemidir. Bir çeşit Saf Matematik / Uygulamalı Matematik bölümü.

Bir programcı olmak için Bilgisayar Bilimi derecesine ihtiyacınız yoktur, ancak CS geçmişine sahip bir programcı muhtemelen bilgisayar programlarının davranışını daha iyi anlayacaktır.


1
CS öğrencilerinin diğer programlama derslerinden daha iyi olduklarını sanmıyorum.
Tjaart

5
Daha iyisini söylemedim, daha derin bir anlayışa sahip olabileceğimi söyledim.
mcfinnigan

@mcfinnigan, daha yanlış yönlendirilmiş diyebilirim. Kendilerini teoriye dayanan CS öğrencileri daha az anlama eğilimindedir çünkü aslında bilgisayarların neler yapabileceğini veya çeşitli dillerde oraya nasıl ulaşacaklarını bilme deneyimine sahip değillerdir .
Izkata

3
yine beni yanlış anladın. Asıl CS teorisinin bazılarını edinmek için zaman harcayan bir programcının , bir Set'in belirli durumlarda bir Listeden neden daha iyi olduğunu veya kayan noktanın neden zor olduğunu bilmesinin daha muhtemel olduğunu söylüyorum.
mcfinnigan

2
@TikhonJelvis: mühendislik matematiği kullanıyor, ancak iki adım ötede. CS bir matematik dalıdır.
kevin cline,

3

"Bilgisayar Bilimi ve Yazılım Mühendisliği arasındaki fark nedir?" Sonuçta her ikisi de programlama içerir.

Bilgisayar Bilimi, neyin hesaplanıp neyin mümkün olmadığı ile ilgili teorik bir çalışmadır. Godels Teoremi ve Halting problemi gibi şeylere bakar.

Yazılım mühendisliği, yapmak için tasarlandıkları şeyi yapan ve bakımları yapılabilecek programlar yazmaktır.


Hayır. Neden sorusunu cevaplıyorsun? Ne istediğini sordu. Yazılım Mühendisliği, programlamadan farklı ve ALSO tartışmalı çünkü farklı ülkelerde farklı şeyler ifade ediyor (örn. ABD ve Kanada)
Douglas Held 19

2

Bilgisayar bilimi programlama teorisidir. Programlama uygulamasıdır.

Bilgisayar bilimi ... hesaplama ve uygulamalarına bilimsel ve pratik bir yaklaşımdır. Bir bilgisayar bilimcisi, hesaplama teorisi ve hesaplama sistemlerinin tasarımında uzmanlaşmıştır.

Alt alanları çeşitli teorik ve pratik disiplinlere ayrılabilir. Hesaplamalı karmaşıklık teorisi (hesaplama problemlerinin temel özelliklerini araştıran) gibi bazı alanlar oldukça soyutken, bilgisayar grafikleri gibi alanlar gerçek dünyadaki görsel uygulamaları vurgular. Yine de diğer alanlar, hesaplamanın uygulanmasındaki zorluklara odaklanmaktadır. Örneğin, programlama dili teorisi, hesaplama açıklaması için çeşitli yaklaşımları ele alırken bilgisayar programlama çalışması, programlama dili ve karmaşık sistemlerin kullanımının çeşitli yönlerini araştırır. İnsan-bilgisayar etkileşimi, bilgisayarları ve hesaplamaları insanlar için faydalı, kullanışlı ve evrensel olarak erişilebilir kılmanın zorluklarını göz önünde bulundurur


12
Dürüstçe bilgisayar biliminin programlamadan daha fazlası olduğuna inanıyorum.
Ubermensch

2
@ Ubermensch: Dürüst olmak gerekirse, programlamanın bilgisayar biliminden daha fazlası olduğuna inanıyorum.
Michael Borgwardt

1
@ MichaelBorgwardt Aslında, bizim görüşlerin ikisi de doğru. Ancak bilgisayar bilimi hala programlamadan çok daha büyük (Siz de diğer yönlerden tartışabilirsiniz). Niehls Bohr'dan ünlü bir alıntı "İki tür doğruluk, küçük gerçek ve büyük gerçek vardır. Küçük bir gerçeği tanıyabilirsiniz çünkü bunun tersi bir yanlışlıktır. Büyük bir gerçeğin zıttı başka bir gerçek."
Ubermensch

@ Ubermensch İnancınız gerçektir. Bilgisayar bilimi sadece programlama teorisi değildir. Bilgisayar bilimi, bilgisayarlardan önce buralardaydı.
Casey Patton

1

Eğer programlama marangozluksa, bilgisayar bilimi mimarlık / tasarımdır.

Düzenle

Daha fazla bilgi: marangozlukta, ne tür şeyler inşa edeceğiniz (çerçeve, sonra alt kat, sonra iç duvarlar, sonra alçıpan vb.) Gibi şeylerle ilgileniyorsunuz. İnşa etmek için daha az zaman harcadığı, ancak daha sonra değiştirilebilmesi için onu nasıl kurarsınız.

Mimaride (yine de bir kısmı CS gibi), malzemelerin yeteneklerinin ne olduğu, duvar / çatı açıklığını desteklemek için ne kadar büyük bir kirişe ihtiyacınız var?

Benzer şekilde CS, programlamanın bu bilginin pratik uygulaması ile ilgili olduğu bilgisayarların teorik yetenekleri ile ilgilidir.


3
Kötü benzetme. Programlama marangozluk ise, yazılım tasarımı mimari / tasarımdır. Bilgisayar bilimi bu anlamda dendroloji veya genel olarak biyoloji gibidir.
back2dos

Tamam, belki de net değildim, bu yüzden neden analojinin işe yaramadığını düşünüyorum. Malzemenin yetenekleriyle ilgilenmek malzeme bilimi, yapının kararlılığı ile statiktir. Hiçbiri aslında tasarımın konusu değil, sadece onu kısıtlar. Tasarım (yazılım veya binalar veya herhangi bir şey), tüm gereklilikleri ve kısıtlamaları (teknik, finansal, psikolojik, ...) almak ve bunları karşılayan bir çözüm oluşturmakla ilgilidir.
back2dos

1

Bilgisayar bilimi fizik olarak programlama yapmak, makine mühendisliği yapmaktır.

Bilgisayar bilimi teoriktir, bilgiye bilimsel ve matematiksel bir yaklaşım getirir ve hesaplanır.

Bilgisayar programlama pratiktir, bilgisayar programlarının kaynak kodunu tasarlama, yazma, test etme, hata ayıklama ve bakım işlemidir.

Onlar farklı, ancak ilgili alanlardır. Her ikisi de birbirlerinden yararlanmıştır.


0

Bilgisayar bilimi alanında bir derece kapsamı çok daha geniş ve hesaplama arkasındaki teorisi kapsar. Bir bilgisayar programlama derecesi , diğer taraftan, farklı programlama dilleri konusunda eğitim yaparak öğrencilerin kodlama veya programlama becerilerini geliştirmeye odaklanmıştır. Kafanız karışıksa, her iki programın da ayrıntılarını California College San Diego'da inceleyebilirsiniz. Bu, bu derecelerin kapsamı hakkında size biraz netlik sağlayabilir!


0

Bilgisayar Bilimi : Bilgisayarla problem çözme çalışması / hesaplama yöntemleri.

Bilgisayar programlama: Bilgisayar bilimi alanını oluşturan bu problem çözme sürecinin bir parçasıdır. Bilgisayar programlama sadece küçük bir bilgisayar bilimi alt kümesidir.


-1

Programlama insanlarla ilgilidir. İnsanlar kod okur, yazar ve saklar. Bilgisayar bilimi matematikle ilgilidir, algoritmaları uygular ve tanımlar.


3
@ SK-mantık ve DeadMG. Tüm bu yorumları sildim. Bir tartışma (ya da gerçekten tartışmayı) yapmak istiyorsanız, lütfen başka bir yere götürün.
ChrisF

1
Bu biraz dar. En azından üniversitemdeki "Algoritmalar, Makineler ve İnsanlar" laboratuarı katılmıyorum :). Ve bu laboratuvar, dönemdeki en iyi CS araştırmacılarından bazılarını içermektedir. Ayrıca her yerdeki tüm HCI insanları. Biraz becerikli oluyorum, ama CS gerçekten algoritmalar ve matematikten daha geniş.
Tikhon Jelvis

-1

Programlama (geliştirme) para kazanmakla ilgilidir. Bilim yeni şeyler keşfetmekle ilgilidir.


7
Birisi açık kaynak topluluğunu söylemeyi unuttu.
webbiedave

2
@webbiedave - peki, orada bir veya iki gerçek fedakar olabilir, ama sonunda açık kaynak da para kazanmakla ilgilidir. Açık kaynaklı projelere katılan kişilerin çoğunun yeteneklerini ve / veya özgeçmişlerini geliştirmek ve gelecekteki gelir potansiyellerini arttırmak için yaptığını söylemeye cesaret ediyorum. Birçok açık kaynaklı proje, projeden gelir elde etmek için ticari / işletme sürümlerini de ortaya koymaktadır. Böylece, açık kaynak topluluğu, para kazanmaya gelince, döngüde çok fazladır;)
pap

Aynı şey bilim için de geçerli değil mi? ;)
webbiedave

@webbiedave - Hayır, aynı fikirdeyim. Para bir bilimin iki ürünü olabilir, ancak birincil amaç değildir (ve olmamalıdır). Bilim, kendi iyiliği için keşifle ilgilidir. Şirketler AR-GE’yi yapıyor, ancak bu yeni şeyler keşfetmekle ilgili değil, zaten keşfedilenleri paraya çevirmekle ilgili.
pap

Çoğu bilim adamının daha fazla para istemesinin tek nedeni daha fazla araştırma yapabilmeleridir. Bence aynı şey açık kaynak için de geçerli. CV'nizi geliştirmek için açık kaynak yapmak benim için başarısızlığa giden bir yol gibi geliyor. Merak, keşif ve kaşıntı çizme hakkında olmalı.
Tjaart
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.