Thu hẹp khoảng cách giữa nghiên cứu khoa học máy tính và công nghệ phần mềm [đóng]


8

Bạn có tin rằng có một khoảng cách giữa nghiên cứu khoa học máy tính và các vấn đề kỹ thuật phần mềm? Ví dụ, các kỹ sư phần mềm có bao giờ phải lo lắng về "bao thanh toán và đẳng cấu đồ thị" hoặc một số vấn đề khoa học máy tính phức tạp nếu họ phải .... nói xây dựng một trang web giỏ hàng? Chắc là không.

Và nếu có sự mất kết nối giữa khoa học máy tính và các kỹ sư xây dựng ứng dụng? Đó có phải là cách mà kỹ thuật và khoa học nên tồn tại? Các kỹ sư sẽ lặn qua nhiều năm và nhiều năm nghiên cứu để giải quyết một vấn đề cụ thể mà họ có?

Chỉnh sửa-1: Sau khi nghĩ về nó, khoa học nói chung có thể có cùng một vấn đề. Tôi chắc chắn rằng có những nhà hóa học hàng đầu làm việc tại các công ty như McDonald và Taco Bell được giao nhiệm vụ sản xuất một loại burger tốt hơn, dễ sản xuất hơn.


Khoảng cách nào? Nếu bạn muốn có nhiệm kỳ và trợ cấp thì bạn lo lắng về "bao thanh toán và đồng phân graphi" khi bạn đặt nó và nếu bạn muốn xây dựng một trang web giỏ hàng thì bạn lo lắng về cookie và dữ liệu phiên. Khoảng trống nào để cầu?
davidk01

Bạn chắc chắn nên lo lắng về đồ thị và như vậy nếu bạn đang xây dựng bất kỳ loại quy trình công việc nào (bao gồm cả giỏ hàng hoặc bất cứ thứ gì trần tục như nhau). Nếu không, quy trình làm việc của bạn có thể trở nên không sử dụng được và không thể hiểu được cho cả người bảo trì và người dùng cuối của bạn.
SK-logic

Câu trả lời:


10

Trong hầu hết các vị trí kỹ thuật phần mềm, các vấn đề khoa học máy tính cơ bản hiếm khi xuất hiện, vì một trong hai lý do:

  • Họ đã được giải quyết bằng các công cụ bạn sử dụng. Ví dụ là các thuật toán phân tích cú pháp cho ngôn ngữ lập trình bạn sử dụng bởi trình biên dịch, lập lịch thuật toán cho các ứng dụng bạn chạy bởi hệ điều hành, giải quyết truy vấn trong cơ sở dữ liệu bạn sử dụng, v.v.
  • Họ chỉ đơn giản là không quan trọng đối với bất cứ điều gì bạn đang cố gắng để đạt được. Không phải vì họ sẽ không giúp, mà là vì nhiệm vụ tự động hóa trần tục quan trọng hơn nhiều so với phiên bản tối ưu hóa tối đa.

Lý do rất nhiều kỹ sư phần mềm đang xây dựng các hệ thống thông tin tầm thường theo quan điểm lý thuyết, đơn giản là vì chúng cần thiết. Cách thế giới của chúng ta hiện đang được tự động hóa có lẽ chỉ ở mức dưới 0,01% so với những gì có thể đạt được. Vì vậy, trong những thập kỷ tới, có lẽ chúng ta sẽ xây dựng hầu hết các hệ thống và giao diện thông tin. Một khi chúng ta có những thứ đó, một số vấn đề cơ bản sẽ bắt đầu xuất hiện.

Những vấn đề này hiện đang tồn tại, ví dụ liên quan đến khả năng mở rộng, phân luồng, v.v. nhưng chúng chỉ đơn giản là một phần cực kỳ nhỏ của mọi thứ cần phải được thực hiện. Vì vậy, lý do các công ty đang xây dựng hệ thống thông tin tương đối tầm thường là vì (1) mọi người cần chúng và (2) nó dễ dàng hơn (và sinh lợi hơn) so với việc giải quyết các vấn đề cơ bản.


1
"Cách thế giới của chúng ta hiện đang được tự động hóa có lẽ chỉ ở mức dưới 0,01% so với những gì có thể đạt được." Đó là những gì tôi đã nghĩ. Có vẻ đáng tiếc rằng tất cả các khoa học, nghiên cứu và thiên tài tiên tiến đó có thể bị mất bởi vì chúng tôi đang xây dựng các ứng dụng về cơ bản lấy dữ liệu từ một định dạng và đưa nó vào cơ sở dữ liệu.
berlinbrown2

