2010-03-03 23 views
7

thể trùng lặp:
Which sector of software industry uses C++?Có phải C++ vẫn chủ động được sử dụng cho mục đích phát triển chung?

C++ là trong nhiều năm holy grail nhiệm vụ quan trọng phát triển hiệu suất cao. Tuy nhiên, dường như trong 10 năm qua, phần lớn thế giới phát triển đã chuyển sang Java và C#. Quesiton của tôi là điều này, là C++ có hiệu quả xuống hạng cho các hệ thống nhúng, hệ điều hành, trình duyệt và phát triển mục đích đặc biệt khác? Tôi có nên để kỹ năng này đi theo con đường của VB 6 và các kỹ năng khác không còn hiển thị cùng một mức độ nhu cầu và giá trị trên thị trường? Tôi yêu C++ và rất thích cập nhật kiến ​​thức của mình trong đó, nhưng tôi thậm chí không biết bắt đầu từ đâu để áp dụng nó vào các vấn đề kinh doanh phổ biến hiện nay.

Trân trọng.

+2

Câu hỏi rất giống với http://stackoverflow.com/questions/537595/which-sector-of-software-industry-uses-c – chrism1

+0

Cái này ban đầu có tiêu đề "Có phải C++ đã chết?": Http: // stackoverflow .com/questions/309776/lasting-ảnh hưởng-of-c – bk1e

+1

Làm thế nào ở trên trời không ai gắn thẻ "chủ quan và tranh cãi" này? – zaratustra

Trả lời

12

Trước hết, tôi nghi ngờ bất kỳ ai cũng có thể đưa ra câu trả lời dứt khoát - không có cách nào để nói chính xác có bao nhiêu ngôn ngữ cụ thể được sử dụng thực sự. Gần như mọi thứ bạn có thể đo lường là phép đo thứ cấp, chẳng hạn như số lượng người đang quảng cáo công việc bằng ngôn ngữ đó. Vấn đề là điều này có xu hướng hiển thị các ngôn ngữ tương đối mới như thống trị đến một mức độ lớn hơn nhiều so với thực tế.

Điều đó nói rằng, niềm tin của tôi là như sau. Tại một thời điểm, C++ là ngôn ngữ mới nóng trên khối, và có một bong bóng khi nó thống trị thị trường. Bong bóng đó xì hơi khá lâu rồi. Kể từ đó, việc sử dụng C++ đã phát triển trên cơ sở tuyệt đối, nhưng thị trường đã phát triển (khá một chút) nhanh hơn để thu hẹp lại trên cơ sở tương đối.

Có một vài lý do khiến điều này không hiển thị trong hầu hết các biện pháp phụ như quảng cáo việc làm. Một vài điều rõ ràng bao gồm:

  1. Nhiều nhóm sản xuất C++ giờ đã có nhiều năm để "giải quyết", do đó tỷ lệ doanh thu tương đối thấp.
  2. Nó hiện đã được thiết lập tốt khi được sử dụng, vì vậy vị trí có xu hướng được lấp đầy bởi các quảng cáo nội bộ.

Có một hiệu ứng khác mà tôi gần như không đề cập đến, nhưng thật sự dù có rất ít người thích nó: có cả lập trình viên và người quản lý hào hứng hơn về "mới" hơn hiệu quả. Điều này dẫn đến một nhóm lớn các wannabes liên tục di chuyển đến "công nghệ" mới nhất và lớn nhất (cho dù đó là ngôn ngữ, khuôn khổ, nền tảng hay bất kỳ thứ gì). Họ nhận được một công việc, loaf (hoặc tệ hơn, thực sự viết một số mã), sau đó chuyển sang nạn nhân tiếp theo của họ ... er ... chủ nhân. Chúng gây ra rất nhiều "churn", và thổi phồng số lượng quảng cáo việc làm, nhưng sản xuất ít hoặc không có giá trị thực nào. Nhóm đó đã chuyển từ C++ sang Java một thời gian dài trước đây, và từ lâu đã chuyển từ Java sang C# sang Ruby on Rails tới Hadoop đến bất cứ điều gì mà các nhà quản lý rất vui mừng trong tuần này.

Vì sợ âm thanh quá tiêu cực, tôi nên thêm điều đó trên đường đi, một vài người trong số họ thực sự tìm thấy thứ gì đó họ giỏi, và (chủ yếu) có xu hướng ở lại với điều đó. Thật không may, đối với mỗi người làm, có ít nhất năm sinh viên tốt nghiệp mới tham gia throng ...

