Có bao nhiêu ngôn ngữ lập trình mà một lập trình viên dự kiến ​​sẽ là một chuyên gia? [đóng cửa]


21

Có phải hầu hết các lập trình viên chuyên về một ngăn xếp, để lại những thứ khác, hoặc họ là chuyên gia về nhiều ngôn ngữ cùng một lúc? Nếu nó nhiều hơn một, bao nhiêu là tiêu chuẩn?

Theo chuyên gia, ý tôi không chỉ đơn giản là biết cú pháp của ngôn ngữ - một chuyên gia biết đủ các thư viện, công cụ, môi trường và cú pháp tiêu chuẩn để có thể viết các chương trình không tầm thường mà không phải liên tục tra cứu hoặc đọc sách / hướng dẫn.


2
Tôi không nghĩ rằng có bất kỳ câu trả lời khách quan (hoặc thậm chí chủ quan) cho câu hỏi này. Bạn càng là một chuyên gia, bạn càng có lợi cho bạn - bạn càng có tầm nhìn rộng hơn. Ý của bạn là "Có bao nhiêu mô hình ngôn ngữ lập trình mà một lập trình viên nên là một chuyên gia lý tưởng?"
Talonx

6
Tôi không đồng ý với định nghĩa của bạn về chuyên gia. Đối với tôi, hay không, bạn phải tìm kiếm các chức năng thư viện là xa ít quan trọng hơn hay không, bạn có thể viết mã thành ngữ trong ngôn ngữ đó. Nếu bạn có thể nghĩ bằng ngôn ngữ, ít nhất bạn cũng gần như là một chuyên gia.
Chinmay Kanchi

1
Bạn nghĩ như thế nào trong một ngôn ngữ, nếu bạn phải tra cứu hầu hết các từ trong từ điển để biết nghĩa của chúng là gì?
blueberryfields

1
@blueberryfields: Thành thạo một ngôn ngữ không chỉ là từ vựng và ngoài những điều cơ bản, từ vựng là một phần nhỏ trong đó. Thật không tốt khi biết một chức năng tồn tại nếu bạn không thể làm điều gì đó thông minh với kiến ​​thức đó. Việc tìm kiếm chức năng dễ dàng hơn nhiều so với việc tìm ra cách làm một cái gì đó thông minh với nó. Tôi sẽ nói rằng việc biết các tài liệu đủ tốt để nhanh chóng biết nơi tìm kiếm một chức năng nhất định nếu nó tồn tại là đủ kiến ​​thức thư viện. Sau đó, bạn sẽ nhớ chính xác những cái bạn sử dụng và nhớ một cách mơ hồ những cái bạn không sử dụng.
aaronasterling

2
@blueberryfields: Tùy thuộc vào ngôn ngữ / nền tảng , một chút kiến ​​thức có thể là một điều nguy hiểm . Ý tôi là: nếu một người tuyên bố biết nhiều chức năng của thư viện và không cần đọc tài liệu, tôi sẽ mong người đó cũng biết tất cả các giá trị trả về, điều kiện ngoại lệ và cạm bẫy / cảnh báo, à Raymond Chen bằng trái tim, và có thể viết một cuốn sách và giảng bài cho Microsoft / Google, v.v. Nói tóm lại, người đó cuối cùng đã phạm phải nhiều lỗi nhỏ buồn cười.
rwong

Câu trả lời:


33

Lợi ích chính của việc biết nhiều ngôn ngữ không phải là viết chúng trực tiếp. Tất cả những thứ khác đều bằng nhau, tôi thà làm việc với một lập trình viên C #, người cũng biết C, Python và Lisp (ví dụ) hơn là một người chỉ bị hack trong C #. Không phải là biết nhiều ngôn ngữ là tốt hơn, mà là có thể suy nghĩ về các vấn đề ở nhiều cấp độ và từ nhiều khía cạnh thực sự hữu ích.

Một ngôn ngữ lập trình không thay đổi cách bạn nghĩ về lập trình là không đáng để biết. -Alan Perlis

Đó không phải là kiểm tra thêm một ngôn ngữ, hoặc đưa nó vào sơ yếu lý lịch của bạn; bạn chỉ cần hiểu các khái niệm cơ bản của nó đủ tốt để lập trình trong đó để có được lợi ích đầy đủ. Bạn sẽ không có được điều đó từ việc có một sự hiểu biết cơ bản về cú pháp.

Câu trả lời trực tiếp hơn là "nó phụ thuộc".

Tại các công ty lớn hơn mà bạn mong đợi / được phép chuyên môn hóa, nhưng như tôi đã nói ở trên, tôi tin rằng vẫn có lợi khi hiểu những điều ngoài một công cụ yêu thích của bạn.

