Bilgisayar Biliminde en zor konu / teori? [kapalı]


17

İncelediğiniz ancak alan için önemli olan en zor CS konusu / teorisi hangisidir? Ve neden lütfen?


3
Bu büyük ölçüde konuyu öğrenen kişiye ve onu öğreten kişiye bağlı olduğunu düşünüyorum
Mahmoud Hossam

Yanıtlar:


37

“Bilgisayar biliminde 2 zor sorun var: önbellekleme, adlandırma ve birebir hatalar”


4
İplik eklemeliyim ...
Carra

35

Dürüst olmak gerekirse, derleyici yapımı!


13
+1 Derleyiciler en zor ve en ödüllendirici oydu.
dietbuddha

3
Orada en çok üzerinde tüm çalışma ve homurdanma kodlama için iyi bir hazırlık ile oldu, ama tüm bu zor olduğunu sanmıyorum. Belki YACC kullanmadan veya kullandığımız herhangi bir araç olmadan daha zor, bilmiyorum.
Peter Turner

4
Derleyiciler gerçekten sadece zordur, çünkü teorinin çoğu delicesine ciddi donanım kısıtlamalarının zamanlarına dayanır ve resmi talimatların çoğu bunun ötesine ilerlememiştir. Farklı bir açıdan yaklaşırsanız derleyici yazmanın ne kadar kolay olabileceğini görmek için Bir Derleyici Oluşturalım'a göz atın .
Mason Wheeler

1
@Martin York, bir derleyici yazarı olarak, derleyicileri uygulamanın karmaşıklığının ciddi şekilde abartıldığını düşünüyorum. Genel olarak, bir derleyici bir tercümandan çok daha basittir. Bunun bir Ejderha Kitabı olduğundan ve türünün suçlanacağından şüpheleniyorum, basit şeyler yapmanın ve en az önemli adıma, yani ayrıştırmaya çok fazla dikkat etmenin en karmaşık yollarını öneriyorlar.
SK-logic

1
@Martin York, kaynak dili ne kadar karmaşık olursa olsun, bir AST'yi olabildiğince basit ve bakımı kolay tutma teknikleri vardır. Ayrıca, derlemenin her aşamasını önemsiz ve izole tutmak için çok basit ama güçlü teknikler vardır.
SK-logic

22

Algoritma Tasarımı ve Analizi

Bence bu soru sahip olduğunuz öğretmene ve bu konunun kariyerinizde nasıl düzenlendiğine bağlı.

Analiz algoritmaları birinin istediği kadar zor olabilir. Çözülmemiş sorunların olduğunu ve sadece bunu değil: çözülemeyen sorunları hesaba katın.

Mesele şu ki bir sorununuz olabilir ve çözülemeyeceğini biliyorsanız, bu mükemmeldir. Ama ya yapmazsan? NP-Complete olduğunu göstermeye çalışırken veya çözmek için polinom zaman çözümü bulmaya çalışırken çok zaman harcayabilirsiniz.

NP-Tamamlama'yı göstermek kolay değildir. Evet, birçok sorun biliniyor, ancak mesele bunun NP-Complete olduğunu göstermek için indirimler bulmak. Ya bunu göstermeye çalışmak için çok fazla saat / gün / ay harcıyorsanız ve polinom zamanında çözülebilir mi? :)

Derleyiciler , Grup teorisi ve İlkel Özyinelemeli İşlevler gibi ders planı veya öğretmenin istediği kadar zor olabilecek başka konular da vardır ;)


1
s / Analisis / Analysis ... aksi takdirde tam olarak ne düşünüyorum ... ilkel özyinelemeli fonksiyonlar, uargh !!
Felix Dombek

Kabul ediyorum, lisans derecem boyunca hiçbir şeyi başarılı bir şekilde 'kanıtladığımdan' emin olamadım (Algoritmalar sınıfım profesör nedeniyle çok basit olmasına rağmen)
Peter Turner

Bu günlerde size algoritmaların ne kadar zor olabileceğini göstereceğim :)
Oscar Mederos

18

Örüntü Tanıma yani Yapay Zeka. Bu, Optik Karakter Tanıma, Sesden metne, yüz tanıma vb.Gibi diğer desen tanıma araçlarıyla birlikte akıllı bilgi işlem anlamına gelir.

Yapabileceğiniz ya da bilgisayarlarla yapabileceğiniz “havalı” şeylerin çoğu bu algoritmalara güveniyor ve biz onlarca yıl boyunca onları çok başarılı olmadan mükemmelleştirmeye çalışıyoruz.


