Saya mendengar tentang popularitas C ++ modern dan beberapa pembicaraan tentang migrasi kembali ke C ++ dari C # atau bahasa sejenis C lainnya.
Saya tahu tentang fitur C ++ 11 tapi saya ingin mendengar pengalaman Anda, terutama dari pengembang yang bermigrasi dari C # ke C ++.
Lebih penting lagi, apakah Microsoft mendorong pengembang untuk menggunakan C ++? Jika ya, mengapa?
Jawaban:
Ya, kecurigaan Anda benar. Microsoft mendorong C ++ untuk kembali dan menjadi lebih populer.
Saya tidak dapat menemukannya sekarang, tetapi beberapa saat yang lalu saya melihat presentasi oleh salah satu orang besar Microsoft dan semuanya diarahkan pada pengembang dan hampir diluncurkan dari Windows 8 dan terutama WinRT (pengganti kerangka kerja .NET juga sebagai Win32 API).
Dia memiliki garis waktu yang menjelaskan bagaimana berbagai tekanan mempengaruhi teknologi apa yang populer pada waktu-waktu tertentu. Jadi pada awalnya orang menginginkan kecepatan sehingga mereka semua dikodekan dalam C / C ++ (dua bahasa terpisah). Karena perangkat keras semakin cepat, fokus beralih dari kecepatan eksekusi dan lebih ke kecepatan pengembangan, sehingga bahasa tingkat yang lebih tinggi menjadi jauh lebih populer.
Namun, sekarang fokusnya menjadi lebih ke arah komputer berbasis komputer dan ARM (Windows 8 adalah rilis Windows pertama yang dikompilasi untuk ARM) dan banyak yang percaya mereka akan menjadi jauh lebih populer dan untuk beberapa akan sepenuhnya menggantikan desktop. Jadi fokusnya (setidaknya di mata Microsoft) adalah kembali ke C ++ karena sekarang kami peduli dengan daya tahan baterai. Kode tingkat yang lebih tinggi = lebih banyak instruksi = dibutuhkan lebih banyak jus.
Untuk mendukung transisi ini kembali ke C ++, mereka telah memperkenalkan API pemrograman Windows 8 yang sama sekali baru, yang disebut WinRT (terakhir saya periksa, itulah namanya). API ini mengikuti tema .NET Framework dalam lingkup fungsi yang disediakannya tetapi akan tersedia untuk siapa saja yang mengkode dalam C ++ (melalui antarmuka COM), dalam C # atau bahkan dalam Javascript bagi mereka yang ingin menulis aplikasi HTML 5 / Javascript. Mereka juga membawa XAML (teknologi yang digunakan dalam WPF, kerangka UI terbaru mereka) untuk tersedia di C ++ juga.
Jadi bagi saya hal itu mengindikasikan bahwa pasti ada lebih banyak fokus pada C ++ di Microsoft daripada sebelumnya.
PEMBARUAN # 1:
Karena saya baru saja mendapat lencana 'jawaban bagus' untuk ini, saya pikir mungkin saya harus kembali dan a) mengklarifikasi beberapa hal dan b) membuat polisi yang memeriksa fakta senang karena seperti yang kita semua tahu di forum teknologi segala hal yang tidak akurat dapat mengakibatkan perang itu berlangsung selama bertahun-tahun.
WinRT bukan pengganti .NET framework, tetapi ini merupakan alternatif lain yang dimiliki oleh para pengembang MS Windows dan MS sangat mendorong orang untuk pergi ke arah itu. Tampaknya (tolong tahan api Anda jika ini tidak 100% akurat) bahwa WinRT terutama ditargetkan untuk aplikasi UI modern meskipun aplikasi desktop biasa harus dapat memanfaatkannya juga. Karena itu, MS sangat mendorong orang untuk beralih ke menulis a) aplikasi UI modern dan b) mulai menggunakan WinRT sehingga keseimbangan menggeser persentase orang yang menggunakan .NET framework kemungkinan besar akan turun.
C ++ tidak akan pernah menggantikan bahasa level yang lebih tinggi seperti C # atau python. Sama seperti bahasa-bahasa itu tidak akan pernah menggantikan C ++. Ini mungkin bagian paling kontroversial dari pertanyaan OP. Tapi itu semua tentang keseimbangan dan faktanya adalah:
Jadi kesimpulannya: Ya, MS mendorong C ++ untuk kembali sehingga kemungkinan besar popularitasnya akan meningkat. Tidak, C ++ tidak akan pernah menggantikan C #.
Perbarui # 2:
Saya tidak tahu mengapa, tetapi komunitas teknis cenderung melihat hal-hal dengan warna hitam / putih yang sangat absolut ketika kenyataannya penuh dengan nuansa abu-abu. Ini adalah tanggapan terhadap beberapa komentar baru yang ditambahkan ke posting ini:
Kerangka NET. Tidak akan hilang dalam waktu dekat (atau pernah). Hampir setiap teknologi yang dimiliki windows sejak 90-an masih ada dalam beberapa bentuk atau mode. Jadi bagi mereka yang sangat terikat dengan .NET framework: a) jangan khawatir tentang itu menghilang dan b) berhenti berdebat mendukungnya seolah-olah hidup Anda bergantung padanya, API Anda aman.
WinRT tidak menerapkan kembali banyak fungsi yang di masa lalu disediakan oleh Win32 dan .NET frameworks APIs. Orang yang menginginkan fungsionalitas itu akan memiliki pilihan jika mereka ingin menggunakan WinRT, .NET framework, atau melanjutkan dengan Win32 API (itu juga tidak mati). Jika WinRT tidak mendukung pembuatan aplikasi web yang mudah saat ini, ada peluang yang sangat baik untuk mendukungnya di masa depan.
Posisi yang diumumkan Microsoft adalah bahwa WinRT adalah kerangka kerja besar yang memberi Microsoft kesempatan untuk memulai dengan papan tulis yang bersih dan membangun API menggunakan pelajaran yang dipelajari dalam Win32 API dan .NET framework itu sendiri. Saya memang mencoba mencari video itu, dan masih tidak dapat menemukannya, tetapi salah satu hal yang disebutkan oleh pembicara adalah bahwa ada beberapa area kerangka. dalam antarmuka pembersih baru.
sumber
Full
.NET Profile dan 'WinRT'. Profil NET, perbedaan utama, adalah banyak hal yang diterapkan dengan buruk 10-15 tahun yang lalu telah dihapus, dan diganti dengan kode yang dirancang lebih baik. Sampai mereka menyingkirkan perpustakaan Win32 bersama-sama. NET ada di sini untuk tetap. Komentar Anda menunjukkan kurangnya pengetahuan SELESAI dan TOTAL tentang bahasa .NET dan C # itu sendiri.Tidak, Windows 8 adalah semua tentang menggunakan bahasa apa pun yang Anda butuhkan (atau tahu) untuk menyelesaikan pekerjaan. JavaScript, .Net bahasa (C #) dan C / C ++ semuanya didukung secara merata.
Tidak ada yang diganti dan terserah pengembang pada akhirnya. Namun ada dorongan untuk daya tahan baterai yang lebih baik yang membuat WinRT lebih mudah.
Pengecualiannya adalah gim di mana C ++ mendapatkan lebih banyak dukungan, terutama pada Windows Phone 8 sedangkan bahasa yang dikelola tidak memiliki dukungan asli (alias tidak xna).
sumber
Pemikiran bahwa orang akan lebih suka C ++ daripada C # (atau cukup banyak posting lain 1990 [non-php] alteratif) untuk pemrograman tujuan umum menggelikan . C ++ 11 menambahkan beberapa bit yang hilang dengan baik, tetapi masih memaku kaki anjing .
C ++ memiliki beberapa relung yang bagus, dan masih merupakan opsi terbaik pada beberapa platform dengan dukungan compiler terbatas. Tapi tidak, C ++ modern sama sekali tidak bisa menggantikan apa pun kecuali mungkin C ++ kuno yang rusak.
sumber
DXM menulis:
Menurut kata-kata ini memilih Java sebagai bahasa utama / kerangka kerja untuk Google Android adalah sebuah kesalahan. Bukan itu. Bahasa tingkat yang lebih tinggi biasanya berarti menyelesaikan sesuatu dengan lebih cepat dan saya pikir ini adalah hal yang paling penting bagi Microsoft dan Google. Semakin banyak aplikasi yang dibuat untuk platform, semakin tinggi keuntungan dari produsen OS.
Di sisi lain ada banyak perangkat lunak untuk Windows yang masih ditulis dalam C ++ sehingga mendorong para pengembang untuk beralih ke C # / JavaScript / apa pun akan menjadi gila. Microsoft fokus memberi kemungkinan untuk mengembangkan aplikasi Win8 kepada sebanyak mungkin pengembang karena itu menurut saya mereka memutuskan untuk mendukung C ++ dan JavaScript dalam tumpukan pengembangan Win8.
sumber
C ++ masih memiliki file Header, preprocessors yang fleksibel (#define), ... barang-barang semacam itu yang oleh sebagian orang dianggap fitur-fitur ini 'jahat' atau 'sulit dikelola'.
C #, di sisi lain, gunakan metadata, tidak perlu menulis dan memelihara file header.
Tentang Microsoft menambahkan lebih banyak fitur ke C ++: Tidak masalah.
Setiap kompiler C ++ menambahkan lebih banyak fitur, termasuk fitur C ++ 11. gcc juga.
sumber
Mungkin hanya saya, tapi, saya melihat penggunaan C jauh lebih sederhana daripada C ++.
Fakta bahwa C ++ telah menelan keseluruhan C membuatnya sulit untuk menyimpulkan siapa yang menggunakan apa.
Tetapi ada jauh lebih banyak proyek open source C daripada C ++.
Pandangan saya adalah jika Anda perlu mendekati penggunaan kecepatan logam C. Jika Anda membutuhkan fleksibilitas dan pengelolaan dengan kinerja yang wajar, gunakan C # atau Java. Jika Anda ingin desain bersih dilakukan dengan cepat, gunakan Python, Scala, Groovy, atau beberapa bahasa dengan fitur lengkap.
sumber
c ++ tidak menggantikan c #. Mari kita lihat di mana bahasa c ++ digunakan. Ini digunakan ketika ada kebutuhan untuk kinerja tinggi, untuk menulis perpustakaan middleware, akses tingkat rendah, dan untuk menulis kode untuk perangkat sumber daya terbatas. Meskipun Anda dapat menggunakan c # untuk beberapa c ++ ini lebih cocok untuk ini. Dorongan Microsoft untuk c ++ sangat terkait dengan dorongan besarnya ke ruang seluler. Tidak ada yang akan meminta Anda untuk menulis aplikasi web Anda berikutnya di c ++. Tetapi dengan Qt, argumen produktivitas tidak dapat dibuat terhadap c ++. Tapi saya pikir banyak orang tidak terbiasa dengan Qt.
sumber
Tidak, C ++ tidak dapat menggantikan C # karena semua aplikasi Windows Phone 8 non-Direct3D harus dikembangkan dengan C #. Anda tidak dapat mengembangkan dan menerbitkan aplikasi ke wp8 app store hanya dengan menggunakan C ++ atau HTML5 / Javascript. Dan selama Microsoft tidak menghapus batasan ini, C ++ tidak mengganti apa pun. Sebagai hasilnya, saya yakin sangat sedikit orang akan berkembang untuk WP8. Kasihan Nokia, kalah sekali lagi.
Berikut ini kutipan dari microsoft dev center :
lagi:
Bahkan Microsoft MVP mengklaim bahwa rumor ini adalah informasi yang disengaja yang dibuat oleh Microsoft sendiri:
Dan kesalahan pemasaran yang disengaja ini menghabiskan bulan orang :
sumber