วิทยาศาสตร์คอมพิวเตอร์เป็นสาขาใด [ปิด]


15

วิทยาศาสตร์คอมพิวเตอร์คือคณิตศาสตร์ประยุกต์วิศวกรรมศาสตร์ศิลปะปรัชญาหรือไม่ "อื่น ๆ"?

เพื่อให้พื้นหลังนี่คือการโพสต์บล็อกของ Steven Wartik สำหรับ Scientific American ที่มีชื่อว่า " ฉันไม่ใช่นักวิทยาศาสตร์ที่แท้จริงและไม่เป็นไร " บทความนี้ครอบคลุมหัวข้อที่ดีสำหรับคำถามนี้ แต่เปิดทิ้งไว้มากกว่าคำตอบ

หากคุณนึกถึงสาขาวิชาวิทยาศาสตร์คอมพิวเตอร์จะเข้ากับคำนิยามได้อย่างไร สาขาวิชาวิทยาการคอมพิวเตอร์ควรตั้งอยู่บนพื้นฐานของสิ่งที่โปรแกรมเมอร์ทำหรือนักวิชาการทำอะไร? คุณได้คำตอบแบบไหนจากคนที่คิดอย่างลึกซึ้งเกี่ยวกับเรื่องนี้? พวกเขาให้เหตุผลอะไร


1
เคยศึกษามาบ้างฉันพบว่าวิทยาการคอมพิวเตอร์เป็นวิทยาศาสตร์มีเหตุผลที่แตกต่างอย่างสิ้นเชิงเพื่ออธิบายว่าทำไม
Macneil

5
วิทยาการคอมพิวเตอร์เป็นรัฐศาสตร์ที่มีการเมืองน้อยลง
งาน

1
วิทยาการคอมพิวเตอร์เป็นสาขาหนึ่งของคณิตศาสตร์ประยุกต์ ... "วิทยาศาสตร์" หมายถึงการใช้วิธีการทางวิทยาศาสตร์ซึ่งไม่มีอยู่ในวิทยาศาสตร์คอมพิวเตอร์ แต่มันถูกตั้งชื่อเมื่อทุกระเบียบวินัยใหม่ต้องการที่จะทำให้วิทยาศาสตร์คำในตอนท้ายของชื่อของพวกเขา
ดินสีแดง

2
@ ดินสีแดงไม่เป็นความจริง มีวิธีการทางวิทยาศาสตร์ใน CompSci; คุณมีการทดลองพิสูจน์อย่างเป็นทางการและอื่น ๆ นักวิทยาศาสตร์คอมพิวเตอร์ไม่ยอมใครง่ายๆส่วนใหญ่เข้าสู่คณิตศาสตร์และตรรกะอย่างเป็นทางการ (ดู: แคลคูลัสแลมบ์ดาปัญหาการหยุดชะงัก ฯลฯ ) และเผยแพร่เอกสารในวารสารที่ผ่านการตรวจสอบโดยเพื่อน อย่าสับสนกับคนที่คิดค้น "ระเบียบวิธี" ซึ่งไม่ใช่นักวิทยาศาสตร์ด้วยคำนิยามใด ๆ
Andres F.

1
@ red-ดินคล้ายกับ AndresF ในด้านการใช้งานจริงมากขึ้นวิธีการทางวิทยาศาสตร์ขั้นพื้นฐาน (ตั้งสมมติฐานทดสอบตรวจสอบทำซ้ำ) เข้ามามีบทบาทในระหว่างการดีบัก - ซึ่งโดยปกติจะใช้เวลาส่วนใหญ่ในการเขียนโปรแกรม
Izkata

คำตอบ:


30

มีวินัยไอทีที่แตกต่างกันสองประการ:

  • วิทยาการคอมพิวเตอร์ - เป็นการศึกษาวินัยของคอมพิวเตอร์และการคำนวณโดยใช้วิธีการทางวิทยาศาสตร์

  • วิศวกรรมซอฟต์แวร์ - เป็นวินัยของการออกแบบและการใช้งานซอฟต์แวร์ตามหลักการทางวิศวกรรมที่เหมาะสม

