Kỹ năng C ++ cao hơn kỹ năng C? [đóng cửa]


28

Tôi cảm thấy rằng C / C ++ thường thấy không thực sự mô tả các kỹ năng của tôi trong CV. Vì vậy, tôi dự định tách nó thành kiến ​​thức C ++ nâng cao và các kỹ năng C tầm thường.

Bạn có nghĩ rằng điều này gây nhầm lẫn cho người đọc? Cô có thể nghĩ: "C là một tập hợp con của C ++, vậy anh chàng này đang cố gắng gọi điện cho tôi là gì?" Chà, điều tôi đang cố nói là: Tôi đã thực hiện một số dự án C ++ trong thế giới thực trong khi các dự án C thuần túy chỉ là một sở thích. Bạn có đồng ý rằng một lập trình viên C ++ lành nghề không nhất thiết phải là một anh chàng C có trình độ hay bạn nghĩ rằng việc chuyển đổi này được thực hiện dễ dàng?



1
Đó là chính xác những gì tôi làm. Nó không cản trở tôi tìm việc.
Martin York

9
Lâu rồi tôi không viết CV, nhưng tôi luôn nói về C và C ++ như hai ngôn ngữ hoàn toàn khác nhau.
Rei Miyasaka

2
@ReiMiyasaka - Tốt, vì chúng hai ngôn ngữ hoàn toàn khác nhau. Cả hai đã được cập nhật và chuyển hướng từ khi C ++ được tạo ra như là một bổ sung cho C.
Izkata

Tôi tin rằng C / C ++ không giống nhau và chúng là những ngôn ngữ hoàn toàn khác nhau, điểm chung duy nhất là 'C' trong tên (không đề cập đến cú pháp gần gũi)
Qchmqs

Câu trả lời:


31

Bạn đã hỏi rất nhiều câu hỏi trong một; Hãy để tôi cố gắng trả lời trong khi tách chúng ra. Tôi thuê nhiều người thuộc loại hồ sơ này và khá thường xuyên tôi phải thực hiện rất nhiều cuộc phỏng vấn và từ chối mọi người vì thường họ không có câu trả lời rõ ràng cho các câu hỏi bạn đã hỏi.

  1. Là có thành thạo tốt trong C hoặc C ++ là đủ tốt để đủ điều kiện bạn cho chương trình khác?
    Nếu bạn ở cấp cao thực sự KHÔNG. tức là nếu bạn đã có 6 năm làm lập trình C ++ trên một số ứng dụng doanh nghiệp cốt lõi, và bây giờ tôi đang cố gắng đưa bạn vào các hệ thống nhúng có trong C - có thể là cú pháp lập trình của bạn và cách gỡ lỗi công cụ không phải là vấn đề. Nhưng nếu bạn cần suy nghĩ về một vấn đề - bạn chắc chắn rất lộn xộn. Điều này đúng từ hai phía sang ngôn ngữ khác. Càng nhiều năm bạn chỉ dành một loại ngôn ngữ - ít dễ dàng chuyển đổi dưới dạng khác! Nó không phải là về việc bạn có thể học cú pháp ngôn ngữ hay không mà bạn thực sự nghĩ khác khi bạn ở trong C, C ++, Java, perl và Python. Để kéo dài câu hỏi - thường xuyên nhất - các anh chàng C ++ và Java có thể được sử dụng thay thế cho nhau và Perl, PHP, Phython cũng vậy. C là một giống khá khác nhau!

    Nếu bạn là một chàng trai tương đối trẻ - rất có thể bạn có thể bắt kịp nhanh chóng.

  2. Điều đó có nghĩa là tôi có kỹ năng cao hơn khi tôi biết C ++ chứ không phải C
    Trên thực tế Không. Bởi vì, theo nguyên tắc chung, nếu bạn có khả năng tạo ra một sản phẩm đầy đủ từ C thì nhiệm vụ khó khăn hơn nhiều so với làm trong C ++. Số người có thể xử lý sự cố hệ thống bộ nhớ dùng chung ít hơn nhiều so với số người có thể viết chương trình GUI tốt bằng cách sử dụng VC ++ hoặc khung tương tự.

  3. Điều này có nghĩa là biết C (hoặc lập trình cấp thấp nhất) là cấp độ thành tích cao nhất?
    Không còn nữa! Đây không phải là mâu thuẫn. Lần này nó phụ thuộc vào tên miền bạn so sánh. Nếu bạn đang xem xét lập trình hệ thống bên trong nhân Linux, hoặc một cái gì đó rất gần với phần cứng, thì khả năng lập trình trong C có liên quan hơn, tuy nhiên, nếu bạn đang viết phần mềm ngân hàng hoặc một số công cụ quy tắc kinh doanh - C ++ thường là một lựa chọn tự nhiên. Vấn đề là sức mạnh thực sự của bạn không phải là nhiều về cú pháp của ngôn ngữ mà là cách bạn giải quyết một lớp vấn đề và bạn chỉ có thể hy vọng thành thạo một vài giáo lý / miền trong cuộc sống của mình. Nếu bạn đang đặt một cái gì đó trong sơ yếu lý lịch của bạn - đó là những gì thực sự quan trọng.

  4. Điều đó có nghĩa là nếu chỉ ở C - tôi không biết lập trình hướng đối tượng?
    Không có gì. Trên thực tế, bài kiểm tra quỳ của tôi trong cuộc phỏng vấn để biết anh chàng đến từ nền C hay C ++ là hỏi một câu hỏi rất đơn giản - "Vậy bạn có thể thực hiện Lập trình hướng đối tượng trong C không?" - anh chàng nhảy lên và nói - "Chắc chắn là KHÔNG!" Anh ấy / cô ấy là đồng nghiệp C ++. Vấn đề là, khi bạn thực sự viết mã rất phức tạp như mã đa phương tiện, hệ thống đa luồng, ngăn xếp lớp giao thức, bạn vẫn 'nghĩ như mã đối tượng' - Trình biên dịch C sẽ không trừng phạt bạn nếu bạn không giỏi trong việc đóng gói hai thói quen hoặc các đối tượng - nhưng khi hệ thống mở rộng quy mô bắn bạn - đôi khi tôi tin rằng - có rất nhiều người được sinh ra trong thời đại định hướng đối tượng, thường khá yếu về cách đóng gói thực sự bị vi phạm trong một mã khá nhiều chứa đầy các lớp và các đối tượng. Xin lỗi tôi lạc đề. Nhưng vấn đề là - nhiều kỹ năng phân tích và thiết kế vấn đề của bạn quan trọng hơn kỹ năng lập trình của bạn.