+0

Câu trả lời rất sâu sắc có một quan điểm rõ ràng về vấn đề này.Tôi sẽ để trải nghiệm C++ tôi đã rơi sang một bên và tập trung hơn vào C# và F #. –

10

"C++ có hiệu quả chuyển xuống hệ thống nhúng, hệ điều hành, trình duyệt"

"khác phát triển mục đích đặc biệt"

Bạn có nghĩa là 99% của mã người chạy trên một cơ sở hàng ngày?

+8

Tôi đoán bằng từ ngữ trong câu hỏi của anh ấy rằng "phát triển mục đích chung" là các ứng dụng kinh doanh. Nhưng bạn dường như đã xoay sở để tạo ra một trang trại đẹp. Tốt cho bạn. –

+0

Và chỉ một phần nhỏ, các nhà phát triển phát triển các trình duyệt/bộ ứng dụng văn phòng/hệ điều hành này. – nos

+0

theo nghĩa đen mọi ứng dụng tôi sử dụng là C hoặc C++. Xem KDE, GNOME, tất cả C++. Tôi biết chính xác ngôn ngữ của tất cả các chương trình của tôi là gì, bởi vì tôi biên dịch tất cả chúng. Tôi dùng Gentoo. Tôi không thấy bất cứ điều gì khác đi qua. Và tôi cho rằng các ứng dụng đó đến từ một số nơi, vì vậy tôi đoán có rất nhiều nhà phát triển sử dụng C++. Nơi duy nhất tôi không thấy C hoặc C++ là ở trường học. –

7

C++ vẫn được sử dụng nhiều trong nhiều ứng dụng tài chính quan trọng. Ví dụ, hầu hết các nền tảng của Bloomberg dựa trên C++ với rất ít giao diện người dùng bằng các ngôn ngữ khác. Nhiều ngân hàng đầu tư và các quỹ phòng hộ sử dụng các hệ thống giao dịch thuật toán được viết hoàn toàn bằng C++ (ví dụ, Capital Research Capital, Knight Capital, v.v.).

Nếu bạn đã ra khỏi C++ trong một thời gian, bạn có thể cần phải quen với toàn bộ các thư viện chuẩn hiện nay. Khi tôi đã làm hầu hết C++ của tôi, STL là khá mới và bạn hoặc đã thông qua các libs của Microsoft hoặc không. Nếu tôi quay trở lại C++ bây giờ, tôi sẽ phải học tất cả các thư viện mới để có hiệu quả.

Tôi nghĩ hầu hết chuyển động sang các ngôn ngữ khác có liên quan đến phát triển web và phát triển web-centric. Ngoại lệ chính là Google, chủ yếu vẫn sử dụng C++ và Python.

+1

Có. C++ là sự lựa chọn cho các ứng dụng hiệu suất cao, đặc biệt là phía máy chủ, nối mạng và đa luồng. Tôi thấy một sự thay đổi đối với C#/.NET cho các ứng dụng GUI, nhưng các máy chủ và các thuật toán mà tôi làm việc (cũng là tài chính) đều là C++/linux. Để hiểu rõ hơn về việc sử dụng toàn bộ các thư viện chuẩn hiện tại - hãy tăng cường danh sách đó. Nó gần như thiết yếu khi lập trình C++ bây giờ. – Anne

+1

Ngay cả đối với các ứng dụng tài chính, một số quỹ đầu tư đang hướng tới C# với thành công công bằng. –

+2

Đối với các ứng dụng khoa học, đặc biệt là các cụm lớn, nó vẫn chủ yếu là C++ hoặc Fortran. – KeithB

0

C++ vẫn rất phổ biến. Ví dụ, kết hợp với Qt nó thường được sử dụng.

2

Nó đã không biến mất nếu bạn cần làm điều gì đó thực sự, rất nhanh. Nếu "đủ nhanh" là OK, thì C# và Java là tốt, nhưng nếu bạn có tính toán mất hàng giờ hoặc ngày, hoặc bạn cần một thứ gì đó xảy ra trong thời gian micro giây (tức là giao dịch tần số cao) C++ vẫn là ngôn ngữ để sử dụng .

+1

"nhưng nếu bạn có tính toán mất hàng giờ hoặc ngày". Nếu được viết chính xác, một ứng dụng Java sẽ chạy trong thời gian tương đương với giải pháp C++, vì việc biên dịch JIT. –

+6