3
@Berlin, tôi nghĩ đó là các khung vấn đề đang cố gắng giải quyết. Dù bằng cách nào, chúng ta đang đi đúng hướng. Hãy suy nghĩ về bao nhiêu thiên tài, vv, được sử dụng để có được lãng phí hồ sơ nộp trong tủ!
Ethel Evans

6

Bạn có tin rằng có một khoảng cách giữa nghiên cứu khoa học máy tính và các vấn đề kỹ thuật phần mềm?

Kinh nghiệm của tôi là phát triển phần mềm thương mại / thực tế tụt hậu so với nghiên cứu học thuật từ 5 đến 30 năm. Một trong những khung thời gian nhanh nhất từ ​​một bài báo học thuật đột phá đến một sản phẩm vận chuyển thương mại là SQL. Bài báo được xuất bản năm 1969, IBM và các công ty khác đã dành rất nhiều thời gian và công sức để tạo ra các sản phẩm khả thi và sản phẩm thương mại thực sự đầu tiên là Phần mềm quan hệ - công ty hiện có tên là Oracle.

Ngôn ngữ chức năng được phát triển bởi các nhà nghiên cứu trong những năm 1960. Có bao nhiêu được sử dụng phổ biến ngày nay? Một số. Họ đang sử dụng nhiều hơn những ngày này so với những gì họ đã làm bên ngoài những bức tường phủ đầy cây thường xuân. Nhưng phải mất ba thập kỷ để làm như vậy.

Các kỹ sư sẽ lặn qua nhiều năm và nhiều năm nghiên cứu để giải quyết một vấn đề cụ thể mà họ có?

Đúng. Tôi làm nó suốt. Khi tôi làm việc tại một công ty sản xuất mạng khu vực lưu trữ, nhiều sản phẩm bắt đầu được vận chuyển đã được mô tả trong các tài liệu nghiên cứu được công bố 5-6 năm trước.

Một ví dụ khác liên quan đến một vấn đề gọi là "kết hợp bệnh nhân." Con người rất giỏi nhìn vào những thứ như Chem. Dept.hoặcDepartment of Chemistryvà xác định những thứ như vậy là giống hệt nhau. Hầu hết các thuật toán có một thời gian khủng khiếp để xác định những điều như vậy. Tôi đang làm việc tại một công ty xử lý đơn thuốc điện tử, báo cáo phòng thí nghiệm và yêu cầu bảo hiểm. Sẽ rất hữu ích khi có thể (ẩn danh) có thể có dữ liệu dài hạn bao gồm hiệu quả và hiệu quả của các phương pháp điều trị cho bệnh nhân. Một điều như vậy sẽ cần thiết để phụ thuộc vào khả năng xác định độ gần của chuỗi. Trong những năm 1990, hầu hết các nhà nghiên cứu trong lĩnh vực này đã biến mất trong dự án Bộ gen người và hầu hết các công việc của họ biến mất khỏi web (với NDA và sở hữu trí tuệ, mọi thứ mà những người này đã phát minh ra đều biến mất khỏi web khi họ đi làm cho ngành tư nhân). Sau 911, tên trùng khớp trở thành vấn đề "an ninh quốc gia" (có khoảng 25 cách đánh vần Mohammed bằng tiếng Anh, và khoảng một chục cách để đánh vần Osama) và nhiều phần còn lại cũng biến mất. Vậy mộtnhà phát minh / công ty đã có một sản phẩm cho phép bạn kết hợp mọi người và các mối quan hệ được gọi là " bộ phân tích quan hệ không rõ ràng ", cuối cùng biến thành một phần bổ trợ cho DB2. Bạn sẽ phải đào sâu vào giấy tờ rất nhiều. Có thể không nếu bạn thực hiện giỏ hàng, nhưng nó là khá phổ biến để làm như vậy trong các dự án khác.

Luận văn: Phát hiện thích nghi các bản ghi cơ sở dữ liệu trùng lặp và phương pháp tích hợp cơ sở dữ liệu để khám phá thông tin .
Thư viện thực hiện một số chức năng trong luận án .