ทั้งสองเหลื่อมกันบ้าง แต่ความแตกต่างนั้นเกี่ยวกับผลลัพธ์ที่ต้องการของวิทยาศาสตร์กับวิศวกรรม ผลลัพธ์ที่ต้องการของวินัยทางวิทยาศาสตร์คือความรู้ ผลลัพธ์ที่ต้องการของวินัยวิศวกรรมเป็นสิ่งที่ทำงาน

ดังนั้นเพื่อตอบคำถามของคุณ:

วิทยาศาสตร์คอมพิวเตอร์คือคณิตศาสตร์ประยุกต์วิศวกรรมศาสตร์ศิลปะปรัชญาหรือไม่ "อื่น ๆ"?

วิทยาการคอมพิวเตอร์เป็นวิทยาศาสตร์ ... เมื่อทำอย่างถูกต้อง อย่างไรก็ตามเช่นเดียวกับสาขาวิชาอื่น CS มีทับซ้อนกับคณิตศาสตร์วิศวกรรมศาสตร์วิทยาศาสตร์กายภาพสังคมศาสตร์ปรัชญาและอื่น ๆ

ฉันจะเพิ่มด้วยว่าสิ่งที่โปรแกรมเมอร์ส่วนใหญ่ทำไม่ใช่วิทยาการคอมพิวเตอร์หรือวิศวกรรมซอฟต์แวร์ มันเป็นเหมือนสิ่งที่ช่างฝีมือทำ

และน่าเศร้าที่จะพูดไม่ว่าวิทยาการคอมพิวเตอร์เชิงวิชาการหรือวิชาชีพวิศวกรรมซอฟต์แวร์จะเข้มงวดเท่ากับสาขาวิทยาศาสตร์และวิศวกรรมรุ่นเก่า (มีสาขาวิทยาศาสตร์คอมพิวเตอร์ที่มีความเข้มงวดตามธรรมเนียมเช่นสาขาที่มีพื้นฐานทางคณิตศาสตร์ที่แข็งแกร่ง แต่สำหรับหลาย ๆ สาขามันยากเกินไป / แพงเกินไปที่จะทำการศึกษาทางวิทยาศาสตร์ที่เหมาะสมกับคำถามที่สำคัญจริงๆ)


1
นอกจากนี้ยังมีวิศวกรรมฮาร์ดแวร์ - ใครบางคนต้องออกแบบคอมพิวเตอร์ทางกายภาพเพื่อให้ซอฟต์แวร์ทำงานต่อและนั่นเป็นสาขาย่อยที่สำคัญของวิศวกรรมอิเล็กทรอนิกส์
Donal Fellows

+1 สำหรับช่างเปรียบเทียบฉันรู้ว่าเป็นแนวคิดที่ถูกต้องที่สุดในการอธิบายสิ่งที่ CS of Software Engineer ทำ นี่คือลิงค์สำหรับหนังสือฟรีจาก O'Reilly เกี่ยวกับเรื่องนี้ apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj

“ และน่าเศร้าที่จะพูดไม่ว่าวิทยาการคอมพิวเตอร์เชิงวิชาการหรือวิชาชีพวิศวกรรมซอฟต์แวร์จะเข้มงวดเท่ากับสาขาวิทยาศาสตร์และวิศวกรรมรุ่นเก่า”: ฉันไม่เห็นด้วยกับข้อความนี้ เหนือสิ่งอื่นใดถ้าวิทยาศาสตร์คอมพิวเตอร์ไม่เข้มงวดเราจะไม่มีความก้าวหน้าในการเขียนโปรแกรมภาษาคอมไพเลอร์ (และทฤษฎีภาษาทางการทั้งหมดที่อยู่เบื้องหลังพวกเขา) การเข้ารหัสและอื่น ๆ ใบสมัครทั้งหมดเหล่านี้มีรากฐานที่มั่นคงซึ่งได้รับการพัฒนาส่วนใหญ่ในด้านวิชาการ
Giorgio

