Khoa học máy tính thuộc về ngành học nào? [đóng cửa]


15

Là khoa học máy tính, toán học ứng dụng, kỹ thuật, nghệ thuật, triết học? "Khác"?

Để cung cấp nền tảng, đây là bài đăng trên blog của Steven Wartik cho Science American có tiêu đề " Tôi không phải là nhà khoa học thực sự, và điều đó không sao cả ." Bài viết bao gồm một số chủ đề hay cho câu hỏi này, nhưng nó để ngỏ nhiều hơn câu trả lời.

Nếu bạn có thể nghĩ về ngành học, làm thế nào khoa học máy tính phù hợp với định nghĩa của nó? Các ngành học về Khoa học Máy tính nên dựa trên những gì lập trình viên làm, hoặc những gì các học giả làm? Những câu trả lời nào bạn nhận được từ những người dường như đã suy nghĩ sâu sắc về điều này? Những lý do nào họ đưa ra?


1
Bao giờ học tôi từng gặp người nói Khoa học máy tính là một khoa học có một lý do hoàn toàn khác để giải thích tại sao.
Macneil

5
Khoa học máy tính là Khoa học chính trị với một chút ít chính trị.
Công việc

1
khoa học máy tính là một nhánh của toán học ứng dụng ... "khoa học" ngụ ý sử dụng phương pháp khoa học, vốn không tồn tại trong khoa học máy tính; nhưng nó được đặt tên khi mọi ngành học mới muốn đặt từ khoa học vào cuối tên của họ.
bụi bẩn đỏ

2
@ đỏ-bẩn Điều đó không đúng. Có phương pháp khoa học trong CompSci; bạn có các thí nghiệm, bằng chứng chính thức, v.v. Hầu hết các nhà khoa học máy tính khó tính đều học Toán và logic chính thức (xem: phép tính lambda, bài toán tạm dừng, v.v.), và xuất bản các bài báo trên các tạp chí đánh giá ngang hàng. Đừng nhầm lẫn chúng với những người phát minh ra "phương pháp luận", vốn không phải là nhà khoa học theo bất kỳ định nghĩa nào của từ này.
Andres F.

1
@ red-Dirt Tương tự như AndresF, về mặt ứng dụng thực tế hơn, phương pháp khoa học cơ bản (giả thuyết, kiểm tra, kiểm tra, lặp lại) xuất hiện trong quá trình gỡ lỗi - thường chiếm phần lớn thời gian dành cho lập trình.
Izkata

Câu trả lời:


30

Có hai ngành CNTT riêng biệt:

  • Khoa học máy tính - là nghiên cứu kỷ luật về máy tính và tính toán bằng phương pháp khoa học.

  • Kỹ thuật phần mềm - là ngành học thiết kế và triển khai phần mềm theo các nguyên tắc kỹ thuật phù hợp.

Hai phần trùng nhau, nhưng sự khác biệt thực sự là về kết quả mong muốn của khoa học so với kỹ thuật. Kết quả mong muốn của một ngành khoa học là kiến ​​thức. Kết quả mong muốn của một ngành kỹ thuật là những thứ hoạt động.

Để trả lời câu hỏi của bạn:

Là khoa học máy tính, toán học ứng dụng, kỹ thuật, nghệ thuật, triết học? "Khác"?

Khoa học máy tính là Khoa học ... khi được thực hiện đúng cách. Tuy nhiên, giống như các ngành học khác, CS có sự trùng lặp với Toán học, Kỹ thuật, Khoa học Vật lý, Khoa học Xã hội, Triết học, v.v.

Tôi cũng sẽ nói thêm rằng những gì hầu hết các lập trình viên làm không phải là Khoa học Máy tính hay Kỹ thuật phần mềm. Nó giống như những gì một người thợ làm.

Và thật đáng buồn khi nói, cả khoa học máy tính hay ngành Kỹ thuật phần mềm đều không nghiêm ngặt như các ngành khoa học và kỹ thuật cũ. (Có những lĩnh vực Khoa học Máy tính theo truyền thống nghiêm ngặt; ví dụ, những ngành có nền tảng toán học mạnh. Nhưng đối với nhiều lĩnh vực, đơn giản là quá khó / tốn kém để thực hiện các nghiên cứu khoa học thích hợp cho các câu hỏi thực sự quan trọng.)


