Tại sao nó luôn luôn là ngôn ngữ mà tôi nên học tiếp theo [đóng cửa]


14

Tại sao những lập trình viên mới bắt đầu (như tôi) luôn hỏi về ngôn ngữ tiếp theo mà họ nên học thay vì hỏi về dự án tiếp theo để giải quyết?

Tại sao Eric Raymond, trong phần " Tìm hiểu cách lập trình " trong bài tiểu luận " Làm thế nào để trở thành một hacker ", nói về thứ tự bạn nên học ngôn ngữ (so với thứ tự bạn nên giải quyết các dự án).

Những người thợ mộc bắt đầu hỏi "Tôi biết cách sử dụng búa ... tôi nên học cách sử dụng cưa hay cấp độ tiếp theo?"

Tôi hỏi vì tôi thấy rằng hầu hết các dự án có ý nghĩa tôi đang quan tâm đến việc giải quyết (ví dụ như một ứng dụng web, một bộ công cụ phân tích poker) đòi hỏi mà tôi học vừa đủ của một vô số ngôn ngữ (Python, C, HTML, CSS , Javascript, SQL) và các khung / thư viện (wxPython, tkinter, Django) để thực hiện chúng.

Cảm ơn,

Mike


5
Điều này có vẻ hơi ... khó chịu, thành thật mà nói. Có lẽ bạn có thể loại bỏ những ẩn ý và chỉ để lại câu hỏi của bạn?
Anon.

4
Tôi nghĩ rằng bạn đang không khớp các bước theo thời gian. Điều lạ lùng là người thợ mộc đã biết cách sử dụng những công cụ đó, nếu anh ta biết cách đóng khung cửa. Nhưng trước đó trong cuộc đời, anh ta cũng đi theo con đường mà tôi nên điều tra tiếp theo.
CrazyPenguin

Nhận xét công bằng re: ranty ... sẽ mang tính giải trí. Xin lỗi nếu nó đi qua như là ranty.
MikeRand

4
Ngôn ngữ lập trình để so sánh công cụ cầm tay không phải là một so sánh rất tốt. Nó có vẻ có ý nghĩa bề ngoài, nhưng sụp đổ nhanh chóng và cuối cùng có hại hơn là hữu ích. Ngoài ra, quá nhiều người đối xử với nó như nó là một sự thật không thể nghi ngờ. Anh chàng này làm một công việc tốt phác thảo một số lý do tại sao nó không hoạt động. journal.dedasys.com/2007/12/12/...
Nick Knowlson

Tôi thích câu hỏi này ...!
Michael K

Câu trả lời:


6

Tôi nghĩ rằng khi hầu hết mọi người bắt đầu học một ngôn ngữ, họ làm như vậy bởi vì họ muốn giải quyết một dự án được viết bằng ngôn ngữ đó, ngay bây giờ hoặc trong tương lai. Để làm như vậy, họ phải học ngôn ngữ đó, cần có thời gian. Ngôn ngữ lập trình giống như các công cụ, nhưng trong khi bạn có thể học cách sử dụng búa trong khoảng sáu mươi giây, các ngôn ngữ mất nhiều thời gian hơn để học cách sử dụng; do đó, nhiều người tập trung vào việc học một ngôn ngữ trước khi họ tập trung vào làm việc với một dự án được viết bằng ngôn ngữ đó.

Một lưu ý khác, tôi nghĩ khi hầu hết mọi người hỏi nên học ngôn ngữ nào tiếp theo, họ thực sự đang nghĩ về dự án nào sẽ học tiếp theo, nhưng họ tập trung vào việc học ngôn ngữ trước.

Cuối cùng, việc học ngôn ngữ có thể rất thú vị , mặc dù bạn không có dự án hay mục tiêu cụ thể nào trong đầu.


6
  • Động lực của nhiều nhà phát triển toàn thời gian là có việc làm hơn.

  • Được tuyển dụng nhiều hơn thường có nghĩa là vượt qua rào cản của sàng lọc nhân sự (và sau đó vượt qua rào cản của cuộc phỏng vấn thực tế).

  • Trình sàng lọc nhân sự điển hình thường có một danh sách kiểm tra các ngôn ngữ có thể phù hợp với sơ yếu lý lịch, nhưng không có cách nào để đánh giá các kỹ năng hoặc dự án.

  • Thành công trong một cuộc phỏng vấn thực tế thường phụ thuộc nhiều vào may mắn và các kỹ năng tối thiểu trong ngôn ngữ hơn là kinh nghiệm và sự hiểu biết sâu sắc về ngôn ngữ.

Do đó, trở nên tầm thường trong nhiều ngôn ngữ sẽ tốt hơn cho việc làm hơn là một chuyên gia trong một số ít, trừ khi một người đang ứng tuyển vào các vị trí cấp cao.


Đáng buồn thay để vượt qua màn hình nhân sự, bạn phải cung cấp danh sách các từ buzz trong ngày. Quy trình sàng lọc nhân sự là một bộ lọc khóa học sẽ bỏ lại nhiều ứng viên đủ điều kiện.
Jeff

1
@Jeff, từ những gì tôi đã nghe về sàng lọc nhân sự, tất cả những gì họ muốn là cắt giảm số lượng hồ sơ xuống mức có thể quản lý và họ áp dụng nhiều bộ lọc tùy ý, như "bin nếu hơn 2 trang".
Dominique McDonnell

2