@Giorgio - เป็นที่น่าเสียดายที่คุณไม่ได้อ่านสิ่งที่ฉันเขียนทันทีหลังจากประโยคที่คุณยกมา ...
สตีเฟ่นซี

@ สตีเฟน C: ฉันอ่านแล้วและฉันก็ยังไม่เชื่อว่าวิทยาการคอมพิวเตอร์นั้นเข้มงวดน้อยกว่าวิทยาศาสตร์อื่น ๆ (แต่แน่นอนฉันอาจผิดไป) หรือบางทีเราควรกำหนดสิ่งที่ใคร ๆ คิดว่าเป็น "วิทยาศาสตร์" และ "เข้มงวด" และอะไรที่ไม่ แต่สิ่งนี้อาจต้องใช้การอภิปรายที่ยาวนาน
Giorgio

12

โปรแกรมเมอร์ไม่ค่อย "ทำวิทยาการคอมพิวเตอร์" พวกเขาส่วนใหญ่ใช้ผลลัพธ์ของ "วิศวกรรมซอฟต์แวร์" ซึ่งเป็นวินัยทางวิศวกรรมอย่างชัดเจน

นอกจากนั้นวิทยาศาสตร์คอมพิวเตอร์เป็นคณิตศาสตร์ประยุกต์ หากคุณเปรียบเทียบ CS กับบางสิ่งที่เป็นของคณิตศาสตร์ประยุกต์คุณจะสังเกตเห็นความคล้ายคลึงกันมากมาย

นักวิทยาศาสตร์คอมพิวเตอร์ได้ออกแบบและศึกษาวิธีการคำนวณ (อัลกอริธึม) โดยใช้ทฤษฎีส่วนใหญ่มาจากคณิตศาสตร์ (ตรรกะ, ทฤษฎีกราฟ, คอมบิเนเตอร์, ฯลฯ ) และมีส่วนช่วยในเวลาเดียวกัน เช่นเดียวกับส่วนที่เหลือของคณิตศาสตร์ประยุกต์

พวกเขาประเมินคุณสมบัติของโมเดลและอัลกอริทึมเหล่านี้ในทางทฤษฎีและทำการทดลองสร้างแบบจำลอง (เขียนโปรแกรมทดสอบ) เช่นเดียวกับนักคณิตศาสตร์ประยุกต์ประยุกต์ที่จำลองการไหลของของเหลวในหลอดบนกลุ่มนักวิทยาศาสตร์คอมพิวเตอร์ใช้คอมพิวเตอร์ในการทดสอบการใช้งานอัลกอริทึมของพวกเขา ผลลัพธ์ของการทดลองเหล่านี้ไปสู่การผลิตโดยตรงไม่ว่าจะเป็นโรงกลั่นน้ำมันหรือซอฟต์แวร์สำหรับการวิเคราะห์สต็อก

ในมหาวิทยาลัยฉันเรียนจบแล้วไม่มีแม้แต่แผนกพิเศษสำหรับวิทยาการคอมพิวเตอร์: ในบรรดาโดเมนอื่น ๆ ที่ไม่ใช่คอมพิวเตอร์เก้าอี้วิทยาการคอมพิวเตอร์เป็นส่วนหนึ่งของภาควิชาคณิตศาสตร์ประยุกต์


แต่ในมหาวิทยาลัยอื่น ๆ วิทยาศาสตร์คอมพิวเตอร์เป็นแผนกที่แยกจากกันภายในคณะคณิตศาสตร์แผนกวิชาของคณะวิศวกรรมศาสตร์คณะวิทยาศาสตร์หรือ ... ไม่มีสิ่งใดในข้างต้น ปัญหาเหล่านี้เกี่ยวกับการดูแลระบบ / องค์กรและมีส่วนเกี่ยวข้องกับเนื้อหาจริงเพียงเล็กน้อย
สตีเฟนซี

