Những sinh viên khoa học máy tính nên được dạy ngôn ngữ nào?


13

Theo bạn, ngôn ngữ nào (hoặc các lớp học (như trong mô hình) của ngôn ngữ lập trình, cộng với ngôn ngữ được đề xuất của lớp đó) mỗi sinh viên khoa học máy tính sẽ được dạy ở trường đại học? Thúc đẩy câu trả lời của bạn; tại sao ngôn ngữ đó Người ta sẽ sử dụng cái gì từ nó? Những khái niệm nào nó dạy (tốt hơn ngôn ngữ X không)?

Lưu ý / làm rõ : Câu hỏi này là về khoa học máy tính tập trung nhiều vào công nghệ phần mềm, không phải khoa học máy tính thuần túy. Nó vẫn là giáo dục khoa học máy tính và không phải là giáo dục kỹ thuật phần mềm là trọng tâm.


13
Mã Psuedo phải đủ cho CS.
Jé Queue

12
@Xepoch - không đồng ý. Nó không đặc biệt tự nhiên để thể hiện sự háo hức so với ngữ nghĩa đánh giá lười biếng, hiệp phương sai / chống chỉ định trong chữ ký loại, lý thuyết thể loại, vv bằng cách sử dụng mã giả. Mã giả là tuyệt vời để mô tả các thuật toán và cấu trúc dữ liệu, nhưng có nhiều thứ hơn với CS hơn thế.
Aidan Cully

6
Hơn nữa, đại đa số sinh viên CS đang hy vọng có được một công việc phi học thuật sau khi tốt nghiệp. Mã giả sẽ không có giá trị nhiều trong thị trường việc làm cạnh tranh. Tôi không nghĩ rằng bằng cấp CS chủ yếu nên được đào tạo nghề, nhưng nó phải tạo ra một số chỗ ở theo hướng đó.
Adam Crossland

2
TẤT CẢ ĐỀU . Nếu thời gian có hạn, hãy bắt đầu vào các chữ cái trong bảng chữ cái. A +, B, C, C #, D, E, F #, J, K, Q, R, T ... Đó thực sự không phải là một danh sách tồi.
Jesse Millikan

6
Chúc mừng bạn đã khám phá ra một phiên bản khác của "Ngôn ngữ nào?" câu hỏi Tôi không thể chờ đợi để đọc tất cả các ý kiến. Đừng quên tham chiếu đến SICP. Oh chờ đã, nó đây rồi.
Corbin ngày

Câu trả lời:


21

Tôi sẽ đưa ra một danh sách:

  • Hội (một phương ngữ tương đối đơn giản): Điều quan trọng là phải hiểu ít nhất một chút về các nguyên tắc cơ bản
  • C: Ngôn ngữ thủ tục, được sử dụng ở nhiều nơi. Không gây gánh nặng cho sinh viên mới với các khái niệm hoàn toàn mới như tất cả cùng một lúc.
  • Java / C # / Eiffel / C ++: Một cái gì đó hướng đối tượng là tốt, bất kỳ một trong số này sẽ hoàn thành mục tiêu giảng dạy cho sinh viên và khi họ hiểu một trong những ngôn ngữ này, họ sẽ có thể học những ngôn ngữ khác .. Có rất nhiều ngôn ngữ tốt, tôi liệt kê Eiffel vì nó cũng có hợp đồng thiết kế.
  • LISP và Prolog: Dạy cho học sinh một cách suy nghĩ hoàn toàn mới, đó là quan trọng, ngay cả khi họ không bao giờ sử dụng một trong hai "trong thế giới thực" này.
  • SQL và XML: Giới thiệu các cách mới để suy nghĩ về dữ liệu và cách truy xuất và quản lý dữ liệu.

Học sinh nên được tiếp xúc với tất cả các mô hình ít nhất. Không chỉ một hoặc hai.

Tôi cho rằng nhiều người sẽ đề xuất Python bao trùm phong cách thủ tục, phong cách OOP và có thể những người khác, nhưng tôi không có đủ kinh nghiệm cá nhân với Python để có thể tự tin giới thiệu nó.


Tôi thực sự mong muốn trường học của tôi đã đi sâu vào chi tiết hơn về XML và SQL, chúng tôi có một lớp học đi vào cả hai và đó là terribad.