Bu zor çünkü deterministik bir şey değil. İyi bir AI örüntü tanıma geliştirmek, doğru algoritmayı, doğru özellikleri vb. Seçtiğinizden emin olmak için kullanmak istediğiniz her uygulama için deneme gerektirir ...
Ken Bloom

1
Bu dağa tırmanmaya yeni başladım (örüntü tanıma). Zor. Bir sürü matematik. Harika, kocaman, göz korkutucu matematik yığınları, bana geri dönüp girmeye cesaret edemedi.
David Poole

iyi ... desen tanıma da uygulanan istatistik olarak görülebilir, sadece CS aralığında bir sorun değil
aggietech

12

Benim seçimim hesaplanabilirlik teorisi

(Hmm ... belki o kadar önemli değil, ama kesinlikle zor oldu)


2
Kabul ediyorum ve şahsen en.wikipedia.org/wiki/Theory_of_computation olarak genelleştireceğim .
Matt H

Hesaplama Teorisinin zor olduğunu kabul edeceğim, ama aynı zamanda en sevdiğim konulardan biriydi. Verilmiş, Matematikte çift ana dal yapıyordum ...
Poindexter

+1 Ben de çift anadal yaptım. Bu konulara bir giriş yapabilirdim, ama lisansüstü versiyonu ... düşürdüğüme sevindim!
Meslek

zordu, çok fazla bir şey bilmediğimiz için çok fazla bir şey bilmiyoruz.
Görünen Ad

10

Bilgisayar Bilimlerinde sadece iki zor sorun vardır: önbellek geçersiz kılma ve bir şeyleri adlandırma. - Phil Karlton



6

Kriptografi

Bunu biraz yanlış yaparsanız, bir şirkete milyonlarca mal olabilir.


Giderek daha popüler olmasına rağmen, Crypto yazılıma özgü değildir.
JBRWilkinson

Kripto o kadar da zor değil. Sorun, güvenliğin kolayca test edilememesidir, bu nedenle hatalarınızı yalnızca biri sizi hacklediğinde fark edersiniz. Ancak test edilebilirlik eksikliği, sadece kripto için değil, çoğu BT güvenliği için geçerlidir.
CodesInChaos

4

İşletim Sistemleri, özellikle diş açma ile ilgili olan kısmı.

Bunun nedeni 5 filozofun çatalla pizza yemesini zorlaştırmak değil. Bunun nedeni, çok iş parçacıklı kod yazmanın kendi başına zor olması ve insanın (en azından erkek - eşime göre) zihninin hesaplaması zor olması değildir.


9
Karınız o zaman çok iş parçacıklı kodu

3
Unutmayın, paylaşılan bellek çoklu iş parçacığı söz konusu olduğunda, bilgisayar sizi almak için sinsi bir domuz. Çok çekirdekli bir işlemci ile uğraşırken; Bir çekirdek izlediğiniz yerde gözünüzün önünde dikkatinizi dağıtabilir ve diğeri arkanıza gidip sizi arkadan bıçaklayabilir.
Donal Fellows

3

Derleyici Tasarımı için de oy kullanıyorum. Özellikle DFA ve NFA bölümünün geldiği yerde. NP sorunları ve diğer konular hakkında da o kadar net değilim.


Evet, eğer önce Hesaplama Teorisi'ni almamış olsaydım, Derleyiciler ile daha zor zamanlar geçirirdim.
Peter Turner

DFA'lar ve NFA'lar tavuk yemidir. LALR (1) ayrıştırma yapmak zorunda kalana kadar bekleyin.
David Thornley

3

Kuyruk teorisi

Teknik olarak bu bir matematik dalıdır, ancak CS'de son derece önemlidir.

CS'deki hemen hemen her şey kuyruklara (görünür (açık) ve görünmez (çok açık veya zımni değil) dayanmaktadır.

CS'nin ilk günlerinde kuyruklar aşikardı.
Bir program sırası (her program bir kart destesi).

Günümüzde kuyruklar çok açık değil. Örneğin internet: paket anahtarlamalı bir ağdır, ancak paketler kuyruklar oluşturur ve paketleri yönlendirmek bir kuyruk minimizasyonu şeklidir.