Ở những nơi nhỏ hơn, bạn thực sự không thể thoát khỏi điều đó. Nếu không có gì khác, bạn thường cần duy trì ứng dụng của mình cũng như xây dựng nó và có lẽ bạn không nên sử dụng cùng một ngôn ngữ để chạy qua nhật ký / dữ liệu giống như bạn thực sự xây dựng ứng dụng của mình. Tôi đoán rằng về mặt kỹ thuật bạn có thể thoát khỏi việc biết một ngôn ngữ duy nhất, nhưng lợi ích của việc có một ngôn ngữ được thực hiện tốt, được gõ mạnh (hoặc ít nhất là có khả năng khẳng định), có thể là ngôn ngữ được biên dịch nặng, và ngôn ngữ kịch bản để duy trì / nhiệm vụ thiết lập / kịch bản có vẻ khá lớn. Tôi sẽ không muốn làm mà không có nó, chắc chắn.


3
vâng, nó cũng mở rộng tầm nhìn của tôi - suy nghĩ bằng nhiều ngôn ngữ để giải quyết vấn đề
maz3tt

3
+1 cho tất cả Inaimathi nói. Hãy nghĩ về một ngôn ngữ lập trình như một công cụ. Vâng, chúng tôi cần biết công cụ của chúng tôi rất rõ nhưng khi bạn chỉ biết sử dụng búa thì mọi thứ có thể trông giống như một cái đinh
Liviu T.

14

Bạn có một câu hỏi rất thú vị:

Tôi không nghĩ rằng bất kỳ lập trình viên nào cũng phải là một "chuyên gia" về một ngôn ngữ cụ thể. Tôi tin rằng với tư cách là lập trình viên, chúng tôi có nghĩa là chuyên gia lập trình, thiết kế thuật toán, suy nghĩ theo các bước rõ ràng, nhưng ngôn ngữ lập trình là thứ mà bạn chỉ cần học.

Một lập trình viên "tốt", tốt, ý tôi là xử lý các dự án phát triển mà không sợ đằng sau câu nói kinh điển "Tôi chưa bao giờ làm việc với điều đó trước đây", nên học một ngôn ngữ trong vòng chưa đầy 5 ngày làm việc. Bạn học các thực tiễn, công cụ và thư viện tốt nhất chủ yếu từ 2 cách, 1: đọc và 2: làm việc. Hoặc là bạn ngẩng đầu lên chống lại mã hoặc đọc một loạt sách.

Trong một vài năm sau phần mở đầu của "Lập trình viên giỏi chỉ viết mã" không có mã C # hoặc mã C ++ hoặc mã Java, bạn sẽ nhận ra rằng sau khi bạn học phát triển chương trình, ngôn ngữ và công nghệ học không quan trọng. Chắc chắn, bạn sẽ biết cách di chuyển xung quanh C # tốt hơn PHP, nhưng nếu bạn đã học tốt, bạn sẽ tìm thấy Python thông qua nếu bạn phải.

Hy vọng ý tưởng của tôi như bạn!


+1 "lập trình viên giỏi chỉ viết mã ... ngôn ngữ và công nghệ không quan trọng" - rất đúng, cần rất nhiều sự tiếp xúc để đi đến kết luận đó.
Orble

Thks, và bạn đã hiểu đúng: 11 năm và đếm ... :)
David Conde

3

Một, nhưng điều đó không có nghĩa là bạn có thể bỏ bê những người khác. Bạn phải biết đủ để biện minh cho lý do tại sao bạn không sử dụng chúng hoặc biết những hạn chế của mình, để bạn có thể yêu cầu trợ giúp khi thích hợp.


3

Tôi nghĩ rằng nó có thể phụ thuộc vào tính cách của bạn, có những người say sưa đào sâu vào các ngõ ngách của một chủ đề, và có những người khác muốn có cái nhìn bao quát về mọi thứ. Bạn có thể sẽ cần phải tìm ra loại tính cách của bạn. Tôi không đặt cái này lên trên cái kia có công dụng của chúng.

Như trước đây bạn sẽ là chuyên gia, guru, chuyên gia. Vì sau này, bạn sẽ được sử dụng chung hơn và có thể được sử dụng trong nhiều tình huống nhưng có thể không đi sâu hoặc dài vào một chủ đề.



2

Một

Người trước mặt bạn.


1
+1 Số lượng ngôn ngữ bạn cần phải là chuyên gia tối thiểu là số lượng ngôn ngữ bạn phải sử dụng. ;-)
Orble

1

