Đại học dạy C ++ kiểu DOS, cách đối phó với nó [đóng]


19

Tôi đã lập trình trong nhiều năm nhưng muốn có bằng tốt nghiệp để khiến mình có việc làm hơn. Đã từng học đại học một lần, tôi không chọn chuyên ngành khoa học máy tính 5 năm mà là chương trình kỹ thuật phần mềm ngắn hơn, định hướng thực tế hơn .

Tôi hy vọng rằng nó có thể tập trung nhiều vào các kỹ năng cụ thể hơn là lý thuyết, nhưng vẫn có ý tưởng rằng các trường đại học và giáo sư thích mọi thứ phải chính xác, trang trọng, mang tính học thuật. Vẫn là khoa học, phải không? Sai - Tôi đã ngạc nhiên bởi nhiều khóa học CNTT cẩu thả.

Trong một khóa học giới thiệu về C ++, chúng tôi đã thử nghiệm những từ sáo rỗng như "tại sao toàn cầu lại xấu" và "tại sao hằng số lại tốt", chỉ sau khi viết 1-2 chương trình. Giai thoại ngẫu nhiên mà không có bối cảnh thích hợp. Bản tin có trong đó system(pause/cls), getchvà các tiêu đề như conio.hiodos.h. Một trong những nhiệm vụ là in "ký tự ASCII" từ 32 đến 255 , với ảnh chụp màn hình hiển thị bảng như vậy được in bằng trang mã Windows-1252, nhưng không đề cập đến mã hóa.

Câu hỏi : khi một trường đại học / giáo sư dường như đang sử dụng các công cụ và phương pháp kém chất lượng và / hoặc lỗi thời, và nội dung được dạy là không chính xác, làm thế nào để bạn đối phó với nó một cách xây dựng và tôn trọng, nếu có?

Một số câu trả lời chỉ ra rằng bạn nên nhìn xa hơn về lập trình vì nó chỉ là một công cụ để tìm hiểu về các chủ đề như cấu trúc dữ liệu và thuật toán. Tôi đồng ý với ý tưởng này, nhưng trong trường hợp này thực sự không có bất kỳ kế hoạch nào như vậy đằng sau phong cách nghèo nàn. Hầu hết các khóa học chỉ đơn giản là dạy một "công cụ" khác mà không có nhiều lý thuyết cơ bản hoặc bất kỳ "bức tranh lớn" nào. Nó thường có cảm giác như họ nhanh chóng được đặt lại với nhau chỉ vì mục đích cung cấp một khóa học như vậy.


Tôi mắc kẹt với nó và cuối cùng tốt nghiệp. Chất lượng vẫn khá thấp trong suốt (với một vài ngoại lệ lớn) và một số sinh viên khác đã phàn nàn về điều đó. Như mong đợi, tôi đã học được nhiều hơn từ các dự án cá nhân và công việc bán thời gian so với từ trường học, tuy nhiên quá trình hoàn thành trường học và nhãn hiệu "sinh viên phần mềm" có vẻ hữu ích một cách bí ẩn!


2
Dựa trên kinh nghiệm của riêng tôi, bạn sẽ tự học tốt hơn, nhanh hơn và rẻ hơn khi lập trình và nhận sự giúp đỡ từ các diễn đàn. Không có gì lạ khi giáo trình đại học bị lỗi thời. Ở Nga, Pascal vẫn được dạy ở một số trường đại học (mặc dù tôi thích ngôn ngữ này và không thấy đó là điều hoàn toàn xấu).
WKS

@WKS: Tôi nghĩ Pascal là một ngôn ngữ giảng dạy rất tốt để tìm hiểu về các nguyên tắc (lập trình thủ tục) mà không hề lỗi thời. Các khóa học đại học không nên lãng phí thời gian để dạy một ngôn ngữ lập trình cụ thể, mà là dạy các mô hình (thủ tục, hướng đối tượng, chức năng, logic, v.v.).
Giorgio

Vâng, tất nhiên @Giorgio, ngôn ngữ lập trình được chọn làm công cụ giảng dạy không thành vấn đề, tuy nhiên, người ta phải mong đợi rằng các thực tiễn lập trình được trình bày là hợp lý và cập nhật.
glampert

Hầu hết các trường đại học dạy sinh viên đại học với mục tiêu cho phép họ thành công trong việc lấy bằng thạc sĩ. Hầu hết các chương trình cấp bằng thạc sĩ đều dạy sinh viên thạc sĩ với mục tiêu cho phép họ thành công trong việc lấy bằng tiến sĩ. Hầu hết các chương trình tiến sĩ nhằm giúp bạn trở thành một nhà nghiên cứu thành công.
Rob P.

@glampert: Lập trình thủ tục không thay đổi sau khi Pascal được giới thiệu. Thậm chí tốt hơn, Pascal được thiết kế như một ngôn ngữ giảng dạy, vì vậy nó không có nhiều hack có thể hữu ích trong thực tế nhưng là một sự phân tâm lớn khi học những thứ mới. Vì vậy, Pascal được cập nhật khi có liên quan đến việc dạy lập trình mệnh lệnh. Tất nhiên, người ta có thể muốn dạy các mô hình khác như hướng đối tượng, chức năng, logic: sau đó bạn phải tìm các ngôn ngữ khác, ví dụ Python, Java, Haskell, Scheme, Prolog, ...
Giorgio

