Trình tự học ngôn ngữ lập trình lý tưởng? [đóng cửa]


17

Bạn nghĩ sao? Trình tự học ngôn ngữ lập trình lý tưởng sẽ bao gồm hầu hết các ngôn ngữ và mô thức được sử dụng nhiều hiện nay cũng như giúp nắm bắt những điều cơ bản, ý tưởng và thực tiễn lập trình phổ biến là gì? Bạn thậm chí có thể đề xuất trình tự học tập cho các mô hình hơn là ngôn ngữ.

NB: Đây là cổng của câu hỏi tôi đã hỏi trong stackoverflow và đã bị đóng vì chủ quan và lập luận.


Câu hỏi tuyệt vời. Đó sẽ là câu trả lời nếu câu hỏi này được định hướng hiệu suất? Tôi tò mò: lập trình
viên.stackexchange.com/questions / 16323 / Kẻ

4
Tôi rất ngạc nhiên và vui mừng khi Lisp xuất hiện phổ biến trên các câu hỏi cao cấp.
Inaimathi

1
Câu hỏi này cũng đã được hỏi ở đây (mặc dù tôi nghĩ rằng câu hỏi này xuất hiện đầu tiên): lập trình
viên.stackexchange.com / questions / 4/2020 / giả

Phải lưu liên kết này tại đây- streamhead.com/what-programming-lingu-to-learn-next
Gulshan

Câu trả lời:


26

Python, Lisp, C, Haskell

Giả sử câu hỏi là về trình tự học tập lý tưởng cho những người mới lập trình (vì những người già trong lập trình sẽ có trình tự học (có thể là vô tình) của riêng họ), tôi khuyên bạn nên đọc bài luận của Norvig về cách học lập trình trong 10 năm , sau đó:

  1. Python : Bắt đầu với một ngôn ngữ chức năng, OO & năng động, cấp cao. Bởi vì nó thực sự quan trọng đối với người mới bắt đầu cảm thấy hiệu quả càng sớm càng tốtvà không bị tắt bởi cú pháp của người ngoài hành tinh, thiếu thư viện, thiếu đa nền tảng, thiếu tài nguyên học tập và thiếu cộng đồng. Python rất dễ đọc, có rất nhiều thư viện tốt (đặc biệt là thư viện khoa học - một nhà khoa học / kỹ sư hiện đại phải biết lập trình), dễ dàng chạy từ hầu hết các hệ điều hành, có hàng tấn hướng dẫn và toàn bộ sách miễn phí, và nói chung là thân thiện với người dùng - tất cả trong khi vẫn đủ mạnh mẽ để phát triển cùng bạn khi bạn trở thành một lập trình viên tiên tiến làm việc với các vấn đề lớn. Điều quan trọng nữa là phải củng cố các quy ước quan trọng + hữu ích cho người mới bắt đầu: khả năng đọc mã được tính rất nhiều và bạn nên viết mã cho chính mình và người khác để dễ hiểu.

  2. Lisp: Cụ thể, ít nhất là đọc lướt Cấu trúc và diễn giải các chương trình máy tính hoặc xem video SICP , và đôi mắt của một người mở to bằng cách nhìn thấy nền tảng và sức mạnh biểu cảm của lập trình - người ta có thể làm rất nhiều với rất ít. Tìm hiểu cách Lisp có thể diễn đạt không chỉ mô hình chức năng, mà cả OO, logic / khai báo và hơn thế nữa - như việc tạo ra các ngôn ngữ dành riêng cho tên miền mới. Đọc PAIP của Norvig để chứng kiến ​​những gì một bậc thầy có thể làm với ngôn ngữ. Sau đó kiểm tra Clojure , một phương ngữ Lisp hiện đại có thể là một trong những điều lớn tiếp theo.

  3. C: Chỉ bởi vì đó là ngôn ngữ chung của máy tính. :) Có thể tùy chọn những ngày này nếu một người chủ yếu là lập trình viên trong một miền không phải phần mềm cụ thể. Tôi thấy nó xấu nhưng đáng để biết về việc đánh giá cao phần cứng cơ bản. Đi với K & R , tất nhiên.

  4. Haskell : Sức mạnh chức năng thuần túy. Trường hợp hiện tại Com.Sci. lý thuyết và sức mạnh biểu cảm thực tế đáp ứng. Xem thế giới thực Haskell .

Sau chuyến tham quan trên, người ta sẽ rất giỏi trong việc giải quyết các vấn đề và thể hiện các giải pháp trong mã, và hoàn toàn thoải mái với các mô hình ở đây :

văn bản thay thế


Tôi (tự nhiên) thay thế Smalltalk cho Python thành số 1, nhưng tôi nói rằng việc biết rằng Python (a) phổ biến hơn so với Smalltalk và rằng (b) để Smalltalk nói chuyện với các ngôn ngữ khác cũng khó như trong Java , đó là nói đủ khó để làm nản lòng một người mới. "Kịch bản" của Python có vẻ như là một lợi thế khá lớn.
Frank Shearar

Tôi đồng ý với tuyên bố năng suất của bạn. Tôi nghĩ rằng học C là ngôn ngữ đầu tiên tuyệt đối là một khối lượng lớn. Nhưng nó chắc chắn nên ở trong ngăn xếp ở đâu đó.
Đánh dấu Canlas

+1 Tôi không chắc Haskell có nên đứng đầu hay không, nhưng công bằng mà nói, tôi chưa biết nó và nó tiếp theo trong danh sách của tôi, vì vậy nó có thể vẫn là ngôn ngữ cuối cùng tôi học được.
Inaimathi

2
Biểu đồ 1 lần nhấp để kích thước đầy đủ @ i54.tinypic.com/168ity1.jpg
Mike Clark

Tôi sẽ +1 cái này nếu C không có trong danh sách
Balog Pal

28