Hey! (? Sen bir (Lisp programcısı)
Mark C

Değil (Olabildiğince (Biri (bakın), Ama (Bilindi)). Olmak).
Martin York

3

Sayısal analiz

Kursta verdiğiniz oyuncak problemleri çok zor değil, ama gerçek problemleri düşünmeye başladığınızda ciddi bir angaryaya dönüşüyor.


2

İstemci ne istediğini gerçekten bilmiyorsa, müşteri gereksinimlerini yorumlamak . Bu kolejde öğretilmez ve sahip olması gereken en temel becerilerden biridir.


1
Bunu Bilgisayar Bilimi konsepti olarak kabul ettiğimden emin değilim. Bilimsel yöntemle nasıl çözülebileceğini de görmüyorum.
jmort253

@ jmort253 - Bu doğru, ancak bilgisayar bilimi (bence başarısız) bu alanı resmi tasarım ve doğrulama yöntemleri ile araştırmaya çalışıyor.
mouviciel

Katılıyorum "bilgisayar bilimi" kavramı değil - ama kariyerime başladığımda müşterilerin ne istediklerini bilmedikleri gerçeğinden habersizdim. TÜM yazılım projelerinin bir tür resmi gereksinimler belgesiyle geldiğini düşündüm. Belki bir yazılım mühendisliği kursu için bir ders konusu (belki benim kolejim bunu kapsamamıştır)?
Steven Striga

1

Şahsen benimki Formal Logic'ti. Başlamak zor oldu, ama bir kez kuralları indirip onunla yeterince oynamayı başardığınızda, beyninizLogic++; , bu da gelişimde çok iyi bir şeydir.

Bir yan not olarak, soruyu doğrudan cevaplıyorum - bu derecemi yaptığımda kesinlikle en zor konu değildi, ama muhtemelen en zor "gerçek hayatta uygulanabilir" konuydu.


Formal Mantık, aşk / nefret ilişkim olan bir şey. Kavramları düşünmekten hoşlanıyordum, ancak mantıklı düşünmeyi gerektiren gerçek dünya sorunlarıyla karşılaşıncaya kadar bana nasıl yardımcı olduğunu asla anlayamadım.
jmort253

@ jmort253 - Benim için gerçekten aynıydı. Hatta başarısız olacağımı düşünme noktasında mücadele ettim, sonunda kafamı tıklayana kadar çok uzun ve sert çalıştım. Bundan sonra, faydalar inanılmaz oldu.
Kyle Rozendo

1

Derleyici Konstrüksiyonları. Zor ama arkasındaki kavramları anlamak zorunda


5
Aynı cevabı tekrar vermek yerine, önünüzde verilen aynı cevap için yukarı oy vermelisiniz.
Abimaran Kugathasan

1

Çekirdek Tasarımı kimse var mı? Nasıl yapıldığını ve bir işletim sistemi için hedeflenen özelliklerin ne olduğunu gerçekten bilmiyorum, ama benim için bir çekirdek tasarlamayı düşünmek göz korkutucu bir görev olmalı.

Bilgisayar güvenliğini de düşünüyorum ; Tabii ki, belirgin arabellek taşmaları, XSS ve SQL enjeksiyonları dışında bir sistemi güvensiz kılan şeyleri gerçekten bilmiyorum.

Emin değilim, ama bazı algoritmalar da güvensiz görünüyor; MetaSploit projesine bakın, her türlü güvenlik ihlali türünü listeler: bir programın kusurlanmasının birçok yolu olduğunu görebilirsiniz.


1

Sahada pek çok garip konu var, ancak kalıcı zorluk için seçimlerim Global Sistem Özelliklerini içeren konular . Bu genel konuya örnekler:

  • Güvenli ve kilitlenmeden çoklu iplik geçirme
  • Güvenlik

Bunlar zor çünkü sadece her şey doğru olduğunda var olan bir şeyin peşindesiniz; Eğer küresel bir sistem özelliği ve henüz neredeyse tüm mevcut araçları (ve ihtiyaç bütün deneyimlerime gerçek problemlere ölçek olduğunu olanlar) sadece gerçekten yerel muhakeme yapmak. Bu, programın parçaları hakkında akıl yürütmeden zor olan tüm shebang'a gitme sürecidir, çünkü özellikle kendilerinde doğru olan ancak bileşenlerin yanlış düzenlenmiş olduğu için hala ince hataların olduğu parçalara sahip olmak tamamen mümkündür; böcekler istenmeyen ortaya çıkan özellikler olabilir…


0

Yönetim Bilişim Hizmetleri Üniversite dönemim boyunca, her dönem beni tamamen çıldırtan bir yönetim dersi alırdım.
Zorlu! gibi iyi denekler Derleyici Tasarımı , OS Tasarım vs zor ama gerçekten ilginç ve zorlu vardır. Gerçekten can sıkıntısı dolu ve teori çok geçmesi gibi Yönetim Bilgi Sistemi / Hizmetleri vb gibi konularda berbat.


2
Sıkıntılarla dolu çünkü her sistemin kavramsal karmaşıklıkları hakkında konuşuyorlar, insanların yarısı hiçbir zaman kendileri hiçbir sistem yazmamışlardı (ama kesinlikle çeşitli kullandılar). Ayrıca, seminaller çok fazla yüklü kelime kullanır, ancak sade İngilizce'de gerçek bir hayat örneği veremez. Karar destek sistemleri gibi ... Google Analytics raporlarının birkaç ekran görüntüsünü (FML), izleyicilerin önünde entelektüel bir orgazm yaşamadan öğrencileri aynı sayfaya götürmek için sadece bırakamazdınız.
Filip Dupanović

0

C / C ++ ile çalışıyorsanız işaretçiler bilmek en önemli kavramdır. Ama bir şekilde üniversitede tam olarak anlamadım.


12
Gerçekten mi? Her insan farklıdır tabii ama ben olduğunu düşünüyorum sürü (Yani, çok adil daha sert konuların) işaretçiler . Örneğin, Bilgisayar Mimarisi , Assambler bir şekilde işaretçilerle ilişkilidir ;)
Oscar Mederos