Như Joel đã nói trong podcast SO, tốt hơn là nên biết nhiều ngôn ngữ và biết cách / thời điểm sử dụng ngôn ngữ phù hợp cho nhiệm vụ. Có những thứ bạn có thể làm nhanh hơn trong một ngôn ngữ so với ngôn ngữ khác. Tôi nghĩ rằng sẽ tốt khi biết một ngôn ngữ bắt buộc và một ngôn ngữ chức năng chẳng hạn. Nhiều lần học một ngôn ngữ khó hơn hoặc bí truyền hơn sẽ rèn luyện bộ não của bạn để trở thành một lập trình viên giỏi hơn.


1

Không có khả năng một số lập trình viên sẽ không trở thành chuyên gia trong bất kỳ ngôn ngữ nào nhưng họ thích môi trường đa dạng họ có và sẽ sử dụng các ngôn ngữ khác nhau tùy theo hoàn cảnh vì một số người có thể biết một số công nghệ phía máy chủ như PHP, ASP.Net trong C # .Net hoặc VB.Net hoặc Java, một vài ngôn ngữ kịch bản phía máy khách như JavaScript hoặc Flash, và điều này không có trong bất kỳ phần cứng nào được sử dụng để đưa lên các công cụ web ở đây.

Đồng thời, có thể có một số lập trình viên là chuyên gia trong hàng tá ngôn ngữ hoặc nhiều hơn vì đó là những gì họ nghiên cứu khá trung thành hầu hết thời gian để theo kịp rất nhiều ngôn ngữ.


1

Một, nhưng phải có khả năng đọc các chương trình trong thế giới thực không tầm thường được viết bằng một vài ngôn ngữ khác theo thời gian. Theo một cách nào đó, người mà lập trình viên là một chuyên gia giống như tiếng mẹ đẻ của họ, họ nghĩ về điều đó, nhưng việc học và nói các ngôn ngữ khác rất tốt ở chỗ nó cho thấy lập trình viên có thể đánh giá cao những cách nghĩ khác. Nếu họ có thể nghĩ bằng nhiều ngôn ngữ trôi chảy như tiếng mẹ đẻ thì điều đó thật tuyệt vời.


1

Đây là một câu hỏi hay, nhưng tôi không nghĩ có một tiêu chuẩn. Thông thường bởi những gì tôi đã thấy mọi người là chuyên gia đầy đủ trong một ngôn ngữ cấp cao (C ++, Java, v.v.) trong một môi trường (windows / linux, mac, solaris). Họ biết đại khái một số ngôn ngữ cấp cao khác nhưng không hiểu đầy đủ về nó. (ví dụ C ++, người Java biết nhau một cách thô bạo). Theo tôi, đại khái là họ có thể so sánh hiệu suất của một nhiệm vụ trong ngôn ngữ mà họ là chuyên gia và trong ngôn ngữ khác. Và sau đó họ vừa phải trong một số ngôn ngữ kịch bản. (ví dụ người Linux biết bash, người Windows biết VBA, người web biết PHP).
Đối với tôi điều quan trọng là kiến ​​thức thuật toán cơ bản hơn ngôn ngữ. Nếu những điều cơ bản của bạn là tốt, sẽ có ít cơ hội để gây rối trong bất kỳ ngôn ngữ nào.
Nhưng vâng, đôi khi có thể hữu ích để biết ngôn ngữ nào có thể tốt hơn cho nhiệm vụ nào. ví dụ mã sau trong pascal nhanh hơn nhiều so với C.

strcat (A, "Xin chào"); strcat (A, "WOrld"); strcat (A, "Tôi nói xin chào!");

Điều này là do Pascal lưu chiều dài của chuỗi ở vị trí đầu tiên và do đó rất dễ dàng để chuyển đến vị trí cuối cùng. Trong C, kết thúc chuỗi là '\ 0' và do đó bạn thực sự sẽ phải duyệt toàn bộ chuỗi cho hoạt động strcat.


0

Nó phụ thuộc vào môi trường nơi bạn lập trình. Ở một công việc trước đây, hầu hết công việc của tôi là ở Perl; trong thời gian ở đó tôi đã khá thành thạo về nó. Bây giờ tôi làm việc tại một nơi có các chương trình kế thừa bằng ba ngôn ngữ mà tôi hầu như không biết cú pháp; Tôi dự kiến ​​sẽ duy trì chúng ngoài công việc của tôi trong các dự án mới. Bây giờ tôi không phải là bậc thầy của bất kỳ ngôn ngữ nào, nhưng tôi nghĩ rằng tôi đã cảm thấy tốt hơn cho việc lập trình . Tôi đã học cách suy nghĩ trừu tượng hơn, trước tiên hãy xem bức tranh lớn và sau đó tìm kiếm cú pháp và các thư viện để điền chi tiết.

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.