Đây là cách tôi sẽ làm điều đó:

  1. Python (hoặc Ruby hoặc Lua): Một ngôn ngữ được dịch, không có loại, bạn có thể hoàn thành công việc trong một vài dòng. Thư viện khổng lồ (Python là tốt nhất cho điều này tôi đoán). Bạn có thể đi sâu vào các thuật toán vì không có phiền nhiễu. Không cần biên dịch, chỉ cần chạy. Trên hết, với Python bạn hoàn toàn dạy phong cách tốt, vì việc thụt lề trong Python là bắt buộc. Bạn cũng có thể dạy Định hướng đối tượng (trong Lua có nhiều vấn đề hơn). Mục đích ở đây là để có nhiều niềm vui, và cho học sinh thấy những gì có thể làm được.

  2. C ++ (hoặc có thể là Java): Một ngôn ngữ được gõ, nhanh. Nếu bạn cần Định hướng đối tượng, thì bạn đã biết một số khái niệm. Ý tưởng chính là "dịch" những gì bạn đã làm trong Python và thực hiện nó với các ràng buộc mới (chủ yếu là các loại). Bây giờ nếu bạn có các khái niệm đúng, việc thêm các loại không phải là một vấn đề như vậy. Bước tiếp theo là suy nghĩ mức độ thấp hơn (Java không giúp đỡ ở đây) và dạy con trỏ tốt . Bằng cách này, tôi có nghĩa là giải thích về không gian địa chỉ, CPU, HĐH, một chút để bạn có thể bắt đầu nhìn thấy bên dưới chương trình của mình. Một ngôn ngữ được biên dịch giới thiệu sự khác biệt giữa giải thích và biên dịch, rất hữu ích để giải thích ngôn ngữ máy là gì, v.v.

  3. Hội : Cuối cùng, không có phép thuật, bạn chỉ cần nói chuyện với máy. Có một cuộc tranh luận về cú pháp Intel và GAS, nó không quan trọng. Nếu bạn có MIPS, tôi tin rằng nó tốt hơn cho việc giảng dạy, nhưng tôi cho rằng x86 sẽ thuận tiện hơn vì nó phổ biến hơn (x86_64 tốt hơn vì có nhiều đăng ký và chi tiết hơn). Bạn chỉ cần loại bỏ một số phức tạp và để sinh viên điều tra thêm nếu họ muốn.

(3 cái đầu tiên này là "độ sâu". Cho đến bây giờ, chúng tôi đã đi xuống cho đến khi bạn chạm vào đáy, "gần với kim loại", như họ nói. Tôi nghĩ điều này rất quan trọng, nhiều câu hỏi trong lập trình là giải quyết khi bạn có một ý tưởng rõ ràng về những gì đang xảy ra. Khi bạn biết điều này, bạn có thể có thêm kiến ​​thức với sự tự tin.)

  1. Đề án (hoặc Common Lisp hoặc Clojure): Như @dukeofgaming nói, ngôn ngữ Lisp cho phép bạn dạy đệ quy tốt (cho chương trình này là tốt nhất, vì không có vòng rõ ràng). Nhưng tôi sẽ đi và dạy hai điều khác: đóng cửa và macro. Macro là những gì tách biệt ngôn ngữ Lisp với các ngôn ngữ khác. Cá nhân tôi không thích macro Scheme nhưng điều này không quá quan trọng. Tôi nghĩ rằng các macro Clojure là tốt, chẳng hạn (nhưng đệ quy trong Clojure không sạch, vì JVM không có đệ quy đuôi). Đóng cửa là một khái niệm rất quan trọng, một khi bạn mò mẫm chúng, bạn sẽ thấy "Javascript" ngay lập tức. Sau khi nghiên cứu C ++, Python và Lisp, Javascript trở nên "tầm thường".

  2. Haskell : Đối với một ngôn ngữ chức năng, tôi không nghĩ bạn có thể đánh bại Haskell. Lisp và Scheme được coi là chức năng, nhưng để nhấn mạnh lập trình chức năng, bạn phải buộc học sinh suy nghĩ mà không có nhà nước. Haskell cũng có những thứ rất hay khác, như cà ri, và khớp mẫu cho "phá hủy". Tôi không biết Haskell rất nhiều, nhưng tính đồng nhất của mã bạn có thể viết chỉ là đẹp. Biết rõ Haskell làm cho con đường hiểu Erlang dễ dàng hơn nhiều.

  3. Forth : Một ngôn ngữ ngăn xếp. Nó hoàn toàn phá vỡ logic của bạn một lần nữa (nếu Lisp và Haskell không đủ). Tôi sẽ đi xa hơn khi dạy Forth của Jones vì họ biết lắp ráp và sau đó bạn hoàn toàn có thể hiểu chuyện gì đang xảy ra. (Chẳng hạn, biết Forth sẽ mở PostScript.)

(Vì vậy, 3 ngôn ngữ cuối cùng là bề rộng mà bạn đang nói. Đối với tôi, những ngôn ngữ này đủ kỳ lạ để chúng thay đổi cách suy nghĩ của bạn. rất nhanh.)

Tùy chọn, bạn có thể nghiên cứu những điều sau:

  1. SmallTalk : Một ngôn ngữ hướng đối tượng hoàn toàn. Để xem điều gì xảy ra khi bạn thực hiện Định hướng đối tượng một cách nghiêm túc, ngôn ngữ không cần "nếu", "cho". Tất cả mọi thứ là một thông điệp: nhận ra lớn một lần nữa. (Điều này sẽ làm cho Objective-C trở nên dễ dàng ngay bây giờ.)

  2. Go : Một ngôn ngữ (đẹp) với sự nhấn mạnh vào sự tương tranh. Tôi thấy Go rất đẹp và thoải mái khi lập trình.

  3. Prolog : Một mô hình khác của lập trình. Tôi chưa viết bất kỳ Prolog nào nhưng tôi hiểu đó là một ngôn ngữ khác.


6
Python và Ruby (tôi không biết về Lua) là những ngôn ngữ được gõ mạnh. Tôi nghĩ rằng bạn có nghĩa là họ đang động chứ không phải gõ tĩnh.
Daniel Roseman

13
Vui lòng coi C và C ++ là hai ngôn ngữ riêng biệt.
David Thornley

1
Bjarne nói : "Không có ngôn ngữ gọi là" C / C ++ ". Cụm từ này thường được sử dụng bởi những người không có đầu mối về lập trình (ví dụ: nhân sự nhân sự và người quản lý kém). Ngoài ra, nó được sử dụng bởi những người đơn giản không biết C ++ (và thường không phải C). "
dòng chảy

1
Tôi muốn ai đó tranh luận về việc lắp ráp có nên đi trước C ++ hay không. Vào thời điểm đó nó sẽ là khá dễ dàng để tiếp cận lắp ráp, do các khái niệm đơn giản và một nhóm nhỏ các cụ được cung cấp, tuy nhiên làm việc với nguyên bộ nhớ và liệu tham khảo bộ nhớ nên rất hữu ích khi tiếp cận C ++, nơi sử dụng tài liệu tham khảo danh nghĩa để giải quyết cả hai tùy ý vị trí bộ nhớ và giá trị nhầm lẫn giữa hầu hết mọi người.
Filip Dupanović