Tôi sẽ thêm các ngôn ngữ động hiện đại, như Lua, Python, Javascript, v.v.
Javier

4
à, cũng có một số chức năng khó tính, như haskell và erlang rất giáo dục
Javier

1
+1 để liệt kê SQL. Ít nhất bạn đang nghĩ về đại số quan hệ.
Jé Queue

1
Tôi cũng sẽ tách quản lý khỏi OO không được quản lý, C ++ Java. Mặc dù tôi chưa bao giờ sử dụng C ++ kể từ uni mà không tìm hiểu về malloc, heap và stack, bạn sẽ không bao giờ hiểu rõ về OO.
markmnl

45

Cá nhân tôi thấy hơi buồn khi các ngôn ngữ chức năng không được dạy chủ yếu như trước đây. Tôi nghĩ rằng ít nhất comp sci sinh viên nên được tiếp xúc với một ngôn ngữ từ tất cả các mô hình chính: thủ tục, hướng đối tượng, chức năng và năng động.


2
+1 Lớp ngôn ngữ lập trình của tôi dễ dàng là lớp có giá trị nhất mà tôi đã học.
HappyCodeMonkey

1
Là một sinh viên CNTT tôi chắc chắn đồng ý. Tôi có lợi ích khi làm việc toàn thời gian trong thế giới thực khi tôi đi học với tư cách là một nhà phát triển ứng dụng web cấp cơ sở, nhưng tôi cảm thấy ngay cả khi tôi có bằng CS đầy đủ, tôi sẽ thiếu rất nhiều sự khác biệt mô thức.
Ken

1
Một số thứ liên quan: youtube.com/watch?v=Ps8jOj7diA0 Stanford có bài giảng Lập trình hoàn chỉnh 2008 của họ trên YouTube.
Yêu cầu

4
Thêm khai báo vào danh sách (Prolog). Ngoài ra một số ngôn ngữ rõ ràng song song (Occam). Dạy học sinh cách hoạt động song song sẽ tốt (không ai hiểu đúng).
Martin York

1
@Martin York: Prolog là ngôn ngữ lập trình logic , là một loại ngôn ngữ khai báo. (Tôi đề cập đến điều này vì các ngôn ngữ lập trình chức năng cũng là khai báo, nói chung.)
mipadi

33

Tôi nghĩ rằng một sinh viên CS cân bằng tốt nên được dạy một ngôn ngữ trong mỗi 4 loại ngôn ngữ lập trình:

Chức năng - Lisp / Haskell / PostScript. Tôi không có nhiều kinh nghiệm với Haskell, nhưng tôi đã nghe các lập trình viên khác phát cuồng về nó. Hiểu các cấu trúc của lập trình chức năng và tại sao chúng hữu ích trong nhiều tình huống sẽ giúp lập trình viên trở nên tốt hơn trong việc tổ chức các thuật toán bằng các ngôn ngữ khác.

Hướng đối tượng - Hãy lựa chọn của bạn. C # / Java / Python / Ruby / yadda yadda yadda. Loại này cần được dạy đơn giản vì đó là những gì doanh nghiệp hiện đại muốn.

Bắt buộc - C / Fortran / Pascal. Những điều này ít phổ biến hơn những ngày này, nhưng chúng vẫn nên được học từ góc độ thực tế / lịch sử. Các phương pháp họ sử dụng vẫn có tính thực tiễn bởi vì trong mọi ngôn ngữ, tất cả đều nắm bắt được một hướng dẫn. Và ngôn ngữ bắt buộc là rất tốt trong việc liệt kê và làm theo hướng dẫn.

Hợp lý - ProLog. Tôi chưa bao giờ tìm thấy một cách sử dụng thực tế tốt cho bất kỳ ngôn ngữ nào trong số này, nhưng tôi đã tìm thấy một số khái niệm đằng sau các ngôn ngữ logic có ích khi cố gắng tìm ra cách viết một số phương thức của tôi bằng các ngôn ngữ hướng đối tượng hơn. Tôi đã không tập trung lâu vào các ngôn ngữ logic trong suốt những năm học đại học và tôi nghĩ rằng một sự tập trung mạnh mẽ hơn có thể đã giúp tôi làm tốt điều đó.