@ สตีเฟ่นนั่นคือเหตุผลที่ฉันระบุมหาวิทยาลัยแทนที่จะพูดว่า "ในมหาวิทยาลัยส่วนใหญ่" หรือ "ในมหาวิทยาลัยหลายแห่ง" :-) นั่นเป็นเพียงตัวอย่างเล็ก ๆ ไม่ใช่ส่วนสำคัญของคำตอบ
P Shved

1
แน่ใจว่ามันเป็น "ตัวอย่างเล็ก ๆ " แต่ประเด็นของฉันคือมันไม่ใช่ตัวอย่างที่เป็นตัวแทนและมันก็ไม่ได้เกี่ยวข้องกับการโต้แย้งของคุณเป็นพิเศษ เพื่อแสดงให้เห็นมหาวิทยาลัยที่ผมทำงานอยู่ในกระบวนการของการปรับโครงสร้างคณะ ... ไม่ได้เพราะคิดลึกใด ๆ ในสิ่งที่เกี่ยวข้องกับสิ่งที่ ... แต่เพื่อที่จะลดค่าใช้จ่ายในการบริหาร ปีไม่กี่หลังโรงเรียน CS และ Elec เอ็งมารวมกันด้วยเหตุผลเดียวกัน
สตีเฟ่นซี

ตามที่ฉันระบุไว้ในคำตอบเริ่มแรกวิทยาศาสตร์คอมพิวเตอร์เป็นวินัยคณิตศาสตร์ประยุกต์ที่เกี่ยวข้องกับการออกแบบและการประยุกต์ใช้ออโตมาตาการคำนวณ การเขียนโปรแกรมไม่ใช่วิทยาศาสตร์คอมพิวเตอร์ ซอฟแวร์เป็นวิธีการที่จะใช้ออโตมาตาการคำนวณโดยไม่ต้องตีหัวแร้ง (โปรแกรมใด ๆ ที่สามารถดำเนินการได้โดยใช้ตรรกะเชิงลำดับและ combinatorial สถาปัตยกรรมฟอนนอยมันน์นั้นแตกต่างจากสถาปัตยกรรมที่นำหน้าด้วยว่ามันเป็นออโตเมติกอเนกประสงค์ที่ทำหน้าที่เป็นฐานสำหรับการสร้างออโตมาตาแบบ "นุ่ม" พิเศษ
bit-twiddler

1
@ bit-twiddler - คำจำกัดความของคุณแคบเกินไป มันไม่รวมพื้นที่การศึกษาจำนวนมากที่จัดว่าเป็นแบบดั้งเดิม "วิทยาศาสตร์คอมพิวเตอร์"
สตีเฟ่นซี

5

วิทยาการคอมพิวเตอร์เป็นคำที่วันนี้ครอบคลุมหลายสิ่งหลายอย่าง:

  • ช่างฝีมือผู้ชำนาญการทำงานให้ผู้อื่นตามประสบการณ์ด้วยเครื่องมือของพวกเขา (และมีการฝึกหัดเป็นต้น)
  • เครื่องมือนี้คิดค้นและสร้างเครื่องมือใหม่สำหรับช่างฝีมือ
  • นักวิจัยได้พัฒนาโลหะผสมใหม่และวัสดุอื่น ๆ เช่นพลาสติกสำหรับเครื่องมือช่าง
  • นักวิทยาศาสตร์ทฤษฎีการหาวิธีการสิ่งที่ได้ผล alloymakers รู้วิธีการของพวกเขาทำงานเครื่องมือ

สังเกตว่าการตั้งชื่อทั้งหมดข้างต้นนั้นแตกต่างกันอย่างไรแทนที่จะเป็น "นักวิทยาศาสตร์คอมพิวเตอร์" ข้อแตกต่างคือวิทยาศาสตร์คอมพิวเตอร์นั้นใหม่เกินกว่าที่จะตั้งชื่อ


2 จุดมีมากขึ้นของตะขาบ toolsmithแต่ตอนของคำตอบเกี่ยวกับเรื่องนี้ :)
ZJR