1
Tôi đã cho hai sinh viên CS của mình một khóa học kéo dài một tuần trong một nhà lắp ráp trang điểm. cơ bản Tôi đã phát minh ra một máy tính tập lệnh tối thiểu và trình thông dịch. Sau đó, họ có thể viết (và xem chạy) một số thói quen rất đơn giản, hoàn thành với thời gian. Sau đó, tôi đã thêm các thứ như bộ nhớ đệm dữ liệu và tìm nạp trước để họ có thể thấy các tính năng kiến ​​trúc tương tác với hiệu suất như thế nào. Tôi nghi ngờ một nhà lắp ráp nhân tạo và máy tính có thể cho phép linh hoạt hơn và hiệu quả học tập, nếu mục đích là mô phạm, thay vì sử dụng một cái gì đó mà họ có thể sử dụng.
Omega Centauri

12
  • Người bạn cần bây giờ
  • Người bạn cần tiếp theo
  • Người bạn cần sau đó

Nghiêm túc mà nói, tôi có thể đã học BASIC, COBOL, Fortran, Forth, Pascal và Prolog trong thời gian của mình, nhưng tôi chưa bao giờ đặc biệt cần sử dụng chúng và tôi thực sự không thể thấy bất kỳ cách nào mà chúng ảnh hưởng đến việc sử dụng khác của tôi ngôn ngữ, ngoại trừ có thể áp dụng sai các mô hình từ một trong những khác. Tôi mất nhiều thời gian để học BASIC đủ để thực sự viết Pascal có cấu trúc, một vài năm để ngừng viết mã Pascal bằng C và một vài năm nữa để thực sự mò mẫm OOP khi tôi bắt đầu sử dụng Objective-C và Java. Mặt khác, vì tôi đã làm việc (gần như) độc quyền bằng các ngôn ngữ OO, tôi đã có thể tập trung vào việc cải thiện việc sử dụng ngôn ngữ OO của mình, mà không cố gắng làm cho chúng trông giống như Scheme hoặc PostScript.


4
Bạn biết đấy, tôi nghĩ có một số giá trị của việc học một ngôn ngữ mới ngay cả khi bạn không cần nó ... tuy nhiên tôi đồng ý với suy nghĩ chung rằng học ngôn ngữ thường tốt hơn vì bạn nghĩ rằng bạn thấy nó hữu ích hơn bởi vì đó là những gì bạn nghĩ rằng bạn "nên" học hỏi.
Tim Goodman

8

Thật khó để khẳng định rằng bất kỳ chuỗi nào là lý tưởng, nhưng tôi sẽ đưa ra một kế hoạch mà tôi có thể biện minh:

  1. C

    Học C đòi hỏi sự kiên nhẫn và siêng năng, và sẽ giới thiệu cho bạn những cách cơ bản mà máy tính xử lý dữ liệu và cho bạn thấy hầu hết các trách nhiệm rộng nhất mà lập trình viên có thể chấp nhận để xử lý một cỗ máy như vậy.

  2. Perl

    Là một thuốc giải độc cho sự khắt khe theo yêu cầu của C, hãy thử Perl không thể tha thứ. Mất một tuần để viết bằng C, bạn có thể viết trong một giờ bằng Perl. Nó giới thiệu một loại niềm vui khác nhau được tìm thấy trong lập trình, và cho thấy cách loại trừ những mối quan tâm và chi tiết nhất định giải phóng lập trình viên để tập trung vào những thứ khác nhau.

  3. C ++ , hoặc có thể Java

    Tiếp theo hãy xem cách C tập trung vào các khía cạnh cấp thấp và nguyên thủy của lập trình đóng vai trò là nền tảng để nâng cao mức độ trừu tượng, lưu ý các giao dịch tạo ra hiệu quả khi chuyển lên trừu tượng. Khám phá cách hình thành các khái niệm trừu tượng mà vẫn có thể giữ lại hiệu quả quan trọng cho chương trình của bạn.

  4. Lisp thường gặp

    Đây là phần thưởng cho các khẩu hiệu trước. Bạn sẽ tìm thấy tiếng vang của những gì bạn đã học trong tất cả các ngôn ngữ trước đó và xem sự ngớ ngẩn của rất nhiều sự nhượng bộ trước đó dường như khi lập trình ở Lisp. Các bộ tiền xử lý của C và các mẫu của C ++ chuẩn bị một để đánh giá cao hệ thống macro của Lisp. Bạn sẽ lấy lại sự dễ dàng biểu hiện từ Perl, cơ hội tối ưu hóa mức độ thấp từ C, khả năng xây dựng trừu tượng của C ++ hoặc Java và vượt qua tất cả. Không ai trong số ba người đi trước - có lẽ ngoại trừ trình gỡ lỗi của Perl - sẽ chuẩn bị cho bạn trải nghiệm lập trình tương tác với REPL có khả năng ("đọc, eval, vòng lặp in"). Làm việc với một hình ảnhmôi trường dựa trên - thay đổi mối quan hệ giữa mã nguồn của bạn và ý tưởng về "chương trình thực thi" - sẽ thay đổi toàn bộ ý tưởng của bạn về ý nghĩa của việc xây dựng chương trình.

Ngoài bốn cách đó, khám phá các phong cách lập trình khác, chẳng hạn như lập trình chức năng trong Haskell, hoặc lập trình logic trong Prolog, giúp hiểu biết toàn diện hơn về phạm vi lập trình - kiến ​​thức rộng, nếu bạn muốn - nhưng tại thời điểm đó, thời gian của bạn được phục vụ tốt hơn bằng cách cải thiện nghề của bạn - kiến ​​thức sâu sắc - với bất kỳ ngôn ngữ nào bạn biết.

Đã nếm đủ các ngôn ngữ riêng biệt, quan điểm của bạn sẽ nâng cao để tập trung vào các ý tưởng vượt qua bất kỳ một trong số chúng. Đó là loại giống như sự khác biệt giữa học lái xe của cha mình và biết làm thế nào để lái xe bất kỳ xe: Bạn không thể thưởng thức việc phải lái xe cho thuê xe tải nhỏ cho một vài ngày, biết rõ những niềm vui của lái xe một chiếc xe thể thao ưa thích, nhưng bạn sẽ tìm ra cách vận hành nó, và chắc chắn sẽ dỗ được con thú tội nghiệp nhiều hơn là một kẻ nghiệp dư.


4
+1 cho C và Common Lisp, nhưng Perl là ngôn ngữ thứ hai ?? :) Python sẽ phục vụ tuyệt vời như một ngôn ngữ năng động đồng thời khuyến khích các thói quen lập trình tốt - như mã rất dễ đọc cho chính bạn và những người khác, trong vài tuần, vài tháng hoặc nhiều năm sau khi viết chương trình ban đầu.
hạn