Các lựa chọn lập trình tương tự cho thợ mộc sẽ là "Tôi nên xây dựng ứng dụng nào tiếp theo?" hoặc "Tôi nên xây dựng hệ thống nào tiếp theo?" vốn khá hợp lệ và tách biệt với một dự án thực sự có thể được áp dụng gần như phổ biến. Tôi có thể có một dự án để thay đổi chế độ ăn uống của mình hoặc mất 20 lbs dễ dàng như tôi có thể có một cái gì đó yêu cầu một số phần mềm mới được viết để gắn kết mọi thứ lại với nhau.

Để trả lời câu hỏi, tôi tin rằng ý tưởng là một ngôn ngữ đại diện cho một công cụ trong hộp công cụ của người đó có thể hữu ích trong sơ yếu lý lịch. Một số người có thể chọn trở thành lập trình viên để thanh toán hóa đơn và nếu vậy, họ có thể hỏi họ nên thêm công cụ nào tiếp theo thường là ngôn ngữ nhưng có những khả năng khác như học về triển khai, kiểm soát nguồn, kiểm tra và phương pháp phát triển kể tên một vài lĩnh vực khác Nếu một thợ mộc phải tiết lộ những công cụ anh ta có thì anh ta có thể có một quan điểm tương tự tôi sẽ tranh luận. Tuy nhiên, có một bộ công cụ chung mà hầu hết các thợ mộc được cho là có hoặc có quyền truy cập để có được nếu được yêu cầu khá nhanh. Bạn đã bao giờ thấy có bao nhiêu loại cưa và búa khác nhau ngoài kia để mọi người sử dụng chưa?


1

Có lẽ đó là một phần về tâm lý của hacker, ít nhất là đối với một số lập trình viên. Hacker được định nghĩa trong tệp Jargon

"Một người thích khám phá các chi tiết của các hệ thống lập trình và cách mở rộng khả năng của họ, trái ngược với hầu hết người dùng, những người chỉ thích tìm hiểu mức tối thiểu cần thiết."

Vì vậy, đối với một linh hồn hacker, nó tập trung vào việc học và "mày mò" với quy trình, khái niệm, công cụ và vâng, ngôn ngữ tạo ra thứ gì đó, hơn là chính sản phẩm cuối cùng. Thêm về quá trình chính nó.

Đó là một nỗ lực không ngừng cho điều mới và / hoặc thử thách tiếp theo. Dự án hoàn thành mất đi sự hấp dẫn nhanh chóng. Đôi khi (hầu hết thời gian?) Những thách thức sáng tạo hoặc kỹ thuật lớn nhất được chinh phục trước khi hoàn thành dự án. Nhiều dự án bị bỏ rơi, khi một tâm trí khao khát những thách thức tinh thần mới tiến về phía trước.

Đặc biệt là tin tặc quan tâm đến các quan điểm, khái niệm, trừu tượng và cách suy nghĩ mới, loại hack tinh thần:

"Một ngôn ngữ không ảnh hưởng đến cách bạn nghĩ về lập trình, không đáng để biết." - Alan Perlis


0

Ngày nay, có rất nhiều ngôn ngữ crappy được sử dụng phổ biến: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic, v.v. Các lập trình viên bù đắp cho sự hấp dẫn vốn có của các ngôn ngữ này bằng cách học và trộn nhiều ngôn ngữ đó cùng với nhau.

Có một cộng đồng nhỏ được gọi là cộng đồng Lisp không có sự điên rồ tràn ngập điện toán hiện đại.

Vì Lisp là ngôn ngữ lập trình có thể lập trình, bạn có thể diễn đạt tất cả các ý tưởng của mình trong đó mà không cần phải đi lạc sang các ngôn ngữ khác hoặc các định dạng dữ liệu khác như XML. Lisp có thể được áp dụng ở mọi nơi, thậm chí đến mức phần cứng như chúng ta đã thấy với các máy Lisp .


Bạn phải biết càng nhiều ngôn ngữ khác nhau càng tốt để mã hóa trong Lisp một cách hiệu quả. Nếu không, bạn sẽ kết thúc việc phát minh lại bánh xe thay vì chỉ ăn cắp các khái niệm và ý tưởng phù hợp từ các ngôn ngữ khác và thực hiện chúng trên đầu Lisp.
SK-logic

Đồng ý với cảm nhận của bạn về sức mạnh của Lisp, nhưng không đồng ý rằng việc học các ngôn ngữ khác là vô ích: hầu hết các thủ thuật tôi sử dụng trong Lisp đều tích cực khai thác những gì tôi học được từ các ngôn ngữ khác (cho dù là mô hình hoặc chống mẫu ...)
mikera

0

Bởi vì học một ngôn ngữ lập trình mới là một khoản đầu tư lớn, và không ai thích đầu tư xấu.
Học một ngôn ngữ lập trình mới không phải là ghi nhớ cách viết các cấu trúc vòng lặp, khai báo các lớp, nhập một mô-đun khác ...
Bạn phải biết cách viết một mã thành ngữ trong ngôn ngữ đó và quá trình này thực sự tốn một lượng thời gian và tâm huyết đáng kể .
Thời gian là một nguồn lực hạn chế, nỗ lực là một nguồn lực hạn chế nhưng mất tập trung, căng thẳng hàng ngày, hóa đơn và các trò chơi thể thao vào Chủ nhật luôn ở đó và phải sống cùng.
Lập trình viên muốn đầu tư khôn ngoan.

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.