Câu trả lời:


34

Toán học và lập trình là những thứ hoàn toàn khác nhau. Toán là khoa học, lập trình là kỹ thuật. Trong thế giới học thuật, lập trình là thứ bạn phải biết để có thể đối phó với những thứ thực sự, thứ thực sự thú vị và quan trọng - thuật toán.

Ai quan tâm nếu trình biên dịch là cổ xưa và bạn sử dụng systemcác cuộc gọi? Ai quan tâm nếu bạn có Linux và không phải Windows? Vâng, các giáo sư không, đó là chắc chắn. Và họ không nên, thực sự. Đừng mong trở thành một lập trình viên chuyên nghiệp từ các khóa học trong tổ chức học thuật. Đó không phải là những gì bạn đến đó cho.

Điều đó đúng là trình biên dịch mà anh ta mong đợi bạn sử dụng là cổ xưa và giả định về HĐH là lỗi thời, và nó có vấn đề. Bạn có thể nâng nó lên, và có thể nó sẽ bị xử lý. Nhưng không phải vì khóa học không tương thích với ngành, mà vì nó gây khó khăn ngay lập tức cho sinh viên. Đi tìm trình biên dịch cũ ngay bây giờ và chạy nó trên MacBook của bạn ...

Nói chung, các nghiên cứu học thuật không nên lãng phí khi học C ++ và Android, bạn nên học các công cụ Khoa học Máy tính thực tế ở đó. Bạn sẽ không có cơ hội khác cho điều đó. Android? Tải xuống Eclipse với ADT và bắt đầu làm việc với nó ở nhà, giống như tôi. Đừng cần đến trường.

Tôi nghĩ rằng không ổn khi mong đợi sự phát triển kỹ thuật từ các trường đại học. Đặc biệt không phải là các trường đại học nghiên cứu. Bạn có thể nói rằng một nơi chỉ cung cấp cử nhân nên được nhắm mục tiêu nhiều ngành hơn, nhưng các trường đại học nghiên cứu - muốn các nhà nghiên cứu. Các giáo sư đang tìm kiếm sinh viên tốt nghiệp tương lai và các ứng cử viên tiến sĩ, không phải là lập trình viên xuất sắc. Vì vậy, tôi nghĩ rằng bạn nên đặt mức độ mong đợi của bạn cho phù hợp.


3
Tôi có một vấn đề với câu trả lời của bạn: "Nói chung, các nghiên cứu học thuật không nên lãng phí khi học C ++ và Android, bạn nên học các công cụ Khoa học Máy tính thực tế ở đó." - Không biết ít nhất một ngôn ngữ lập trình cơ bản, công cụ CS không có ý nghĩa và quá dễ để áp dụng sai cách.
Izkata

4
@Martin và izkata - lập trình theo DOS trong C ++ bằng trình biên dịch từ thế kỷ trước không có nghĩa là bạn không biết lập trình. Điều đó chỉ có nghĩa là bạn đang sử dụng các công cụ lỗi thời - nhưng nếu bạn cần triển khai cây RB - ai quan tâm? Nó đã lỗi thời đối với ngành công nghiệp, nhưng các chương trình chạy và làm những gì họ phải làm - điều đó đủ tốt.
littleadv

3
@littleadv - OP đã viết "có vẻ cổ xưa theo những gì tôi đã đọc." Điều này gợi ý cho tôi rằng anh ta phải tìm ở nơi khác ngoài các tài liệu liên quan để biết rằng điều này đã lỗi thời và không thể mang theo được. Chắc chắn, nhiều người nếu không phải tất cả các trình biên dịch đều có thêm các thư viện không chuẩn, nhưng nếu bạn được dạy những điều đó mà không được nói là không chuẩn thì tôi nghĩ điều đó thật tệ - và điều đó được tính cho những thứ mới cũng như cũ và thậm chí cho C ++ 11 thứ kể từ thời điểm hiện tại C ++ 03 là tiêu chuẩn được hỗ trợ rộng rãi và gần đây nhất.
Steve314

3
@littleadv - Chà, có lẽ chúng ta sẽ phải đồng ý không đồng ý. Mặc dù tôi đã nghĩ rằng một nhà khoa học máy tính cần phải là một nhà giáo dục về các chi tiết, và vài giây để chỉ ra rằng một cái gì đó không chuẩn là phù hợp với điều đó và không phải là một khó khăn lớn. Bạn sẽ cảm thấy thế nào nếu một giáo sư CS sử dụng các ký hiệu đặc biệt của riêng mình trộn lẫn với toán học và không chỉ ra điều đó? Sau tất cả, một khía cạnh khác của cùng một vấn đề - liệu các nhà khoa học máy tính khác có thể hiểu bạn hay không. Mã được đọc bởi mọi người cũng như bởi trình biên dịch.
Steve314