1
Về khuyến nghị của Perl: đó chỉ là tôi cho thấy tuổi của tôi. Chắc chắn, ngày nay, Python hoặc Ruby sẽ là những người thay thế gần gũi, nhưng cả hai đều có tính giáo điều hơn Perl, và thiên về định hướng đối tượng theo kiểu phương thức mà một lập trình viên mới bước ra từ C không Không cần. Tôi nhớ lại rằng khi tôi học Perl, tôi đã có năng suất đáng sợ ngay lập tức và không lâu sau đó tôi bắt đầu sử dụng các phương tiện hướng đối tượng của nó. Quá thường xuyên, tất cả những gì OO tập trung chỉ là nghi lễ gây mất tập trung và không cần thiết.
seh

Tôi không đồng ý với quan điểm "giao dịch mà người ta tạo ra có hiệu quả khi chuyển lên trừu tượng". Một trong những trụ cột của C ++ là chương trình sử dụng các phương tiện của C ++ không bao giờ chậm hơn chương trình C tương đương . Ví dụ: sử dụng các hàm ảo trong C ++ không bao giờ chậm hơn so với mô phỏng các hàm ảo trong C.
fredoverflow

Đúng, Fred, và đó là điều tôi muốn nói: tận dụng các tính năng mà không cần suy nghĩ về cách chúng hoạt động có thể đưa ra chi phí - chi phí mà bạn có thể tránh được trước đây bằng cách tránh khả năng tính năng, bởi vì nó rất phức tạp hoặc chỉ là không đủ thành ngữ để thực hiện thủ công. Chẳng hạn, việc phàn nàn rằng RTTI "quá chậm" ngay lập tức đặt ra câu hỏi bạn sẽ giải quyết vấn đề bằng cách nào khác .
seh

6

1. Smalltalk

Được thiết kế ban đầu ít nhất là một phần cho trẻ em sử dụng máy tính để học. Cú pháp đủ đơn giản để mô tả trong một đoạn văn. Nó, giống như LOGO, minh họa cho nguyên tắc "rào cản thấp để vào, trần cao".

Smalltalk là ngôn ngữ OO thuần túy theo nghĩa "mọi thứ đều là đối tượng".

Nó cũng dạy nhiều kỹ thuật chức năng, đặc biệt là trong API bộ sưu tập của nó: thông điệp chuỗi, chức năng bậc cao hơn, bản đồ, thu nhỏ, v.v.

Các Squeak cộng đồng sôi động và chào đón. Bạn cũng sẽ thấy nhiều cuộc thảo luận về các kỹ thuật tiên tiến: giống như cộng đồng lisp, có rất nhiều Smalltalker có kinh nghiệm trong danh sách gửi thư sẵn sàng chia sẻ kiến ​​thức của họ. (Không có gì đau đớn khi cộng đồng Squeak có một nhóm lớn các nhà giáo dục chuyên nghiệp.) Ngoài ra còn có một danh sách khác cho người mới bắt đầu.

2. TƯ DUY

Một ngôn ngữ lập trình logic sẽ cung cấp cho bạn một cái nhìn rất khác về tính toán với bất kỳ ngôn ngữ nào khác. Prolog cũng có tính khai báo cao (nhưng không hoàn toàn như vậy: !toán tử cắt hoặc có thể có ảnh hưởng ngữ nghĩa quan trọng đến một vị ngữ).

3. Lisp thường gặp

Đề án thay thế ở đây nếu bạn muốn. Lisp thông thường hỗ trợ nhiều mô hình, đặc biệt là OO và chức năng. Nó cũng có một lịch sử lâu dài (Lisp là ngôn ngữ lâu đời nhất vẫn được sử dụng rộng rãi thứ hai: chỉ FORTRAN cũ hơn).

4. Haskell

(Hãy cẩn thận: Tôi chỉ mới bắt đầu học nó.) Có lẽ là ngôn ngữ chức năng thuần túy nhất trên hành tinh. Nó có một hệ thống loại tĩnh rất tiên tiến. Sách giới thiệu tiện dụng tồn tại.

5. C hoặc Delphi

Bạn cần biết máy tính hoạt động như thế nào. Bạn cần biết bộ nhớ và CPU thực sự hoạt động như thế nào. Cả hai đều theo truyền thống "gần với kim loại" và có các cộng đồng khuyến khích suy nghĩ về cách ngôn ngữ của họ biên dịch để lắp ráp.

Tại sao lại đặt hàng này?

Smalltalk rất dễ học, vì vậy bạn có thể nhanh chóng bắt đầu tập trung vào giải quyết vấn đề thay vì chống lại trình biên dịch ("rào cản thấp để vào"). Khi bạn bắt đầu lập trình, cũng không có giới hạn nhân tạo về những gì bạn có thể làm - "trần cao".

Khi bạn có ý tưởng hợp lý về cách OO hoạt động (và - với điều kiện là có NHIỀU cách hiểu khác nhau về "OO" nghĩa là gì - thật công bằng khi nói rằng OO thống trị thị trường), chuyển sang Prolog đảm bảo rằng bạn không bắt đầu nghĩ rằng OO là cách duy nhất. Prolog rất khác với hầu hết các ngôn ngữ và sẽ kéo dài cơ bắp tinh thần của bạn để bạn không bắt đầu nghĩ rằng bạn biết tất cả mọi thứ.

Nói chung, Lisp là ngôn ngữ của người trưởng thành. Nó có một tiêu chuẩn trưởng thành, nó đã được thiết kế ngôn ngữ hàng đầu trong nhiều thập kỷ (cùng với Smalltalk) - tất cả những tính năng mới lạ mắt mà ngôn ngữ yêu thích của bạn vừa có được? Rất có thể là những ý tưởng được ủ trong Lisp hoặc Smalltalk. Lisp thông thường cũng có một chút chiến tranh, và bạn sẽ thấy chiến tranh ở mọi nơi bạn đến.

Thứ tư của Haskell trong danh sách bởi vì (tôi đã nói: Tôi chỉ mới bắt đầu học nó) độ tinh khiết của nó có nghĩa là một số điều rất phổ biến (như I / O) khó thực hiện hơn so với các ngôn ngữ ít chức năng thuần túy. Những người Haskell cũng sử dụng một số thuật ngữ khá kỳ lạ (những từ như "dị hình", nói), và có lẽ bạn sẽ tốt hơn với một số kinh nghiệm lập trình dưới vành đai của mình trước khi giải quyết nó. (Nhưng tôi phải lặp lại, tôi chỉ mới bắt đầu học nó! Hãy lấy ý kiến ​​này bằng một nhúm muối!)

Và tại sao C / Delphi kéo dài? Bởi vì trừ khi bạn làm việc trong các hệ thống nhúng, bạn thực sự không cần phải học lập trình với suy nghĩ rằng tất cả đều có. Bộ sưu tập rác hoạt động đủ tốt cho một máy cấp độ những năm 1980. Điện thoại của bạn thật mạnh mẽ!