Tôi sẽ phải tôn trọng không đồng ý. Các tối ưu hóa có thể được thực hiện trên mã C++ (xem vector hóa của trình biên dịch Intel), ngoài việc quản lý bộ nhớ mức rất thấp của nó sẽ xóa sạch tầng bằng Java/C#. Tôi đã thực hiện so sánh về toán học dấu chấm động trong các vòng lặp chặt chẽ với C# so với C++, và không có cuộc thi nào của nó, C++ là thứ tự cường độ nhanh hơn cho các ứng dụng của tôi. Đó không phải là để nói xấu của ngôn ngữ được quản lý, tôi rất thích viết trong đó, nó chỉ quan trọng để biết những gì công cụ để sử dụng trong trường hợp gì. – Steve

+5

Java có thể nhanh như C++ nếu được viết chính xác. Hệ quả: Không ai viết Java một cách chính xác. – zaratustra

5

C++ vẫn có giá trị đối với nhiều ứng dụng hiệu suất cao. Có những công nghệ khác, và phụ thuộc vào tình hình ngôn ngữ khác nhau là phù hợp hơn cho nhu cầu của bạn. Nhưng nếu bạn muốn có hiệu suất mạnh mẽ, kiểm soát tốt những gì mã của bạn đang làm, và mạng linh hoạt và lập trình stack, C++ vẫn là một lựa chọn tốt.

Một đề xuất tốt hơn là: để cho các sự cố xảy ra với bạn và tìm ngôn ngữ phù hợp nhất với tình huống, thay vì sử dụng ngôn ngữ và tìm kiếm sự cố.

Vẫn còn: nếu bạn biết rõ C++, bạn có thể tìm hiểu/lập trình bất kỳ thứ gì.

+0

+1 cho điểm cuối cùng. nếu bạn muốn biết cơ chế lập trình (con trỏ, tham chiếu, hàm ảo, thừa kế, v.v.), C++ là cách để đi. – chester89

0

C++ thường được sử dụng cho các hệ thống hoạt động, thường được định nghĩa là phần mềm nơi giao diện người dùng không phải là trung tâm, không phải ứng dụng - nơi giao diện người dùng .Vì vậy, để sử dụng kinh doanh nói chung nó có lẽ không phải là rất thú vị và những vấn đề được giải quyết tốt hơn với một ngôn ngữ cấp cao hơn. Tuy nhiên, sẽ luôn có những hệ thống cấp thấp hoạt động, và C hoặc C++ là câu trả lời thực tế cho những vấn đề đó ngay bây giờ.

+2

C++ vẫn * rất * được sử dụng nhiều trong phát triển các ứng dụng máy tính để bàn thương mại. Có thể không phải ứng dụng web hoặc công cụ nội bộ, nhưng để phát triển sản phẩm hoàn toàn. –

3

Cho đến ngày nay, C++ là ngôn ngữ duy nhất được cả hai hướng đối tượng được biên soạn (hoặc ít nhất, có hệ sinh thái trưởng thành về tối ưu hóa trình biên dịch). Mà lá nó như là sự lựa chọn duy nhất cho hầu hết các dự án quy mô lớn, tính toán cường độ cao.

Đối với tôi, ví dụ nổi bật là trò chơi và công cụ trò chơi - đây là những dự án huuuuuge có thể nén máy cho các phân số milisecond. MS đang cố gắng để có được một số lực kéo cho XNA (một trò chơi quản lý-dev khung - về cơ bản một wrapper DirectX), nhưng có lẽ hầu như sẽ không bao giờ nhận được bất kỳ sản phẩm game AAA.

0

Là một ngôn ngữ phát triển chung?Vâng, nó phụ thuộc vào ngành nghề của bạn, nhưng tôi đã làm việc trong hai ngành công nghiệp khác nhau và luôn có rất nhiều C++ làm việc:

  1. Telecoms
    • các thiết bị nhúng thường sử dụng C và C++ cho các dịch vụ cốt lõi
    • thiết bị mạng, thường rất phức tạp, nặng nề sử dụng
    • C++
    • ứng dụng phần mềm làm việc với phần cứng thường sẽ được viết bằng C++
  2. Servi tài chính ces
    • Hệ thống thực thi thương mại thường có trong C++. Bạn không thể bắt đầu thu gom rác khi bạn đang thực hiện đơn đặt hàng cho khách hàng.
    • Hệ thống giao dịch thuật toán và tần số cao thường có trong C++
    • Các hệ thống giao dịch chung không có yêu cầu tốc độ nghiêm ngặt như trong C++ và Java, với C# cũng bắt đầu hiển thị.
    • Các ứng dụng quản trị có xu hướng được viết bằng Java, VB hoặc C# những ngày này
    • Gần đây có xu hướng hướng tới các ngôn ngữ chức năng để phân tích định lượng, vì vậy F # và Haskell đang bắt đầu xuất hiện và SAS và Matlab luôn luôn phổ biến