4
@littleadv - Tôi chưa bao giờ tuyên bố OP đã nói với conio.h là tiêu chuẩn - Tôi đề nghị anh ta có thể đã không nói rằng đó là phi tiêu chuẩn, và thậm chí sau đó nói "Nếu họ nói rõ đó là những thủ thuật không di động, thì có lẽ đó là ĐƯỢC.". Cách tôi được dạy ngay cả khoa học cơ bản là bạn sử dụng thuật ngữ tiêu chuẩn hoặc nếu bạn phải sử dụng thuật ngữ không chuẩn, bạn xác định nghĩa của chúng là gì. Trong các bài học khoa học ở trường tôi, thậm chí sử dụng centimet là trái với quy tắc - chúng không phải là đơn vị SI. Đối với tôi, việc sử dụng các thư viện không chuẩn không có gì khác biệt. Ý nghĩa của mã trong khoa học máy tính nên rõ ràng.
Steve314

19

Khoa học máy tính là để lập trình những gì vật lý là để mộc.

Nếu bạn muốn trở thành một thợ mộc, nghiên cứu vật lý sẽ không làm cho nó xảy ra. Nó sẽ dạy cho bạn rất nhiều điều thú vị, mà bạn có thể áp dụng vào công việc của mình, nhưng nó sẽ không dạy bạn làm thế nào để trở thành một thợ mộc giỏi. Muốn vậy, bạn sẽ phải học nghề mộc.

Tương tự, nếu bạn muốn trở thành một lập trình viên giỏi, bạn sẽ phải học nghề lập trình . Thật không may, không có tổ chức để cấp chứng nhận của bất kỳ loại. Về cơ bản, đây là điều bạn sẽ phải tự làm, với bất kỳ điều gì có thể giúp đỡ những người bạn có thể tìm thấy. Đối với bạn điều này có nghĩa là sự lặp lại và phản ánh. Viết rất nhiều mã và sau đó quay lại để xem nó. Cũng dành thời gian để đọc mã của người khác. Xem xét tham gia vào các dự án nguồn mở.

Các trường đại học không quan tâm nhiều đến lập trình và thậm chí ít hơn cho các chi tiết sẽ thay đổi trong vài năm tới. Những gì bạn thấy ở trường của bạn là họ đã chọn một môi trường lập trình (một môi trường xấu, nhưng điều đó không quá quan trọng) và bây giờ cho bạn thấy, để họ sẽ có một khung tham chiếu trong đó họ có thể dạy cho bạn các kỹ thuật lập trình khác nhau. Người ta có thể lập luận rằng khung tham chiếu kém và thậm chí ngôn ngữ là một lựa chọn kỳ lạ. Từ quan điểm của họ có lẽ không thành vấn đề, bởi vì nó được lựa chọn khá tùy tiện.


2
Vật lý là như thế nào đối với Kỹ thuật? Các lập trình viên nên hiểu các nguyên tắc CS để áp dụng chúng khi thiết kế các chương trình theo cách mà một kỹ sư cần hiểu về vật lý để thiết kế các tòa nhà, máy bay và các quy trình hóa học.
Jay Elston

3
@JayElston: Vật lý là kỹ thuật, khoa học máy tính là gì đối với công nghệ phần mềm, bao gồm phân tích, thiết kế, lập kế hoạch, thực hiện, QA, v.v. Bản thân lập trình thực sự là nghệ thuật để có được vật liệu làm những gì bạn muốn, trong khi kỹ thuật bắt đầu từ việc tìm ra những gì bạn thực sự muốn làm.
back2dos

Tôi vẫn thích một trong những trích dẫn của giáo sư của tôi "Kỹ thuật là nghệ thuật ứng dụng khoa học để giải quyết vấn đề".
Chris O

1
@Chris: Có lẽ, sau đó, khoa học là nghệ thuật tạo ra những vấn đề mới.
JasonTrue

@JasonTrue: Chà, người ta có thể lập luận rằng khoa học là nghệ thuật tạo ra những vấn đề tốt hơn ;)
back2dos

9

Không có gì sai khi học 'Phong cách DOS'. Tôi chắc chắn rằng nhiều bộ định thời cũ ở đây đã bắt đầu trên DOS, hoặc thậm chí với các sytem hoạt động trước đó, viết các chương trình dựa trên dòng và đã điều chỉnh tốt. Thế giới điện toán thay đổi nhanh đến mức tôi sẽ không bị treo lên những chi tiết cụ thể như thư viện nào được sử dụng để làm gì.

Trên thực tế, tôi nghi ngờ lý do chúng ta có một thế giới đầy những lập trình viên có thể cho bạn biết tiêm phụ thuộc là gì, nhưng đấu tranh để trả lời FizzBuzz , là bởi vì rất nhiều lập trình viên không dành nhiều thời gian ở mức rất cơ bản đó.

Có vẻ như đây là một giới thiệu về lập trình, vì vậy về cơ bản, đừng lo lắng về nó. Tìm hiểu những điều cơ bản, và bạn sẽ làm tốt. Nếu bạn quan tâm đến các nền tảng khác, hãy tự mình khám phá chúng. Đó là điều tuyệt vời về lập trình.


5

Làm thế nào bạn có thể đối phó với nó? Tải về sách điện tử lập trình hoặc phát trực tuyến video, hãy tự mình thử các ví dụ. Đừng phụ thuộc vào giáo sư của bạn. Lập trình là tự học cao.


1
Lập trình giống như chơi piano. Bạn cần một bậc thầy để dạy bạn cách làm mọi thứ, và rất nhiều thực hành để làm chúng tốt. Tôi tin rằng có rất ít nghệ sĩ piano tự động nổi tiếng thế giới.