Cuối cùng, tôi đã không đưa Erlang vào danh sách trên mặc dù tôi thực sự nên làm vậy.


2
Đây có phải là một chuỗi học tập ?
Wizard79

Đây rõ ràng là một chuỗi (có độ dài 1).
Frank Shearar

Ít lịch sự hơn: Tôi sẽ cung cấp một bước trong chuỗi và bạn cung cấp bước khác và cộng đồng sẽ bỏ phiếu theo thứ tự của chuỗi đã nói, được chứ?
Frank Shearar

3
@Frank Tôi không có ý đó. Tôi mong đợi trình tự đầy đủ. Và tôi nghĩ, việc đặt hàng không thể được thực hiện bằng cách bỏ phiếu.
Gul Sơn

Xin vui lòng: nếu bạn sẽ downvote, giải thích lý do tại sao .
Frank Shearar

5
  1. Con trăn. Giới thiệu tuyệt vời về lập trình. Điều này cũng sẽ liên kết với bất kỳ tiếp xúc với lập trình trước đó.

  2. Kế hoạch. Cũng là một giới thiệu tuyệt vời về lập trình. Nếu làm việc với người mới lập trình, bạn có thể muốn dạy điều này trước và Python thứ hai. Một thay thế sẽ là Python trước và sau đó là Common Lisp thay vì Scheme: nhiều việc hơn, nhưng phần thưởng nhiều hơn.

  3. C. Một ngôn ngữ cấp thấp gần với silicon. Tốt cho việc học những gì một máy tính có thể làm. Bạn có thể thay thế một số dạng ngôn ngữ trình biên dịch, nhưng C khá gần với những điều cơ bản và dễ làm việc hơn nhiều.

  4. Prolog. Thay phiên, thay thế bất kỳ ngôn ngữ mục đích chung kiểu khai báo, nếu bạn có thể tìm thấy một ngôn ngữ bạn thích tốt hơn.

  5. Haskell. Đối với hệ thống loại và chức năng thuần túy, nếu không có gì khác.

  6. Có một số ứng cử viên ở đây, vì không thể bao gồm tất cả các khái niệm với sáu ngôn ngữ. Lisp thông thường rất đáng để học hỏi, nếu chỉ dành cho hệ thống vĩ mô và hệ thống đối tượng (khác với hầu hết các hệ thống khác mà tôi đã thấy). Forth, Tcl và APL đều là những ngôn ngữ kỳ quặc đã thấy được một số thành công và một trong những ngôn ngữ đó sẽ rất tốt để ngăn học sinh cảm thấy như mình đã học được tất cả. Erlang sẽ tốt cho đồng thời.


"Nếu làm việc với người mới lập trình, bạn có thể muốn dạy điều này trước và Python thứ hai." Rất nhiều người đồng ý. Đó là một cách tiếp cận trường đại học cũ của tôi bây giờ và nó dường như hoạt động rất tốt.
pyvi

Đây là một danh sách khá tốt, tôi có thể sẽ đảo ngược thứ tự trên Haskell và Prolog. Nếu sinh viên đặc biệt không có kinh nghiệm, thì tôi sẽ loại sáu người, lập danh sách và bắt đầu với một cái gì đó đơn giản hơn.
Orble

4

Nhiều câu trả lời hay đã được cung cấp, nhưng tôi không thấy ai cung cấp SQL. Nó là một động vật hoàn toàn khác so với hầu hết các loài khác được liệt kê và rất quan trọng đối với bất kỳ lập trình viên nào phải xử lý cơ sở dữ liệu.

Bạn cũng có thể muốn xem xét một số 'ngôn ngữ' cấp độ hệ điều hành, chẳng hạn như Batch, grep, awk, v.v. 'Make' cũng có thể thuộc danh mục này.

Một ngôn ngữ khác bạn có thể muốn xem xét (nếu nó chưa hoàn toàn chết) là COBOL. Nó đủ khác biệt với các ngôn ngữ thủ tục khác mà nó đáng được nhắc đến. Biến thể của C, Fortran, Basic, v.v ... đã trở nên giống nhau đến mức một khi bạn đã quen thuộc với cái này, việc chuyển sang cái khác không phải là vấn đề lớn, nhưng COBOL thiếu rất nhiều cấu trúc được cấp cho những cái khác. (Đã ít nhất 20 năm kể từ khi tôi làm bất cứ điều gì với COBOL, vì vậy những quan sát của tôi có thể không còn hợp lệ đối với ngôn ngữ này.)

Bạn có thể muốn đề cập đến APL chỉ từ quan điểm lịch sử - hoặc để nó yên nghỉ. Lựa chọn của bạn.


1
Lý do tôi không đề xuất SQL là vì nó không phải là ngôn ngữ có mục đích chung. Tôi thà đánh học sinh bằng thứ gì đó tuyên bố và chung chung hơn, như Prolog. Các ngôn ngữ kịch bản cấp hệ điều hành không cung cấp thứ gì mà ngôn ngữ chung chung hơn như Python hoặc Perl sẽ không có. Lần cuối tôi chạm vào COBOL, nó không đưa ra khái niệm nào mà bạn không thể giỏi hơn trong các ngôn ngữ khác. Tôi thích đề xuất của APL, không quá nhiều cho giá trị lịch sử vì đó là một ngôn ngữ rất khác.
David Thornley

@David Thornley: Tôi đồng ý rằng SQL không phải là ngôn ngữ có mục đích chung. SQL có một số khái niệm lý thuyết và logic thú vị là các hoạt động cơ bản không xuất hiện ở nhiều ngôn ngữ khác, vd. liên minh, tham gia, nhóm theo, v.v ... đáng chú ý cho bất cứ ai có thể giao dịch với cơ sở dữ liệu.
oosterwal

Tất cả những điều tôi muốn thấy được dạy cho một người học, mặc dù một số trong đó có một cảm giác lịch sử với nó. Học các ngôn ngữ script là điều cần thiết, nhưng có thể được thực hiện cùng với các ngôn ngữ khác, tương tự đối với SQL, nó là ngôn ngữ dịch vụ cho các nguyên tắc. Nếu học sinh rất giỏi môn toán, thì bắt đầu với APL có thể tốt (hoặc có lẽ là R, vì nó dễ đọc hơn rất nhiều, nhưng có thể được sử dụng tương tự).
Orble

2

Tôi sẽ đề nghị trước tiên hãy đọc "Làm thế nào để trở thành một hacker" của Eric Raymonds vì anh ta có một số điểm rất thú vị về cách bắt đầu, bao gồm cả Lisp có khái niệm "mã là dữ liệu và dữ liệu là mã".