Phản hồi tốt và bạn đã kết nối một luận án thực tế với một ứng dụng. Tôi vẫn lập luận rằng đó không phải là tiêu chuẩn cho hầu hết các nhiệm vụ phát triển phần mềm, phát triển phần mềm ngoài kia. Giống như bạn đã nói, tôi nghĩ rằng sự phát triển phần mềm có thể chậm hơn nhiều năm hoặc nhiều thập kỷ so với nghiên cứu ngoài kia. Và đó là cho các nhiệm vụ thú vị như 'tìm kiếm google' hoặc các ứng dụng sinh trắc học.
berlinbrown2

Điều đó không đúng. Ví dụ, các hệ thống đề xuất, phân tích giỏ thị trường, v.v ... tất cả đều xuất phát từ nghiên cứu khoa học máy tính cơ bản sử dụng Định lý Bayes và điều này không mất hơn 30 năm.
Nấm

4

Các nhà khoa học máy tính học thuật rất giỏi với những điều sau đây:

  1. Phân tích thuật toán
  2. Kiến thức về cấu trúc dữ liệu tiêu chuẩn.
  3. Lý thuyết tự động

Tất cả những điều trên là những điều hữu ích cho công nghệ phần mềm. Trong thực tế, sẽ có không thể thiếu khi có ít nhất một nhà khoa học máy tính trong một nhóm kỹ sư phần mềm.

Tuy nhiên, cách dạy khoa học máy tính và các quy tắc kiểm định của ABET làm trầm trọng thêm vấn đề (nếu nó có thể được gọi là một vấn đề). Các nhà khoa học máy tính không có nhiều kiến ​​thức về các lĩnh vực kỹ thuật phần mềm quan trọng.

  1. Dấu chân RAM của một phần mềm và tác động của nó đến hiệu suất của phần mềm.
  2. Bảo trì kỹ thuật phần mềm. Họ không đánh giá cao thực tế rằng 80% công việc phần mềm là trong việc duy trì phần mềm, là thành phần lớn nhất của chi phí phần mềm.
  3. Làm thế nào để làm việc gần với phần cứng. Điều này là bắt buộc khi bạn xem toàn bộ hệ thống là sự kết hợp giữa phần cứng và phần mềm và bạn tối ưu hóa hệ thống để xem cách tối ưu hóa cả hai để có chức năng tốt nhất.
  4. Phát minh ra các quy trình kiểm thử, triển khai và bảo trì phần mềm mới, nhanh và đáng tin cậy.
  5. Tài liệu phần mềm, đào tạo khách hàng và tài liệu liên quan.
  6. Kỹ thuật bảo mật hệ thống.

Tôi có thể tiếp tục nhưng tôi nghĩ rằng tôi đã đưa ra quan điểm của mình.

Công nghệ phần mềm ngày nay là một ngành học riêng của nó mượn từ khoa học máy tính, nhưng đang thúc đẩy công nghệ và cuộc sống của con người ngày nay. Bạn thực sự cần một bộ não của Kỹ sư để vượt trội trong nó. Tất cả các nhà khoa học máy tính không thể trở thành những kỹ sư phần mềm tuyệt vời. Tất nhiên điều ngược lại cũng không đúng.


"ABET" là gì?
gnat

Tôi không đồng ý. Có được kiến ​​thức về phát triển phần mềm không phải là một điều gì đó cao cả, xa cách như bạn nghĩ. Tôi có bằng Thạc sĩ Khoa học Máy tính và tôi không thiếu kiến ​​thức về các lĩnh vực kỹ thuật phần mềm quan trọng. Hầu hết các kỹ sư phần mềm ngày nay đều xuống cấp và tiếp thu kiến ​​thức mới thật dễ dàng ... chúng tôi đã chứng minh rằng chúng tôi có thể học hỏi!
Nấm

2

Tôi thực sự lập luận rằng để xây dựng một trang web giỏ hàng tốt , bạn hoàn toàn cần sử dụng các thuật toán khó.

Giả sử bạn muốn dự đoán hành vi của người dùng dựa trên giao dịch mua trước đây. Điều đó sẽ mất nhiều hơn là a+b=clàm hiệu quả. Làm thế nào để thói quen mua hàng dựa trên một số yếu tố khác nhau, chẳng hạn như tuổi tác, giới tính, vị trí địa lý, v.v?

Trong công việc của riêng tôi, hàng ngày sử dụng các thuật toán phức tạp trong kết xuất, AI, v.v.