tôi đọc ở đâu đó rằng NYSE/Euronext sử dụng Java, nhưng họ vô hiệu hóa thu gom rác và chạy trên các máy chủ với số tiền điên nhớ.

1

Các ngôn ngữ khác nhau phổ biến ở các miền khác nhau. Điều thú vị là bạn nghĩ rằng nó có thể được trả lại không quan trọng bằng cách được xuống hạng cho các hệ thống nhúng khi trong thực tế đó là nơi phát triển phần mềm nhất xảy ra; ít nhất là về số lượng dự án/sản phẩm.

Có nhiều cách đo lường và một số cách được trình bày tại đây: http://langpop.com/. Bằng chứng cho thấy rằng C++ vẫn quan trọng.

2

Thường xuyên hơn không, chúng tôi bị lạc trong chu kỳ quảng cáo. Đầu tiên là Java, sau đó đến PHP, và hiện tại là Python. Nhưng thực tế của vấn đề là phát triển ứng dụng máy tính để bàn nói chung vẫn đòi hỏi phải sử dụng các thư viện như Carbon/Cocoa cho mac, GTK/QT cho Linux, MFC cho Windows. Tất cả đều dựa trên C/C++. Vì vậy, hầu hết các ứng dụng được viết cho các nền tảng này. Vì vậy, gọi C++ như được xuống hạng để nhúng là không đúng, mặc dù yeah nó đang được sử dụng rộng rãi hiện nay, không giống như trước đó khi nó chỉ là lắp ráp hoặc C ở mức tối đa. Theo tôi, nếu bạn muốn có một ứng dụng hiệu suất cao với giao diện đồ họa tuyệt vời, nó vẫn phải được thực hiện trong C/C++.

1

Tôi không chắc liệu ngành công nghiệp game có nằm trong "phát triển mục đích chung" hay không, nhưng nếu bạn muốn phát triển bất cứ thứ gì mà bạn dự định làm trên nhiều bàn điều khiển, C++ là những gì cho bữa trưa. Trong khi nhiều thư viện trò chơi và 3D có phần mở rộng cho các ngôn ngữ khác, chúng có tất cả các phần mở rộng cho C/C++.

1

C++ vẫn được sử dụng ở mọi nơi bạn muốn có hiệu suất tốt nhất. Ưu điểm chính của nó là bạn có thể sử dụng nghĩa đen cho mọi thứ. Ngoài những gì người khác đã nói, bạn cũng có thể sử dụng nó để cung cấp năng lượng cho các trang web, ví dụ: OkCupid sử dụng nó hầu như độc quyền.

Như Hip Hop gần đây của Facebook cho thấy, cuối cùng, nếu bạn có thể đủ khả năng (ví dụ bạn có một đội ngũ lớn và có thẩm quyền) bạn luôn có thể đạt được một cái gì đó bằng cách sử dụng nó. Sau đó, nó cũng là vấn đề về quy mô, ngoài ngành công nghiệp.

3

Nếu tôi xem qua các ứng dụng tôi đã cài đặt trên máy tính xách tay tôi đang viết tin nhắn này, tôi thấy rất nhiều C/C++ và vài ứng dụng được quản lý (nếu có). Ví dụ? Google Chrome, Firefox, iTunes, uTorrent, Spotify, Picasa, Google Earth, OpenOffice, Notepad ++, IrfanView ... danh sách này tiếp diễn và bật. Tôi viết các ứng dụng dành cho máy tính để bàn để kiếm sống, được cài đặt trên hàng nghìn máy tính trên toàn thế giới và C++ vẫn là ngôn ngữ được lựa chọn của tôi. Việc thiếu phụ thuộc (WTL là bạn của bạn) là một IMHO cộng (và khách hàng của tôi tôi nên thêm). Mặc dù YMMV - là một nhà phát triển dày dạn, tôi nghĩ tôi đủ năng suất trong C++, nhưng tôi không thể nói tất cả mọi người.

Các vấn đề liên quan