6
Bạn có thể muốn thêm nguyên mẫu vào danh sách đó - ví dụ: JavaScript.
stusmith

@stusmith - Nguyên mẫu rất đáng được đề cập, nhưng nó thực sự là một tập hợp con của các ngôn ngữ hướng đối tượng và javascript là một ví dụ hạn chế tốt nhất. Tôi sẽ xem xét nó có lẽ là một bài tập về nhà trong một khóa học ngôn ngữ lập trình, nhưng không phải là một trọng tâm.
Joel Etherton

1
+1 cho Prolog. Tôi đã thấy việc sử dụng thực tế của nó và tôi thường xuyên sử dụng các thuật toán nguyên mẫu.
Fred Foo

@larsmans - Tôi rất muốn nghe về cách sử dụng của bạn. Tôi đã không chạm vào nó trong vài năm vì vậy tôi mờ nhạt về các ứng dụng thực tế tốt của nó. Bạn có bất kỳ liên kết đến whitepapers hoặc các bài viết tương tự?
Joel Etherton

Hãy xem ECLiPSe ( eclipseclp.org ), một phương ngữ Prolog mã nguồn mở được sử dụng công nghiệp bởi một số công ty lớn ở châu Âu (áo của công ty đường sắt Pháp SNCF, nếu tôi nhớ lại một cách chính xác; tôi sẽ thử và tìm một tài liệu tham khảo).
Fred Foo

6

Ngôn ngữ số 1 mà mọi chuyên gia CS tốt nghiệp nên biết là ngôn ngữ tối đa hóa tiềm năng của họ để đạt được một công việc tuyệt vời. Điều đó sẽ thay đổi theo thời gian, nó sẽ thay đổi dựa trên định nghĩa về công việc tuyệt vời của từng cá nhân và nó sẽ thay đổi theo khu vực địa lý.

Hiện tại, tôi sẽ nói rằng tiếng Anh là ngôn ngữ số 1 mà mọi chuyên gia CS nên biết (tất nhiên, điều này thay đổi theo vùng.)


Một công việc tuyệt vời là tác dụng phụ của bằng cấp CS. Bằng cấp CS chỉ dành cho điều đó, kiến ​​thức về lý thuyết tính toán. Tôi có thể dễ dàng kiếm được một công việc tốt hơn trong việc học nghề thay vì lao đầu vào toán học & CS trong suốt những năm đó.
Jé Queue

2
+1 cho tiếng Anh. Ngôn ngữ máy tính là chi tiết thực hiện.
Wyatt Barnett

+1. Nếu ai đó có thể học tốt tiếng Anh, anh ta có thể học tốt hướng dẫn sử dụng. Tôi biết tiếng anh tốt Tôi không có vấn đề học bất kỳ ngôn ngữ.
Shiplu Mokaddim

4

Tôi nghĩ nó thay đổi theo thời gian, nhưng lý tưởng nhất - 3 ngôn ngữ từ 3 quan điểm rất khác nhau. Trong thời của tôi, nó là thủ tục, OO và chức năng - Pascal, C ++ và LISP. Tôi không quá bán cho ba người đó. Nhưng khi tôi phỏng vấn tôi tìm kiếm:

  • Một số cấp độ trải nghiệm với ngôn ngữ mà bạn phải chú ý đến quản lý bộ nhớ (C / C ++ và nhiều ngôn ngữ khác)
  • Một số mức độ trải nghiệm với ngôn ngữ hướng đối tượng với những kỳ vọng về việc sử dụng API và các khái niệm trừu tượng khác nhau có sẵn (C ++ / Java)
  • Một ngôn ngữ "kéo dài" - một thứ gì đó kỳ lạ, khó và đầy thách thức. Tôi sẽ không thuê vì ai đó biết LISP, lắp ráp hoặc một số ngôn ngữ thách thức khác, nhưng tôi muốn thấy rằng kỹ sư phải đối mặt với một thử thách nào đó liên quan đến việc giải quyết vấn đề nghiêm trọng và rất nhiều "cái quái gì thế này?" khoảnh khắc.

