Słyszę o współczesnej popularności C ++ i kilku rozmowach na temat migracji z powrotem do C ++ z C # lub innych języków podobnych do C.
Wiem o funkcjach C ++ 11, ale chciałbym usłyszeć twoje doświadczenia, zwłaszcza od programistów, którzy przeprowadzili migrację z C # do C ++.
Co ważniejsze, czy Microsoft popycha programistów do używania C ++? Jeśli tak, dlaczego?
Odpowiedzi:
Tak, twoje podejrzenia są słuszne. Microsoft naciska na C ++, aby powrócił i stał się bardziej popularny.
Nie mogę go teraz znaleźć, ale jakiś czas temu widziałem prezentację jednego z dużych facetów Microsoftu, a cała ta sprawa była skierowana do programistów i dotyczyła wprowadzenia Windows 8, a zwłaszcza WinRT (także zamiennika dla platformy .NET jako Win32 API).
Miał oś czasu, w której wyjaśnił, w jaki sposób różne naciski wpływały na to, która technologia była popularna w określonych czasach. Na początku ludzie chcieli prędkości, więc wszyscy kodowali w C / C ++ (dwa osobne języki). W miarę jak sprzęt stawał się coraz szybszy, nacisk kładziony był na szybkość wykonywania, a bardziej na szybkość programowania, dlatego języki wyższego poziomu stały się znacznie bardziej popularne.
Jednak teraz nacisk kładzie się coraz bardziej na komputery mobilne i oparte na architekturze ARM (Windows 8 to pierwsza wersja Windows, która została skompilowana dla ARM) i wielu uważa, że staną się one znacznie bardziej popularne, a dla niektórych całkowicie zastąpią pulpit. Tak więc nacisk (przynajmniej w oczach Microsoftu) powrócił do C ++, ponieważ teraz zależy nam na żywotności baterii. Kod wyższego poziomu = więcej instrukcji = potrzeba więcej soku.
Aby wesprzeć to przejście z powrotem do C ++, wprowadzili zupełnie nowy interfejs API programowania Windows 8, zwany WinRT (ostatnio sprawdzałem, to była i tak nazwa). Ten interfejs API podąża za motywem .NET Framework w zakresie zapewnianej funkcjonalności, ale będzie dostępny dla każdego, kto koduje w C ++ (przez interfejsy COM), w C #, a nawet w Javascript dla tych, którzy chcą pisać aplikacje HTML 5 / Javascript. Wprowadzają także XAML (technologię używaną w WPF, ich najnowszym frameworku interfejsu użytkownika), która będzie również dostępna w C ++.
Tak więc dla mnie oznacza to, że zdecydowanie większy nacisk kładzie się na C ++ w Microsoft niż w przeszłości.
AKTUALIZACJA # 1:
Ponieważ właśnie dostałem za to znaczek „ładnej odpowiedzi”, pomyślałem, że może powinienem wrócić i a) wyjaśnić kilka rzeczy ib) uszczęśliwić policję sprawdzającą fakty, ponieważ jak wszyscy wiemy na forach technologicznych, wszystko co jest nieścisłe, może doprowadzić do wojen to trwa przez lata.
WinRT nie zastępuje frameworku .NET, ale jest to kolejna alternatywa dla programistów MS Windows, a MS zdecydowanie popycha ludzi w tym kierunku. Wygląda (trzymaj płomienie, jeśli nie jest to w 100% dokładne), że WinRT był głównie ukierunkowany na aplikacje Modern UI, chociaż zwykłe aplikacje komputerowe również powinny móc z niego skorzystać. Powiedziawszy to, MS mocno naciska, aby ludzie przerzucili się na pisanie a) nowoczesnych aplikacji interfejsu użytkownika oraz b) rozpocząć korzystanie z WinRT, aby saldo przesunęło procent osób korzystających ze środowiska .NET.
C ++ NIGDY nie zastąpi języków wyższego poziomu, takich jak C # lub python. Tak jak te języki NIGDY nie zastąpią C ++. To była prawdopodobnie najbardziej kontrowersyjna część pytania OP. Ale chodzi o równowagę, a fakty są następujące:
Podsumowując: Tak, MS naciska na powrót C ++, więc najprawdopodobniej jego popularność wzrośnie. Nie, C ++ nigdy nie zastąpi C #.
Aktualizacja nr 2:
Nie wiem dlaczego, ale społeczność techniczna zazwyczaj widzi rzeczy w absolutnie czarno-białych kategoriach, kiedy rzeczywistość jest pełna odcieni szarości. To jest odpowiedź na kilka nowych komentarzy, które zostały dodane do tego postu:
.NET Framework nie zniknie w najbliższym czasie (ani nigdy). Prawie każda technologia, którą Windows posiadał od lat 90-tych, wciąż istnieje w jakiejś formie lub modzie. Tak więc dla tych, którzy są tak przywiązani do frameworku .NET: a) nie martw się, że zniknie i b) przestań się kłócić na jego korzyść, tak jakby twoje życie zależało od niego, twój interfejs API jest bezpieczny.
WinRT reimplementuje wiele funkcji, które w przeszłości były dostarczane przez interfejsy API Win32 i .NET Framework. Ludzie, którzy chcą tej funkcji, będą mieli wybór, jeśli będą chcieli korzystać z WinRT, .NET Framework lub kontynuować korzystanie z Win32 API (to też nie jest martwe). Jeśli WinRT nie obsługuje dziś łatwego tworzenia aplikacji internetowych, istnieje duża szansa, że będą one obsługiwać je w przyszłości.
Microsoft ogłosił, że WinRT jest dużą strukturą, która dała Microsoft szansę na rozpoczęcie od czystego konta i zbudowała API wykorzystując doświadczenia zdobyte w Win32 API i samej platformie .NET. Próbowałem szukać tego filmu i nadal nie mogę go znaleźć, ale jedną z rzeczy, o których mówca wspomniał, jest to, że istnieją pewne obszary frameworku .NET, które można by zdefiniować lepiej / prościej / czysto, a WinRT udostępnia tę samą funkcjonalność w tym nowym, czystszym interfejsie.
źródło
Full
profilem .NET a profilem .NET „WinRT”. Główne różnice, to wiele rzeczy, które zostały źle wdrożone 10-15 lat temu, zostały usunięte i zastąpione lepiej zaprojektowanym kodem. Dopóki nie pozbędą się biblioteki Win32 razem .NET pozostanie. Twój komentarz pokazuje KOMPLETNY i CAŁKOWITY brak wiedzy na temat samego języka .NET i C #.Nie, Windows 8 polega na użyciu dowolnego języka, którego potrzebujesz (lub znasz), aby wykonać zadanie. JavaScript, języki .Net (C #) i C / C ++ są obsługiwane jednakowo.
Nic nie jest zastępowane i ostatecznie to zależy od programistów. Istnieje jednak nacisk na lepszą żywotność baterii, co WinRT ułatwia.
Wyjątkiem są gry, w których C ++ uzyskuje większą obsługę, szczególnie w Windows Phone 8, podczas gdy języki zarządzane nie mają natywnej obsługi (inaczej Xna).
źródło
Myśl, że ludzie wolą C ++ niż C # (lub prawie każdą inną wersję [non-php] 1990) do programowania ogólnego, jest śmieszna . C ++ 11 dodaje kilka dobrych brakujących bitów, ale wciąż przybija gwoździe do psa .
C ++ ma kilka dobrych nisz i wciąż jest najlepszą opcją na niektórych platformach z ograniczoną obsługą kompilatora. Ale nie, współczesne C ++ nie jest bliskie zastąpienia czegokolwiek poza być może przestarzałym, zepsutym C ++.
źródło
DXM napisał:
Zgodnie z tymi słowami wybór Javy jako podstawowego języka / frameworku dla Androida Google był błędem. Nie było. Język wyższego poziomu zwykle oznacza szybsze wykonywanie zadań i myślę, że jest to najważniejsza rzecz dla Microsoft i Google. Im więcej i więcej aplikacji jest tworzonych dla platformy, tym wyższy jest zysk producenta systemu operacyjnego.
Z drugiej strony jest jeszcze wiele programów dla Windows napisanych w C ++, więc zmuszanie tych programistów do przejścia na C # / JavaScript / cokolwiek innego byłoby szalone. Microsoft skupia się na umożliwieniu tworzenia aplikacji Win8 jak największej liczbie programistów, dlatego moim zdaniem zdecydowali się na obsługę C ++ i JavaScript w stosie programistycznym Win8.
źródło
C ++ wciąż ma pliki nagłówkowe, elastyczne preprocesory (#define), ... takie rzeczy niektórzy uważają, że te funkcje są „złe” lub „trudne do zarządzania”.
C #, z drugiej strony, używaj metadanych, nie musisz pisać i utrzymywać plików nagłówkowych.
O tym, jak Microsoft dodaje więcej funkcji do C ++: nic dziwnego.
Każdy kompilator C ++ dodaje więcej funkcji, w tym funkcje C ++ 11. gcc jest również.
źródło
Może to tylko ja, ale widzę o wiele prostsze użycie C niż C ++.
Fakt, że C ++ połknął zwykłą całość C, utrudnia wnioskowanie, kto używa czego.
Ale jest znacznie więcej projektów typu C typu open source niż C ++.
Moim zdaniem, jeśli potrzebujesz prędkości zbliżonej do prędkości metalu C. Jeśli potrzebujesz elastyczności i możliwości zarządzania przy rozsądnej wydajności, użyj C # lub Java. Jeśli chcesz szybko wykonać czysty projekt, użyj Pythona, Scali, Groovy lub jednego z wielu w pełni funkcjonalnych języków.
źródło
c ++ nie zastępuje c #. Przyjrzyjmy się, gdzie używany jest język c ++. Jest używany, gdy potrzebna jest wysoka wydajność, do pisania bibliotek oprogramowania pośredniego, dostępu na niskim poziomie oraz do pisania kodu dla urządzeń o ograniczonych zasobach. Chociaż możesz użyć c # dla niektórych z nich, c ++ jest bardziej odpowiedni dla nich. Nacisk Microsoft na c ++ jest ściśle powiązany z dużym naciskiem na przestrzeń mobilną. Nikt nie poprosi Cię o napisanie kolejnej aplikacji w c ++. Ale w przypadku Qt argumentu produktywności nie można wysunąć przeciwko c ++. Ale myślę, że wiele osób nie zna Qt.
źródło
Nie, C ++ nie może zastąpić C #, ponieważ wszystkie aplikacje Windows Phone 8 inne niż Direct3D muszą być opracowane w C #. Nie można tworzyć i publikować aplikacji w sklepie z aplikacjami wp8 tylko przy użyciu C ++ lub HTML5 / JavaScript. I dopóki Microsoft nie usunie tego ograniczenia, C ++ niczego nie zastąpi. W rezultacie jestem pewien, że bardzo niewiele osób opracuje wersję WP8. Biedna Nokia, tracąc jeszcze raz.
Oto fragment z Centrum deweloperów Microsoft :
jeszcze inny:
Nawet MVP firmy Microsoft twierdzą, że ta plotka jest celową dezinformacją dokonaną przez samego Microsoft:
A ten celowy zły marketing marnuje ludzkie miesiące :
źródło