Để lập trình, tôi cũng đề xuất Haskell, Prolog, SQL và ngôn ngữ hợp ngữ (chỉ một số).

Bất kể những gì bạn muốn học, hãy dành thời gian để tìm hiểu nó đúng cách và viết số lượng mã không tầm thường. Nó giống như đi xe đạp - bạn không thể học nó từ một cuốn sách.


2

Đầu tiên> Bạn muốn làm gì khi bắt đầu lập trình? Học cách trở thành lập trình viên trò chơi khác với học cách trở thành lập trình viên cơ sở dữ liệu cho doanh nghiệp ... khác với lập trình viên dựa trên web ...

Thứ hai> Một khi bạn bắt đầu học, bạn có muốn bắt đầu học cao và đi xuống không? Hoặc bắt đầu thấp và làm việc theo cách của bạn lên. Học C # (cấp độ cao) khác rất nhiều so với học hội (Cấp độ thấp).

Một sự lựa chọn lớn sẽ phụ thuộc vào những gì bạn muốn làm. Lập trình trình điều khiển rất có thể sẽ bao gồm C hoặc hội ... Lập trình một trang web sẽ là PHP, C #, asp, v.v ... Bạn sẽ không chạm vào lắp ráp để lập trình web ... vv ...

Theo như những điều cơ bản ... một khi bạn quyết định bạn muốn làm gì, việc chọn ngôn ngữ sẽ dễ dàng hơn. Tôi, ví dụ, đã trở thành một nhà phân tích dữ liệu tại một bệnh viện. Vì vậy, "sự lựa chọn" ngôn ngữ của tôi là SQL / TSQL / DB2 để truy cập dữ liệu, C # WPF cho máy khách windows, Silverlight cho máy khách web, một số RPG / CL cho logic back-end của IBM ...

Cá nhân tôi gắn bó với một cuốn sách hay + xây dựng chương trình của riêng bạn để thực hành ngôn ngữ. Tôi thích APress và thích đọc C # 2008 Illustrated khi học C #. Họ có những cuốn sách khác bao gồm những điều cơ bản cho những người không học cũng như chuyên gia.


2

Một người mới chỉ cần một ngôn ngữ để bắt đầu, sau khi học ngôn ngữ thứ hai, họ đã tiến bộ vượt ra ngoài nhiều nhà phát triển cạnh tranh. Tôi sẽ học theo thứ tự sau:

  • Smalltalk - đây là OO tốt nhất và tiếp xúc đơn giản sẽ mở mắt cho bạn cách mọi thứ nên được thực hiện. Tốt nhất để tìm hiểu các khái niệm OO trên.
  • Java hoặc C # - cung cấp một cách tiếp cận có kế hoạch và kiến ​​trúc hơn cho OO, đồng thời giới thiệu các loại được kiểm tra tĩnh.
  • Ruby hoặc Python - Bạn không thể đánh giá cao nó cho đến khi bạn cảm thấy Java hoặc C #
  • Erlang - đồng thời được thực hiện theo cách làm cho nó có vẻ dễ dàng. Nó tốt hơn nhiều so với ngôn ngữ OO hoặc C của bạn có thể làm.
  • Lisp, Haskell hoặc ngôn ngữ chức năng khác - đó là một cách tiếp cận khác để giải quyết vấn đề.
  • C - Hoặc bằng cách xây dựng các tiện ích mở rộng riêng cho Java hoặc thực hiện các thuật toán cấp thấp hơn, điều này gần với việc lắp ráp như ai đó cần cho đến khi chúng viết trình biên dịch

Bạn có thể hỏi "C ++ ở đâu?" và X thì sao? Thành thật mà nói, học nhiều ngôn ngữ làm một vài điều: nó làm phong phú thêm trải nghiệm của bạn và nó cung cấp một ổ đĩa để học nhiều ngôn ngữ hơn. Danh sách các ngôn ngữ tôi biết rõ (Java, C #, Ruby, C ++, Javascript) đều hướng đối tượng - nhưng đó chủ yếu là vì đó là những gì tôi phải làm mỗi ngày. Danh sách các ngôn ngữ tôi đã tiếp xúc (Smalltalk, Python, Erlang, JESS, C, hội [Motorola 6502/6510], Go) đều đã dạy tôi những bài học quý giá. Tôi ít nhất có thể hiểu những gì đang xảy ra với những ngôn ngữ đó. Có rất nhiều điều tôi chưa khám phá, nhưng rất có thể trong tương lai. Cũng có một vài ngôn ngữ đánh dấu: HTML, XSL: FO, XSLT, CSS, XML, SGML mà mọi người cần tiếp xúc nếu họ sẽ làm việc với web theo bất kỳ cách nào.

Sau khi học ít nhất hai ngôn ngữ khác nhau, tôi thực sự không nghĩ bạn nên hạn chế những gì mà một người có mong muốn học quyết định chọn tiếp theo. Học tập nên là một kinh nghiệm hữu cơ và quá nhiều cấu trúc trong quá trình tạo ra một nhóm người có suy nghĩ giống hệt như vậy. Một độc canh để nói.


2

Hầu hết các câu trả lời này có vẻ gần giống nhau vì vậy tôi sẽ đưa ra một ý kiến ​​khác. Từ lâu tôi đã tin rằng ngôn ngữ đầu tiên tốt nhất là Tcl.

Tại sao? Đối với một, nó rất dễ học. Không có nhiều cú pháp cho ngôn ngữ để sinh viên có thể tập trung nhiều hơn vào các khái niệm lập trình và ít hơn vào các đặc điểm cú pháp của một ngôn ngữ cụ thể. Theo văn bản này, Tcl có chính xác 12 quy tắc chi phối toàn bộ ngôn ngữ (tăng từ mười một trong vài thập kỷ qua).

Mặt khác, Tcl đi kèm với một ngôn ngữ GUI tích hợp tuyệt vời, vì vậy bạn có thể nhận được một số hài lòng tương đối tức thì và có thể tìm hiểu những điều cơ bản về lập trình hướng sự kiện.

Thứ ba, nó có thể mở rộng. Bạn muốn dạy về một vòng lặp lặp lại? Bạn có thể viết một lệnh thực hiện một vòng lặp lặp lại để không chỉ bạn có thể học cách sử dụng lặp lại ... cho đến khi, bạn có thể tìm hiểu cách nó khác với vòng lặp while vì bạn thực sự đã tự viết nó.

Ngoài ra, vì nó có thể mở rộng dễ dàng thành C. Bạn có thể học C cơ bản và học cách a) mở rộng Tcl bằng các lệnh mới được viết bằng ngôn ngữ khác hoặc b) tìm hiểu cách thêm ngôn ngữ kịch bản vào chương trình được viết bằng C.