Có nghĩa là tôi nên đặt kỹ năng tiếp xúc và thiết kế cụ thể cho miền?
Tât nhiên la co!


9
+1 Để chỉ ra rằng bạn có thể có một thiết kế hướng đối tượng và vẫn triển khai nó trong C.
Giorgio

16
@Dipan: Hãy cẩn thận về việc đưa ra các giả định dựa trên tuổi. Một số người lớn tuổi "bắt kịp" khá nhanh quá. Một số trong số họ có thể chạy nhanh hơn bạn.
kevin cline

15
Tôi hoàn toàn nghi ngờ rằng "C ++ và Java guys có thể được sử dụng thay thế cho nhau".
fredoverflow

6
Tôi cũng không đồng ý với # 2. Khi bạn biết C ++, bạn có thể chọn C # hoặc Java trong thời gian tương đối ngắn. Tuy nhiên, chọn C ++ khi bạn biết một trong hai người kia, mất rất nhiều thời gian và công sức và yêu cầu bạn trước tiên phải "học hỏi" rất nhiều những gì bạn đã thực hiện như được đưa ra trong C # hoặc Java.
sbi

1
@sbi: Tôi không thực sự tranh luận rất cụ thể về C ++ hoặc JAVA hoặc C. Tôi không hoàn toàn có ý định khái quát hóa mối quan hệ giữa các ngôn ngữ; Tôi cũng không đi với một giả định rằng mọi người không thể thực sự thích nghi với việc học hoặc không học. Mấu chốt duy nhất thực sự là các ngôn ngữ khác nhau cũng là những kiểu suy nghĩ khác nhau bất kể mối quan hệ cú pháp của chúng và đó là những gì được tính trong sự phù hợp của vai trò được đưa ra.
Dipan Mehta

27

Đối với những người thực sự quan trọng, không, không nên nhầm lẫn họ.

Bất cứ ai biết bất cứ điều gì về lập trình C và C ++ trong thế giới thực đều biết rằng mặc dù có những điểm tương đồng và lịch sử, nhưng lập trình sản xuất ở một trong hai thường không phải là một động vật hoàn toàn khác.


12

Cá nhân tôi thấy rất khó chịu khi mọi người viết "C / C ++", vì C và C ++ là những ngôn ngữ rất khác nhau. Ngược lại, nếu tôi thấy "C, C ++" hoặc "C ++ và C" trên sơ yếu lý lịch, nó sẽ gây ấn tượng cho tôi đến tận cùng. Thật không may, hầu hết mọi người đều viết "C / C ++" và nó thường có nghĩa là "Tôi biết C ++, nhưng tôi có thể làm C nếu tôi phải".