Doğru, ancak montajcılar aracılığıyla bellek referansını daha kolay anlayacaksınız, çünkü aslında ham işaretçilerle çalışıyorsunuz, C / C ++ 'da ise, soyutlama asla açıkça konuşulmadığı için insanlardan cehennemi şaşırtan işaretçilerin referanslarıyla çalışıyorsunuz. hakkında.
Filip Dupanović

2
Ah assambler, en iyi programcı çayı
Matt Ellen

Adam zor ama önemli konuları sordu, bu yüzden işaretçiler.
Manoj R

@Matt: Sadece günümü yaptın: D @Manoj R: Eğer sadece dizi erişimi olarak düşünürsen işaretçiler önemsizdir. Yoksa dizi erişimi zor mu?
back2dos

0

Algoritma Tasarımı ve Analizi. Bilinen algoritmaları anlamak ve analiz etmek o kadar da zor değildir, zor problemler için yeni algoritmalar tasarlamak ve analiz etmek zordur ve birçok farklı tekniğin uygulanmasında birçok alanın ve uygulamanın geniş bir şekilde anlaşılmasını gerektirir.


0

Kısıt Programlama. kombinatoryal problemler, NP-komple problemler.



0

İncelediğiniz ancak alan için önemli olan en zor CS konusu / teorisi hangisidir?

Ayrık matematik.

Bu zordu çünkü teoriler birbirleriyle çok gevşek bir şekilde ilişkilidir, ancak CS'de kullanılırlar. Sanırım çok fazla ezber ...

Tümevarım, Büyük O, Özyineleme, bölme ve fethetme, Grafik Teorisi, falan filan .. argh!

Derleyici benim için kolaydı, çünkü Automata Teorisi'ni almak zorunda kaldık. ^^


0

Üniversitede beynimi incitmek için kullanılan Z notasyonu / biçimsel yöntemler. Temelde nefret ettiğim için. Yaptıklarınızdan hoşlandığınızda zor çok daha kolay, yapmadığınızda çok daha zor.


0

Cevaplarınızı beğendim (ve onları oylamayı unutmadım), derleyici, çekirdek vb. Gibi, ancak programcıların çoğu bu sorunlarla hiç karşılaşmadı. Biraz daha kolay, ancak daha yaygın bir sorun var: eşzamanlılık - iş parçacıkları, kilitleme. Eşzamanlılık mimarisinde küçük bir hata bile yaparsak, büyülü hatalar üreten bir program yazmak çok kolaydır.

Yani, diyorum ki, bilgi işlemdeki en zor sorun değil, ama yaygın olarak kullanıldığı için tehlikeli bir konudur.


0

Nesne yönelimli programlama

Muhtemelen dişlerimi FORTRAN ve APL'de kestim çünkü kesinlikle prosedürel dillerden nesnelere geçiş yıllardır uğraştığım bir şeydi. Sözde 'uzmanlar'ın nesneye yönelik olmanın ne anlama geldiği ve nesne yönelimli programlar oluşturmanın en iyi / uygun yolları hakkında çelişkili makaleler ve öğreticiler yazmasına yardımcı olmaz.

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.