1
Ngoài ra còn có kỹ thuật phần cứng - ai đó phải thiết kế các máy tính vật lý để phần mềm chạy trên đó - và đó thực sự là một môn học phụ (chính) của Kỹ thuật điện tử.
Donal Fellows

+1 cho sự tương tự của người thợ, tôi nhận ra đó là khái niệm chính xác nhất để giải thích những gì CS của Kỹ sư phần mềm làm. Đây là một liên kết cho cuốn sách miễn phí từ O'Reilly về nó. học việc
mô hình.labs.oreilly.com / ch01.html

"Và thật buồn khi nói, cả Khoa học máy tính hay ngành Kỹ thuật phần mềm đều nghiêm ngặt như các ngành khoa học và kỹ thuật cũ": Tôi không đồng ý với tuyên bố này. Trong số những thứ khác, nếu Khoa học máy tính không nghiêm ngặt, chúng ta sẽ không có những tiến bộ về ngôn ngữ lập trình, trình biên dịch (và tất cả các lý thuyết ngôn ngữ chính thức đằng sau chúng), mật mã, v.v. Tất cả các ứng dụng này có một nền tảng vững chắc đã được phát triển chủ yếu trong học viện.
Giorgio

@Giorgio - Thật tiếc khi bạn không đọc những gì tôi đã viết ngay sau câu bạn đã trích dẫn ...
Stephen C

@Stephen C: Tôi đã đọc nó, và tôi vẫn không tin rằng Khoa học Máy tính ít nghiêm ngặt hơn các ngành khoa học khác (tất nhiên tôi có thể sai). Hoặc có lẽ trước tiên người ta nên định nghĩa những gì người ta coi là "khoa học" và "nghiêm ngặt" và những gì không, nhưng điều này có thể đòi hỏi một cuộc thảo luận dài, tôi đoán vậy.
Giorgio

12

Lập trình viên hiếm khi "làm khoa học máy tính". Họ chủ yếu sử dụng kết quả của "công nghệ phần mềm", rõ ràng là một chuyên ngành kỹ thuật.

Ngoài ra, Khoa học Máy tính là Toán ứng dụng. Nếu bạn so sánh CS với một cái gì đó không thể chấp nhận được thuộc về toán ứng dụng, bạn sẽ nhận thấy rất nhiều điểm tương đồng.

Các nhà khoa học máy tính thiết kế và nghiên cứu các cách tính toán (thuật toán), lấy phần lớn lý thuyết từ Toán học (logic, lý thuyết đồ thị, tổ hợp, v.v.) và đồng thời đóng góp cho nó. Cũng giống như phần còn lại của toán học ứng dụng.

Họ đánh giá các thuộc tính của các mô hình và thuật toán này về mặt lý thuyết và thực hiện các thí nghiệm mô hình hóa (viết chương trình thử nghiệm). Giống như các nhà toán học ứng dụng mô phỏng dòng chảy của chất lỏng trong các ống trên các cụm, các nhà khoa học máy tính sử dụng máy tính để thử nghiệm các triển khai thuật toán của họ. Kết quả của các thí nghiệm này được đưa thẳng vào sản xuất: hoặc đến nhà máy lọc dầu hoặc phần mềm để phân tích chứng khoán.

Trong trường đại học tôi đã hoàn thành thậm chí không có một khoa đặc biệt nào về khoa học máy tính: trong số các lĩnh vực khác, không phải máy tính, ghế khoa học máy tính là một phần của Khoa Toán ứng dụng.


nhưng ở các trường đại học khác, Khoa học Máy tính là một khoa riêng biệt trong Khoa Toán, khoa Khoa Kỹ thuật, Khoa Khoa học, hoặc ... không có trường hợp nào ở trên. Đây là những vấn đề quản trị / tổ chức và ít liên quan đến tài liệu chủ đề thực tế.
Stephen C

@Stephen, đó là lý do tại sao tôi chỉ định trường đại học, thay vì nói "trong hầu hết các trường đại học" hoặc "trong nhiều trường đại học" :-) Đó chỉ là một ví dụ nhỏ, không phải là ý chính của câu trả lời.
P Shved