Nói tóm lại, nếu bạn nghĩ về một tính năng cụ thể (tức là chỉ là một giỏ hàng), thì rất có thể bạn đang nghĩ về việc triển khai kém. Bắt đầu suy nghĩ về việc triển khai google hoặc amazon và tôi chắc chắn bạn sẽ bắt đầu thấy nơi nào hữu ích (hoặc bắt buộc) để biết hoặc ít nhất là quen thuộc với các thuật toán phức tạp.


Phải, thuật toán tìm kiếm và sắp xếp thực tế là một phần của điện toán. Nhưng tôi sẽ không gọi các thuật toán sắp xếp cơ bản là các vấn đề thú vị trong nghiên cứu khoa học máy tính. Tôi thấy AI bao gồm thị giác máy tính, thuật toán di truyền có nhiều ứng dụng thực tế hơn nhưng có những khía cạnh khác của nghiên cứu khoa học máy tính dường như khác xa với công nghệ phần mềm.
berlinbrown2

@berlin: Tôi tưởng tượng rằng nếu bạn có một công việc tại NASA hoặc NSA với tư cách là một kỹ sư phần mềm, bạn sẽ phải đối mặt với tất cả các loại thuật toán nghiên cứu khoa học viễn tưởng. "Kỹ thuật phần mềm" là một thuật ngữ khá mơ hồ và có thể có nghĩa là nhiều thứ khác nhau tùy thuộc vào bối cảnh của lĩnh vực sử dụng lao động.
Demian Brecht

2

Các kỹ sư phần mềm giải quyết vấn đề có sự trùng lặp rất lớn với nghiên cứu khoa học máy tính, và cả nghiên cứu toán học & thống kê.

Thiết kế một trang web không phải là kỹ thuật phần mềm, ngay cả khi bạn tích hợp một số mã giỏ hàng. Đó là thiết kế.

Ngay cả 'mã hóa' cũng không nhất thiết phải là kỹ thuật phần mềm - tôi biết rất nhiều lập trình viên, những người sẽ không coi mình là bất cứ điều gì tiếp cận các kỹ sư. Mã có thể đơn giản như thao tác chuỗi hoặc viết công thức Excel.

Rõ ràng không phải tất cả các công nghệ phần mềm sẽ trùng lặp với nghiên cứu khoa học (có rất nhiều trách nhiệm khác trong công việc), nhưng tôi đã đọc rất nhiều bài báo được xuất bản để xác định thuật toán tối ưu hoặc cách tiếp cận vấn đề. Những vấn đề này có thể chỉ phát sinh mỗi năm một lần (thời gian còn lại tôi đang viết xác nhận giao diện người dùng hoặc bất cứ điều gì) nhưng đó là bản chất của môi trường làm việc của tôi.


1

Bạn có tin rằng có một khoảng cách giữa nghiên cứu khoa học máy tính và các vấn đề kỹ thuật phần mềm?

Không.

Ví dụ, các kỹ sư phần mềm có bao giờ phải lo lắng về "bao thanh toán và đẳng cấu đồ thị" hoặc một số vấn đề khoa học máy tính phức tạp nếu họ phải .... nói xây dựng một trang web giỏ hàng? Chắc là không.

Sai. Họ sử dụng các công cụ phụ thuộc vào việc này được thực hiện chính xác.

Thật vậy, tất cả các mối quan hệ bạn bè của bạn trong Facebook là một vấn đề lý thuyết đồ thị rất lớn. Rất phức tạp. Rất lớn. Rất lý thuyết.

Và nếu có sự mất kết nối giữa khoa học máy tính và các kỹ sư xây dựng ứng dụng?

Đúng. Một số người xây dựng các ứng dụng rõ ràng không đủ tiêu chuẩn. Tôi đã nhìn thấy rất nhiều thứ thực sự kém chất lượng được xây dựng bởi các "chuyên gia" được trả tiền đáng lẽ phải làm một cái gì đó khác, hữu ích hơn với thời gian của họ.

Đó có phải là cách mà kỹ thuật và khoa học nên tồn tại?

"Nên" là vô nghĩa. Đó là cách nó không tồn tại.

Các kỹ sư sẽ lặn qua nhiều năm và nhiều năm nghiên cứu để giải quyết một vấn đề cụ thể mà họ có?

Đúng. Thường xuyên. Đó là lý do tại sao tôi đăng ký vào Thư viện số ACM. http://portal.acm.org/ Đó là điều cần thiết để giải quyết các vấn đề không tầm thường.

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.