7
Thật là một sự tương đồng kỳ lạ, chắc chắn có nhiều lập trình viên tự động có tay nghề cao.
ocodo

@Slomojo Đúng, và tôi đã gặp một vài người trong số họ. Chúng là một giống lạ, xuất sắc ở những gì chúng biết. Khó khăn nằm ở bề rộng của các vấn đề họ gặp phải. Đôi khi, một vấn đề có con đường giải quyết ngắn hơn nhiều khi bạn biết một số góc của Khoa học Máy tính, tuy nhiên, những người tài năng đó có xu hướng tiếp tục rèn giũa nó theo cách duy nhất mà họ biết, cuối cùng trông giống như lực lượng vũ phu. Một ví dụ, một vấn đề "khó giải quyết" đối với việc tự học đã được DFA giải quyết trong hai ngày, với thử nghiệm (trong TCL / TK để khởi động!). Hai tuần sau, họ vẫn không hiểu điều đó, với lời giải thích.
Edwin Buck

4

Rất nhiều trường đại học có giáo sư lập trình crappy. Tôi đã đi đến một trong những trường tốt nghiệp hàng đầu ở nước tôi và học được nhiều về squat. Tôi đoán hầu hết các unis đều như vậy khiến các lập trình viên thực sự giỏi lựa chọn công việc được trả lương cao hơn (không phải giảng dạy). Bạn nên nhận một dự án nhỏ và cố gắng tự viết mã. Bạn có thể nhận được lời khuyên từ rất nhiều diễn đàn như cái này. Đó có thể là một cách tốt hơn để học về lâu dài.


Lời khuyên tốt, tất nhiên, tôi hoàn toàn đồng ý. Đó chỉ là bằng tốt nghiệp ... :)
Toerndev

@gaidal: Yup! đó là những gì tôi đã rời khỏi trường học - tên thương hiệu: P (mặc dù tôi đã hy vọng nhiều hơn nữa khi tôi tham gia)
Jan S

2
Đại học không phải là để học lập trình, mà là học các khái niệm về ngôn ngữ lập trình và nói chung hơn là về khoa học máy tính. Khi tôi phải thực hiện dự án của mình cho các hệ điều hành tại trường đại học, tôi được cho biết: nó sẽ ở C, cuốn sách nằm trong thư viện, đi lấy sách và học nó. Lập trình là về thực hành và nó không phải là nhiệm vụ của trường đại học để dạy bạn điều đó.
Giorgio

1
Về những công việc được trả lương cao hơn đó là sự thật. Một người bạn của tôi, người đang giảng dạy tại trường đại học đã từng phàn nàn: "Chúng tôi dạy họ cách lập trình và sau đó họ kiếm được nhiều tiền hơn chúng tôi, nó phải là cách khác!"
Giorgio

3

Tôi nghĩ rằng Đại học nên dạy các khái niệm trừu tượng về ngôn ngữ lập trình, thuật toán, v.v. và không nên là nơi bạn học lập trình: lập trình là một hoạt động rất thực tế và bạn chỉ có thể học nó bằng cách thực hiện.

Trong quá trình học, tôi đã học những điều cơ bản về lập trình trong Pascal, sau đó tôi có một dự án ở C (chúng tôi phải tự học ngôn ngữ) và sau đó tôi có một khóa học về các khái niệm ngôn ngữ lập trình (hướng thủ tục, hướng đối tượng, chức năng, logic) . Theo truyền thuyết dân gian, trên MSDOS, bạn có conio.h hoặc các con trỏ xa, mà bạn không có trên hệ thống UNIX. Đây là thứ mà các sinh viên của chúng tôi sẽ thảo luận về bia, nó không phải là thứ bạn thảo luận trong các lớp học vì nó không quá quan trọng. Giảng dạy đại học tập trung vào sự trừu tượng, kiến ​​thức chung và tránh đi sâu vào chi tiết: các ví dụ và chi tiết được trình bày chỉ để minh họa cho những thứ chung chung.

Ví dụ bạn đã đưa ra về ASCII so với Unicode và thư viện conio.h của MSDOS có nghĩa là mọi môi trường lập trình đều có cách thức và cách tổ chức cụ thể. Nếu bạn lập trình trong C ++ trên Visual Studio, bạn sẽ phải sử dụng các thư viện khác, một số trong số đó không được tìm thấy, ví dụ, trên Linux. Vì vậy, nếu khóa học có trong Windows 7 / Visual Studio, một số người có thể phàn nàn rằng sẽ tốt hơn nếu làm điều đó trên Linux / GCC. Nhưng, IMO, đây không phải là vấn đề.

Vì vậy, tôi nghĩ bạn nên cố gắng không bị phân tâm bởi các chi tiết và tập trung vào các khái niệm chung đang được đề cập trong khóa học. Ví dụ, trong hầu hết các ngôn ngữ lập trình, bạn sẽ cần một số thư viện để triển khai I / O của bàn điều khiển và với môi trường lập trình, bạn sẽ phải giải quyết vấn đề của mình bằng các công cụ bạn có trong tay. Có thể điều này nghe có vẻ khá rõ ràng đối với bạn và bạn có cảm giác bạn không thực sự học được điều gì đó vì bạn đã có một số kiến ​​thức trước đây (điều này có thể xảy ra) nhưng tôi không có ấn tượng rằng bạn đang tham gia một khóa học tồi.