1

ประการแรกคือวิทยาศาสตร์คอมพิวเตอร์ ข้อตกลงกับคณิตศาสตร์ที่อยู่เบื้องหลังการคำนวณนี้
มีสาขาวิชาอื่น ๆ ที่มุ่งเน้นไปที่วิศวกรรมมากขึ้น

ความแตกต่างเหมือนกับวิชาวิทยาศาสตร์และวิศวกรรมที่เกี่ยวข้อง หนึ่งเกี่ยวกับความถูกต้องอื่น ๆ เกี่ยวกับความแม่นยำ วิทยาศาสตร์คอมพิวเตอร์เป็นทฤษฎีอื่น ๆ เป็นวิทยาศาสตร์ที่ใช้กับปัญหา: สาขาวิศวกรรม


1
MIT ไม่เห็นด้วยกับคุณeecs.mit.edu
อาร์มันด์

@Alison โปรดแก้ไขรายการ wiki ( en.wikipedia.org/wiki/Computer_science ) ด้วย
CMR


0

วิทยาการคอมพิวเตอร์เป็นสาขาหนึ่งของคณิตศาสตร์ประยุกต์ที่เกี่ยวข้องกับการออกแบบและการประยุกต์ใช้คอมพิวเตอร์ออโตมาตะ วิศวกรรมซอฟต์แวร์เป็นส่วนย่อยที่เหมาะสมของวิทยาศาสตร์คอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบและสร้างรหัสสำหรับสถาปัตยกรรม von Neumann อย่างเป็นทางการ สถาปัตยกรรม von Neumann เป็นเพียงวิธีเดียวที่จะใช้เครื่องคอมพิวเตอร์ ตัวอย่างเช่นเครื่องที่ใช้เพื่อถอดรหัสข้อความที่เข้ารหัส Enigma ไม่ใช่เครื่อง von Neumann

วิศวกรรมซอฟต์แวร์เป็นวินัยของผู้ประกอบการ วิทยาการคอมพิวเตอร์เป็นระเบียบวินัยที่มุ่งเน้นการวิจัย นักวิทยาศาสตร์คอมพิวเตอร์ส่วนใหญ่จบการศึกษาด้านการพัฒนาซอฟต์แวร์เพราะงานวิจัยต้องใช้เวลาอย่างน้อยหนึ่งระดับปริญญาโทซึ่งบังคับให้เชื่อว่าวิทยาศาสตร์คอมพิวเตอร์เป็นใบรับรองการเขียนโปรแกรมที่ได้รับเกียรติ


3
ฉันไม่คิดว่านักวิทยาศาสตร์คอมพิวเตอร์นักวิชาการหลายคนจะยอมรับคำจำกัดความของ CS อย่างแคบ ๆ นี้
สตีเฟ่นซี

0

วินัยที่ถูกต้องที่สุดที่เรียกว่า "วิทยาการคอมพิวเตอร์" คือในมหาวิทยาลัยส่วนใหญ่ที่ฉันได้ตรวจสอบวิทยาศาสตร์ประยุกต์คล้ายกับสาขาวิชาวิศวกรรม หากคุณสำคัญในนั้นคุณจะได้รับ "BS" หรือ "MS" ปริญญา CS ของ Texas Tech ได้รับการเสนอโดยวิทยาลัยวิศวกรรมศาสตร์ วินัยตามที่สอนส่วนใหญ่เป็นทฤษฎี คุณได้เรียนรู้แนวคิดของเครื่องจักรทัวริง DAs / NDA และแนวคิดพื้นฐานอื่น ๆ ที่โปรแกรมเมอร์ "แบบวันต่อวัน" ไม่จำเป็นต้องทำอะไรมากมายในหัวของพวกเขา นอกจากนี้คุณยังจะได้คณิตศาสตร์ที่สูงขึ้นอีกด้วย ปริญญาเท็กซัสเทค CS และฉันจะวางเดิมพันอื่น ๆ อีกมากมายเช่นกันส่งมือคุณคณิตศาสตร์เล็กน้อยให้ไปกับมัน เพื่อที่จะติดตามการศึกษาระดับปริญญาของมหาวิทยาลัยส่วนใหญ่เพิ่มในรีบหนักของการใช้งานในระดับต่ำในทางปฏิบัติ; คุณเรียนภาษาแอสเซมบลี, ภาษาที่ 3,

