Lập trình viên quên cú pháp


17

Các lập trình viên giỏi có cần phải có cú pháp ở đầu lưỡi khi viết mã không? Bạn làm gì với họ nếu họ google cho những thứ đơn giản trực tuyến? Họ tốt hay xấu (có thể họ biết tìm ở đâu)? Lập trình viên có nên có một trí nhớ tốt? Đây có phải là một đặc điểm cho một lập trình viên tốt?


1
Tùy thuộc vào cách "đơn giản". Một số ví dụ / hình nền sẽ hữu ích. Nó cũng có thể là một vấn đề không nhất quán với ngôn ngữ / môi trường họ đang lập trình.
rwong

1
Tôi nghĩ đó sẽ là một phần trong định nghĩa của một lập trình viên giỏi, vì nó rơi vào tình trạng nhanh \ hiệu quả. Nếu bạn không thể viết một dòng mã với một tư vấn tham khảo, bạn sẽ không hoàn thành công việc kịp thời. Mặt khác, đó không phải là một cuộc gọi để ghi nhớ mọi thứ.
stonemetal

Trong C ++, tôi thường phải tìm kiếm cú pháp cho các hàm con trỏ (thành viên hay không) vì tôi sử dụng nó không thường xuyên ... có lẽ đôi khi cú pháp chỉ là lạ ?
Matthieu M.

Câu trả lời:


25

Triết lý của tôi về lập trình là đó là "trạng thái của tâm trí" và phần còn lại là "chỉ là cú pháp". (tức là không (như) quan trọng)

Điều đó nói rằng, người ta không cần phải tìm kiếm những thứ đơn giản. Ít nhất, không dành cho (các) ngôn ngữ bạn làm việc thường xuyên. Không có gì sai khi cần người làm mới và biết cách tìm thông tin chắc chắn là một kỹ năng tốt cần có. Tuy nhiên, cú pháp cốt lõi chắc chắn nên được biết đến. Nếu không, bạn dành quá nhiều thời gian để tìm kiếm và quá ít thời gian để lập trình.


8
Chính xác, giống như một ngôn ngữ nói: bạn phải biết cách nói nó, nhưng từ điển là sự trợ giúp tuyệt vời. Thông thường, bạn biết những gì bạn muốn diễn đạt trước khi bạn có từ vựng!
Kevin Cantu

@Kevin - Chính xác - nhưng bạn cũng có thể đánh giá sự lưu loát của ai đó bằng tần suất họ thực hiện các tài liệu tham khảo đó. Hầu hết chúng ta thỉnh thoảng sẽ sử dụng chúng nhưng bạn sẽ hỏi ai đó nói rằng họ có thể nói một ngôn ngữ nhưng cảm thấy cần phải liên tục tham khảo từ điển.
Jon Hopkins

@jon Chính xác. Tiếp tục ẩn dụ ngôn ngữ nói / viết, với một số nỗ lực, chúng tôi có thể tăng khả năng tiếp xúc với ngôn ngữ và cải thiện vốn từ vựng của chúng tôi. Do đó tôi rất thích đọc sách và tiếp tục tìm kiếm một ứng dụng thẻ flash iPhone tốt. Tương tự như vậy đối với các ngôn ngữ lập trình, khi tôi gặp rắc rối với một thành ngữ cụ thể, tôi tạo một đoạn mã thể hiện nó và giữ nó ở gần để dễ dàng tham khảo. Và, tất nhiên, tôi thỉnh thoảng xem lại những vấn đề đó. Phải mất một thời gian, nhưng cuối cùng tôi đã ghi nhớ câu lệnh chuyển đổi phiền phức theo cách này.
George Marian

Tôi nghĩ rằng một nhà phát triển 'tiên tiến' hơn cũng có khả năng sẽ có nhiều ngôn ngữ trong vành đai của họ và đôi khi sẽ khiến họ nhầm lẫn. Thỉnh thoảng tôi vẫn nhầm lẫn giữa việc khai báo một mảng nhiều chiều giữa C # và C ++ (đó là "mảng [] [] hoặc mảng [,]") và phải tìm kiếm nó.
Steven Evers

28

Nó phụ thuộc vào ý của bạn, nhưng câu trả lời ngắn gọn là có.

Có phải các lập trình viên sẽ quên một dấu chấm phẩy hoặc một dấu ngoặc ở đây và đó? Chắc chắn rồi. Họ sẽ tìm kiếm cú pháp của một câu lệnh chuyển đổi bởi vì họ có thể hiếm khi sử dụng nó? Vâng, tôi làm. Tôi sẽ làm việc với ActionScript nhưng thay vào đó hãy viết nó như Java? Chắc chắn rồi. Có thể mất một chút thời gian để làm quen với việc gõ một ngôn ngữ mới, đặc biệt nếu bạn đã làm việc với một ngôn ngữ khác trong nhiều năm.