Cảm ơn bạn, tôi sẽ ghi nhớ rằng bạn không nghĩ rằng đó là một khóa học tồi. Bên cạnh đó, tôi không có nghĩa là nó phải ở trong Linux, chỉ là anh ta có thể nỗ lực để thông báo cho sinh viên về sự khác biệt và có một tiêu chuẩn.
Toerndev

Tôi đồng ý với bạn rằng sẽ là một ý tưởng tốt để thông báo về các hệ thống khác. Điều đó cũng phụ thuộc vào kinh nghiệm của giáo viên: họ có thể cảm thấy không thoải mái khi nói về một môi trường mà họ không quen thuộc. Ví dụ, tôi ở nhà với Windows và Linux, nhưng tôi sẽ tránh MacOS bởi vì, thậm chí nó có thể là một hệ điều hành rất tuyệt, tôi chưa bao giờ sử dụng nó. Có lẽ bạn có thể thử và hỏi xem họ có thể đưa ra một so sánh ngắn giữa các môi trường C ++ khác nhau không: chỉ một vài ví dụ để có cảm giác về những gì có thể khác nhau và những gì vẫn giữ nguyên. Ví dụ: bạn có thể chơi với sizeof trên MSDOS và Linux.
Giorgio

2

Các trường đại học đang đưa ra nền tảng. Khi đã mạnh, bạn có thể xây dựng các tòa nhà chọc trời trên nó. Tôi đã học BASIC, C và C ++ trong những ngày học đại học. Sau này khi tôi thực hiện dự án trong Visual C ++, tôi tin rằng đó là một thế giới hoàn toàn khác. Sau đó tôi nhận ra sự khác biệt giữa Khung và Ngôn ngữ.

Chọn một trường đại học phù hợp nơi họ cung cấp sự phát triển tập trung của lĩnh vực điện toán mong muốn của bạn. Mà có thể giúp bạn sau này trong sự nghiệp của bạn.


2

Bản in đầy đủ system("");thực sự là một điều tốt đẹp chết tiệt! Tôi bị sốc khi mọi người không biết gì về các chức năng này ngày nay.

system("pause")và bạn thoát khỏi tất cả các hàm của hàm getX. system("cls")và bạn vừa lưu một trang mã. system("mkdir foo")và bạn vừa lưu 2 trang phân bổ bộ đệm, phân chia đường dẫn, _makepath_ss, giới hạn 256 đường dẫn, tấn lỗi thoát, v.v.

Hơn nữa, mã rất đơn giản, một con khỉ sẽ hiểu nó.

 if(!system("mkdir foo"))
     //booo and exit`

Trường phái của những biến thái đa hình là những gì nên bị cấm theo luật.

Tái bút: Hơn nữa, với tất cả sự tôn trọng, tôi gặp khó khăn khi chấp nhận rằng mọi người được dạy C ++ với các ngoại lệ và mọi thứ ảo như là một điều TỐT, bởi vì nó có nhiều gotchas và mìn hơn bạn có thể tưởng tượng, và thậm chí Bjarne Stroustrup truyền giáo ngoại lệ như một cái gì đó siêu dễ dàng và an toàn, trong khi thực tế chúng là một quả mìn hạt nhân.

Xem phân tích về Misra-C ++ và JSF-C ++. Và http://bloss.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Tôi quá lười để tìm tất cả các bài viết còn lại ngày hôm nay.

Với tất cả những gì đã nói, tôi là nhà phát triển c ++ và tôi rất thích nhiều tính năng và ngôn ngữ nói chung.


1
Không chắc chắn tôi đồng ý rằng việc khuyến khích ngầm các nhà phát triển thiếu kinh nghiệm nhảy thẳng vào hệ thống mà không có ý tưởng thực sự nào về vấn đề này là một ý tưởng hay ...
deworde

@deworde: Đó là điều tương tự bạn viết trong bảng điều khiển, tôi không nghĩ bạn có thể khiến công cụ ít bị lỗi và an toàn hơn.
Coder

Có, nhưng khi bạn viết nó trong bảng điều khiển, bạn sẽ biết (ví dụ) bạn đang ở đâu, bạn đang chạy như thế nào, loại máy nào bạn đang chạy và quan trọng nhất là TẠI SAO BẠN ĐANG LÀM. Chương trình không nhất thiết phải biết về bất kỳ điều nào trong số này và ai đó đang chạy chương trình thực thi sẽ không biết rằng họ phải kiểm tra chúng trước khi chạy.
deworde

@deworde: Không chính xác, lệnh EraseFile vẫn sẽ kế thừa các quyền xử lý, do đó, dễ gây rối với một trong hai lệnh.
Coder

1

Đề nghị của tôi có thể phát ra ngoài đó, nhưng hãy nghe tôi nói ... Chuyển chuyên ngành.