Ngoài ra, tôi sẽ không quá cụ thể trên CV. Chỉ cần liệt kê các ngôn ngữ lập trình mà bạn biết, có thể theo thứ tự từ thành thạo nhất đến ít thành thạo nhất. Điều đó sẽ giúp bạn vượt qua bộ lọc từ buzz HR, và sau đó bạn có thể giải thích trong một cuộc phỏng vấn kỹ thuật về điểm mạnh và điểm yếu của bạn là gì.


4
Đã đồng ý. Tôi sẽ không sớm đưa "C / C ++" vào CV của mình hơn là tôi sẽ đặt "Java / JavaScript" như thể chúng là cùng một thứ.

Tôi thường viết C / C ++ mặc dù tôi biết chúng là các ngôn ngữ khác nhau, vì bạn đã học một trong hai ngôn ngữ đó mà không bận tâm đến cái khác, kiến ​​thức của bạn về cả hai đều không đầy đủ. Bạn không thể là một lập trình viên C giỏi mà ít nhất là học OO, trong đó C ++ là lựa chọn tự nhiên để học cách làm OO trong C. Bạn không thể là một lập trình viên C ++ giỏi mà không hiểu tại sao C ++ lại biến thành như vậy, bởi di sản của nó C. Tuy nhiên, trong CV, tôi đồng ý rằng họ nên tách biệt.

1
@OrbWeaver, một điểm khác biệt lớn là bạn có thể thường xuyên sử dụng chương trình C (miễn là nó không quá phức tạp), đưa nó vào trình biên dịch C ++ và thực hiện một chương trình thực thi từ đó Trình biên dịch C sẽ làm. Bạn không thể cung cấp chương trình Java cho trình phân tích cú pháp JavaScript (hoặc ngược lại) và nhận bất cứ điều gì thậm chí hữu ích từ xa trong bài tập. Vì vậy, trong khi tôi đồng ý rằng C và C ++ nên được phân biệt, theo suy nghĩ của tôi C/C++, và Java/Javascriptnhư thể chúng giống nhau vẫn ở hai giải đấu rất khác nhau.
một CVn

+1 cho lời khuyên - liệt kê đúng các ngôn ngữ lập trình mà bạn biết, có thể theo thứ tự từ thành thạo nhất đến kém thành thạo nhất. Điều đó sẽ giúp bạn vượt qua bộ lọc từ buzz HR,
ngây thơ

7

Không, không nên nhầm lẫn vì C và C ++ mặc dù tương tự và chia sẻ các gốc tương tự khác nhau về mô hình và cách sử dụng. Vì vậy, nó nên được tách ra, cũng nên tách biệt chuyên môn. Ngoài ra, tôi nghĩ rằng bạn có thể đề cập đến chuyên môn cụ thể hơn (như GUI / FLTK hoặc các thư viện khác mà bạn quen thuộc) với hai phần tách biệt.


5

Tôi thích phrasing của bạn: "Tôi đã thực hiện một số dự án C ++ trong thế giới thực trong khi các dự án C thuần túy chỉ là một sở thích"

Vì vậy, tôi chỉ cần đặt nó trong biệt ngữ CV:

  • đã làm việc trên một số sản phẩm C ++
  • một vài dự án phụ sử dụng C

Sẽ tốt hơn nếu bạn đặt các số thay cho "vài" và "một vài". Không cần phải chính xác, "hơn hai mươi" là một con số cho mục đích này.

Mô tả "cấp độ kỹ năng" là chính xác , nhưng mô tả "kinh nghiệm" là chính xác rõ ràng.


3

Tôi đồng ý rằng C và C ++ là các ngôn ngữ khác nhau và nên được giữ riêng trong CV. Mặc dù C là (gần như) một tập hợp con của C ++, nhưng tôi thường có một phong cách lập trình rất khác khi sử dụng C: Tôi thiết kế khác nhau, tôi viết mã khác nhau, v.v. Tôi thậm chí sẽ loại bỏ một số tính năng C nhất định như #includes khỏi C ++ để từ bỏ khả năng tương thích ngược hoàn toàn: chúng đơn giản là các ngôn ngữ khác nhau.

Vì vậy, lời khuyên của tôi là giữ hai ngôn ngữ riêng biệt trong CV của bạn.


3

Đơn giản, nếu người đánh giá bạn có thiên hướng nghĩ rằng "C là một tập hợp con của C ++", thì họ đã nhầm lẫn và tôi chắc chắn rằng lời giải thích của bạn về những gì viết trong hồ sơ xin việc của bạn sẽ đủ để làm họ ngạc nhiên.

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.