Khi bạn đã học Tcl và C, hầu hết các ngôn ngữ khác nằm ở đâu đó giữa hai thái cực đó và tương đối dễ nhận. Danh sách đầy đủ của tôi, với bốn cái tôi sẽ dạy sau Tcl và C là:

  1. Tcl
  2. C
  3. Python - đối với các khái niệm OO, cộng với hành vi xác định khối-thụt để tương phản với các ngôn ngữ khác.
  4. Ruby - cho một cách khác về OO, cộng với đường ray để tìm hiểu về các khung
  5. java - nó được sử dụng ở mọi nơi, bạn cần biết nó và cần tìm hiểu về JVM
  6. Groovy - khoanh tròn trở lại ngôn ngữ động

1

Ngôn ngữ hội, C, SQL, C #

Tôi biết, nhàm chán và cũ kỹ. Và toàn bộ câu hỏi bỏ qua phần thực sự khó của lập trình, đó là giải quyết vấn đề, mô hình hóa miền và xây dựng thuật toán. Nhưng đây là lý do:

  1. bạn không thể giả mạo theo cách của bạn thông qua ngôn ngữ lắp ráp; bạn có thể nhận được nó hoặc bạn không. trình biên dịch sẽ không cứu bạn, không có chi phí khung hoặc thư viện và bạn không thể ẩn khỏi kiến ​​trúc máy; đó là lập trình thuần túy (ở cấp độ bổ sung hai số mới bắt đầu)

  2. sau khi bạn đã viết một vài chương trình hợp ngữ gồm hơn vài trăm dòng, con trỏ và quản lý bộ nhớ không còn bí ẩn nữa và bạn nên bắt đầu chú ý các mẫu trong mã (nếu, chuyển đổi, mảng, vòng lặp, v.v. ). C mang những hoa văn đó ra ngoài ánh sáng mặt trời và để chúng tỏa sáng. Thư viện chuẩn rất hữu ích mà không quá lớn, nhưng đừng bận tâm với macro / mẫu / v.v. ở giai đoạn này.

  3. bây giờ nhảy vào cơ sở dữ liệu với SQL. Đừng quá nhiệt tình với các thủ tục được lưu trữ, chỉ cần có được những điều cơ bản về bảng và truy vấn.

  4. sau khi bạn đã viết một vài chương trình C gồm hơn vài trăm dòng, con trỏ, cấu trúc và quản lý bộ nhớ là bản chất thứ hai và các cấu trúc thủ tục là những người bạn cũ. Bạn sẽ bắt đầu nhận thấy các mẫu bậc cao hơn: các hàm này luôn đi với cấu trúc dữ liệu này, phần mã này giống như phần mã đó ngoại trừ các phương thức X, Y và Z, v.v. Thêm vào đó là sự nắm bắt dữ liệu quan hệ của bạn và giờ bạn đã sẵn sàng cho một ngôn ngữ hướng đối tượng. Với một khuôn khổ lớn và tài liệu nói chung khó hiểu. Chào mừng đến với thế giới thực! Khám phá GUI, viết ứng dụng máy tính để bàn, viết trang web, viết dịch vụ web, viết bất cứ điều gì bạn thích. Đi kiếm việc nếu bạn rất có khuynh hướng.

Bây giờ bạn có phải là một Jedi lập trình không? Một ninja mã? Không , bây giờ bạn chỉ đơn thuần là có năng lực. Nhưng bạn có một nền tảng vững chắc để đứng trên để khám phá những thứ thú vị mới sáng bóng.


1

Bạn cần những nguyên tắc cơ bản:

  1. Mã máy
  2. Hợp ngữ
  3. C
  4. Lisp

Sau đó, nó có thể không quan trọng.


0

OK, đây là ngày cuối cùng cho tiền thưởng. Và tôi đang thêm câu trả lời của tôi. Trình tự đề xuất của tôi-

C, C ++, JAVA / C #, Python / Ruby, Bất kỳ ngôn ngữ nào khác (Hội / Lisp / Prolog, v.v.)

  • Tôi không nghĩ ngôn ngữ đầu tiên phải là ngôn ngữ dễ nhất. Thay vào đó tôi nghĩ rằng nó sẽ cung cấp cho ý tưởng tổng thể về cách thức hoạt động của máy tính giữ một số trừu tượng.
  • Việc chuyển từ C sang C ++ sẽ dễ dàng hơn. Sẽ có OOP, mô hình được sử dụng nhiều nhất trong những ngày này.
  • Việc chuyển đổi từ C ++ sang C # / Java sẽ dễ dàng hơn. Tôi thích C # vì nó kết hợp nhiều mô hình như lập trình chức năng.
  • Khi ai đó đến với các ngôn ngữ động như Python hoặc Ruby, sẽ có một " WoW ". Sẽ dễ dàng hơn để cảm nhận vẻ đẹp của gõ năng động. Nhưng học ngôn ngữ động trước và ngôn ngữ tĩnh sau sẽ gây ra, " Ồ! Tại sao tôi phải thêm tất cả những ngôn ngữ này? "
  • Bây giờ, các mô hình và ngôn ngữ được sử dụng nhiều nhất gần như đã được thực hiện. Vì vậy, khám phá bất cứ điều gì bạn muốn. Từ hội đến Lisp, Prolog hoặc Haskell. Và khám phá các bối cảnh mới hơn các tính năng của các ngôn ngữ lập trình khác nhau.

Ở đây C chỉ để bắt đầu.
Gul Sơn

Sở thích của C # trên java phụ thuộc vào nhiều yếu tố tôi sẽ nói cả hai gần như bằng nhau.
prasonscala

0

Sơ đồ, C, C ++