Mối quan tâm thực sự là nếu một lập trình viên không thể tạo ra các đầu hoặc đuôi cú pháp ngay cả với một IDE giúp họ giải quyết. Nếu người đó không biết dấu chấm phẩy dùng để làm gì, hoặc những cái niềng răng lạ mắt đó là gì, thì họ phải nghiên cứu thêm.


8
Heh, cú pháp chính xác của câu lệnh switch cũng thường mang lại cho tôi sự đau buồn.
George Marian

Đó là lý do tương tự tôi dính vào kịch bản Python, ngay cả khi tôi thích Ruby. Tôi phải viết mã bằng Python tại nơi làm việc và việc qua lại sẽ quá khó hiểu.
LennyProgrammer

+1 cho cú pháp câu lệnh chuyển đổi - nó chỉ khó nắm bắt vì một số lý do
billy.bob

5
Chưa kể vô số ngôn ngữ mà người ta biết và cú pháp đôi khi có thể hòa trộn với nhau.
Josaph

@dave Tôi nghĩ vấn đề là sự pha trộn của các biểu tượng. Nó thường switch, theo sau là một cái gì đó trong ngoặc đơn, sau đó là một dấu ngoặc mở, sau đó casevới một nhãn không nằm trong ngoặc đơn, sau đó là dấu hai chấm, sau đó các câu lệnh thường được kết thúc bằng dấu chấm phẩy. Và, đừng quên, các breaktuyên bố. Chính nhờ nỗ lực và ý chí mạnh mẽ mà cuối cùng tôi đã ghi nhớ nó và thỉnh thoảng tôi vẫn phải kiểm tra lại; chỉ để chắc chắn.
George Marian

10

Tôi chắc chắn sẽ ngạc nhiên nếu một lập trình viên giỏi khác phải thường xuyên tìm kiếm cú pháp cho một ngôn ngữ mà họ thông thạo. Tất nhiên có thể có những trường hợp góc không thực sự được sử dụng nhiều trong thực tế để nó có thể được chấp nhận hoàn toàn để một lập trình viên giỏi không biết họ, nhưng theo nguyên tắc chung, một lập trình viên thông thạo không cần phải tra cứu cú pháp. Anh ấy phải tra cứu các chức năng và các lớp từ các thư viện :)


+1. Tôi sẽ xem xét bản thân mình thông thạo C ++ và tôi tìm kiếm các tên hàm và đối số hàng ngày . Tôi sẽ không bao giờ ghi nhớ mọi thành viên std::string, ví dụ.
Kristo

8

Nếu bạn đang ở một vị trí mà bạn thay đổi ngôn ngữ thường xuyên hoặc làm việc bằng 3 hoặc 4 ngôn ngữ cùng một lúc thì bạn không thể làm được gì nhiều về điều đó. Trong một thời gian, cuối cùng tôi đã làm việc với các dự án đòi hỏi phải chuyển đổi liên tục và bắt đầu tự coi mình là một "lập trình viên tham khảo", phải tìm kiếm nhiều thứ hơn tôi muốn.


4
+1 Hoàn toàn đồng ý. Các lập trình viên nhảy giữa các ngôn ngữ với tốc độ các nút thắt (tôi có thể có 10 ngôn ngữ trở lên trong một ngày kéo dài nhiều dự án) cuối cùng gặp khó khăn khi nhớ các khác biệt mơ hồ giữa các ngôn ngữ tương tự, đặc biệt là trong các chức năng thư viện tiêu chuẩn. Điều này trở nên tồi tệ hơn khi bạn già đi tôi đã nhận thấy.
Orble

Đây là vấn đề của tôi, chúng tôi đang chuyển qua rất nhiều thứ trong công việc đôi khi tôi không thể nhớ được những điều cơ bản. Đặc biệt là vì tôi thường chỉ có thể sử dụng bối cảnh, ai đó đã viết một vòng lặp for hoặc hàm gần đó, tôi chỉ cần sao chép cú pháp đó. Gần đây tôi đã buộc bản thân phải học cú pháp, chỉ dựa vào thực hành để khiến tôi ghi nhớ nó là không đủ. Tôi đã chọn một ngôn ngữ (Javascript) để nghiền cú pháp vào não. Nó đang giúp rất nhiều, đặc biệt là với thực hành phỏng vấn bảng trắng.
Jemmeh

5