อย่างไรก็ตามคนส่วนใหญ่ที่ใช้รหัสเพื่อการดำรงชีวิตไม่ใช่ "นักวิทยาศาสตร์คอมพิวเตอร์" พวกเขากำลังพูดอย่างเคร่งครัด "ผู้พัฒนาซอฟต์แวร์" หรือ (เมื่อคุณเพิ่มในการวิเคราะห์ / ออกแบบ) "วิศวกรซอฟต์แวร์"; งานนั้นมีระดับฮาร์ดแวร์น้อยกว่ามาก (แม้ว่าคุณจะต้องรู้พื้นฐานของมัน) การวิเคราะห์ระบบการออกแบบและการเข้ารหัสที่ตรงขึ้น มหาวิทยาลัยหลายแห่งมีเส้นทางที่แตกต่างออกไป ที่ Texas Tech นั้นถูกเรียกว่า "การจัดการระบบข้อมูล" และเป็นระดับธุรกิจ (BBA / MBA) เพลงนั้นเบากว่าคณิตศาสตร์ที่สูงกว่า (สิ่งที่คุณต้องรู้เกี่ยวกับพีชคณิตและอนุพันธ์ / อินทิกรัลแคลอรี่ถูกบีบลงในสองภาคการศึกษาของ "คณิตศาสตร์ธุรกิจ" และไม่รวมเวกเตอร์ / เทนเซอร์แคล, พีชคณิตเชิงเส้น ฯลฯ ) คณิตศาสตร์การเงิน (ภาคการศึกษาแต่ละสถิติและการเงิน ด้วยสองบัญชีและเศรษฐศาสตร์แต่ละอัน) ไฟแช็กบนระบบปฏิบัติการหนักกว่าเทคโนโลยี "สแต็ก" เช่นฐานข้อมูลเว็บเซิร์ฟเวอร์ระบบเครือข่ายและการดูแลระบบทั่วไป เบาขึ้นสำหรับภาษาระดับต่ำการออกแบบวงจรและ AI หนักกว่าภาษาที่ 3 และ 4 การวิเคราะห์ระบบและการจัดการโครงการ ฉันได้รับปริญญานี้จาก Texas Tech และตามเวลาที่ฉันไปฉันมีอย่างน้อยหนึ่งภาคเรียนของ Java, VB, C # และภาษาเว็บ (HTML / CSS / PHP) รวมทั้ง OOA & D และหลักสูตรอื่น ๆ อีกหลายปี ในการจัดการโครงการไอที

ไหนในโลกที่ดีกว่า? ฉันได้รับ MIS BBA พี่ชายของฉันได้รับ CS BS และเราทั้งคู่จ้างงานในระดับเงินเดือนเท่ากัน (ปรับค่าครองชีพ) ในฐานะวิศวกรซอฟต์แวร์อาวุโส เขาต้องเรียนรู้ OOA & D ที่จำเป็นจำนวนมากเกี่ยวกับงานรวมทั้งหมุนอย่างรวดเร็วใน C # / Java จากความรู้พื้นฐาน C ++ ของเขา สำหรับส่วนของฉันฉันหวังว่าฉันมีสองภาคการศึกษาขั้นตอนวิธีเชิงแนวคิดที่เขาได้รับในขณะที่ฉันติดอยู่ในหลักสูตรการจัดการธุรกิจ (ใช่ MIS เป็นระดับ "การจัดการ" แต่ฉันพบว่า 99% ของความรู้ของฉัน เพื่อจัดการและไม่จัดการบุคคลอื่นได้รับการเรียนรู้จากตัวอย่าง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.