Tôi sẽ thiên vị và sử dụng mô hình mà trường đại học của tôi hiện đang sử dụng cho chương trình giảng dạy Khoa học Máy tính cốt lõi. Tôi đã chống lại nó trong năm đầu tiên của tôi nhưng trong những năm cuối đời tôi biết ơn vì điều đó. Mô hình dựa trên việc không yêu cầu bất kỳ kinh nghiệm lập trình nào nhưng đòi hỏi khả năng học hỏi.

  1. Đề án
    Chúng tôi là bạn là người đầu tiên học lập trình, càng ít phép thuật, càng tốt. Ngôn ngữ giảng dạy của Đề án trình bày một định nghĩa rõ ràng và hợp lý về một ngôn ngữ, một bộ tiên đề thực sự nhỏ ("ma thuật") mà bạn có thể xây dựng và mở rộng. Bất cứ ai có thể hiểu các hàm trong toán học đều có thể theo dõi và lập luận các chương trình Scheme. Bắt đầu với Scheme cung cấp một cách rõ ràng nhưng mạnh mẽ để suy nghĩ về tính toán mà không phải lo lắng về các chi tiết cụ thể của ngôn ngữ.

  2. C
    Chuyển từ Đề án sang C là một quyết định nhưng cho phép bạn tìm hiểu về ánh xạ rất quan trọng của ngôn ngữ cấp cao sang ngôn ngữ cấp thấp. Học mô hình bộ nhớ (con trỏ, heap, stack, v.v.) và cách các chương trình được biên dịch và chạy, cách con trỏ, ngăn xếp và heap làm việc là những kỹ năng cần thiết. Thông qua sự hiểu biết ở cấp độ thấp này, bạn có thể bắt đầu phân tích các chương trình ở cấp độ cao hơn (Big O). Bạn có thể bắt đầu cuộn các kiểu dữ liệu trừu tượng của riêng mình, chơi với các triển khai khác nhau (giả sử một bảng băm đơn giản so với cây nhị phân cho một tập hợp).

  3. C ++
    Thông qua việc học C và Scheme, chúng ta bắt đầu thấy các mô hình khác nhau của ngôn ngữ lập trình và cách chúng có thể áp dụng cho các vấn đề khác nhau. Bây giờ bạn có thể tiếp cận các khía cạnh đáng sợ nhất của lập trình: lựa chọn và đánh đổi. Lựa chọn ngôn ngữ lập trình có thể ảnh hưởng đến hiệu suất, khả năng đọc, khả năng duy trì, độ mạnh mẽ, v.v ... Để giải quyết các vấn đề lớn hơn những thứ bạn có thể giữ trong đầu, lựa chọn này rất tuyệt nhưng cũng nguy hiểm. C ++ cố gắng đưa ra càng ít sự lựa chọn cho lập trình viên càng tốt. Thông qua việc học C ++, bạn sẽ học được cách đánh đổi và tự mình lựa chọn để giải quyết vấn đề của mình.

Bạn có thể không sử dụng bất kỳ ngôn ngữ nào trong ngành này hoặc không bao giờ chạm vào chúng nữa, nhưng quá trình học chúng giúp bạn hiểu các ngôn ngữ khác mà bạn sẽ sử dụng. Một khía cạnh khác là bạn học các công cụ xung quanh một ngôn ngữ cụ thể. Chạy gcc thông qua dòng lệnh, học Vim, bước qua một chương trình bằng GDB, tạo Make file, kiểm tra mã bằng SVN, viết kịch bản shell để tự động kiểm tra, v.v.

Hãy nhớ rằng chương trình giảng dạy cốt lõi cũng có các khóa học khác (kiến trúc máy tính, cấu trúc dữ liệu và thuật toán, trình biên dịch, hệ điều hành, v.v.). Vì vậy, chỉ cần học những ngôn ngữ này là không đủ để thành thạo lập trình.


0

Đi từ một ngôn ngữ cơ bản lên một cấp độ cao là con đường để đi. Bằng cách đó bạn vẫn có một ý tưởng những gì xảy ra ở phía sau.

  • C - Con trỏ & quản lý bộ nhớ
  • C ++ - Khái niệm cơ bản về OO và vẫn rất phổ biến
  • Java / C # - Ngôn ngữ phổ biến nhất
  • Một số lắp ráp cơ bản
  • Ngôn ngữ chức năng - Ví dụ: Haskell
  • Ngôn ngữ script - Ví dụ: Python

0
  1. Con trăn. Để hoàn thành công việc, hãy lập trình bình thường. Thủ tục, OO và (đến một mức độ) chức năng.

  2. Biểu thức chính quy. Chúng nằm trong thư viện Python, nhưng nó là một DSL riêng.

  3. Shell (BASH hoặc bất cứ điều gì). "&", "|", ";" toán tử để kết hợp các quy trình là rất quan trọng và khó chịu trong Python.

  4. SQL. Đây là - hiện tại - ngôn ngữ chung để truy cập dữ liệu.

  5. XHTML. Đây là - bây giờ - ngôn ngữ chung để trình bày dữ liệu.

  6. CSS.

Có lẽ C nếu nó trở nên cần thiết.


Bạn dường như đã bỏ qua giai đoạn " giác ngộ sâu sắc ". Đó có phải là số 7 không?
Đánh dấu C

@Mark C: chỉ cố gắng bao quát "hầu hết các ngôn ngữ và mô thức được sử dụng nhiều hiện nay". Theo kinh nghiệm của tôi, các "khác" hoặc DSL này có lẽ được sử dụng nhiều hơn các ngôn ngữ lập trình. Tôi không chắc điều này dẫn đến sự giác ngộ sâu sắc - chỉ cần tiếp xúc với rất nhiều ngôn ngữ thực sự được sử dụng.
S.Lott

Bạn nói đúng, tôi thấy anh ấy đã nói như vậy, sau đó tôi nhận thấy anh ấy cũng nói "hay mô thức". Đó chỉ là sự hài hước.
Đánh dấu C

@Mark C: Nhưng SQL và CSS là "mô hình khác" thú vị nhất. Thật vậy, Biểu thức chính quy là một mô hình gây ra nhiều câu hỏi về Stack Overflow.
S.Lott

0

Bắt đầu gần với kim loại:

  1. Nhà lắp ráp
  2. C
  3. C ++
  4. C #
  5. Lisp
  6. Python hoặc Ruby

Bây giờ vấn đề với cách tiếp cận rộng như vậy là không ai có thể trở nên có khả năng từ xa trong các ngôn ngữ này mà không cần nhiều năm nghiên cứu.

  1. Nhà lắp ráp: 3 tháng
  2. C: 6 tháng
  3. C ++: 2 năm
  4. C #: 6 tháng
  5. Lisp: 3 tháng
  6. Python / Ruby: 3 tháng

Trừ khi mục đích của bạn là dạy họ "Xin chào thế giới", sẽ mất khoảng một tháng cho cả 6 người.


-1

Tại sao không đi thẳng vào và học VB hoặc C #. Cả hai theo tôi là các ngôn ngữ hoàn chỉnh từ người mới bắt đầu đến nâng cao, imho.


4
Bởi vì đó không phải là bất kỳ chiều rộng nào, và do đó không phải là một câu trả lời cho câu hỏi. Hơn nữa, nếu bạn nghĩ rằng một (hoặc cả hai) trong số đó bao gồm mọi thứ bạn nên học, bản thân bạn cần học nhiều ngôn ngữ hơn.
David Thornley
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.