Là một giao dịch khác - tôi nghĩ các chương trình CS cần phải đào tạo sinh viên về các ngôn ngữ nổi bật trên thị trường. Tại bất kỳ thời điểm nào, tôi nghĩ 2-3 ngôn ngữ có sự nổi bật nghiêm trọng đối với phần lớn các công việc. Tôi nghĩ rằng một trường nợ học sinh để cung cấp cơ hội học 2 trong số 3 ngôn ngữ đó với độ sâu đào tạo có sẵn trong ít nhất một.


4

Đối với một sinh viên CS, hãy tìm các ngôn ngữ lập trình được ánh xạ chặt chẽ với các khái niệm CS đang được thảo luận. Tôi muốn đề xuất:

  • Đề án, để hiểu rõ hơn về phép tính lambda
  • Erlang, để hiểu mô hình diễn viên
  • Prolog, cho hệ thống logic và chứng minh vị ngữ
  • Haskell, đối với lý thuyết loại / loại và vì đánh giá lười biếng được thể hiện đầy đủ bằng ngôn ngữ
  • ít nhất một ngôn ngữ hợp ngữ - nếu bạn muốn đếm nó dưới biểu ngữ này, tôi cũng sẽ sử dụng ngôn ngữ mã byte, như mã byte Java hoặc CLR và LLVM IR
  • có lẽ là ngôn ngữ định nghĩa phần cứng, như Verilog hoặc VHDL
  • Bison cho một lớp biên dịch-xây dựng
  • một cái gì đó với một hệ thống kiểu động (Ruby xuất hiện trong tâm trí) ...

Danh sách này có thể tiếp tục theo cách này, nhưng ý tưởng cơ bản khá đơn giản: Dạy cho học sinh ngôn ngữ lập trình sẽ phù hợp nhất với cách bạn muốn dạy các khái niệm.


3

yacc

để có được ý tưởng về những gì đang diễn ra đằng sau hậu trường, bất cứ ngôn ngữ lập trình nào bạn đang sử dụng. nó giúp nắm bắt các khái niệm cơ bản như mã chết và nhiều loại tối ưu hóa khác nhau mà trình biên dịch (tốt) sẽ có thể làm cho bạn.


2

Lisp (với CLOS cho OOP) và Haskell. Câu hỏi này không giới hạn cho sinh viên. Các ngôn ngữ lập trình ưa thích mới đã mượn (sao chép, đánh cắp? ... không, nó không tệ) rất nhiều tính năng từ hai tính năng này. Bạn có thể chuẩn bị cho tương lai. Lập trình hàm (kiểu) ngày nay quan trọng hơn và được giới thiệu bằng các ngôn ngữ lập trình bắt buộc như C # (LINQ) hoặc C ++ (lambda) và nhiều ngôn ngữ khác. Thật tệ khi một số sinh viên chỉ học Java.


1
Mặc dù tôi đồng ý với cả hai, bạn có thể muốn đưa ra một số lý do (tôi cũng lưu ý rằng sẽ không đặc biệt hữu ích khi biết những ngôn ngữ này là ngôn ngữ duy nhất của bạn).
Inaimathi

2

Tôi nghĩ rằng ngôn ngữ không quan trọng như mọi người tin.

Vâng, bạn cần biết cách lập trình, v.v., nhưng nhiều lập trình viên tuyệt vời tự học dựa trên kinh nghiệm thực tế của họ giúp họ khi phát triển.

Học sinh có thể làm với một số bài học về cách lập trình trong thế giới thực và không chỉ là phương pháp sách, điều này sẽ khiến chúng trở nên "tròn trịa" hơn và trong lựa chọn của tôi là nhà phát triển / sinh viên tốt nghiệp tốt hơn.

Tôi đã học được nhiều hơn về lập trình và phát triển phần mềm sau khi tôi rời trường đại học và bắt đầu công việc!


2

THẬT SỰ NÓ CÓ ẢNH HƯỞNG SAO ?

Thông thường, câu hỏi đằng sau câu hỏi này là "Những từ thông dụng nào tôi có thể đưa vào sơ yếu lý lịch của mình sẽ mang lại cho tôi những công việc sinh lợi / thú vị / thử thách / dễ dàng nhất?". Mặc dù câu hỏi có giá trị vì hầu hết các sơ yếu lý lịch đều được sàng lọc bởi những người nhân sự mà không hiểu được những gì họ đang tìm kiếm. nhưng nó rất nông, vì một khi bạn đã đi qua cổng bạn cần giao hàng.