Theo kinh nghiệm của tôi trong giới hàn lâm, chuyên ngành Khoa học Máy tính là một cái nhìn rất thấp về những gì làm cho máy tính đánh dấu. Bạn đã bắt đầu với một đoạn mồi cơ bản trong C ++ để đảm bảo bạn biết chương trình là gì, và những điều cơ bản về bộ nhớ và tính toán đằng sau chương trình, sau đó bạn học lắp ráp, khái niệm hệ điều hành, kỹ thuật điện, thiết kế kỹ thuật số, v.v. mức độ này và tìm kiếm công việc với NVidia hoặc AMD, hoặc Lockheed; ở đâu đó nơi họ đang tạo ra phần cứng mới, cần một người có thể hiểu phần cứng đó ở mức đủ thấp để viết trình điều khiển và phần mềm điều khiển.

Nghe có vẻ như những gì bạn muốn là một khóa học mà tại trường đại học của tôi, được gọi là Quản lý hệ thống thông tin. Đó là khóa học tôi đã theo dõi; nó đã dạy lập trình bằng Java, VB.NET, C # và một số PHP và các kịch bản web khác trên đường đi. Nó cũng yêu cầu tính toán (nhưng không cùng mức độ với CS), kế toán, tài chính, số liệu thống kê, giao tiếp kinh doanh, OO A & D, thiết kế cơ sở dữ liệu và phân tích hệ thống. Tôi có BBA thay vì BS và tôi có các công cụ cơ bản để bắt đầu làm việc như một nhà phát triển phần mềm Windows hoặc Web.

Chuyên ngành "Khoa học máy tính" chuẩn bị cho bạn làm gì phụ thuộc nhiều vào trường đại học nào cung cấp nó. Có vẻ như bạn đang trên con đường ban đầu để có được cái nhìn rất lỗi thời, ở mức độ thấp đối với các máy tính không giống với những gì bạn học sau khi ra khỏi giáo dục. Tôi khuyên bạn nên tìm kiếm xung quanh trường đại học và tìm một khóa học tập trung hơn vào loại công việc máy tính mà bạn muốn tham gia sau giờ học.

Không có vấn đề gì, quá trình học tập của bạn sẽ bắt đầu bằng cách viết chương trình "cấp độ bàn điều khiển" rất cơ bản. Ngôn ngữ không thành vấn đề; những gì họ đang dạy bạn là lập trình thủ tục cơ bản; Làm thế nào để suy nghĩ trong các bước đủ nhỏ để máy tính có thể theo bạn từng bước (vì máy tính không có gì là hiển nhiên và không thể theo hầu hết các bước nhảy vọt của con người theo logic). Từ đó, bạn sẽ tiến tới lập trình hướng đối tượng (thay vì có một hàm dài làm mọi thứ, sẽ có nhiều "đối tượng" mã nhỏ hơn, đại diện cho trạng thái và logic của các đối tượng trong thế giới thực), sau đó lập trình hướng sự kiện ("Đừng gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn"; về cơ bản chương trình của bạn sẽ khởi động, yêu cầu HĐH thiết lập giao diện người dùng đồ họa ban đầu của bạn,


Cảm ơn bạn, vâng tôi sẽ xem xét điều đó. Nếu tôi cảm thấy nó đi sai hướng tôi có thể thay đổi sau này, các khóa học cơ bản sẽ tương thích giữa các vũ trụ.
Toerndev

Cẩn thận với giả định đó; Tôi đã thay đổi chuyên ngành từ CS sang MIS và không có môn toán nào tôi đã chuyển vì trường kinh doanh có một bài toán hoàn toàn riêng biệt. Tiếng Anh, khoa học, nhân văn, yeah mà chuyển.
KeithS

1

Các khóa học Khoa học Máy tính sẽ không dạy bạn lập trình. Đây là một cuộc dạo chơi trong công viên so với một số chương trình tôi đã thực hiện trong khóa học CS của mình.

Vấn đề cơ bản với điều này, theo kinh nghiệm của tôi, là có khá nhiều nơi sẽ dạy bạn lập trình ở mức tương đương, vì vậy bạn không có lựa chọn nào khác.


0

Tôi nghĩ rằng có thể có một số nhầm lẫn về những gì và tại sao bạn đang học.

Có vẻ như bạn đang học một chương trình khoa học máy tính giới thiệu. Điều này nhằm vào những người có kinh nghiệm tối thiểu, những người đang học những điều cơ bản về cách máy tính hoạt động ở mức độ thấp.

Nó cũng xuất hiện rằng bạn là một lập trình viên bán nghiêm túc hoặc chuyên nghiệp. Bạn đã lập trình được 10 năm, và thoải mái với 3 ngôn ngữ. Có vẻ như bạn biết những gì bạn đang làm ít nhất là đủ để làm việc như là một phần của một nhóm. Bạn có cảm thấy lạc lõng trong khóa học này không? Các sinh viên khác có mức độ kinh nghiệm hoặc kỹ năng tương tự như bạn không?

Bạn dự định ra khỏi khóa học này là gì?

Bạn chỉ sau 'mảnh giấy' đó? Nếu đây là trường hợp thì đừng ngừng cố gắng để có một công việc trong khi bạn học. Áp dụng cho công việc, nói với họ bạn là một lập trình viên có năng lực và bạn đang học vì bạn cần mảnh giấy để có việc làm. Nếu họ thuê bạn thì hãy cân nhắc bỏ học - một khi bạn có một công việc chuyên nghiệp thì bạn thực sự không cần mảnh giấy đó nữa. Chấp nhận mức lương thấp hơn mức lương bình thường, bởi vì tốt hơn là được trả tiền để học (trong công việc) hơn là trả tiền để học ở trường - và bạn cũng sẽ học nhanh hơn. Sau một hoặc hai năm, bạn sẽ chủ yếu tăng tốc, và sau đó bạn có thể yêu cầu tăng lương xứng đáng hoặc bạn có thể tự tìm cho mình một công việc khác vì bạn sẽ có kinh nghiệm.

Hay bạn đang cố gắng học một cái gì đó?Sau đó ngừng đánh giá giáo sư của bạn. Giống như một giáo viên trung học đáng nhớ đã từng nói 'SIT DOWN, VÀ SHUT UP.' Điều đó gần như đảm bảo rằng giáo sư có nhiều kinh nghiệm và kiến ​​thức hơn bạn và bạn có thể học được rất nhiều điều từ ông ấy. Nếu anh ấy đi quá chậm đối với bạn thì hãy cố gắng lấy tín dụng cho các khóa học giới thiệu này dựa trên kinh nghiệm và học tập trước đó của bạn.

Nhưng bạn có đúng khóa học không? Bạn cũng có thể học được rất nhiều từ giáo sư văn học, hoặc một giáo sư lịch sử ... không đặc biệt liên quan. Có lẽ bạn không muốn 'khoa học máy tính' mà thay vào đó muốn các kỹ năng 'thế giới thực' thực tế hơn. Hãy thử 'kỹ thuật phần mềm'. Nhìn vào các tổ chức khác cho một khóa học tập trung hơn.

Giống như khi bạn bắt đầu một công việc mới, một lớp học hoặc khóa học có thể rất khó để xem xét từ bên ngoài. Bạn dường như đang ở trong một khóa học không mang lại cho bạn những gì bạn mong đợi. Xem xét lại các lựa chọn của bạn.


Cảm ơn bạn, tôi đã nghĩ về điều này và nghĩ rằng bạn rất đúng về hai lựa chọn này. Điều này đúng với tôi hơn, và tôi sẽ tìm việc trong khi chờ xem liệu các khóa học có thú vị hơn không. Đó thực sự là một nền giáo dục công nghệ phần mềm, mà tôi đã chọn về khoa học máy tính kể từ khi tôi muốn nhận được lên đến tốc độ sớm và học thông qua làm việc. Có lẽ điều đó giải thích tại sao tôi mong đợi một chút 'kỹ năng trong thế giới thực'. :)
Toerndev