Tôi đã viết C ++ được 15 năm, nhưng tôi vẫn không biết một số góc cú pháp phức tạp của nó.
Làm thế nào để bạn rõ ràng khởi tạo lại một mẫu chức năng? Và cú pháp để chuyên môn hóa một phần mẫu có đối số mẫu-mẫu là gì? Và đừng để tôi bắt đầu về việc khai báo một hàm trả về một con trỏ tới một mảng các con trỏ tới các hàm đưa các mảng của con trỏ tới ...

Tôi nghi ngờ có nhiều nhất một hoặc hai chục người trên thế giới này (nếu có chút nào), những người thực sự biết tất cả cú pháp của C ++. Và đây có lẽ là tất cả kiếm được tiền của họ bằng cách viết các mặt trận trình biên dịch C ++.


4

Tôi tò mò về "cú pháp" của Google ở ​​đây.

Sự nghi ngờ của tôi (và nỗi sợ hãi) là chúng tôi không nói về những thông số mà một cuộc gọi thực hiện (vì hầu hết các IDE sẽ nhắc bạn ở đó để bạn không Google chúng) nhưng thực tế là "cách thực hiện X".

Các IDE đã khiến nó không cần thiết phải ghi nhớ các tên và danh sách tham số chính xác theo cách đã từng được yêu cầu và điều đó khiến nhiều người hơi lười biếng về điều đó nhưng điều đó vẫn ổn.

Nhưng cái gì bạn cần cho Google? Đối với tôi đó thường không phải là cú pháp, đó chỉ là thứ bạn không thực sự biết hoặc chỉ quen thuộc với nó.

Tất nhiên, điều đó không sai khi nói về Google - ngôn ngữ có thể khá rộng trong những ngày này và ít người biết tất cả mọi thứ nhưng tôi sẽ nói rằng nếu bạn tuyên bố là có khả năng với ngôn ngữ thì Google nên là ngoại lệ thay vì quy tắc .

Đối với tôi trừ khi bạn làm điều gì đó tương đối khác thường hoặc có lẽ bạn đang say sưa với ngôn ngữ sau một thời gian làm điều gì đó khác biệt, nếu bạn tuyên bố "biết" một ngôn ngữ, bạn không nên làm phiền hơn 10% nội dung nhiều nhất, và đó phải là thứ thực sự khá cụ thể.

Liên quan đến ý tưởng rằng đây là về một bộ nhớ tốt, nó không thực sự. Đó là về loại cảm giác bản năng mà bạn có được cho một cái gì đó bạn thực sự (chứ không phải là bề ngoài) biết. Tôi không xem xét thực tế tôi biết cách nấu Melanzane Parmigiana mà không có công thức là một dấu hiệu cho thấy tôi có một trí nhớ tốt, đó là một dấu hiệu cho thấy tôi hiểu cách nấu món ăn đó - chúng là những thứ khác biệt.

Bên cạnh đó, hãy tự hỏi điều này, bạn có muốn vào bếp nhà hàng và thấy đầu bếp liên tục nhìn vào một cuốn sách nấu ăn không? Hoặc để xem các thợ máy làm việc trên chiếc xe của bạn lướt qua hướng dẫn Hayes cho mô hình đó? Nếu tôi thấy một trong những điều đó tôi sẽ cảm thấy khó chịu về việc người đó tốt như thế nào.


Bình luận cho phiếu bầu xuống? Tôi thực sự quan tâm đến những gì bất đồng là.
Jon Hopkins

+1 - Cuộc gọi tốt trênsyntax != api
Jeremy Heiler

3

Ý kiến ​​của tôi là Không. Đây không phải là cú pháp quan trọng mà là logic của bạn trong việc giải quyết vấn đề hoặc đạt được mục tiêu Nếu bạn cho rằng làm việc trên nhiều ngôn ngữ thì đôi khi bạn không nhớ chính xác cú pháp.


0

Cú pháp chỉ là chế độ xem trên ngữ nghĩa cơ bản của ngôn ngữ vì lập trình là tất cả về việc sử dụng các khối ngữ nghĩa cơ bản để xây dựng một cái gì đó. Nếu bạn không hiểu các khái niệm cơ bản mà ngôn ngữ sử dụng thì việc bạn ghi nhớ cú pháp tốt đến mức nào, mã của bạn sẽ là một mớ hỗn độn khủng khiếp. Như ai đó đã từng nói, "Lập trình viên giỏi có một trình thông dịch và trình biên dịch trong đầu." Lưu ý cách không có đề cập đến cú pháp bởi vì đó không phải là nơi công việc thực sự xảy ra.

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.