Đó không phải là ngôn ngữ bạn biết làm cho bạn trở thành một lập trình viên tốt hay xấu, đó là cách bạn có thể sử dụng nó. Đối với điều này về cơ bản có hai loại lập trình viên:

  1. Những người tập trung vào việc học một ngôn ngữ đến cốt lõi của nó. Điều quan trọng nhất là ngôn ngữ và cách sử dụng nó. Ở các thái cực, họ có xu hướng siêu tối ưu hóa mọi đốm mã nhỏ và thường sẽ sử dụng các tính năng tối nghĩa chỉ vì chúng có thể.

  2. Sau đó, có những người muốn tìm hiểu về kỹ thuật và mô hình. Ngôn ngữ họ sử dụng không thực sự quan trọng miễn là nó có thể diễn tả bức tranh tinh thần của họ một cách thanh lịch. Ở các thái cực, những điều này sẽ có xu hướng sử dụng UML hoặc các hệ thống khác như vậy với hy vọng những người khác sẽ thực hiện công việc mã hóa nó.

Theo tôi bạn cần cả hai. # 1 sẽ cung cấp các kỹ năng ngắn hạn và khi được lựa chọn một cách khôn ngoan sẽ giúp bạn dễ dàng vượt qua các cổng nhân sự nhưng # 2 sẽ ở lại với bạn trong suốt sự nghiệp và sẽ xác định bạn là một lập trình viên.

# 2 sẽ cung cấp hướng dẫn và sắp xếp lối suy nghĩ của bạn hướng tới giải pháp giải quyết vấn đề trong tay nhưng không có 1 thì đó vẫn là một ý tưởng, mãi mãi trôi nổi trong các thiên đường của phần mềm hơi nước (hoặc địa ngục tùy thuộc vào nơi bạn nhìn vào nó).

# 1 sẽ cung cấp cho bạn phương tiện để thực hiện ý tưởng vào các hệ thống làm việc thực sự nhưng không có 2 hệ thống của bạn sẽ có xu hướng hướng tới những con quái vật biến hình ung thư.


Vâng, nó quan trọng. Ngôn ngữ đầu tiên bạn học đúc khuôn não của bạn về cách bạn sẽ nhìn vào các ngôn ngữ trong tương lai.

1

Tôi tin rằng bạn đã trả lời một phần câu hỏi của bạn.

Điều quan trọng thực sự là cung cấp cho sinh viên cơ hội tiếp xúc với một số mô hình, ngôn ngữ thực tế không nên quan trọng.

Tất nhiên, điều quan trọng là chủ yếu dạy những mô hình mang lại hầu hết các cơ hội làm việc (có thể là OOP tại thời điểm này). Theo đó, tốt hơn hết là dạy một ngôn ngữ được sử dụng rộng rãi cho mô hình này, vì điều này hữu ích hơn là học một thứ mà bạn có thể sẽ không bao giờ sử dụng. Vì vậy, tôi cũng ghét phải viết mã giả trong các kỳ thi của mình. Mã giả vẫn ổn, miễn là nó không có cú pháp 'cố định'. Bạn sẽ chỉ có thể mang các khái niệm trên.

Rất cụ thể:

OOP: .NET hoặc Java

Ít nhất 1 mô hình lập trình bổ sung, để làm cho sinh viên nhận thức được các phương pháp khác.

Chức năng: Lisp?


chức năng, không, xin vui lòng, không LISP. đúng hơn: haskell.
mariotomo

1

Ngôn ngữ hội và microcode. Một sinh viên CS nên hiểu tất cả các lớp nền tảng trừu tượng giữa các máy trạng thái boolean và chức năng cấp cao mới nhất / OOP / vv. mô hình ngôn ngữ lập trình.

Cơ bản hoặc Logo hoặc Squeak (et.al.), nếu họ muốn có thể hiểu làm thế nào để dạy trẻ nhỏ một số kiến ​​thức máy tính.

Fortran, Cobol và Lisp, nếu họ muốn hiểu lịch sử của các ngôn ngữ lập trình, và những vấn đề thực tế mà các thực tiễn hiện đại đã khắc phục.