Chỉ là một vài nhận xét từ trường đại học trước đây của tôi: Tôi đã học một khóa học mà chúng tôi có "lập trình 101" trong lịch trình, phần đó thật khó chịu đối với tôi. Nhưng các khóa học khác rất thú vị (vật lý, cơ học, ...) vì vậy ngay cả khi một bài giảng nhàm chán có thể không áp dụng cho toàn bộ chương trình và đối với các phần khác, nó có thể đáng để trải qua nỗi đau. Nhưng tôi đã bỏ học. Trong khi đó tôi đã học được rằng đôi khi giấy đó sẽ có ích mặc dù giấy không có nghĩa là tôi sẽ tốt hơn trong công việc của mình (tôi có một công việc tốt, lương tốt, ... vì vậy nó không tệ ;-))
johannes

0

Tôi nghĩ rằng rất nhiều câu trả lời cho câu hỏi này là đáng thất vọng. Họ quay trở lại cuộc tranh luận cũ mệt mỏi về CS vs Lập trình, v.v. Điều đó có thể là như vậy, nhưng đối với tôi có vẻ như khóa học mà OP không dạy.

Tôi đã ở trong tình huống đã làm việc như một lập trình viên, và tự học khá nhiều, trước khi học CS bán thời gian ở trường đại học. Tôi đi mua sắm cẩn thận, nhưng nói chung thấy chương trình học là một sự lãng phí thời gian. Ngoài ra, họ sẽ không cho phép tôi bỏ qua các khóa học mặc dù đã có kinh nghiệm chuyên môn trong khu vực.

Theo kinh nghiệm của tôi, một tỷ lệ đáng kể các giáo sư khá lười biếng và sử dụng một chương trình giảng dạy lỗi thời. Thành thật mà nói có vẻ như bạn đang lãng phí thời gian của bạn. Tôi đặt câu hỏi ngay cả việc hoàn thành bằng tốt nghiệp sẽ giúp bạn tìm được việc làm.

Tôi nghi ngờ bạn có thể làm nhiều điều để thay đổi mọi thứ về khóa học của bạn. Bạn có thể tự bổ sung nó bằng nghiên cứu. Hoặc chỉ cần quên toàn bộ, và nghiên cứu CS một cách độc lập, và làm một số chứng chỉ ngành.

Tôi nên nói thêm rằng tôi không biết gì về giá trị của văn bằng trong thị trường việc làm của đất nước bạn. Nếu bản thân văn bằng có giá trị bất chấp nội dung, thì bạn có thể phải đưa ra một chương trình giảng dạy hơi thiếu.