1
chắc chắn đó là một "ví dụ nhỏ", nhưng quan điểm của tôi là nó không phải là một ví dụ đại diện và nó thậm chí không liên quan đặc biệt đến lập luận của bạn. Để minh họa, trường đại học nơi tôi làm việc đang trong quá trình tái cấu trúc các khoa ... không phải vì suy nghĩ sâu sắc về những gì liên quan đến những gì ... mà là để giảm chi phí hành chính . Vài năm trước, các trường CS và Elec Eng được kết hợp với cùng một lý do .
Stephen C

Như tôi đã nói trong bài trả lời ban đầu của mình, khoa học máy tính là một môn học toán ứng dụng liên quan đến việc thiết kế và ứng dụng automata tính toán. Lập trình không phải là khoa học máy tính. Phần mềm là một phương tiện để thực hiện automata tính toán mà không cần rút sắt hàn (bất kỳ chương trình nào cũng có thể được thực hiện bằng cách sử dụng logic tuần tự và tổ hợp khi có đủ bất động sản). Kiến trúc von Neumann khác với các kiến ​​trúc đi trước nó ở chỗ nó là một máy tự động có mục đích chung, đóng vai trò là cơ sở để tạo ra máy tự động có mục đích đặc biệt.
bit-twiddler

1
@ bit-twiddler - Định nghĩa của bạn quá hẹp. Nó không bao gồm nhiều lĩnh vực học thuật được phân loại theo truyền thống là "khoa học máy tính".
Stephen C

5

Khoa học máy tính là một thuật ngữ mà ngày nay bao gồm nhiều, rất nhiều điều:

  • Các thợ thủ công bậc thầy làm việc cho người khác dựa trên kinh nghiệm của họ với các công cụ của họ (và có người học việc, v.v.).
  • Công cụ này phát minh và tạo ra các công cụ mới cho các thợ thủ công
  • Các nhà nghiên cứu phát triển hợp kim mới và các vật liệu khác - như nhựa - cho công cụ thợ rèn.
  • Các nhà khoa học lý thuyết tìm ra cách thức hoạt động của công cụ để các nhà sản xuất alloym biết công cụ của họ hoạt động như thế nào .

Lưu ý làm thế nào tất cả các bên trên có cách đặt tên riêng biệt thay vì chỉ "các nhà khoa học máy tính". Sự khác biệt chỉ là Khoa học Máy tính quá mới để đặt tên để giải quyết.


Điểm 2 là một con rết công cụ , nhưng câu trả lời này là đúng :)
ZJR

1

Trước hết, đó là khoa học máy tính . Điều này liên quan đến toán học đằng sau tính toán.
Có những ngành khác được định hướng nhiều hơn về kỹ thuật.

Sự khác biệt là giống như bất kỳ ngành khoa học và kỹ thuật liên quan. Một là về độ chính xác, khác về độ chính xác. Khoa học máy tính là lý thuyết, những người khác là khoa học áp dụng cho các vấn đề: các ngành kỹ thuật.


1
MIT không đồng ý với bạn eecs.mit.edu
Armand

@ Alison, vui lòng sửa mục nhập wiki ( en.wikipedia.org/wiki/Computer_science ).
CMR

0

Khoa học máy tính được ứng dụng và thử nghiệm toán học .


0

Khoa học máy tính là một nhánh của toán học ứng dụng liên quan đến việc thiết kế và ứng dụng automata tính toán. Công nghệ phần mềm là tập hợp con đúng đắn của khoa học máy tính liên quan đến thiết kế chính thức và xây dựng mã cho kiến ​​trúc von Neumann. Kiến trúc von Neumann chỉ là một cách để thực hiện một máy tính. Ví dụ, máy được sử dụng để bẻ khóa các tin nhắn được mã hóa Enigma không phải là máy von Neumann.

Kỹ thuật phần mềm là một kỷ luật học viên. Khoa học máy tính là ngành học định hướng nghiên cứu. Hầu hết các nhà khoa học máy tính đều học ngành phát triển phần mềm vì nghiên cứu đòi hỏi người ta phải có ít nhất một bằng thạc sĩ, điều này tạo ra niềm tin rằng khoa học máy tính là chứng chỉ lập trình được tôn vinh.