Và C, vì vậy bạn hiểu 90% tất cả các mã nguồn mở mà bạn có thể nghiên cứu.
đúng

1

Chọn 3 ngôn ngữ trở lên từ các mô hình khác nhau không khó lắm, nhiều câu trả lời hay đã được đưa ra. Nhưng nếu tôi phải chọn chỉ một ngôn ngữ, tôi sẽ chọn Scala, vì đó là cả chức năng và hướng đối tượng. Bạn có thể giải thích và so sánh các cách tiếp cận khác nhau trong cùng một ngôn ngữ.


1

Đừng quên các ngôn ngữ theo hướng ngăn xếp / ghép! Họ có thể là người uốn cong tâm trí thực sự. Họ nhấn mạnh việc xây dựng sự phức tạp bằng cách sử dụng các nguyên thủy nhỏ, dễ hiểu. Bạn có thể sử dụng chúng để viết mã pointfree (hoặc ngầm) mà cảm thấy rất rõ ràng.

Ngôn ngữ cổ điển là Forth , nhưng ngày nay tôi là Factor . Cũng đáng kiểm tra là JoyCat . Đừng bỏ lỡ wiki ngôn ngữ nối . Nó vui hơn một cái túi đầy búa!


0

Một cái gì đó chức năng, Haskell hoặc Lisp sẽ là lựa chọn đầu tiên của tôi, nhưng có lẽ là Erlang. Các ngôn ngữ chức năng thực sự dạy cho bạn cách xây dựng trừu tượng một cách rất mạnh mẽ.


Nhưng các sinh viên có nên giới hạn trong một mô hình? Còn các ngôn ngữ OOP chức năng như Scala thì sao?
Anto

1
Tất nhiên là không rồi, tôi đã cho rằng người khác sẽ tham gia!
Zachary K

0

Mặc dù thiếu tính chính thống, tôi thấy rằng D, cụ thể là phiên bản 2, cung cấp một số bài học thú vị không thể dễ dàng học được ở nơi khác. Nó thực hiện một nỗ lực nghiêm túc hơn bất kỳ ngôn ngữ nào khác mà tôi có thể nghĩ để có được lập trình bắt buộc / thủ tục, hướng đối tượng và chức năng để chơi tốt với nhau và cho phép lập trình ở mức rất thấp (con trỏ, quản lý bộ nhớ thủ công, nội tuyến ngôn ngữ lắp ráp) và trình độ rất cao (lập trình chung và tổng quát) trong cùng một ngôn ngữ.

Điều này rất có giá trị bởi vì, thay vì nhìn thấy các mô hình cô lập như thể chúng tồn tại trong các vũ trụ khác nhau, bạn có thể nhìn thấy khu rừng qua những tán cây. Bạn có thể thấy những điểm mạnh và điểm yếu của từng mô hình ở mức độ chi tiết tốt khi bạn kết hợp chúng vào các chương trình của mình. Bạn có thể thấy các khía cạnh chính của mô hình có thể được thực hiện trong các thư viện theo mã cấp thấp hơn. Mô-đun thư viện tiêu chuẩn std.alacticm thực hiện các nguyên hàm lập trình chức năng quan trọng, tuy nhiên là mã D đơn giản, không có phép thuật. Tương tự, std.rangethực hiện đánh giá lười biếng, nhưng một lần nữa là mã D khá đơn giản. Bạn có thể hiểu được các chi phí liên quan đến nguyên thủy của mỗi mô hình, bởi vì các tính năng gần gũi với kim loại của D làm cho những gì thực sự diễn ra dưới mui xe tương đối trong suốt. Bạn thậm chí có thể viết một cái gì đó ở cấp độ thấp trông giống như C, và sau đó tạo ra một giao diện cấp cao, đẹp mắt cho nó, trong cùng một ngôn ngữ, không có lớp keo ma thuật nào cản trở.


0

Mã giả.

Mọi người trong lĩnh vực này có thể giải thích các ý tưởng của họ theo cách mạch lạc, có cấu trúc mà không có biệt ngữ cụ thể theo khung hoặc theo cú pháp. Tôi không cần phải biết sự khác biệt giữa dấu ngoặc vuông và dấu ngoặc nhọn để hiểu thuật toán của bạn. Tôi không cần biết ??nghĩa là gì , hay grepcông tắc là gì.