Không thấy điều này trước đây. Tôi rất vui khi thấy ai đó nói chính xác những gì tôi cảm nhận về một số câu trả lời (đoạn đầu tiên của bạn)! Vâng, việc giảng dạy khá vô dụng, tôi không tham gia các lớp học nữa mà chỉ bật các chương trình tôi cần viết. Tôi làm theo cách của riêng tôi (thường khá tệ, đến từ CL đến C ++), gặp rất nhiều điều không có trong chương trình giảng dạy, và nhờ bạn bè lập trình viên thay vì giáo sư cho lời khuyên. Bằng cách này, nó thực sự là một niềm vui. Vẫn hy vọng tôi có thể tìm được một công việc trước khi tốt nghiệp.
Toerndev

0

Họ phải phục vụ cho các sinh viên. Hầu hết các sinh viên không thể lập trình. Vì vậy, họ không được thúc đẩy để đi kỹ thuật ở đó.

Họ cũng có những lĩnh vực nghiên cứu chuyên môn của riêng mình, nhưng họ không dạy điều đó. Và dù sao đi nữa, nhiều nhà nghiên cứu không phải là giáo viên giỏi, vì vậy bạn có thể coi mình là người may mắn nếu họ đang dạy những thứ bạn đã biết!

Nhưng dù sao, bạn dường như không biết khoa học máy tính là gì. Đó không phải là những gì thiết thực cho ngành công nghiệp.


-6

Tôi sẽ yêu cầu (và sau đó nhấn mạnh) để trả lại các bài tập của bạn trong c ++ tiêu chuẩn. Điều này là hoàn toàn hợp lý vì bạn không thể hoàn thành các bài tập khác.

Đối với phong cách xấu; chắc chắn sẽ có một số điều này để bắt đầu. Học cách sử dụng thư viện io tiêu chuẩn đúng cách đòi hỏi khá nhiều tính năng c ++ nâng cao, đặc biệt là các mẫu và trình vòng lặp. Tôi có thể thấy lý do tại sao một giảng viên sẽ giúp bạn sử dụng các hàm io rất đơn giản để bắt đầu. Tôi sẽ không ngại hỏi về điều này mặc dù, nó thể hiện sự nhiệt tình và một chút ánh sáng trong mắt bạn. Giảng viên của bạn sẽ có thể dệt câu hỏi của bạn thành một bài giảng trong tương lai nơi bạn (hy vọng) đặt đúng các bài tập đầu tiên của bạn.

Tôi sẽ để nó ở đó mặc dù. Mặc dù c ++ có thể là ngôn ngữ độc lập với nền tảng, nhưng nó thường không. Học một số chức năng của hệ thống Windows không phải là điều xấu, đặc biệt nếu sau đó bạn tự rèn luyện để thực hiện nó theo tiêu chuẩn. Đôi khi bạn sẽ bắt gặp conio.hkhi nhìn vào mã người khác - và thật tốt khi biết nó làm gì.


10
không, bạn được cung cấp các công cụ để thực hiện công việc và công việc của bạn là sử dụng các công cụ đó. Nếu bạn có một công việc mà tất cả những gì bạn có là một chiếc X / M 15 tuổi đang chạy CP / M, yêu cầu họ chấp nhận mã Windows 7 64 bit của bạn sẽ không hoạt động, tốt nhất hãy làm quen với điều đó càng sớm càng tốt.
jwenting

2
@Ramhound Một trường đại học nên có thể hoàn thành khóa học mà không phải mua thiết bị đắt tiền (như hệ điều hành Windows). Định kiến ​​của nó.
Tom

3
@Tom, Nếu tôi đang dạy Photoshop, tôi sẽ mong bạn mua Photoshop (rất đắt) và tôi mong bạn mua sách giáo khoa đắt tiền, tôi không thấy điều này khác ở đâu. Và tôi cá là có rất nhiều máy tính trong khuôn viên trường mà anh ta có thể sử dụng cho nhiệm vụ mà không cần mua Windows (thật lòng mà nói, bất cứ ai học CS đều có thể có cả hai, dù sao bạn cũng không biết mình sẽ ở đâu, mọi người lập trình trong Microsoft stack trong số các sản phẩm không có xu hướng sử dụng Linux.)
HLGEM

3
@Ramhound Ngay cả khi giáo sư không nói rõ ràng lý do tại sao anh ta sử dụng các thói quen IO dựa trên liều đơn giản hóa, chúng tôi có thể đoán đúng. Như Tom đã đề cập các thói quen io của C ++ tương đối phức tạp nên việc ẩn chi tiết không phải là không hợp lý trong một khóa học giới thiệu. Quyết định sử dụng thư viện cụ thể dựa trên nền tảng windows thay vì dựa trên * nix gần như chắc chắn đưa ra các giả định rằng hầu hết sinh viên đang sử dụng windows không * nix và nhiều người dùng windows sẽ vật lộn khi bắt đầu với * nix hơn là ngược lại.
Dan Neely

5
@gaidal - quy tắc là có lý do. Nếu bạn bắt đầu làm việc ở đâu đó và quyết định rằng thay vì thư viện độc quyền, bạn sẽ sử dụng tiêu chuẩn vì "tiêu chuẩn là có lý do" - bạn sẽ thấy mình thất nghiệp rất nhanh. Tham gia khóa học này như một bài tập tuân thủ tiêu chuẩn mã hóa. Bạn sẽ không thích những thứ đó luôn.
littleadv
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.