3
Tôi không nghĩ rằng nhiều nhà khoa học máy tính hàn lâm sẽ chấp nhận định nghĩa về CS hẹp hòi này.
Stephen C

0

Ngành học được gọi chính xác nhất là "Khoa học máy tính", trong hầu hết các trường đại học tôi đã kiểm tra, một ngành khoa học ứng dụng, tương tự như các ngành kỹ thuật; nếu bạn học chuyên ngành, bạn sẽ nhận được "BS" hoặc "MS". Bằng CS của Texas Tech được cung cấp bởi trường Cao đẳng Kỹ thuật. Các môn học, như được dạy, chủ yếu là lý thuyết; bạn tìm hiểu khái niệm về máy Turing, DA / NDA và các khái niệm cơ bản khác mà lập trình viên "hàng ngày" không thực sự phải loay hoay trong hộp sọ của họ. Bạn cũng có được một khối lượng toán học cao hơn; Bằng cấp Texas Tech CS, và tôi cũng sẽ đặt cược cho nhiều người khác, khá nhiều người sẽ trao cho bạn một môn toán nhỏ để học. Do đó, hầu hết các bằng cấp của trường đại học thêm vào một loạt các ứng dụng cấp thấp thực tế; bạn học một ngôn ngữ lắp ráp, ngôn ngữ thế hệ 3,

Tuy nhiên, hầu hết những người viết mã để kiếm sống không phải là "nhà khoa học máy tính"; nói đúng ra, họ là "nhà phát triển phần mềm" hoặc (khi bạn thêm vào phân tích / thiết kế) "kỹ sư phần mềm"; công việc đó ít cấp độ phần cứng hơn (mặc dù bạn phải biết những điều cơ bản về điều đó), phân tích hệ thống, thiết kế và mã hóa thẳng hơn nhiều. Nhiều trường đại học có một ca khúc khác nhau chỉ vì điều đó; tại Texas Tech, nó được gọi là "Quản lý hệ thống thông tin" và nó là bằng cấp Kinh doanh (BBA / MBA). Bài hát đó nhẹ hơn ở môn toán cao hơn (những gì bạn phải biết về đại số và vi phân / tích phân calc được nén thành hai học kỳ của "toán kinh doanh", và không bao gồm vectơ / tenxơ, đại số tuyến tính, v.v.), nặng hơn nhiều toán tài chính (một học kỳ mỗi chỉ số và tài chính, với hai mỗi kế toán và kinh tế). Nhẹ hơn trên các hệ điều hành, nặng hơn về các công nghệ "ngăn xếp" như cơ sở dữ liệu, máy chủ web, mạng và quản trị hệ thống chung. Nhẹ hơn về ngôn ngữ cấp thấp, thiết kế mạch và AI, nặng hơn về ngôn ngữ thế hệ 3 và 4, phân tích hệ thống và quản lý dự án. Tôi đã nhận được bằng cấp này từ Texas Tech và vào thời điểm tôi rời đi, tôi đã có ít nhất một học kỳ mỗi ngôn ngữ Java, VB, C # và ngôn ngữ web (HTML / CSS / PHP), cộng với một năm học OOA & D và các khóa học khác trong quản lý dự án CNTT.

Cái nào tốt hơn trong thế giới thực? Tôi đã nhận được MIS BBA, anh trai tôi có bằng CS CS và cả hai chúng tôi đều làm việc với mức lương tương đương (điều chỉnh chi phí sinh hoạt) như các kỹ sư phần mềm cao cấp. Anh ấy đã phải học rất nhiều OOA & D cần thiết trong công việc, cũng như quay vòng khá nhanh trong C # / Java từ kiến ​​thức C ++ cơ bản của mình. Về phần tôi, tôi ước mình có hai học kỳ nghiên cứu thuật toán khái niệm mà anh ấy có được khi tôi bị kẹt trong các khóa học quản lý kinh doanh (vâng, MIS là một bằng cấp "Quản lý", nhưng tôi đã tìm thấy 99% kiến ​​thức của mình về cách để quản lý và không quản lý người khác đã được học bằng ví dụ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.