Viết bằng ngôn ngữ đơn giản, nhưng cấu trúc và định dạng nó giống như mã. Bất cứ ai cũng có thể thực hiện nó bằng bất cứ ngôn ngữ nào họ thích.

chỉnh sửa: Câu trả lời này một phần được thúc đẩy bởi sự bất lực của một số lập trình viên để viết mã giả.

"Chỉ cần viết thuật toán bằng mã giả"

"Cái gì thế?"

Lợi ích của mã giả là các bên liên quan không lập trình có thể hiểu nó. Tôi không gợi ý rằng bạn muốn BA và người dùng chứng minh mã của mình, tuy nhiên nó có thể giúp ích khi người không lập trình có hiểu biết về thuật toán cần thiết. Psuedocode loại bỏ sự cần thiết phải giải thích for (int i = 0; i < j; i++)và về cơ bản là biệt ngữ luồn lách .


Nhiều ngôn ngữ lập trình đủ mạnh để có ít sự khác biệt giữa mã thực tế và mã giả. Những yếu tố cú pháp của ngôn ngữ lập trình thực tế mà bạn phản đối?
kevin cline

@kevin cline - Tôi cảm thấy thoải mái với các yếu tố cú pháp mà tôi biết - đó là những yếu tố mà tôi không biết về điều mà tôi có thể phản đối. Tất nhiên tôi có thể giải mã chúng, nhưng vấn đề là mã giả không nên có những vấn đề đó (Tôi vẫn chưa thấy một ngôn ngữ lập trình thực sự trông giống như mã giả)
Kirk Broadhurst

0

C.

  • Trước hết, nó vẫn được sử dụng (sử dụng rộng rãi!), Và không chỉ cho hạt nhân. Tôi hiện đang duy trì một ứng dụng kinh doanh được mã hóa bằng C. Vì vậy, ngay cả với C thuần túy và đơn giản, bạn vẫn có thể có được một công việc. Trong các công ty lớn, trong ngành công nghiệp, hầu hết mọi nơi (nhưng trong web dev).
  • Nếu bạn sẽ làm việc trong môi trường Unix / Linux, không biết ít nhất một chút về C cũng giống như đi mua sắm và không thể đọc được giá trên các thẻ.
  • Con trỏ! Mọi người nên hiểu con trỏ (xem Joel Spolsky ). Thêm vào đó, một khi bạn đã nắm bắt được khái niệm malloc, bạn sẽ biết chính xác những điều gì xảy ra khi bạn bất cẩn gõ một "cái mới" trong một langage OOP.
  • Hầu hết các cú pháp "phổ biến" đều xuất phát từ C.
  • Vâng, nó không phải lúc nào cũng rõ ràng. Vâng, nó rất khó để học. Vâng, chuỗi là một cơn ác mộng cho người mới bắt đầu. Nhưng lập trình không phải lúc nào cũng rõ ràng và khó học, và bạn sẽ thực sự hiểu điều gì tuyệt vời về OOP khi, sau khi học C, bạn thử C ++ và khám phá std :: string.

Tất nhiên, người ta nên biết nhiều hơn một ngôn ngữ, và không chỉ là một ngôn ngữ thủ tục cũ. Nhưng nếu tôi phải đi trên một hòn đảo sa mạc chỉ có một trình biên dịch, tôi sẽ đi với gcc cũ tốt của tôi. Bạn có thể hiểu lập trình cấp cao nếu bạn biết về lập trình cấp thấp. Tôi nghĩ nó không đúng theo cách khác.


0

Một số ngôn ngữ lập trình được áp dụng để đạt được các kỹ năng giải quyết vấn đề chung và các khái niệm lập trình là Logo và Karel, chúng nên được dạy trước C / C ++ / Java / Lisp / PERL / hội / bất kỳ mô hình lập trình nào.

Học sinh được giới thiệu rất thực tế về lập trình.


-1

Bất cứ điều gì với các đối tượng. Chỉ cần chắc chắn rằng họ học nó tốt.

Tôi sẽ thuê một lập trình viên java tuyệt vời cho c # bất cứ lúc nào, nhưng tôi sẽ có rất nhiều nghi ngờ khi thuê một người không bao giờ viết mã thực

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.